Name: series-workflowbkxq5 Phase: Failed StartedAt: 2026-07-19 13:03:57 +0000 UTC FinishedAt: 2026-07-19 13:42:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbkxq5[0] Phase: Succeeded StartedAt: 2026-07-19 13:03:57 +0000 UTC FinishedAt: 2026-07-19 13:42:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbkxq5[0].run-triage Phase: Succeeded StartedAt: 2026-07-19 13:03:57 +0000 UTC FinishedAt: 2026-07-19 13:42:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDEzOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgdXBkYXRlcyBlcnJvciBsb2dnaW5nIHN0YXRlbWVudHMgdG8gdXNlIHRoZSAmIzM5OyVwZSYjMzk7IGZvcm1hdCBzcGVjaWZpZXIgZm9yIHByaW50aW5nIGVycm9yIHBvaW50ZXJzIGluc3RlYWQgb2YgdXNpbmcgJiMzOTslbGQmIzM5OyBhbmQgUFRSX0VSUigpLiBUaGlzIGlzIGEgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTM6NDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZDY0ODA1ZjU5N2Q4NTFmM2I5NDA0ZjNiMDdmY2JkMjUxZmRlY2M2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMTM6NDE6NDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jIGIvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXG5pbmRleCA5NjAwZTFlYzA5OTMwNC4uYzc4Y2FhMWI1N2M5ZDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uY1xuQEAgLTk3OSw4ICYjNDM7OTc5LDggQEAgc3RhdGljIGludCB1c2JhdG1faGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKmluc3RhbmNlKVxuIFx0dCA9IGt0aHJlYWRfY3JlYXRlKHVzYmF0bV9kb19oZWF2eV9pbml0LCBpbnN0YW5jZSwgXCYjMzQ7JXNcJiMzNDssXG4gXHRcdFx0aW5zdGFuY2UtXHUwMDNlZHJpdmVyLVx1MDAzZWRyaXZlcl9uYW1lKTtcbiBcdGlmIChJU19FUlIodCkpIHtcbi1cdFx0dXNiX2VycihpbnN0YW5jZSwgXCYjMzQ7JXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJWxkKSFcXG5cJiMzNDssXG4tXHRcdFx0XHRfX2Z1bmNfXywgUFRSX0VSUih0KSk7XG4mIzQzO1x0XHR1c2JfZXJyKGluc3RhbmNlLCBcJiMzNDslczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRfX2Z1bmNfXywgdCk7XG4gXHRcdHJldHVybiBQVFJfRVJSKHQpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jXG5pbmRleCA1NmQyYmE4MjRhMGIyMC4uN2JmZTM3ZWQ2OGFlYjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jXG5AQCAtMjE4LDggJiM0MzsyMTgsOCBAQCBzdGF0aWMgaW50IGlteF9nZXRfY2xrcyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdGlmIChJU19FUlIoZGF0YS1cdTAwM2VjbGspKSB7XG4gXHRcdFx0cmV0ID0gUFRSX0VSUihkYXRhLVx1MDAzZWNsayk7XG4gXHRcdFx0ZGV2X2VycihkZXYsXG4tXHRcdFx0XHRcJiMzNDtGYWlsZWQgdG8gZ2V0IGNsa3MsIGVycj0lbGQsJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0UFRSX0VSUihkYXRhLVx1MDAzZWNsayksIFBUUl9FUlIoZGF0YS1cdTAwM2VjbGtfaXBnKSk7XG4mIzQzO1x0XHRcdFx0XCYjMzQ7RmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JXBlLCVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRkYXRhLVx1MDAzZWNsaywgZGF0YS1cdTAwM2VjbGtfaXBnKTtcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXHRcdC8qIEdldCB3YWtldXAgY2xvY2suIE5vdCBhbGwgb2YgdGhlIHBsYXRmb3JtcyBuZWVkIHRvXG5AQCAtNDQ4LDggJiM0Mzs0NDgsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdHBpbmN0cmxfaHNpY19pZGxlID0gcGluY3RybF9sb29rdXBfc3RhdGUoZGF0YS1cdTAwM2VwaW5jdHJsLCBcJiMzNDtpZGxlXCYjMzQ7KTtcbiBcdFx0aWYgKElTX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpIHtcbiBcdFx0XHRkZXZfZXJyKGRldixcbi1cdFx0XHRcdFwmIzM0O3BpbmN0cmxfaHNpY19pZGxlIGxvb2t1cCBmYWlsZWQsIGVycj0lbGRcXG5cJiMzNDssXG4tXHRcdFx0XHRcdFBUUl9FUlIocGluY3RybF9oc2ljX2lkbGUpKTtcbiYjNDM7XHRcdFx0XHRcJiMzNDtwaW5jdHJsX2hzaWNfaWRsZSBsb29rdXAgZmFpbGVkLCBlcnI9JXBlXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0cGluY3RybF9oc2ljX2lkbGUpO1xuIFx0XHRcdHJldCA9IFBUUl9FUlIocGluY3RybF9oc2ljX2lkbGUpO1xuIFx0XHRcdGdvdG8gZXJyX3B1dDtcbiBcdFx0fVxuQEAgLTQ2NCw4ICYjNDM7NDY0LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdFx0XHRcdFx0XHRcJiMzNDthY3RpdmVcJiMzNDspO1xuIFx0XHRpZiAoSVNfRVJSKGRhdGEtXHUwMDNlcGluY3RybF9oc2ljX2FjdGl2ZSkpIHtcbiBcdFx0XHRkZXZfZXJyKGRldixcbi1cdFx0XHRcdFwmIzM0O3BpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0UFRSX0VSUihkYXRhLVx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpKTtcbiYjNDM7XHRcdFx0XHRcJiMzNDtwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0XHRkYXRhLVx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpO1xuIFx0XHRcdHJldCA9IFBUUl9FUlIoZGF0YS1cdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKTtcbiBcdFx0XHRnb3RvIGVycl9wdXQ7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmMgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmNcbmluZGV4IDA3NTYzYmUwMDEzZjRkLi4wOWRiOGE0ZWFjZTIwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXG5AQCAtNjgwLDggJiM0Mzs2ODAsOCBAQCBzdGF0aWMgaW50IGNpX2dldF9wbGF0ZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRcdFx0Lyogbm8gdmJ1cyByZWd1bGF0b3IgaXMgbmVlZGVkICovXG4gXHRcdFx0cGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMgPSBOVUxMO1xuIFx0XHR9IGVsc2UgaWYgKElTX0VSUihwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cykpIHtcbi1cdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7R2V0dGluZyByZWd1bGF0b3IgZXJyb3I6ICVsZFxcblwmIzM0Oyxcbi1cdFx0XHRcdFBUUl9FUlIocGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMpKTtcbiYjNDM7XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0dldHRpbmcgcmVndWxhdG9yIGVycm9yOiAlcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0cGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMpO1xuIFx0XHRcdHJldHVybiBQVFJfRVJSKHBsYXRkYXRhLVx1MDAzZXJlZ192YnVzKTtcbiBcdFx0fVxuIFx0XHQvKiBHZXQgVFBMIHN1cHBvcnQgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jIGIvZHJpdmVycy91c2IvY29yZS9odWIuY1xuaW5kZXggNTI2MmUxMWMxMmNkM2EuLjVlMzNlMzk4NDQ5OWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9odWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY29yZS9odWIuY1xuQEAgLTU2NzEsOCAmIzQzOzU2NzEsOCBAQCBzdGF0aWMgdm9pZCBodWJfcG9ydF9jb25uZWN0X2NoYW5nZShzdHJ1Y3QgdXNiX2h1YiAqaHViLCBpbnQgcG9ydDEsXG4gXHRcdFx0ZGVzY3IgPSB1c2JfZ2V0X2RldmljZV9kZXNjcmlwdG9yKHVkZXYpO1xuIFx0XHRcdGlmIChJU19FUlIoZGVzY3IpKSB7XG4gXHRcdFx0XHRkZXZfZGJnKFx1MDAyNnVkZXYtXHUwMDNlZGV2LFxuLVx0XHRcdFx0XHRcdFwmIzM0O2NhbiYjMzk7dCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVsZFxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0XHRQVFJfRVJSKGRlc2NyKSk7XG4mIzQzO1x0XHRcdFx0XHRcdFwmIzM0O2NhbiYjMzk7dCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdFx0ZGVzY3IpO1xuIFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRpZiAoZGVzY3JpcHRvcnNfY2hhbmdlZCh1ZGV2LCBkZXNjcixcbiBcdFx0XHRcdFx0XHR1ZGV2LVx1MDAzZWJvcykpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jIGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xuaW5kZXggZjNhMWU0MjMyYTMxZGMuLjk4NDUzMjdmOTVjNTlmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xuQEAgLTY4LDggJiM0Mzs2OCw4IEBAIHN0YXRpYyBpbnQgZHdjMl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaSxcbiBcbiBcdHBoeSA9IHVzYl9waHlfZ2VuZXJpY19yZWdpc3RlcigpO1xuIFx0aWYgKElTX0VSUihwaHkpKSB7XG4tXHRcdGRldl9lcnIoZGV2LCBcJiMzNDtlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJWxkKVxcblwmIzM0Oyxcbi1cdFx0XHRQVFJfRVJSKHBoeSkpO1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O2Vycm9yIHJlZ2lzdGVyaW5nIGdlbmVyaWMgUEhZICglcGUpXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRwaHkpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihwaHkpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmNcbmluZGV4IGNkZDFkZmM2NjZjNGY2Li5kYTMxZTVjZWEwYTU1MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuY1xuQEAgLTEzMTEsOCAmIzQzOzEzMTEsOCBAQCBpbnQgZ3NlcmlhbF9hbGxvY19saW5lX25vX2NvbnNvbGUodW5zaWduZWQgY2hhciAqbGluZV9udW0pXG4gXHR0dHlfZGV2ID0gdHR5X3BvcnRfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNnBvcnQtXHUwMDNlcG9ydCxcbiBcdFx0XHRnc190dHlfZHJpdmVyLCBwb3J0X251bSwgTlVMTCk7XG4gXHRpZiAoSVNfRVJSKHR0eV9kZXYpKSB7XG4tXHRcdHByX2VycihcJiMzNDslczogZmFpbGVkIHRvIHJlZ2lzdGVyIHR0eSBmb3IgcG9ydCAlZCwgZXJyICVsZFxcblwmIzM0Oyxcbi1cdFx0XHRcdF9fZnVuY19fLCBwb3J0X251bSwgUFRSX0VSUih0dHlfZGV2KSk7XG4mIzQzO1x0XHRwcl9lcnIoXCYjMzQ7JXM6IGZhaWxlZCB0byByZWdpc3RlciB0dHkgZm9yIHBvcnQgJWQsIGVyciAlcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0X19mdW5jX18sIHBvcnRfbnVtLCB0dHlfZGV2KTtcbiBcbiBcdFx0cmV0ID0gUFRSX0VSUih0dHlfZGV2KTtcbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZwb3J0c1twb3J0X251bV0ubG9jayk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmMgYi9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuY1xuaW5kZXggNzU5NzcwYTEzMjYwNjEuLjNhYzU3ZDMxMzc2YzJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jXG5AQCAtMjAyLDggJiM0MzsyMDIsOCBAQCBzdGF0aWMgaW50IHVzYjM1MDNfcHJvYmUoc3RydWN0IHVzYjM1MDMgKmh1YilcbiBcbiBcdFx0aHViLVx1MDAzZWNsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbChkZXYsIFwmIzM0O3JlZmNsa1wmIzM0Oyk7XG4gXHRcdGlmIChJU19FUlIoaHViLVx1MDAzZWNsaykpIHtcbi1cdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7dW5hYmxlIHRvIHJlcXVlc3QgcmVmY2xrICglbGQpXFxuXCYjMzQ7LFxuLVx0XHRcdFx0XHRQVFJfRVJSKGh1Yi1cdTAwM2VjbGspKTtcbiYjNDM7XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O3VuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJXBlKVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdGh1Yi1cdTAwM2VjbGspO1xuIFx0XHRcdHJldHVybiBQVFJfRVJSKGh1Yi1cdTAwM2VjbGspO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmMgYi9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuY1xuaW5kZXggOTg1NjgzZmU0OWU5MTQuLmEyMzU3YTI4ZWNmNGIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXG5AQCAtMTM5LDggJiM0MzsxMzksOCBAQCBzdGF0aWMgaW50IHBpM3VzYjMwNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXG4gXHRwaS1cdTAwM2VzdyA9IHR5cGVjX3N3aXRjaF9yZWdpc3RlcihkZXYsIFx1MDAyNnN3X2Rlc2MpO1xuIFx0aWYgKElTX0VSUihwaS1cdTAwM2VzdykpIHtcbi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0Vycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIHN3aXRjaDogJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFBUUl9FUlIocGktXHUwMDNlc3cpKTtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBzd2l0Y2g6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0cGktXHUwMDNlc3cpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihwaS1cdTAwM2Vzdyk7XG4gXHR9XG4gXG5AQCAtMTUxLDggJiM0MzsxNTEsOCBAQCBzdGF0aWMgaW50IHBpM3VzYjMwNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRwaS1cdTAwM2VtdXggPSB0eXBlY19tdXhfcmVnaXN0ZXIoZGV2LCBcdTAwMjZtdXhfZGVzYyk7XG4gXHRpZiAoSVNfRVJSKHBpLVx1MDAzZW11eCkpIHtcbiBcdFx0dHlwZWNfc3dpdGNoX3VucmVnaXN0ZXIocGktXHUwMDNlc3cpO1xuLVx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlbGRcXG5cJiMzNDssXG4tXHRcdFx0UFRSX0VSUihwaS1cdTAwM2VtdXgpKTtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBtdXg6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0cGktXHUwMDNlbXV4KTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGktXHUwMDNlbXV4KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXG5pbmRleCA4OWVlYzIwYTIwNjRjZS4uYWQxMDQ3MGVhNzNiMDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcbkBAIC00Nzk2LDcgJiM0Mzs0Nzk2LDcgQEAgc3RhdGljIHZvaWQgdGNwbV90eXBlY19jb25uZWN0KHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpXG4gXHRcdFx0cG9ydC1cdTAwM2VwYXJ0bmVyX2Rlc2MuYWNjZXNzb3J5ID0gVFlQRUNfQUNDRVNTT1JZX05PTkU7XG4gXHRcdHBhcnRuZXIgPSB0eXBlY19yZWdpc3Rlcl9wYXJ0bmVyKHBvcnQtXHUwMDNldHlwZWNfcG9ydCwgXHUwMDI2cG9ydC1cdTAwM2VwYXJ0bmVyX2Rlc2MpO1xuIFx0XHRpZiAoSVNfRVJSKHBhcnRuZXIpKSB7XG4tXHRcdFx0ZGV2X2Vycihwb3J0LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXIgKCVsZClcXG5cJiMzNDssIFBUUl9FUlIocGFydG5lcikpO1xuJiM0MztcdFx0XHRkZXZfZXJyKHBvcnQtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lciAoJXBlKVxcblwmIzM0OywgcGFydG5lcik7XG4gXHRcdFx0cmV0dXJuO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmNcbmluZGV4IDYwNjI4NzVmYjA0YTlkLi44NmQxM2FiNDE2NzA0NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmNcbkBAIC0yNzcsOCAmIzQzOzI3Nyw4IEBAIHN0YXRpYyB2b2lkIHd1c2IzODAxX2h3X3VwZGF0ZShzdHJ1Y3Qgd3VzYjM4MDEgKnd1c2IzODAxKVxuIFx0XHRpZiAocGFydG5lcl90eXBlICE9IFdVU0IzODAxX1NUQVRfUEFSVE5FUl9TVEFOREJZKSB7XG4gXHRcdFx0d3VzYjM4MDEtXHUwMDNlcGFydG5lciA9IHR5cGVjX3JlZ2lzdGVyX3BhcnRuZXIocG9ydCwgXHUwMDI2ZGVzYyk7XG4gXHRcdFx0aWYgKElTX0VSUih3dXNiMzgwMS1cdTAwM2VwYXJ0bmVyKSlcbi1cdFx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0XHRQVFJfRVJSKHd1c2IzODAxLVx1MDAzZXBhcnRuZXIpKTtcbiYjNDM7XHRcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXI6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdHd1c2IzODAxLVx1MDAzZXBhcnRuZXIpO1xuIFx0XHR9XG4gXG4gXHRcdGRhdGFfcm9sZSA9IHB3cl9yb2xlID09IFRZUEVDX1NPVVJDRSA/IFRZUEVDX0hPU1QgOiBUWVBFQ19ERVZJQ0U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTM6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSB1cGRhdGVzIGVycm9yIGxvZ2dpbmcgc3RhdGVtZW50cyB0byB1c2UgdGhlICYjMzk7JXBlJiMzOTsgZm9ybWF0IHNwZWNpZmllciBmb3IgcHJpbnRpbmcgZXJyb3IgcG9pbnRlcnMgaW5zdGVhZCBvZiB1c2luZyAmIzM5OyVsZCYjMzk7IGFuZCBQVFJfRVJSKCkuIFRoaXMgaXMgYSBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGQ2NDgwNWY1OTdkODUxZjNiOTQwNGYzYjA3ZmNiZDI1MWZkZWNjNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDE5IDEzOjQxOjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jIGIvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jCmluZGV4IDk2MDBlMWVjMDk5MzA0Li5jNzhjYWExYjU3YzlkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uYwpAQCAtOTc5LDggJiM0Mzs5NzksOCBAQCBzdGF0aWMgaW50IHVzYmF0bV9oZWF2eV9pbml0KHN0cnVjdCB1c2JhdG1fZGF0YSAqaW5zdGFuY2UpCiAJdCA9IGt0aHJlYWRfY3JlYXRlKHVzYmF0bV9kb19oZWF2eV9pbml0LCBpbnN0YW5jZSwgJiMzNDslcyYjMzQ7LAogCQkJaW5zdGFuY2UtJmd0O2RyaXZlci0mZ3Q7ZHJpdmVyX25hbWUpOwogCWlmIChJU19FUlIodCkpIHsKLQkJdXNiX2VycihpbnN0YW5jZSwgJiMzNDslczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglbGQpIVxuJiMzNDssCi0JCQkJX19mdW5jX18sIFBUUl9FUlIodCkpOwomIzQzOwkJdXNiX2VycihpbnN0YW5jZSwgJiMzNDslczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxuJiMzNDssCiYjNDM7CQkJCV9fZnVuY19fLCB0KTsKIAkJcmV0dXJuIFBUUl9FUlIodCk7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYwppbmRleCA1NmQyYmE4MjRhMGIyMC4uN2JmZTM3ZWQ2OGFlYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYwpAQCAtMjE4LDggJiM0MzsyMTgsOCBAQCBzdGF0aWMgaW50IGlteF9nZXRfY2xrcyhzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCWlmIChJU19FUlIoZGF0YS0mZ3Q7Y2xrKSkgewogCQkJcmV0ID0gUFRSX0VSUihkYXRhLSZndDtjbGspOwogCQkJZGV2X2VycihkZXYsCi0JCQkJJiMzNDtGYWlsZWQgdG8gZ2V0IGNsa3MsIGVycj0lbGQsJWxkXG4mIzM0OywKLQkJCQlQVFJfRVJSKGRhdGEtJmd0O2NsayksIFBUUl9FUlIoZGF0YS0mZ3Q7Y2xrX2lwZykpOwomIzQzOwkJCQkmIzM0O0ZhaWxlZCB0byBnZXQgY2xrcywgZXJyPSVwZSwlcGVcbiYjMzQ7LAomIzQzOwkJCQlkYXRhLSZndDtjbGssIGRhdGEtJmd0O2Nsa19pcGcpOwogCQkJcmV0dXJuIHJldDsKIAkJfQogCQkvKiBHZXQgd2FrZXVwIGNsb2NrLiBOb3QgYWxsIG9mIHRoZSBwbGF0Zm9ybXMgbmVlZCB0bwpAQCAtNDQ4LDggJiM0Mzs0NDgsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCXBpbmN0cmxfaHNpY19pZGxlID0gcGluY3RybF9sb29rdXBfc3RhdGUoZGF0YS0mZ3Q7cGluY3RybCwgJiMzNDtpZGxlJiMzNDspOwogCQlpZiAoSVNfRVJSKHBpbmN0cmxfaHNpY19pZGxlKSkgewogCQkJZGV2X2VycihkZXYsCi0JCQkJJiMzNDtwaW5jdHJsX2hzaWNfaWRsZSBsb29rdXAgZmFpbGVkLCBlcnI9JWxkXG4mIzM0OywKLQkJCQkJUFRSX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpOwomIzQzOwkJCQkmIzM0O3BpbmN0cmxfaHNpY19pZGxlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcbiYjMzQ7LAomIzQzOwkJCQkJcGluY3RybF9oc2ljX2lkbGUpOwogCQkJcmV0ID0gUFRSX0VSUihwaW5jdHJsX2hzaWNfaWRsZSk7CiAJCQlnb3RvIGVycl9wdXQ7CiAJCX0KQEAgLTQ2NCw4ICYjNDM7NDY0LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQkJCQkJCQkmIzM0O2FjdGl2ZSYjMzQ7KTsKIAkJaWYgKElTX0VSUihkYXRhLSZndDtwaW5jdHJsX2hzaWNfYWN0aXZlKSkgewogCQkJZGV2X2VycihkZXYsCi0JCQkJJiMzNDtwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lbGRcbiYjMzQ7LAotCQkJCQlQVFJfRVJSKGRhdGEtJmd0O3BpbmN0cmxfaHNpY19hY3RpdmUpKTsKJiM0MzsJCQkJJiMzNDtwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcbiYjMzQ7LAomIzQzOwkJCQkJZGF0YS0mZ3Q7cGluY3RybF9oc2ljX2FjdGl2ZSk7CiAJCQlyZXQgPSBQVFJfRVJSKGRhdGEtJmd0O3BpbmN0cmxfaHNpY19hY3RpdmUpOwogCQkJZ290byBlcnJfcHV0OwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmMgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmMKaW5kZXggMDc1NjNiZTAwMTNmNGQuLjA5ZGI4YTRlYWNlMjAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jCkBAIC02ODAsOCAmIzQzOzY4MCw4IEBAIHN0YXRpYyBpbnQgY2lfZ2V0X3BsYXRkYXRhKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCS8qIG5vIHZidXMgcmVndWxhdG9yIGlzIG5lZWRlZCAqLwogCQkJcGxhdGRhdGEtJmd0O3JlZ192YnVzID0gTlVMTDsKIAkJfSBlbHNlIGlmIChJU19FUlIocGxhdGRhdGEtJmd0O3JlZ192YnVzKSkgewotCQkJZGV2X2VycihkZXYsICYjMzQ7R2V0dGluZyByZWd1bGF0b3IgZXJyb3I6ICVsZFxuJiMzNDssCi0JCQkJUFRSX0VSUihwbGF0ZGF0YS0mZ3Q7cmVnX3ZidXMpKTsKJiM0MzsJCQlkZXZfZXJyKGRldiwgJiMzNDtHZXR0aW5nIHJlZ3VsYXRvciBlcnJvcjogJXBlXG4mIzM0OywKJiM0MzsJCQkJcGxhdGRhdGEtJmd0O3JlZ192YnVzKTsKIAkJCXJldHVybiBQVFJfRVJSKHBsYXRkYXRhLSZndDtyZWdfdmJ1cyk7CiAJCX0KIAkJLyogR2V0IFRQTCBzdXBwb3J0ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jIGIvZHJpdmVycy91c2IvY29yZS9odWIuYwppbmRleCA1MjYyZTExYzEyY2QzYS4uNWUzM2UzOTg0NDk5ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY29yZS9odWIuYwpAQCAtNTY3MSw4ICYjNDM7NTY3MSw4IEBAIHN0YXRpYyB2b2lkIGh1Yl9wb3J0X2Nvbm5lY3RfY2hhbmdlKHN0cnVjdCB1c2JfaHViICpodWIsIGludCBwb3J0MSwKIAkJCWRlc2NyID0gdXNiX2dldF9kZXZpY2VfZGVzY3JpcHRvcih1ZGV2KTsKIAkJCWlmIChJU19FUlIoZGVzY3IpKSB7CiAJCQkJZGV2X2RiZygmYW1wO3VkZXYtJmd0O2RldiwKLQkJCQkJCSYjMzQ7Y2FuJiMzOTt0IHJlYWQgZGV2aWNlIGRlc2NyaXB0b3IgJWxkXG4mIzM0OywKLQkJCQkJCVBUUl9FUlIoZGVzY3IpKTsKJiM0MzsJCQkJCQkmIzM0O2NhbiYjMzk7dCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVwZVxuJiMzNDssCiYjNDM7CQkJCQkJZGVzY3IpOwogCQkJfSBlbHNlIHsKIAkJCQlpZiAoZGVzY3JpcHRvcnNfY2hhbmdlZCh1ZGV2LCBkZXNjciwKIAkJCQkJCXVkZXYtJmd0O2JvcykpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmMgYi9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jCmluZGV4IGYzYTFlNDIzMmEzMWRjLi45ODQ1MzI3Zjk1YzU5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZHdjMi9wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jCkBAIC02OCw4ICYjNDM7NjgsOCBAQCBzdGF0aWMgaW50IGR3YzJfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksCiAKIAlwaHkgPSB1c2JfcGh5X2dlbmVyaWNfcmVnaXN0ZXIoKTsKIAlpZiAoSVNfRVJSKHBoeSkpIHsKLQkJZGV2X2VycihkZXYsICYjMzQ7ZXJyb3IgcmVnaXN0ZXJpbmcgZ2VuZXJpYyBQSFkgKCVsZClcbiYjMzQ7LAotCQkJUFRSX0VSUihwaHkpKTsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O2Vycm9yIHJlZ2lzdGVyaW5nIGdlbmVyaWMgUEhZICglcGUpXG4mIzM0OywKJiM0MzsJCQlwaHkpOwogCQlyZXR1cm4gUFRSX0VSUihwaHkpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuYwppbmRleCBjZGQxZGZjNjY2YzRmNi4uZGEzMWU1Y2VhMGE1NTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jCkBAIC0xMzExLDggJiM0MzsxMzExLDggQEAgaW50IGdzZXJpYWxfYWxsb2NfbGluZV9ub19jb25zb2xlKHVuc2lnbmVkIGNoYXIgKmxpbmVfbnVtKQogCXR0eV9kZXYgPSB0dHlfcG9ydF9yZWdpc3Rlcl9kZXZpY2UoJmFtcDtwb3J0LSZndDtwb3J0LAogCQkJZ3NfdHR5X2RyaXZlciwgcG9ydF9udW0sIE5VTEwpOwogCWlmIChJU19FUlIodHR5X2RldikpIHsKLQkJcHJfZXJyKCYjMzQ7JXM6IGZhaWxlZCB0byByZWdpc3RlciB0dHkgZm9yIHBvcnQgJWQsIGVyciAlbGRcbiYjMzQ7LAotCQkJCV9fZnVuY19fLCBwb3J0X251bSwgUFRSX0VSUih0dHlfZGV2KSk7CiYjNDM7CQlwcl9lcnIoJiMzNDslczogZmFpbGVkIHRvIHJlZ2lzdGVyIHR0eSBmb3IgcG9ydCAlZCwgZXJyICVwZVxuJiMzNDssCiYjNDM7CQkJCV9fZnVuY19fLCBwb3J0X251bSwgdHR5X2Rldik7CiAKIAkJcmV0ID0gUFRSX0VSUih0dHlfZGV2KTsKIAkJbXV0ZXhfbG9jaygmYW1wO3BvcnRzW3BvcnRfbnVtXS5sb2NrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jIGIvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmMKaW5kZXggNzU5NzcwYTEzMjYwNjEuLjNhYzU3ZDMxMzc2YzJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYwpAQCAtMjAyLDggJiM0MzsyMDIsOCBAQCBzdGF0aWMgaW50IHVzYjM1MDNfcHJvYmUoc3RydWN0IHVzYjM1MDMgKmh1YikKIAogCQlodWItJmd0O2NsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbChkZXYsICYjMzQ7cmVmY2xrJiMzNDspOwogCQlpZiAoSVNfRVJSKGh1Yi0mZ3Q7Y2xrKSkgewotCQkJZGV2X2VycihkZXYsICYjMzQ7dW5hYmxlIHRvIHJlcXVlc3QgcmVmY2xrICglbGQpXG4mIzM0OywKLQkJCQkJUFRSX0VSUihodWItJmd0O2NsaykpOwomIzQzOwkJCWRldl9lcnIoZGV2LCAmIzM0O3VuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJXBlKVxuJiMzNDssCiYjNDM7CQkJCQlodWItJmd0O2Nsayk7CiAJCQlyZXR1cm4gUFRSX0VSUihodWItJmd0O2Nsayk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmMgYi9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuYwppbmRleCA5ODU2ODNmZTQ5ZTkxNC4uYTIzNTdhMjhlY2Y0YjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jCkBAIC0xMzksOCAmIzQzOzEzOSw4IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAogCXBpLSZndDtzdyA9IHR5cGVjX3N3aXRjaF9yZWdpc3RlcihkZXYsICZhbXA7c3dfZGVzYyk7CiAJaWYgKElTX0VSUihwaS0mZ3Q7c3cpKSB7Ci0JCWRldl9lcnIoZGV2LCAmIzM0O0Vycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIHN3aXRjaDogJWxkXG4mIzM0OywKLQkJCVBUUl9FUlIocGktJmd0O3N3KSk7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBzd2l0Y2g6ICVwZVxuJiMzNDssCiYjNDM7CQkJcGktJmd0O3N3KTsKIAkJcmV0dXJuIFBUUl9FUlIocGktJmd0O3N3KTsKIAl9CiAKQEAgLTE1MSw4ICYjNDM7MTUxLDggQEAgc3RhdGljIGludCBwaTN1c2IzMDUzMl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogCXBpLSZndDttdXggPSB0eXBlY19tdXhfcmVnaXN0ZXIoZGV2LCAmYW1wO211eF9kZXNjKTsKIAlpZiAoSVNfRVJSKHBpLSZndDttdXgpKSB7CiAJCXR5cGVjX3N3aXRjaF91bnJlZ2lzdGVyKHBpLSZndDtzdyk7Ci0JCWRldl9lcnIoZGV2LCAmIzM0O0Vycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIG11eDogJWxkXG4mIzM0OywKLQkJCVBUUl9FUlIocGktJmd0O211eCkpOwomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlcGVcbiYjMzQ7LAomIzQzOwkJCXBpLSZndDttdXgpOwogCQlyZXR1cm4gUFRSX0VSUihwaS0mZ3Q7bXV4KTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmMKaW5kZXggODllZWMyMGEyMDY0Y2UuLmFkMTA0NzBlYTczYjA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYwpAQCAtNDc5Niw3ICYjNDM7NDc5Niw3IEBAIHN0YXRpYyB2b2lkIHRjcG1fdHlwZWNfY29ubmVjdChzdHJ1Y3QgdGNwbV9wb3J0ICpwb3J0KQogCQkJcG9ydC0mZ3Q7cGFydG5lcl9kZXNjLmFjY2Vzc29yeSA9IFRZUEVDX0FDQ0VTU09SWV9OT05FOwogCQlwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LSZndDt0eXBlY19wb3J0LCAmYW1wO3BvcnQtJmd0O3BhcnRuZXJfZGVzYyk7CiAJCWlmIChJU19FUlIocGFydG5lcikpIHsKLQkJCWRldl9lcnIocG9ydC0mZ3Q7ZGV2LCAmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyICglbGQpXG4mIzM0OywgUFRSX0VSUihwYXJ0bmVyKSk7CiYjNDM7CQkJZGV2X2Vycihwb3J0LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXIgKCVwZSlcbiYjMzQ7LCBwYXJ0bmVyKTsKIAkJCXJldHVybjsKIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jIGIvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuYwppbmRleCA2MDYyODc1ZmIwNGE5ZC4uODZkMTNhYjQxNjcwNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuYwpAQCAtMjc3LDggJiM0MzsyNzcsOCBAQCBzdGF0aWMgdm9pZCB3dXNiMzgwMV9od191cGRhdGUoc3RydWN0IHd1c2IzODAxICp3dXNiMzgwMSkKIAkJaWYgKHBhcnRuZXJfdHlwZSAhPSBXVVNCMzgwMV9TVEFUX1BBUlRORVJfU1RBTkRCWSkgewogCQkJd3VzYjM4MDEtJmd0O3BhcnRuZXIgPSB0eXBlY19yZWdpc3Rlcl9wYXJ0bmVyKHBvcnQsICZhbXA7ZGVzYyk7CiAJCQlpZiAoSVNfRVJSKHd1c2IzODAxLSZndDtwYXJ0bmVyKSkKLQkJCQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJWxkXG4mIzM0OywKLQkJCQkJUFRSX0VSUih3dXNiMzgwMS0mZ3Q7cGFydG5lcikpOwomIzQzOwkJCQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJXBlXG4mIzM0OywKJiM0MzsJCQkJCXd1c2IzODAxLSZndDtwYXJ0bmVyKTsKIAkJfQogCiAJCWRhdGFfcm9sZSA9IHB3cl9yb2xlID09IFRZUEVDX1NPVVJDRSA/IFRZUEVDX0hPU1QgOiBUWVBFQ19ERVZJQ0U7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDEzOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NDIKCQkJCQkJCW91dHB1dDogNzcKCQkJCQkJCXRob3VnaHRzOiA1MjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTG9nZ2luZy1Pbmx5IENoYW5nZSBpbiB0aGUgVVNCIFN1YnN5c3RlbSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIGFuZCBpdCYjMzk7cyBtYWtpbmcgYSBwdXJlbHkgY29zbWV0aWMgY2hhbmdlIHdpdGhpbiB0aGUgVVNCIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBzd2FwcGluZyBvdXQgYFBUUl9FUlIoeClgIGZvciBgJXBlYCBhbmQgYHhgIGl0c2VsZiBpbiB2YXJpb3VzIGVycm9yIGxvZ2dpbmcgY2FsbHMgbGlrZSBgZGV2X2VycmAsIGBwcl9lcnJgLCBhbmQgYHVzYl9lcnJgLiBFc3NlbnRpYWxseSwgd2UmIzM5O3JlIHJlZmluaW5nIHRoZSBlcnJvciBtZXNzYWdlIGZvcm1hdHRpbmcgZm9yIHRoZXNlIHByaW50cy4KCkxldCYjMzk7cyBxdWlja2x5IHZlcmlmeS4gSSBzZWUgZXhhbXBsZXMgbGlrZSBgdXNiX2VycihpbnN0YW5jZSwgJiMzNDslczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxuJiMzNDssIF9fZnVuY19fLCB0KTtgLCBgZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JXBlLCVwZVxuJiMzNDssIGRhdGEtJmd0O2NsaywgZGF0YS0mZ3Q7Y2xrX2lwZyk7YCwgYW5kIHNvIG9uLiBJdCYjMzk7cyB0aGUgc2FtZSBwYXR0ZXJuIGFjcm9zcyBhbGwgb2YgdGhlbS4gVGhlIGludGVudCBpcyB0byBwcmludCB0aGUgcmF3IHBvaW50ZXIgdmFsdWUgd2l0aCBgJXBlYCB3aGljaCBpcyB0aGUgY29ycmVjdCBmb3JtYXQgc3BlY2lmaWVyIGZvciBhIHBvaW50ZXItYXMtZXJyb3IuCgpMb29raW5nIGF0IGVhY2ggaW5zdGFuY2UsIGl0JiMzOTtzIGNsZWFyOiB0aGlzIGlzIGp1c3Qgc3RhbmRhcmRpemluZyB0aGUgZXJyb3IgcG9pbnRlciBwcmludGluZy4gSXQmIzM5O3MgYSBzdGFuZGFyZCBrZXJuZWwgYmVzdCBwcmFjdGljZSB0byBwcmludCB0aGUgZXJyb3IgcG9pbnRlciB3aXRoIGAlcGVgLiAgTm8gZnVuY3Rpb25hbCBjaGFuZ2UsIG5vIGFsdGVyYXRpb24gdG8gZXhlY3V0aW9uIGZsb3cuIFRoaXMgaXMgYSBsb2dnaW5nIGVuaGFuY2VtZW50LCBwbGFpbiBhbmQgc2ltcGxlLgoKVGhlcmVmb3JlLCBnaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwgYW5kIGVycm9yIGhhbmRsaW5nLCB0aGlzIGNoYW5nZSBpcyBub3QgZ29pbmcgdG8gaW50cm9kdWNlIGFueXRoaW5nIGZ1enotd29ydGh5LiAgSSYjMzk7bSBjb25maWRlbnRseSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTM6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHVwZGF0ZXMgZXJyb3IgbG9nZ2luZyBzdGF0ZW1lbnRzIHRvIHVzZSB0aGUgJiMzOTslcGUmIzM5OyBmb3JtYXQgc3BlY2lmaWVyIGZvciBwcmludGluZyBlcnJvciBwb2ludGVycyBpbnN0ZWFkIG9mIHVzaW5nICYjMzk7JWxkJiMzOTsgYW5kIFBUUl9FUlIoKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHVwZGF0ZXMgZXJyb3IgbG9nZ2luZyBzdGF0ZW1lbnRzIHRvIHVzZSB0aGUgJiMzOTslcGUmIzM5OyBmb3JtYXQgc3BlY2lmaWVyIGZvciBwcmludGluZyBlcnJvciBwb2ludGVycyBpbnN0ZWFkIG9mIHVzaW5nICYjMzk7JWxkJiMzOTsgYW5kIFBUUl9FUlIoKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTlUMTM6NDE6NDUuNzQzMjcyMjY2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg5MDM5NzY4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSB1cGRhdGVzIGVycm9yIGxvZ2dpbmcgc3RhdGVtZW50cyB0byB1c2UgdGhlICclcGUnIGZvcm1hdCBzcGVjaWZpZXIgZm9yIHByaW50aW5nIGVycm9yIHBvaW50ZXJzIGluc3RlYWQgb2YgdXNpbmcgJyVsZCcgYW5kIFBUUl9FUlIoKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMzo0MTo0NS43NDMyODI1MTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MzQ1OTMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRkNjQ4MDVmNTk3ZDg1MWYzYjk0MDRmM2IwN2ZjYmQyNTFmZGVjYzZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTkgMTM6NDE6NDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jIGIvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXFxuaW5kZXggOTYwMGUxZWMwOTkzMDQuLmM3OGNhYTFiNTdjOWQ5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uY1xcbisrKyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uY1xcbkBAIC05NzksOCArOTc5LDggQEAgc3RhdGljIGludCB1c2JhdG1faGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKmluc3RhbmNlKVxcbiBcXHR0ID0ga3RocmVhZF9jcmVhdGUodXNiYXRtX2RvX2hlYXZ5X2luaXQsIGluc3RhbmNlLCBcXFwiJXNcXFwiLFxcbiBcXHRcXHRcXHRpbnN0YW5jZS1cXHUwMDNlZHJpdmVyLVxcdTAwM2Vkcml2ZXJfbmFtZSk7XFxuIFxcdGlmIChJU19FUlIodCkpIHtcXG4tXFx0XFx0dXNiX2VycihpbnN0YW5jZSwgXFxcIiVzOiBmYWlsZWQgdG8gY3JlYXRlIGtlcm5lbF90aHJlYWQgKCVsZCkhXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRfX2Z1bmNfXywgUFRSX0VSUih0KSk7XFxuK1xcdFxcdHVzYl9lcnIoaW5zdGFuY2UsIFxcXCIlczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0X19mdW5jX18sIHQpO1xcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUih0KTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmNcXG5pbmRleCA1NmQyYmE4MjRhMGIyMC4uN2JmZTM3ZWQ2OGFlYjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmNcXG5AQCAtMjE4LDggKzIxOCw4IEBAIHN0YXRpYyBpbnQgaW14X2dldF9jbGtzKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0aWYgKElTX0VSUihkYXRhLVxcdTAwM2VjbGspKSB7XFxuIFxcdFxcdFxcdHJldCA9IFBUUl9FUlIoZGF0YS1cXHUwMDNlY2xrKTtcXG4gXFx0XFx0XFx0ZGV2X2VycihkZXYsXFxuLVxcdFxcdFxcdFxcdFxcXCJGYWlsZWQgdG8gZ2V0IGNsa3MsIGVycj0lbGQsJWxkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRQVFJfRVJSKGRhdGEtXFx1MDAzZWNsayksIFBUUl9FUlIoZGF0YS1cXHUwMDNlY2xrX2lwZykpO1xcbitcXHRcXHRcXHRcXHRcXFwiRmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JXBlLCVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ZGF0YS1cXHUwMDNlY2xrLCBkYXRhLVxcdTAwM2VjbGtfaXBnKTtcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0XFx0fVxcbiBcXHRcXHQvKiBHZXQgd2FrZXVwIGNsb2NrLiBOb3QgYWxsIG9mIHRoZSBwbGF0Zm9ybXMgbmVlZCB0b1xcbkBAIC00NDgsOCArNDQ4LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRwaW5jdHJsX2hzaWNfaWRsZSA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKGRhdGEtXFx1MDAzZXBpbmN0cmwsIFxcXCJpZGxlXFxcIik7XFxuIFxcdFxcdGlmIChJU19FUlIocGluY3RybF9oc2ljX2lkbGUpKSB7XFxuIFxcdFxcdFxcdGRldl9lcnIoZGV2LFxcbi1cXHRcXHRcXHRcXHRcXFwicGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0UFRSX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpO1xcbitcXHRcXHRcXHRcXHRcXFwicGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0cGluY3RybF9oc2ljX2lkbGUpO1xcbiBcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKTtcXG4gXFx0XFx0XFx0Z290byBlcnJfcHV0O1xcbiBcXHRcXHR9XFxuQEAgLTQ2NCw4ICs0NjQsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXCJhY3RpdmVcXFwiKTtcXG4gXFx0XFx0aWYgKElTX0VSUihkYXRhLVxcdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKSkge1xcbiBcXHRcXHRcXHRkZXZfZXJyKGRldixcXG4tXFx0XFx0XFx0XFx0XFxcInBpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0UFRSX0VSUihkYXRhLVxcdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKSk7XFxuK1xcdFxcdFxcdFxcdFxcXCJwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdGRhdGEtXFx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpO1xcbiBcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKGRhdGEtXFx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpO1xcbiBcXHRcXHRcXHRnb3RvIGVycl9wdXQ7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXFxuaW5kZXggMDc1NjNiZTAwMTNmNGQuLjA5ZGI4YTRlYWNlMjAyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuY1xcbkBAIC02ODAsOCArNjgwLDggQEAgc3RhdGljIGludCBjaV9nZXRfcGxhdGRhdGEoc3RydWN0IGRldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQvKiBubyB2YnVzIHJlZ3VsYXRvciBpcyBuZWVkZWQgKi9cXG4gXFx0XFx0XFx0cGxhdGRhdGEtXFx1MDAzZXJlZ192YnVzID0gTlVMTDtcXG4gXFx0XFx0fSBlbHNlIGlmIChJU19FUlIocGxhdGRhdGEtXFx1MDAzZXJlZ192YnVzKSkge1xcbi1cXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkdldHRpbmcgcmVndWxhdG9yIGVycm9yOiAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdFBUUl9FUlIocGxhdGRhdGEtXFx1MDAzZXJlZ192YnVzKSk7XFxuK1xcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiR2V0dGluZyByZWd1bGF0b3IgZXJyb3I6ICVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0cGxhdGRhdGEtXFx1MDAzZXJlZ192YnVzKTtcXG4gXFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocGxhdGRhdGEtXFx1MDAzZXJlZ192YnVzKTtcXG4gXFx0XFx0fVxcbiBcXHRcXHQvKiBHZXQgVFBMIHN1cHBvcnQgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9odWIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmNcXG5pbmRleCA1MjYyZTExYzEyY2QzYS4uNWUzM2UzOTg0NDk5ZmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9odWIuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmNcXG5AQCAtNTY3MSw4ICs1NjcxLDggQEAgc3RhdGljIHZvaWQgaHViX3BvcnRfY29ubmVjdF9jaGFuZ2Uoc3RydWN0IHVzYl9odWIgKmh1YiwgaW50IHBvcnQxLFxcbiBcXHRcXHRcXHRkZXNjciA9IHVzYl9nZXRfZGV2aWNlX2Rlc2NyaXB0b3IodWRldik7XFxuIFxcdFxcdFxcdGlmIChJU19FUlIoZGVzY3IpKSB7XFxuIFxcdFxcdFxcdFxcdGRldl9kYmcoXFx1MDAyNnVkZXYtXFx1MDAzZWRldixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFxcImNhbid0IHJlYWQgZGV2aWNlIGRlc2NyaXB0b3IgJWxkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRQVFJfRVJSKGRlc2NyKSk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcXCJjYW4ndCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ZGVzY3IpO1xcbiBcXHRcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRcXHRpZiAoZGVzY3JpcHRvcnNfY2hhbmdlZCh1ZGV2LCBkZXNjcixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0dWRldi1cXHUwMDNlYm9zKSkge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jIGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xcbmluZGV4IGYzYTFlNDIzMmEzMWRjLi45ODQ1MzI3Zjk1YzU5ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jXFxuKysrIGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xcbkBAIC02OCw4ICs2OCw4IEBAIHN0YXRpYyBpbnQgZHdjMl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaSxcXG4gXFxuIFxcdHBoeSA9IHVzYl9waHlfZ2VuZXJpY19yZWdpc3RlcigpO1xcbiBcXHRpZiAoSVNfRVJSKHBoeSkpIHtcXG4tXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJWxkKVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0UFRSX0VSUihwaHkpKTtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJXBlKVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0cGh5KTtcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5KTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuY1xcbmluZGV4IGNkZDFkZmM2NjZjNGY2Li5kYTMxZTVjZWEwYTU1MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXFxuQEAgLTEzMTEsOCArMTMxMSw4IEBAIGludCBnc2VyaWFsX2FsbG9jX2xpbmVfbm9fY29uc29sZSh1bnNpZ25lZCBjaGFyICpsaW5lX251bSlcXG4gXFx0dHR5X2RldiA9IHR0eV9wb3J0X3JlZ2lzdGVyX2RldmljZShcXHUwMDI2cG9ydC1cXHUwMDNlcG9ydCxcXG4gXFx0XFx0XFx0Z3NfdHR5X2RyaXZlciwgcG9ydF9udW0sIE5VTEwpO1xcbiBcXHRpZiAoSVNfRVJSKHR0eV9kZXYpKSB7XFxuLVxcdFxcdHByX2VycihcXFwiJXM6IGZhaWxlZCB0byByZWdpc3RlciB0dHkgZm9yIHBvcnQgJWQsIGVyciAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdF9fZnVuY19fLCBwb3J0X251bSwgUFRSX0VSUih0dHlfZGV2KSk7XFxuK1xcdFxcdHByX2VycihcXFwiJXM6IGZhaWxlZCB0byByZWdpc3RlciB0dHkgZm9yIHBvcnQgJWQsIGVyciAlcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdF9fZnVuY19fLCBwb3J0X251bSwgdHR5X2Rldik7XFxuIFxcbiBcXHRcXHRyZXQgPSBQVFJfRVJSKHR0eV9kZXYpO1xcbiBcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwb3J0c1twb3J0X251bV0ubG9jayk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jIGIvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcXG5pbmRleCA3NTk3NzBhMTMyNjA2MS4uM2FjNTdkMzEzNzZjMmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuY1xcbkBAIC0yMDIsOCArMjAyLDggQEAgc3RhdGljIGludCB1c2IzNTAzX3Byb2JlKHN0cnVjdCB1c2IzNTAzICpodWIpXFxuIFxcbiBcXHRcXHRodWItXFx1MDAzZWNsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbChkZXYsIFxcXCJyZWZjbGtcXFwiKTtcXG4gXFx0XFx0aWYgKElTX0VSUihodWItXFx1MDAzZWNsaykpIHtcXG4tXFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJ1bmFibGUgdG8gcmVxdWVzdCByZWZjbGsgKCVsZClcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdFxcdFBUUl9FUlIoaHViLVxcdTAwM2VjbGspKTtcXG4rXFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJ1bmFibGUgdG8gcmVxdWVzdCByZWZjbGsgKCVwZSlcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdGh1Yi1cXHUwMDNlY2xrKTtcXG4gXFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoaHViLVxcdTAwM2VjbGspO1xcbiBcXHRcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXFxuaW5kZXggOTg1NjgzZmU0OWU5MTQuLmEyMzU3YTI4ZWNmNGIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXFxuKysrIGIvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcXG5AQCAtMTM5LDggKzEzOSw4IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4gXFxuIFxcdHBpLVxcdTAwM2VzdyA9IHR5cGVjX3N3aXRjaF9yZWdpc3RlcihkZXYsIFxcdTAwMjZzd19kZXNjKTtcXG4gXFx0aWYgKElTX0VSUihwaS1cXHUwMDNlc3cpKSB7XFxuLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgc3dpdGNoOiAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFBUUl9FUlIocGktXFx1MDAzZXN3KSk7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgc3dpdGNoOiAlcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdHBpLVxcdTAwM2Vzdyk7XFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHBpLVxcdTAwM2Vzdyk7XFxuIFxcdH1cXG4gXFxuQEAgLTE1MSw4ICsxNTEsOCBAQCBzdGF0aWMgaW50IHBpM3VzYjMwNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuIFxcdHBpLVxcdTAwM2VtdXggPSB0eXBlY19tdXhfcmVnaXN0ZXIoZGV2LCBcXHUwMDI2bXV4X2Rlc2MpO1xcbiBcXHRpZiAoSVNfRVJSKHBpLVxcdTAwM2VtdXgpKSB7XFxuIFxcdFxcdHR5cGVjX3N3aXRjaF91bnJlZ2lzdGVyKHBpLVxcdTAwM2Vzdyk7XFxuLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFBUUl9FUlIocGktXFx1MDAzZW11eCkpO1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkVycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIG11eDogJXBlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRwaS1cXHUwMDNlbXV4KTtcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIocGktXFx1MDAzZW11eCk7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcXG5pbmRleCA4OWVlYzIwYTIwNjRjZS4uYWQxMDQ3MGVhNzNiMDYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcXG4rKysgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uY1xcbkBAIC00Nzk2LDcgKzQ3OTYsNyBAQCBzdGF0aWMgdm9pZCB0Y3BtX3R5cGVjX2Nvbm5lY3Qoc3RydWN0IHRjcG1fcG9ydCAqcG9ydClcXG4gXFx0XFx0XFx0cG9ydC1cXHUwMDNlcGFydG5lcl9kZXNjLmFjY2Vzc29yeSA9IFRZUEVDX0FDQ0VTU09SWV9OT05FO1xcbiBcXHRcXHRwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LVxcdTAwM2V0eXBlY19wb3J0LCBcXHUwMDI2cG9ydC1cXHUwMDNlcGFydG5lcl9kZXNjKTtcXG4gXFx0XFx0aWYgKElTX0VSUihwYXJ0bmVyKSkge1xcbi1cXHRcXHRcXHRkZXZfZXJyKHBvcnQtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyICglbGQpXFxcXG5cXFwiLCBQVFJfRVJSKHBhcnRuZXIpKTtcXG4rXFx0XFx0XFx0ZGV2X2Vycihwb3J0LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lciAoJXBlKVxcXFxuXFxcIiwgcGFydG5lcik7XFxuIFxcdFxcdFxcdHJldHVybjtcXG4gXFx0XFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmNcXG5pbmRleCA2MDYyODc1ZmIwNGE5ZC4uODZkMTNhYjQxNjcwNDQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuY1xcbisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmNcXG5AQCAtMjc3LDggKzI3Nyw4IEBAIHN0YXRpYyB2b2lkIHd1c2IzODAxX2h3X3VwZGF0ZShzdHJ1Y3Qgd3VzYjM4MDEgKnd1c2IzODAxKVxcbiBcXHRcXHRpZiAocGFydG5lcl90eXBlICE9IFdVU0IzODAxX1NUQVRfUEFSVE5FUl9TVEFOREJZKSB7XFxuIFxcdFxcdFxcdHd1c2IzODAxLVxcdTAwM2VwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LCBcXHUwMDI2ZGVzYyk7XFxuIFxcdFxcdFxcdGlmIChJU19FUlIod3VzYjM4MDEtXFx1MDAzZXBhcnRuZXIpKVxcbi1cXHRcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyOiAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdFxcdFBUUl9FUlIod3VzYjM4MDEtXFx1MDAzZXBhcnRuZXIpKTtcXG4rXFx0XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJXBlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRcXHR3dXNiMzgwMS1cXHUwMDNlcGFydG5lcik7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGRhdGFfcm9sZSA9IHB3cl9yb2xlID09IFRZUEVDX1NPVVJDRSA/IFRZUEVDX0hPU1QgOiBUWVBFQ19ERVZJQ0U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDEzOjQxOjQ2LjQxNzQwNTczMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIxNjI1OTEzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSB1cGRhdGVzIGVycm9yIGxvZ2dpbmcgc3RhdGVtZW50cyB0byB1c2UgdGhlICclcGUnIGZvcm1hdCBzcGVjaWZpZXIgZm9yIHByaW50aW5nIGVycm9yIHBvaW50ZXJzIGluc3RlYWQgb2YgdXNpbmcgJyVsZCcgYW5kIFBUUl9FUlIoKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRkNjQ4MDVmNTk3ZDg1MWYzYjk0MDRmM2IwN2ZjYmQyNTFmZGVjYzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxOSAxMzo0MTo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uYyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uY1xuaW5kZXggOTYwMGUxZWMwOTkzMDQuLmM3OGNhYTFiNTdjOWQ5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXG4rKysgYi9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmNcbkBAIC05NzksOCArOTc5LDggQEAgc3RhdGljIGludCB1c2JhdG1faGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKmluc3RhbmNlKVxuIFx0dCA9IGt0aHJlYWRfY3JlYXRlKHVzYmF0bV9kb19oZWF2eV9pbml0LCBpbnN0YW5jZSwgXCIlc1wiLFxuIFx0XHRcdGluc3RhbmNlLVx1MDAzZWRyaXZlci1cdTAwM2Vkcml2ZXJfbmFtZSk7XG4gXHRpZiAoSVNfRVJSKHQpKSB7XG4tXHRcdHVzYl9lcnIoaW5zdGFuY2UsIFwiJXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJWxkKSFcXG5cIixcbi1cdFx0XHRcdF9fZnVuY19fLCBQVFJfRVJSKHQpKTtcbitcdFx0dXNiX2VycihpbnN0YW5jZSwgXCIlczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxcblwiLFxuK1x0XHRcdFx0X19mdW5jX18sIHQpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUih0KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xuaW5kZXggNTZkMmJhODI0YTBiMjAuLjdiZmUzN2VkNjhhZWI1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xuKysrIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xuQEAgLTIxOCw4ICsyMTgsOCBAQCBzdGF0aWMgaW50IGlteF9nZXRfY2xrcyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdGlmIChJU19FUlIoZGF0YS1cdTAwM2VjbGspKSB7XG4gXHRcdFx0cmV0ID0gUFRSX0VSUihkYXRhLVx1MDAzZWNsayk7XG4gXHRcdFx0ZGV2X2VycihkZXYsXG4tXHRcdFx0XHRcIkZhaWxlZCB0byBnZXQgY2xrcywgZXJyPSVsZCwlbGRcXG5cIixcbi1cdFx0XHRcdFBUUl9FUlIoZGF0YS1cdTAwM2VjbGspLCBQVFJfRVJSKGRhdGEtXHUwMDNlY2xrX2lwZykpO1xuK1x0XHRcdFx0XCJGYWlsZWQgdG8gZ2V0IGNsa3MsIGVycj0lcGUsJXBlXFxuXCIsXG4rXHRcdFx0XHRkYXRhLVx1MDAzZWNsaywgZGF0YS1cdTAwM2VjbGtfaXBnKTtcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXHRcdC8qIEdldCB3YWtldXAgY2xvY2suIE5vdCBhbGwgb2YgdGhlIHBsYXRmb3JtcyBuZWVkIHRvXG5AQCAtNDQ4LDggKzQ0OCw4IEBAIHN0YXRpYyBpbnQgY2lfaGRyY19pbXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0cGluY3RybF9oc2ljX2lkbGUgPSBwaW5jdHJsX2xvb2t1cF9zdGF0ZShkYXRhLVx1MDAzZXBpbmN0cmwsIFwiaWRsZVwiKTtcbiBcdFx0aWYgKElTX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpIHtcbiBcdFx0XHRkZXZfZXJyKGRldixcbi1cdFx0XHRcdFwicGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcblwiLFxuLVx0XHRcdFx0XHRQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKSk7XG4rXHRcdFx0XHRcInBpbmN0cmxfaHNpY19pZGxlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcXG5cIixcbitcdFx0XHRcdFx0cGluY3RybF9oc2ljX2lkbGUpO1xuIFx0XHRcdHJldCA9IFBUUl9FUlIocGluY3RybF9oc2ljX2lkbGUpO1xuIFx0XHRcdGdvdG8gZXJyX3B1dDtcbiBcdFx0fVxuQEAgLTQ2NCw4ICs0NjQsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdFx0XHRcdFx0XHRcdFwiYWN0aXZlXCIpO1xuIFx0XHRpZiAoSVNfRVJSKGRhdGEtXHUwMDNlcGluY3RybF9oc2ljX2FjdGl2ZSkpIHtcbiBcdFx0XHRkZXZfZXJyKGRldixcbi1cdFx0XHRcdFwicGluY3RybF9oc2ljX2FjdGl2ZSBsb29rdXAgZmFpbGVkLCBlcnI9JWxkXFxuXCIsXG4tXHRcdFx0XHRcdFBUUl9FUlIoZGF0YS1cdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKSk7XG4rXHRcdFx0XHRcInBpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVwZVxcblwiLFxuK1x0XHRcdFx0XHRkYXRhLVx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpO1xuIFx0XHRcdHJldCA9IFBUUl9FUlIoZGF0YS1cdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKTtcbiBcdFx0XHRnb3RvIGVycl9wdXQ7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmMgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmNcbmluZGV4IDA3NTYzYmUwMDEzZjRkLi4wOWRiOGE0ZWFjZTIwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuY1xuKysrIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXG5AQCAtNjgwLDggKzY4MCw4IEBAIHN0YXRpYyBpbnQgY2lfZ2V0X3BsYXRkYXRhKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQvKiBubyB2YnVzIHJlZ3VsYXRvciBpcyBuZWVkZWQgKi9cbiBcdFx0XHRwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cyA9IE5VTEw7XG4gXHRcdH0gZWxzZSBpZiAoSVNfRVJSKHBsYXRkYXRhLVx1MDAzZXJlZ192YnVzKSkge1xuLVx0XHRcdGRldl9lcnIoZGV2LCBcIkdldHRpbmcgcmVndWxhdG9yIGVycm9yOiAlbGRcXG5cIixcbi1cdFx0XHRcdFBUUl9FUlIocGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMpKTtcbitcdFx0XHRkZXZfZXJyKGRldiwgXCJHZXR0aW5nIHJlZ3VsYXRvciBlcnJvcjogJXBlXFxuXCIsXG4rXHRcdFx0XHRwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cyk7XG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIocGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMpO1xuIFx0XHR9XG4gXHRcdC8qIEdldCBUUEwgc3VwcG9ydCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXG5pbmRleCA1MjYyZTExYzEyY2QzYS4uNWUzM2UzOTg0NDk5ZmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXG4rKysgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXG5AQCAtNTY3MSw4ICs1NjcxLDggQEAgc3RhdGljIHZvaWQgaHViX3BvcnRfY29ubmVjdF9jaGFuZ2Uoc3RydWN0IHVzYl9odWIgKmh1YiwgaW50IHBvcnQxLFxuIFx0XHRcdGRlc2NyID0gdXNiX2dldF9kZXZpY2VfZGVzY3JpcHRvcih1ZGV2KTtcbiBcdFx0XHRpZiAoSVNfRVJSKGRlc2NyKSkge1xuIFx0XHRcdFx0ZGV2X2RiZyhcdTAwMjZ1ZGV2LVx1MDAzZWRldixcbi1cdFx0XHRcdFx0XHRcImNhbid0IHJlYWQgZGV2aWNlIGRlc2NyaXB0b3IgJWxkXFxuXCIsXG4tXHRcdFx0XHRcdFx0UFRSX0VSUihkZXNjcikpO1xuK1x0XHRcdFx0XHRcdFwiY2FuJ3QgcmVhZCBkZXZpY2UgZGVzY3JpcHRvciAlcGVcXG5cIixcbitcdFx0XHRcdFx0XHRkZXNjcik7XG4gXHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdGlmIChkZXNjcmlwdG9yc19jaGFuZ2VkKHVkZXYsIGRlc2NyLFxuIFx0XHRcdFx0XHRcdHVkZXYtXHUwMDNlYm9zKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmMgYi9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jXG5pbmRleCBmM2ExZTQyMzJhMzFkYy4uOTg0NTMyN2Y5NWM1OWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jXG4rKysgYi9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jXG5AQCAtNjgsOCArNjgsOCBAQCBzdGF0aWMgaW50IGR3YzJfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksXG4gXG4gXHRwaHkgPSB1c2JfcGh5X2dlbmVyaWNfcmVnaXN0ZXIoKTtcbiBcdGlmIChJU19FUlIocGh5KSkge1xuLVx0XHRkZXZfZXJyKGRldiwgXCJlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJWxkKVxcblwiLFxuLVx0XHRcdFBUUl9FUlIocGh5KSk7XG4rXHRcdGRldl9lcnIoZGV2LCBcImVycm9yIHJlZ2lzdGVyaW5nIGdlbmVyaWMgUEhZICglcGUpXFxuXCIsXG4rXHRcdFx0cGh5KTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGh5KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXG5pbmRleCBjZGQxZGZjNjY2YzRmNi4uZGEzMWU1Y2VhMGE1NTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuY1xuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmNcbkBAIC0xMzExLDggKzEzMTEsOCBAQCBpbnQgZ3NlcmlhbF9hbGxvY19saW5lX25vX2NvbnNvbGUodW5zaWduZWQgY2hhciAqbGluZV9udW0pXG4gXHR0dHlfZGV2ID0gdHR5X3BvcnRfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNnBvcnQtXHUwMDNlcG9ydCxcbiBcdFx0XHRnc190dHlfZHJpdmVyLCBwb3J0X251bSwgTlVMTCk7XG4gXHRpZiAoSVNfRVJSKHR0eV9kZXYpKSB7XG4tXHRcdHByX2VycihcIiVzOiBmYWlsZWQgdG8gcmVnaXN0ZXIgdHR5IGZvciBwb3J0ICVkLCBlcnIgJWxkXFxuXCIsXG4tXHRcdFx0XHRfX2Z1bmNfXywgcG9ydF9udW0sIFBUUl9FUlIodHR5X2RldikpO1xuK1x0XHRwcl9lcnIoXCIlczogZmFpbGVkIHRvIHJlZ2lzdGVyIHR0eSBmb3IgcG9ydCAlZCwgZXJyICVwZVxcblwiLFxuK1x0XHRcdFx0X19mdW5jX18sIHBvcnRfbnVtLCB0dHlfZGV2KTtcbiBcbiBcdFx0cmV0ID0gUFRSX0VSUih0dHlfZGV2KTtcbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZwb3J0c1twb3J0X251bV0ubG9jayk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmMgYi9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuY1xuaW5kZXggNzU5NzcwYTEzMjYwNjEuLjNhYzU3ZDMxMzc2YzJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcbisrKyBiL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jXG5AQCAtMjAyLDggKzIwMiw4IEBAIHN0YXRpYyBpbnQgdXNiMzUwM19wcm9iZShzdHJ1Y3QgdXNiMzUwMyAqaHViKVxuIFxuIFx0XHRodWItXHUwMDNlY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsKGRldiwgXCJyZWZjbGtcIik7XG4gXHRcdGlmIChJU19FUlIoaHViLVx1MDAzZWNsaykpIHtcbi1cdFx0XHRkZXZfZXJyKGRldiwgXCJ1bmFibGUgdG8gcmVxdWVzdCByZWZjbGsgKCVsZClcXG5cIixcbi1cdFx0XHRcdFx0UFRSX0VSUihodWItXHUwMDNlY2xrKSk7XG4rXHRcdFx0ZGV2X2VycihkZXYsIFwidW5hYmxlIHRvIHJlcXVlc3QgcmVmY2xrICglcGUpXFxuXCIsXG4rXHRcdFx0XHRcdGh1Yi1cdTAwM2VjbGspO1xuIFx0XHRcdHJldHVybiBQVFJfRVJSKGh1Yi1cdTAwM2VjbGspO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmMgYi9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuY1xuaW5kZXggOTg1NjgzZmU0OWU5MTQuLmEyMzU3YTI4ZWNmNGIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcbisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXG5AQCAtMTM5LDggKzEzOSw4IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiBcbiBcdHBpLVx1MDAzZXN3ID0gdHlwZWNfc3dpdGNoX3JlZ2lzdGVyKGRldiwgXHUwMDI2c3dfZGVzYyk7XG4gXHRpZiAoSVNfRVJSKHBpLVx1MDAzZXN3KSkge1xuLVx0XHRkZXZfZXJyKGRldiwgXCJFcnJvciByZWdpc3RlcmluZyB0eXBlYyBzd2l0Y2g6ICVsZFxcblwiLFxuLVx0XHRcdFBUUl9FUlIocGktXHUwMDNlc3cpKTtcbitcdFx0ZGV2X2VycihkZXYsIFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgc3dpdGNoOiAlcGVcXG5cIixcbitcdFx0XHRwaS1cdTAwM2Vzdyk7XG4gXHRcdHJldHVybiBQVFJfRVJSKHBpLVx1MDAzZXN3KTtcbiBcdH1cbiBcbkBAIC0xNTEsOCArMTUxLDggQEAgc3RhdGljIGludCBwaTN1c2IzMDUzMl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIFx0cGktXHUwMDNlbXV4ID0gdHlwZWNfbXV4X3JlZ2lzdGVyKGRldiwgXHUwMDI2bXV4X2Rlc2MpO1xuIFx0aWYgKElTX0VSUihwaS1cdTAwM2VtdXgpKSB7XG4gXHRcdHR5cGVjX3N3aXRjaF91bnJlZ2lzdGVyKHBpLVx1MDAzZXN3KTtcbi1cdFx0ZGV2X2VycihkZXYsIFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlbGRcXG5cIixcbi1cdFx0XHRQVFJfRVJSKHBpLVx1MDAzZW11eCkpO1xuK1x0XHRkZXZfZXJyKGRldiwgXCJFcnJvciByZWdpc3RlcmluZyB0eXBlYyBtdXg6ICVwZVxcblwiLFxuK1x0XHRcdHBpLVx1MDAzZW11eCk7XG4gXHRcdHJldHVybiBQVFJfRVJSKHBpLVx1MDAzZW11eCk7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmMgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uY1xuaW5kZXggODllZWMyMGEyMDY0Y2UuLmFkMTA0NzBlYTczYjA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcbisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXG5AQCAtNDc5Niw3ICs0Nzk2LDcgQEAgc3RhdGljIHZvaWQgdGNwbV90eXBlY19jb25uZWN0KHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpXG4gXHRcdFx0cG9ydC1cdTAwM2VwYXJ0bmVyX2Rlc2MuYWNjZXNzb3J5ID0gVFlQRUNfQUNDRVNTT1JZX05PTkU7XG4gXHRcdHBhcnRuZXIgPSB0eXBlY19yZWdpc3Rlcl9wYXJ0bmVyKHBvcnQtXHUwMDNldHlwZWNfcG9ydCwgXHUwMDI2cG9ydC1cdTAwM2VwYXJ0bmVyX2Rlc2MpO1xuIFx0XHRpZiAoSVNfRVJSKHBhcnRuZXIpKSB7XG4tXHRcdFx0ZGV2X2Vycihwb3J0LVx1MDAzZWRldiwgXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lciAoJWxkKVxcblwiLCBQVFJfRVJSKHBhcnRuZXIpKTtcbitcdFx0XHRkZXZfZXJyKHBvcnQtXHUwMDNlZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyICglcGUpXFxuXCIsIHBhcnRuZXIpO1xuIFx0XHRcdHJldHVybjtcbiBcdFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmMgYi9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXG5pbmRleCA2MDYyODc1ZmIwNGE5ZC4uODZkMTNhYjQxNjcwNDQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXG4rKysgYi9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXG5AQCAtMjc3LDggKzI3Nyw4IEBAIHN0YXRpYyB2b2lkIHd1c2IzODAxX2h3X3VwZGF0ZShzdHJ1Y3Qgd3VzYjM4MDEgKnd1c2IzODAxKVxuIFx0XHRpZiAocGFydG5lcl90eXBlICE9IFdVU0IzODAxX1NUQVRfUEFSVE5FUl9TVEFOREJZKSB7XG4gXHRcdFx0d3VzYjM4MDEtXHUwMDNlcGFydG5lciA9IHR5cGVjX3JlZ2lzdGVyX3BhcnRuZXIocG9ydCwgXHUwMDI2ZGVzYyk7XG4gXHRcdFx0aWYgKElTX0VSUih3dXNiMzgwMS1cdTAwM2VwYXJ0bmVyKSlcbi1cdFx0XHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyOiAlbGRcXG5cIixcbi1cdFx0XHRcdFx0UFRSX0VSUih3dXNiMzgwMS1cdTAwM2VwYXJ0bmVyKSk7XG4rXHRcdFx0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJXBlXFxuXCIsXG4rXHRcdFx0XHRcdHd1c2IzODAxLVx1MDAzZXBhcnRuZXIpO1xuIFx0XHR9XG4gXG4gXHRcdGRhdGFfcm9sZSA9IHB3cl9yb2xlID09IFRZUEVDX1NPVVJDRSA/IFRZUEVDX0hPU1QgOiBUWVBFQ19ERVZJQ0U7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMzo0MTo0Ni40MTc0MDY4OTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjE2MjM2NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIExvZ2dpbmctT25seSBDaGFuZ2UgaW4gdGhlIFVTQiBTdWJzeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgYW5kIGl0J3MgbWFraW5nIGEgcHVyZWx5IGNvc21ldGljIGNoYW5nZSB3aXRoaW4gdGhlIFVTQiBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgaXQncyBzd2FwcGluZyBvdXQgYFBUUl9FUlIoeClgIGZvciBgJXBlYCBhbmQgYHhgIGl0c2VsZiBpbiB2YXJpb3VzIGVycm9yIGxvZ2dpbmcgY2FsbHMgbGlrZSBgZGV2X2VycmAsIGBwcl9lcnJgLCBhbmQgYHVzYl9lcnJgLiBFc3NlbnRpYWxseSwgd2UncmUgcmVmaW5pbmcgdGhlIGVycm9yIG1lc3NhZ2UgZm9ybWF0dGluZyBmb3IgdGhlc2UgcHJpbnRzLlxuXG5MZXQncyBxdWlja2x5IHZlcmlmeS4gSSBzZWUgZXhhbXBsZXMgbGlrZSBgdXNiX2VycihpbnN0YW5jZSwgXCIlczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxcblwiLCBfX2Z1bmNfXywgdCk7YCwgYGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byBnZXQgY2xrcywgZXJyPSVwZSwlcGVcXG5cIiwgZGF0YS1cdTAwM2VjbGssIGRhdGEtXHUwMDNlY2xrX2lwZyk7YCwgYW5kIHNvIG9uLiBJdCdzIHRoZSBzYW1lIHBhdHRlcm4gYWNyb3NzIGFsbCBvZiB0aGVtLiBUaGUgaW50ZW50IGlzIHRvIHByaW50IHRoZSByYXcgcG9pbnRlciB2YWx1ZSB3aXRoIGAlcGVgIHdoaWNoIGlzIHRoZSBjb3JyZWN0IGZvcm1hdCBzcGVjaWZpZXIgZm9yIGEgcG9pbnRlci1hcy1lcnJvci5cblxuTG9va2luZyBhdCBlYWNoIGluc3RhbmNlLCBpdCdzIGNsZWFyOiB0aGlzIGlzIGp1c3Qgc3RhbmRhcmRpemluZyB0aGUgZXJyb3IgcG9pbnRlciBwcmludGluZy4gSXQncyBhIHN0YW5kYXJkIGtlcm5lbCBiZXN0IHByYWN0aWNlIHRvIHByaW50IHRoZSBlcnJvciBwb2ludGVyIHdpdGggYCVwZWAuICBObyBmdW5jdGlvbmFsIGNoYW5nZSwgbm8gYWx0ZXJhdGlvbiB0byBleGVjdXRpb24gZmxvdy4gVGhpcyBpcyBhIGxvZ2dpbmcgZW5oYW5jZW1lbnQsIHBsYWluIGFuZCBzaW1wbGUuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUga2VybmVsIGFuZCBlcnJvciBoYW5kbGluZywgdGhpcyBjaGFuZ2UgaXMgbm90IGdvaW5nIHRvIGludHJvZHVjZSBhbnl0aGluZyBmdXp6LXdvcnRoeS4gIEknbSBjb25maWRlbnRseSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NDIsIk91dHB1dFRva2VucyI6NzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMzo0MTo1My42MzM2NDUzMTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgdXBkYXRlcyBlcnJvciBsb2dnaW5nIHN0YXRlbWVudHMgdG8gdXNlIHRoZSAnJXBlJyBmb3JtYXQgc3BlY2lmaWVyIGZvciBwcmludGluZyBlcnJvciBwb2ludGVycyBpbnN0ZWFkIG9mIHVzaW5nICclbGQnIGFuZCBQVFJfRVJSKCkuIFRoaXMgaXMgYSBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSB1cGRhdGVzIGVycm9yIGxvZ2dpbmcgc3RhdGVtZW50cyB0byB1c2UgdGhlICclcGUnIGZvcm1hdCBzcGVjaWZpZXIgZm9yIHByaW50aW5nIGVycm9yIHBvaW50ZXJzIGluc3RlYWQgb2YgdXNpbmcgJyVsZCcgYW5kIFBUUl9FUlIoKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbkxq5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-19 13:03:57 +0000 UTC FinishedAt: 2026-07-19 13:41:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDEzOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgdXBkYXRlcyBlcnJvciBsb2dnaW5nIHN0YXRlbWVudHMgdG8gdXNlIHRoZSAmIzM5OyVwZSYjMzk7IGZvcm1hdCBzcGVjaWZpZXIgZm9yIHByaW50aW5nIGVycm9yIHBvaW50ZXJzIGluc3RlYWQgb2YgdXNpbmcgJiMzOTslbGQmIzM5OyBhbmQgUFRSX0VSUigpLiBUaGlzIGlzIGEgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTM6NDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZDY0ODA1ZjU5N2Q4NTFmM2I5NDA0ZjNiMDdmY2JkMjUxZmRlY2M2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMTM6NDE6NDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jIGIvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXG5pbmRleCA5NjAwZTFlYzA5OTMwNC4uYzc4Y2FhMWI1N2M5ZDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uY1xuQEAgLTk3OSw4ICYjNDM7OTc5LDggQEAgc3RhdGljIGludCB1c2JhdG1faGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKmluc3RhbmNlKVxuIFx0dCA9IGt0aHJlYWRfY3JlYXRlKHVzYmF0bV9kb19oZWF2eV9pbml0LCBpbnN0YW5jZSwgXCYjMzQ7JXNcJiMzNDssXG4gXHRcdFx0aW5zdGFuY2UtXHUwMDNlZHJpdmVyLVx1MDAzZWRyaXZlcl9uYW1lKTtcbiBcdGlmIChJU19FUlIodCkpIHtcbi1cdFx0dXNiX2VycihpbnN0YW5jZSwgXCYjMzQ7JXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJWxkKSFcXG5cJiMzNDssXG4tXHRcdFx0XHRfX2Z1bmNfXywgUFRSX0VSUih0KSk7XG4mIzQzO1x0XHR1c2JfZXJyKGluc3RhbmNlLCBcJiMzNDslczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRfX2Z1bmNfXywgdCk7XG4gXHRcdHJldHVybiBQVFJfRVJSKHQpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jXG5pbmRleCA1NmQyYmE4MjRhMGIyMC4uN2JmZTM3ZWQ2OGFlYjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jXG5AQCAtMjE4LDggJiM0MzsyMTgsOCBAQCBzdGF0aWMgaW50IGlteF9nZXRfY2xrcyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdGlmIChJU19FUlIoZGF0YS1cdTAwM2VjbGspKSB7XG4gXHRcdFx0cmV0ID0gUFRSX0VSUihkYXRhLVx1MDAzZWNsayk7XG4gXHRcdFx0ZGV2X2VycihkZXYsXG4tXHRcdFx0XHRcJiMzNDtGYWlsZWQgdG8gZ2V0IGNsa3MsIGVycj0lbGQsJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0UFRSX0VSUihkYXRhLVx1MDAzZWNsayksIFBUUl9FUlIoZGF0YS1cdTAwM2VjbGtfaXBnKSk7XG4mIzQzO1x0XHRcdFx0XCYjMzQ7RmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JXBlLCVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRkYXRhLVx1MDAzZWNsaywgZGF0YS1cdTAwM2VjbGtfaXBnKTtcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXHRcdC8qIEdldCB3YWtldXAgY2xvY2suIE5vdCBhbGwgb2YgdGhlIHBsYXRmb3JtcyBuZWVkIHRvXG5AQCAtNDQ4LDggJiM0Mzs0NDgsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdHBpbmN0cmxfaHNpY19pZGxlID0gcGluY3RybF9sb29rdXBfc3RhdGUoZGF0YS1cdTAwM2VwaW5jdHJsLCBcJiMzNDtpZGxlXCYjMzQ7KTtcbiBcdFx0aWYgKElTX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpIHtcbiBcdFx0XHRkZXZfZXJyKGRldixcbi1cdFx0XHRcdFwmIzM0O3BpbmN0cmxfaHNpY19pZGxlIGxvb2t1cCBmYWlsZWQsIGVycj0lbGRcXG5cJiMzNDssXG4tXHRcdFx0XHRcdFBUUl9FUlIocGluY3RybF9oc2ljX2lkbGUpKTtcbiYjNDM7XHRcdFx0XHRcJiMzNDtwaW5jdHJsX2hzaWNfaWRsZSBsb29rdXAgZmFpbGVkLCBlcnI9JXBlXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0cGluY3RybF9oc2ljX2lkbGUpO1xuIFx0XHRcdHJldCA9IFBUUl9FUlIocGluY3RybF9oc2ljX2lkbGUpO1xuIFx0XHRcdGdvdG8gZXJyX3B1dDtcbiBcdFx0fVxuQEAgLTQ2NCw4ICYjNDM7NDY0LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdFx0XHRcdFx0XHRcJiMzNDthY3RpdmVcJiMzNDspO1xuIFx0XHRpZiAoSVNfRVJSKGRhdGEtXHUwMDNlcGluY3RybF9oc2ljX2FjdGl2ZSkpIHtcbiBcdFx0XHRkZXZfZXJyKGRldixcbi1cdFx0XHRcdFwmIzM0O3BpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0UFRSX0VSUihkYXRhLVx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpKTtcbiYjNDM7XHRcdFx0XHRcJiMzNDtwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0XHRkYXRhLVx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpO1xuIFx0XHRcdHJldCA9IFBUUl9FUlIoZGF0YS1cdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKTtcbiBcdFx0XHRnb3RvIGVycl9wdXQ7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmMgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmNcbmluZGV4IDA3NTYzYmUwMDEzZjRkLi4wOWRiOGE0ZWFjZTIwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXG5AQCAtNjgwLDggJiM0Mzs2ODAsOCBAQCBzdGF0aWMgaW50IGNpX2dldF9wbGF0ZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRcdFx0Lyogbm8gdmJ1cyByZWd1bGF0b3IgaXMgbmVlZGVkICovXG4gXHRcdFx0cGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMgPSBOVUxMO1xuIFx0XHR9IGVsc2UgaWYgKElTX0VSUihwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cykpIHtcbi1cdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7R2V0dGluZyByZWd1bGF0b3IgZXJyb3I6ICVsZFxcblwmIzM0Oyxcbi1cdFx0XHRcdFBUUl9FUlIocGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMpKTtcbiYjNDM7XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0dldHRpbmcgcmVndWxhdG9yIGVycm9yOiAlcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0cGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMpO1xuIFx0XHRcdHJldHVybiBQVFJfRVJSKHBsYXRkYXRhLVx1MDAzZXJlZ192YnVzKTtcbiBcdFx0fVxuIFx0XHQvKiBHZXQgVFBMIHN1cHBvcnQgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jIGIvZHJpdmVycy91c2IvY29yZS9odWIuY1xuaW5kZXggNTI2MmUxMWMxMmNkM2EuLjVlMzNlMzk4NDQ5OWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9odWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY29yZS9odWIuY1xuQEAgLTU2NzEsOCAmIzQzOzU2NzEsOCBAQCBzdGF0aWMgdm9pZCBodWJfcG9ydF9jb25uZWN0X2NoYW5nZShzdHJ1Y3QgdXNiX2h1YiAqaHViLCBpbnQgcG9ydDEsXG4gXHRcdFx0ZGVzY3IgPSB1c2JfZ2V0X2RldmljZV9kZXNjcmlwdG9yKHVkZXYpO1xuIFx0XHRcdGlmIChJU19FUlIoZGVzY3IpKSB7XG4gXHRcdFx0XHRkZXZfZGJnKFx1MDAyNnVkZXYtXHUwMDNlZGV2LFxuLVx0XHRcdFx0XHRcdFwmIzM0O2NhbiYjMzk7dCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVsZFxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0XHRQVFJfRVJSKGRlc2NyKSk7XG4mIzQzO1x0XHRcdFx0XHRcdFwmIzM0O2NhbiYjMzk7dCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdFx0ZGVzY3IpO1xuIFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRpZiAoZGVzY3JpcHRvcnNfY2hhbmdlZCh1ZGV2LCBkZXNjcixcbiBcdFx0XHRcdFx0XHR1ZGV2LVx1MDAzZWJvcykpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jIGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xuaW5kZXggZjNhMWU0MjMyYTMxZGMuLjk4NDUzMjdmOTVjNTlmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xuQEAgLTY4LDggJiM0Mzs2OCw4IEBAIHN0YXRpYyBpbnQgZHdjMl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaSxcbiBcbiBcdHBoeSA9IHVzYl9waHlfZ2VuZXJpY19yZWdpc3RlcigpO1xuIFx0aWYgKElTX0VSUihwaHkpKSB7XG4tXHRcdGRldl9lcnIoZGV2LCBcJiMzNDtlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJWxkKVxcblwmIzM0Oyxcbi1cdFx0XHRQVFJfRVJSKHBoeSkpO1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O2Vycm9yIHJlZ2lzdGVyaW5nIGdlbmVyaWMgUEhZICglcGUpXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRwaHkpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihwaHkpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmNcbmluZGV4IGNkZDFkZmM2NjZjNGY2Li5kYTMxZTVjZWEwYTU1MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuY1xuQEAgLTEzMTEsOCAmIzQzOzEzMTEsOCBAQCBpbnQgZ3NlcmlhbF9hbGxvY19saW5lX25vX2NvbnNvbGUodW5zaWduZWQgY2hhciAqbGluZV9udW0pXG4gXHR0dHlfZGV2ID0gdHR5X3BvcnRfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNnBvcnQtXHUwMDNlcG9ydCxcbiBcdFx0XHRnc190dHlfZHJpdmVyLCBwb3J0X251bSwgTlVMTCk7XG4gXHRpZiAoSVNfRVJSKHR0eV9kZXYpKSB7XG4tXHRcdHByX2VycihcJiMzNDslczogZmFpbGVkIHRvIHJlZ2lzdGVyIHR0eSBmb3IgcG9ydCAlZCwgZXJyICVsZFxcblwmIzM0Oyxcbi1cdFx0XHRcdF9fZnVuY19fLCBwb3J0X251bSwgUFRSX0VSUih0dHlfZGV2KSk7XG4mIzQzO1x0XHRwcl9lcnIoXCYjMzQ7JXM6IGZhaWxlZCB0byByZWdpc3RlciB0dHkgZm9yIHBvcnQgJWQsIGVyciAlcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0X19mdW5jX18sIHBvcnRfbnVtLCB0dHlfZGV2KTtcbiBcbiBcdFx0cmV0ID0gUFRSX0VSUih0dHlfZGV2KTtcbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZwb3J0c1twb3J0X251bV0ubG9jayk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmMgYi9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuY1xuaW5kZXggNzU5NzcwYTEzMjYwNjEuLjNhYzU3ZDMxMzc2YzJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jXG5AQCAtMjAyLDggJiM0MzsyMDIsOCBAQCBzdGF0aWMgaW50IHVzYjM1MDNfcHJvYmUoc3RydWN0IHVzYjM1MDMgKmh1YilcbiBcbiBcdFx0aHViLVx1MDAzZWNsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbChkZXYsIFwmIzM0O3JlZmNsa1wmIzM0Oyk7XG4gXHRcdGlmIChJU19FUlIoaHViLVx1MDAzZWNsaykpIHtcbi1cdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7dW5hYmxlIHRvIHJlcXVlc3QgcmVmY2xrICglbGQpXFxuXCYjMzQ7LFxuLVx0XHRcdFx0XHRQVFJfRVJSKGh1Yi1cdTAwM2VjbGspKTtcbiYjNDM7XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O3VuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJXBlKVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdGh1Yi1cdTAwM2VjbGspO1xuIFx0XHRcdHJldHVybiBQVFJfRVJSKGh1Yi1cdTAwM2VjbGspO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmMgYi9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuY1xuaW5kZXggOTg1NjgzZmU0OWU5MTQuLmEyMzU3YTI4ZWNmNGIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXG5AQCAtMTM5LDggJiM0MzsxMzksOCBAQCBzdGF0aWMgaW50IHBpM3VzYjMwNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXG4gXHRwaS1cdTAwM2VzdyA9IHR5cGVjX3N3aXRjaF9yZWdpc3RlcihkZXYsIFx1MDAyNnN3X2Rlc2MpO1xuIFx0aWYgKElTX0VSUihwaS1cdTAwM2VzdykpIHtcbi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0Vycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIHN3aXRjaDogJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFBUUl9FUlIocGktXHUwMDNlc3cpKTtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBzd2l0Y2g6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0cGktXHUwMDNlc3cpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihwaS1cdTAwM2Vzdyk7XG4gXHR9XG4gXG5AQCAtMTUxLDggJiM0MzsxNTEsOCBAQCBzdGF0aWMgaW50IHBpM3VzYjMwNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRwaS1cdTAwM2VtdXggPSB0eXBlY19tdXhfcmVnaXN0ZXIoZGV2LCBcdTAwMjZtdXhfZGVzYyk7XG4gXHRpZiAoSVNfRVJSKHBpLVx1MDAzZW11eCkpIHtcbiBcdFx0dHlwZWNfc3dpdGNoX3VucmVnaXN0ZXIocGktXHUwMDNlc3cpO1xuLVx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlbGRcXG5cJiMzNDssXG4tXHRcdFx0UFRSX0VSUihwaS1cdTAwM2VtdXgpKTtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBtdXg6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0cGktXHUwMDNlbXV4KTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGktXHUwMDNlbXV4KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXG5pbmRleCA4OWVlYzIwYTIwNjRjZS4uYWQxMDQ3MGVhNzNiMDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcbkBAIC00Nzk2LDcgJiM0Mzs0Nzk2LDcgQEAgc3RhdGljIHZvaWQgdGNwbV90eXBlY19jb25uZWN0KHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpXG4gXHRcdFx0cG9ydC1cdTAwM2VwYXJ0bmVyX2Rlc2MuYWNjZXNzb3J5ID0gVFlQRUNfQUNDRVNTT1JZX05PTkU7XG4gXHRcdHBhcnRuZXIgPSB0eXBlY19yZWdpc3Rlcl9wYXJ0bmVyKHBvcnQtXHUwMDNldHlwZWNfcG9ydCwgXHUwMDI2cG9ydC1cdTAwM2VwYXJ0bmVyX2Rlc2MpO1xuIFx0XHRpZiAoSVNfRVJSKHBhcnRuZXIpKSB7XG4tXHRcdFx0ZGV2X2Vycihwb3J0LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXIgKCVsZClcXG5cJiMzNDssIFBUUl9FUlIocGFydG5lcikpO1xuJiM0MztcdFx0XHRkZXZfZXJyKHBvcnQtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lciAoJXBlKVxcblwmIzM0OywgcGFydG5lcik7XG4gXHRcdFx0cmV0dXJuO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmNcbmluZGV4IDYwNjI4NzVmYjA0YTlkLi44NmQxM2FiNDE2NzA0NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmNcbkBAIC0yNzcsOCAmIzQzOzI3Nyw4IEBAIHN0YXRpYyB2b2lkIHd1c2IzODAxX2h3X3VwZGF0ZShzdHJ1Y3Qgd3VzYjM4MDEgKnd1c2IzODAxKVxuIFx0XHRpZiAocGFydG5lcl90eXBlICE9IFdVU0IzODAxX1NUQVRfUEFSVE5FUl9TVEFOREJZKSB7XG4gXHRcdFx0d3VzYjM4MDEtXHUwMDNlcGFydG5lciA9IHR5cGVjX3JlZ2lzdGVyX3BhcnRuZXIocG9ydCwgXHUwMDI2ZGVzYyk7XG4gXHRcdFx0aWYgKElTX0VSUih3dXNiMzgwMS1cdTAwM2VwYXJ0bmVyKSlcbi1cdFx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0XHRQVFJfRVJSKHd1c2IzODAxLVx1MDAzZXBhcnRuZXIpKTtcbiYjNDM7XHRcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXI6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdHd1c2IzODAxLVx1MDAzZXBhcnRuZXIpO1xuIFx0XHR9XG4gXG4gXHRcdGRhdGFfcm9sZSA9IHB3cl9yb2xlID09IFRZUEVDX1NPVVJDRSA/IFRZUEVDX0hPU1QgOiBUWVBFQ19ERVZJQ0U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTM6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSB1cGRhdGVzIGVycm9yIGxvZ2dpbmcgc3RhdGVtZW50cyB0byB1c2UgdGhlICYjMzk7JXBlJiMzOTsgZm9ybWF0IHNwZWNpZmllciBmb3IgcHJpbnRpbmcgZXJyb3IgcG9pbnRlcnMgaW5zdGVhZCBvZiB1c2luZyAmIzM5OyVsZCYjMzk7IGFuZCBQVFJfRVJSKCkuIFRoaXMgaXMgYSBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGQ2NDgwNWY1OTdkODUxZjNiOTQwNGYzYjA3ZmNiZDI1MWZkZWNjNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDE5IDEzOjQxOjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jIGIvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jCmluZGV4IDk2MDBlMWVjMDk5MzA0Li5jNzhjYWExYjU3YzlkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uYwpAQCAtOTc5LDggJiM0Mzs5NzksOCBAQCBzdGF0aWMgaW50IHVzYmF0bV9oZWF2eV9pbml0KHN0cnVjdCB1c2JhdG1fZGF0YSAqaW5zdGFuY2UpCiAJdCA9IGt0aHJlYWRfY3JlYXRlKHVzYmF0bV9kb19oZWF2eV9pbml0LCBpbnN0YW5jZSwgJiMzNDslcyYjMzQ7LAogCQkJaW5zdGFuY2UtJmd0O2RyaXZlci0mZ3Q7ZHJpdmVyX25hbWUpOwogCWlmIChJU19FUlIodCkpIHsKLQkJdXNiX2VycihpbnN0YW5jZSwgJiMzNDslczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglbGQpIVxuJiMzNDssCi0JCQkJX19mdW5jX18sIFBUUl9FUlIodCkpOwomIzQzOwkJdXNiX2VycihpbnN0YW5jZSwgJiMzNDslczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxuJiMzNDssCiYjNDM7CQkJCV9fZnVuY19fLCB0KTsKIAkJcmV0dXJuIFBUUl9FUlIodCk7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYwppbmRleCA1NmQyYmE4MjRhMGIyMC4uN2JmZTM3ZWQ2OGFlYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYwpAQCAtMjE4LDggJiM0MzsyMTgsOCBAQCBzdGF0aWMgaW50IGlteF9nZXRfY2xrcyhzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCWlmIChJU19FUlIoZGF0YS0mZ3Q7Y2xrKSkgewogCQkJcmV0ID0gUFRSX0VSUihkYXRhLSZndDtjbGspOwogCQkJZGV2X2VycihkZXYsCi0JCQkJJiMzNDtGYWlsZWQgdG8gZ2V0IGNsa3MsIGVycj0lbGQsJWxkXG4mIzM0OywKLQkJCQlQVFJfRVJSKGRhdGEtJmd0O2NsayksIFBUUl9FUlIoZGF0YS0mZ3Q7Y2xrX2lwZykpOwomIzQzOwkJCQkmIzM0O0ZhaWxlZCB0byBnZXQgY2xrcywgZXJyPSVwZSwlcGVcbiYjMzQ7LAomIzQzOwkJCQlkYXRhLSZndDtjbGssIGRhdGEtJmd0O2Nsa19pcGcpOwogCQkJcmV0dXJuIHJldDsKIAkJfQogCQkvKiBHZXQgd2FrZXVwIGNsb2NrLiBOb3QgYWxsIG9mIHRoZSBwbGF0Zm9ybXMgbmVlZCB0bwpAQCAtNDQ4LDggJiM0Mzs0NDgsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCXBpbmN0cmxfaHNpY19pZGxlID0gcGluY3RybF9sb29rdXBfc3RhdGUoZGF0YS0mZ3Q7cGluY3RybCwgJiMzNDtpZGxlJiMzNDspOwogCQlpZiAoSVNfRVJSKHBpbmN0cmxfaHNpY19pZGxlKSkgewogCQkJZGV2X2VycihkZXYsCi0JCQkJJiMzNDtwaW5jdHJsX2hzaWNfaWRsZSBsb29rdXAgZmFpbGVkLCBlcnI9JWxkXG4mIzM0OywKLQkJCQkJUFRSX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpOwomIzQzOwkJCQkmIzM0O3BpbmN0cmxfaHNpY19pZGxlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcbiYjMzQ7LAomIzQzOwkJCQkJcGluY3RybF9oc2ljX2lkbGUpOwogCQkJcmV0ID0gUFRSX0VSUihwaW5jdHJsX2hzaWNfaWRsZSk7CiAJCQlnb3RvIGVycl9wdXQ7CiAJCX0KQEAgLTQ2NCw4ICYjNDM7NDY0LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQkJCQkJCQkmIzM0O2FjdGl2ZSYjMzQ7KTsKIAkJaWYgKElTX0VSUihkYXRhLSZndDtwaW5jdHJsX2hzaWNfYWN0aXZlKSkgewogCQkJZGV2X2VycihkZXYsCi0JCQkJJiMzNDtwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lbGRcbiYjMzQ7LAotCQkJCQlQVFJfRVJSKGRhdGEtJmd0O3BpbmN0cmxfaHNpY19hY3RpdmUpKTsKJiM0MzsJCQkJJiMzNDtwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcbiYjMzQ7LAomIzQzOwkJCQkJZGF0YS0mZ3Q7cGluY3RybF9oc2ljX2FjdGl2ZSk7CiAJCQlyZXQgPSBQVFJfRVJSKGRhdGEtJmd0O3BpbmN0cmxfaHNpY19hY3RpdmUpOwogCQkJZ290byBlcnJfcHV0OwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmMgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmMKaW5kZXggMDc1NjNiZTAwMTNmNGQuLjA5ZGI4YTRlYWNlMjAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jCkBAIC02ODAsOCAmIzQzOzY4MCw4IEBAIHN0YXRpYyBpbnQgY2lfZ2V0X3BsYXRkYXRhKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCS8qIG5vIHZidXMgcmVndWxhdG9yIGlzIG5lZWRlZCAqLwogCQkJcGxhdGRhdGEtJmd0O3JlZ192YnVzID0gTlVMTDsKIAkJfSBlbHNlIGlmIChJU19FUlIocGxhdGRhdGEtJmd0O3JlZ192YnVzKSkgewotCQkJZGV2X2VycihkZXYsICYjMzQ7R2V0dGluZyByZWd1bGF0b3IgZXJyb3I6ICVsZFxuJiMzNDssCi0JCQkJUFRSX0VSUihwbGF0ZGF0YS0mZ3Q7cmVnX3ZidXMpKTsKJiM0MzsJCQlkZXZfZXJyKGRldiwgJiMzNDtHZXR0aW5nIHJlZ3VsYXRvciBlcnJvcjogJXBlXG4mIzM0OywKJiM0MzsJCQkJcGxhdGRhdGEtJmd0O3JlZ192YnVzKTsKIAkJCXJldHVybiBQVFJfRVJSKHBsYXRkYXRhLSZndDtyZWdfdmJ1cyk7CiAJCX0KIAkJLyogR2V0IFRQTCBzdXBwb3J0ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jIGIvZHJpdmVycy91c2IvY29yZS9odWIuYwppbmRleCA1MjYyZTExYzEyY2QzYS4uNWUzM2UzOTg0NDk5ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY29yZS9odWIuYwpAQCAtNTY3MSw4ICYjNDM7NTY3MSw4IEBAIHN0YXRpYyB2b2lkIGh1Yl9wb3J0X2Nvbm5lY3RfY2hhbmdlKHN0cnVjdCB1c2JfaHViICpodWIsIGludCBwb3J0MSwKIAkJCWRlc2NyID0gdXNiX2dldF9kZXZpY2VfZGVzY3JpcHRvcih1ZGV2KTsKIAkJCWlmIChJU19FUlIoZGVzY3IpKSB7CiAJCQkJZGV2X2RiZygmYW1wO3VkZXYtJmd0O2RldiwKLQkJCQkJCSYjMzQ7Y2FuJiMzOTt0IHJlYWQgZGV2aWNlIGRlc2NyaXB0b3IgJWxkXG4mIzM0OywKLQkJCQkJCVBUUl9FUlIoZGVzY3IpKTsKJiM0MzsJCQkJCQkmIzM0O2NhbiYjMzk7dCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVwZVxuJiMzNDssCiYjNDM7CQkJCQkJZGVzY3IpOwogCQkJfSBlbHNlIHsKIAkJCQlpZiAoZGVzY3JpcHRvcnNfY2hhbmdlZCh1ZGV2LCBkZXNjciwKIAkJCQkJCXVkZXYtJmd0O2JvcykpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmMgYi9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jCmluZGV4IGYzYTFlNDIzMmEzMWRjLi45ODQ1MzI3Zjk1YzU5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZHdjMi9wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jCkBAIC02OCw4ICYjNDM7NjgsOCBAQCBzdGF0aWMgaW50IGR3YzJfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksCiAKIAlwaHkgPSB1c2JfcGh5X2dlbmVyaWNfcmVnaXN0ZXIoKTsKIAlpZiAoSVNfRVJSKHBoeSkpIHsKLQkJZGV2X2VycihkZXYsICYjMzQ7ZXJyb3IgcmVnaXN0ZXJpbmcgZ2VuZXJpYyBQSFkgKCVsZClcbiYjMzQ7LAotCQkJUFRSX0VSUihwaHkpKTsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O2Vycm9yIHJlZ2lzdGVyaW5nIGdlbmVyaWMgUEhZICglcGUpXG4mIzM0OywKJiM0MzsJCQlwaHkpOwogCQlyZXR1cm4gUFRSX0VSUihwaHkpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuYwppbmRleCBjZGQxZGZjNjY2YzRmNi4uZGEzMWU1Y2VhMGE1NTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jCkBAIC0xMzExLDggJiM0MzsxMzExLDggQEAgaW50IGdzZXJpYWxfYWxsb2NfbGluZV9ub19jb25zb2xlKHVuc2lnbmVkIGNoYXIgKmxpbmVfbnVtKQogCXR0eV9kZXYgPSB0dHlfcG9ydF9yZWdpc3Rlcl9kZXZpY2UoJmFtcDtwb3J0LSZndDtwb3J0LAogCQkJZ3NfdHR5X2RyaXZlciwgcG9ydF9udW0sIE5VTEwpOwogCWlmIChJU19FUlIodHR5X2RldikpIHsKLQkJcHJfZXJyKCYjMzQ7JXM6IGZhaWxlZCB0byByZWdpc3RlciB0dHkgZm9yIHBvcnQgJWQsIGVyciAlbGRcbiYjMzQ7LAotCQkJCV9fZnVuY19fLCBwb3J0X251bSwgUFRSX0VSUih0dHlfZGV2KSk7CiYjNDM7CQlwcl9lcnIoJiMzNDslczogZmFpbGVkIHRvIHJlZ2lzdGVyIHR0eSBmb3IgcG9ydCAlZCwgZXJyICVwZVxuJiMzNDssCiYjNDM7CQkJCV9fZnVuY19fLCBwb3J0X251bSwgdHR5X2Rldik7CiAKIAkJcmV0ID0gUFRSX0VSUih0dHlfZGV2KTsKIAkJbXV0ZXhfbG9jaygmYW1wO3BvcnRzW3BvcnRfbnVtXS5sb2NrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jIGIvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmMKaW5kZXggNzU5NzcwYTEzMjYwNjEuLjNhYzU3ZDMxMzc2YzJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYwpAQCAtMjAyLDggJiM0MzsyMDIsOCBAQCBzdGF0aWMgaW50IHVzYjM1MDNfcHJvYmUoc3RydWN0IHVzYjM1MDMgKmh1YikKIAogCQlodWItJmd0O2NsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbChkZXYsICYjMzQ7cmVmY2xrJiMzNDspOwogCQlpZiAoSVNfRVJSKGh1Yi0mZ3Q7Y2xrKSkgewotCQkJZGV2X2VycihkZXYsICYjMzQ7dW5hYmxlIHRvIHJlcXVlc3QgcmVmY2xrICglbGQpXG4mIzM0OywKLQkJCQkJUFRSX0VSUihodWItJmd0O2NsaykpOwomIzQzOwkJCWRldl9lcnIoZGV2LCAmIzM0O3VuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJXBlKVxuJiMzNDssCiYjNDM7CQkJCQlodWItJmd0O2Nsayk7CiAJCQlyZXR1cm4gUFRSX0VSUihodWItJmd0O2Nsayk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmMgYi9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuYwppbmRleCA5ODU2ODNmZTQ5ZTkxNC4uYTIzNTdhMjhlY2Y0YjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jCkBAIC0xMzksOCAmIzQzOzEzOSw4IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAogCXBpLSZndDtzdyA9IHR5cGVjX3N3aXRjaF9yZWdpc3RlcihkZXYsICZhbXA7c3dfZGVzYyk7CiAJaWYgKElTX0VSUihwaS0mZ3Q7c3cpKSB7Ci0JCWRldl9lcnIoZGV2LCAmIzM0O0Vycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIHN3aXRjaDogJWxkXG4mIzM0OywKLQkJCVBUUl9FUlIocGktJmd0O3N3KSk7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBzd2l0Y2g6ICVwZVxuJiMzNDssCiYjNDM7CQkJcGktJmd0O3N3KTsKIAkJcmV0dXJuIFBUUl9FUlIocGktJmd0O3N3KTsKIAl9CiAKQEAgLTE1MSw4ICYjNDM7MTUxLDggQEAgc3RhdGljIGludCBwaTN1c2IzMDUzMl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogCXBpLSZndDttdXggPSB0eXBlY19tdXhfcmVnaXN0ZXIoZGV2LCAmYW1wO211eF9kZXNjKTsKIAlpZiAoSVNfRVJSKHBpLSZndDttdXgpKSB7CiAJCXR5cGVjX3N3aXRjaF91bnJlZ2lzdGVyKHBpLSZndDtzdyk7Ci0JCWRldl9lcnIoZGV2LCAmIzM0O0Vycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIG11eDogJWxkXG4mIzM0OywKLQkJCVBUUl9FUlIocGktJmd0O211eCkpOwomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlcGVcbiYjMzQ7LAomIzQzOwkJCXBpLSZndDttdXgpOwogCQlyZXR1cm4gUFRSX0VSUihwaS0mZ3Q7bXV4KTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmMKaW5kZXggODllZWMyMGEyMDY0Y2UuLmFkMTA0NzBlYTczYjA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYwpAQCAtNDc5Niw3ICYjNDM7NDc5Niw3IEBAIHN0YXRpYyB2b2lkIHRjcG1fdHlwZWNfY29ubmVjdChzdHJ1Y3QgdGNwbV9wb3J0ICpwb3J0KQogCQkJcG9ydC0mZ3Q7cGFydG5lcl9kZXNjLmFjY2Vzc29yeSA9IFRZUEVDX0FDQ0VTU09SWV9OT05FOwogCQlwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LSZndDt0eXBlY19wb3J0LCAmYW1wO3BvcnQtJmd0O3BhcnRuZXJfZGVzYyk7CiAJCWlmIChJU19FUlIocGFydG5lcikpIHsKLQkJCWRldl9lcnIocG9ydC0mZ3Q7ZGV2LCAmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyICglbGQpXG4mIzM0OywgUFRSX0VSUihwYXJ0bmVyKSk7CiYjNDM7CQkJZGV2X2Vycihwb3J0LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXIgKCVwZSlcbiYjMzQ7LCBwYXJ0bmVyKTsKIAkJCXJldHVybjsKIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jIGIvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuYwppbmRleCA2MDYyODc1ZmIwNGE5ZC4uODZkMTNhYjQxNjcwNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuYwpAQCAtMjc3LDggJiM0MzsyNzcsOCBAQCBzdGF0aWMgdm9pZCB3dXNiMzgwMV9od191cGRhdGUoc3RydWN0IHd1c2IzODAxICp3dXNiMzgwMSkKIAkJaWYgKHBhcnRuZXJfdHlwZSAhPSBXVVNCMzgwMV9TVEFUX1BBUlRORVJfU1RBTkRCWSkgewogCQkJd3VzYjM4MDEtJmd0O3BhcnRuZXIgPSB0eXBlY19yZWdpc3Rlcl9wYXJ0bmVyKHBvcnQsICZhbXA7ZGVzYyk7CiAJCQlpZiAoSVNfRVJSKHd1c2IzODAxLSZndDtwYXJ0bmVyKSkKLQkJCQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJWxkXG4mIzM0OywKLQkJCQkJUFRSX0VSUih3dXNiMzgwMS0mZ3Q7cGFydG5lcikpOwomIzQzOwkJCQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJXBlXG4mIzM0OywKJiM0MzsJCQkJCXd1c2IzODAxLSZndDtwYXJ0bmVyKTsKIAkJfQogCiAJCWRhdGFfcm9sZSA9IHB3cl9yb2xlID09IFRZUEVDX1NPVVJDRSA/IFRZUEVDX0hPU1QgOiBUWVBFQ19ERVZJQ0U7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDEzOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NDIKCQkJCQkJCW91dHB1dDogNzcKCQkJCQkJCXRob3VnaHRzOiA1MjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTG9nZ2luZy1Pbmx5IENoYW5nZSBpbiB0aGUgVVNCIFN1YnN5c3RlbSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIGFuZCBpdCYjMzk7cyBtYWtpbmcgYSBwdXJlbHkgY29zbWV0aWMgY2hhbmdlIHdpdGhpbiB0aGUgVVNCIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBzd2FwcGluZyBvdXQgYFBUUl9FUlIoeClgIGZvciBgJXBlYCBhbmQgYHhgIGl0c2VsZiBpbiB2YXJpb3VzIGVycm9yIGxvZ2dpbmcgY2FsbHMgbGlrZSBgZGV2X2VycmAsIGBwcl9lcnJgLCBhbmQgYHVzYl9lcnJgLiBFc3NlbnRpYWxseSwgd2UmIzM5O3JlIHJlZmluaW5nIHRoZSBlcnJvciBtZXNzYWdlIGZvcm1hdHRpbmcgZm9yIHRoZXNlIHByaW50cy4KCkxldCYjMzk7cyBxdWlja2x5IHZlcmlmeS4gSSBzZWUgZXhhbXBsZXMgbGlrZSBgdXNiX2VycihpbnN0YW5jZSwgJiMzNDslczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxuJiMzNDssIF9fZnVuY19fLCB0KTtgLCBgZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JXBlLCVwZVxuJiMzNDssIGRhdGEtJmd0O2NsaywgZGF0YS0mZ3Q7Y2xrX2lwZyk7YCwgYW5kIHNvIG9uLiBJdCYjMzk7cyB0aGUgc2FtZSBwYXR0ZXJuIGFjcm9zcyBhbGwgb2YgdGhlbS4gVGhlIGludGVudCBpcyB0byBwcmludCB0aGUgcmF3IHBvaW50ZXIgdmFsdWUgd2l0aCBgJXBlYCB3aGljaCBpcyB0aGUgY29ycmVjdCBmb3JtYXQgc3BlY2lmaWVyIGZvciBhIHBvaW50ZXItYXMtZXJyb3IuCgpMb29raW5nIGF0IGVhY2ggaW5zdGFuY2UsIGl0JiMzOTtzIGNsZWFyOiB0aGlzIGlzIGp1c3Qgc3RhbmRhcmRpemluZyB0aGUgZXJyb3IgcG9pbnRlciBwcmludGluZy4gSXQmIzM5O3MgYSBzdGFuZGFyZCBrZXJuZWwgYmVzdCBwcmFjdGljZSB0byBwcmludCB0aGUgZXJyb3IgcG9pbnRlciB3aXRoIGAlcGVgLiAgTm8gZnVuY3Rpb25hbCBjaGFuZ2UsIG5vIGFsdGVyYXRpb24gdG8gZXhlY3V0aW9uIGZsb3cuIFRoaXMgaXMgYSBsb2dnaW5nIGVuaGFuY2VtZW50LCBwbGFpbiBhbmQgc2ltcGxlLgoKVGhlcmVmb3JlLCBnaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwgYW5kIGVycm9yIGhhbmRsaW5nLCB0aGlzIGNoYW5nZSBpcyBub3QgZ29pbmcgdG8gaW50cm9kdWNlIGFueXRoaW5nIGZ1enotd29ydGh5LiAgSSYjMzk7bSBjb25maWRlbnRseSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTM6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHVwZGF0ZXMgZXJyb3IgbG9nZ2luZyBzdGF0ZW1lbnRzIHRvIHVzZSB0aGUgJiMzOTslcGUmIzM5OyBmb3JtYXQgc3BlY2lmaWVyIGZvciBwcmludGluZyBlcnJvciBwb2ludGVycyBpbnN0ZWFkIG9mIHVzaW5nICYjMzk7JWxkJiMzOTsgYW5kIFBUUl9FUlIoKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHVwZGF0ZXMgZXJyb3IgbG9nZ2luZyBzdGF0ZW1lbnRzIHRvIHVzZSB0aGUgJiMzOTslcGUmIzM5OyBmb3JtYXQgc3BlY2lmaWVyIGZvciBwcmludGluZyBlcnJvciBwb2ludGVycyBpbnN0ZWFkIG9mIHVzaW5nICYjMzk7JWxkJiMzOTsgYW5kIFBUUl9FUlIoKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTlUMTM6NDE6NDUuNzQzMjcyMjY2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg5MDM5NzY4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSB1cGRhdGVzIGVycm9yIGxvZ2dpbmcgc3RhdGVtZW50cyB0byB1c2UgdGhlICclcGUnIGZvcm1hdCBzcGVjaWZpZXIgZm9yIHByaW50aW5nIGVycm9yIHBvaW50ZXJzIGluc3RlYWQgb2YgdXNpbmcgJyVsZCcgYW5kIFBUUl9FUlIoKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMzo0MTo0NS43NDMyODI1MTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MzQ1OTMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRkNjQ4MDVmNTk3ZDg1MWYzYjk0MDRmM2IwN2ZjYmQyNTFmZGVjYzZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTkgMTM6NDE6NDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jIGIvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXFxuaW5kZXggOTYwMGUxZWMwOTkzMDQuLmM3OGNhYTFiNTdjOWQ5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uY1xcbisrKyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uY1xcbkBAIC05NzksOCArOTc5LDggQEAgc3RhdGljIGludCB1c2JhdG1faGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKmluc3RhbmNlKVxcbiBcXHR0ID0ga3RocmVhZF9jcmVhdGUodXNiYXRtX2RvX2hlYXZ5X2luaXQsIGluc3RhbmNlLCBcXFwiJXNcXFwiLFxcbiBcXHRcXHRcXHRpbnN0YW5jZS1cXHUwMDNlZHJpdmVyLVxcdTAwM2Vkcml2ZXJfbmFtZSk7XFxuIFxcdGlmIChJU19FUlIodCkpIHtcXG4tXFx0XFx0dXNiX2VycihpbnN0YW5jZSwgXFxcIiVzOiBmYWlsZWQgdG8gY3JlYXRlIGtlcm5lbF90aHJlYWQgKCVsZCkhXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRfX2Z1bmNfXywgUFRSX0VSUih0KSk7XFxuK1xcdFxcdHVzYl9lcnIoaW5zdGFuY2UsIFxcXCIlczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0X19mdW5jX18sIHQpO1xcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUih0KTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmNcXG5pbmRleCA1NmQyYmE4MjRhMGIyMC4uN2JmZTM3ZWQ2OGFlYjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmNcXG5AQCAtMjE4LDggKzIxOCw4IEBAIHN0YXRpYyBpbnQgaW14X2dldF9jbGtzKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0aWYgKElTX0VSUihkYXRhLVxcdTAwM2VjbGspKSB7XFxuIFxcdFxcdFxcdHJldCA9IFBUUl9FUlIoZGF0YS1cXHUwMDNlY2xrKTtcXG4gXFx0XFx0XFx0ZGV2X2VycihkZXYsXFxuLVxcdFxcdFxcdFxcdFxcXCJGYWlsZWQgdG8gZ2V0IGNsa3MsIGVycj0lbGQsJWxkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRQVFJfRVJSKGRhdGEtXFx1MDAzZWNsayksIFBUUl9FUlIoZGF0YS1cXHUwMDNlY2xrX2lwZykpO1xcbitcXHRcXHRcXHRcXHRcXFwiRmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JXBlLCVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ZGF0YS1cXHUwMDNlY2xrLCBkYXRhLVxcdTAwM2VjbGtfaXBnKTtcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0XFx0fVxcbiBcXHRcXHQvKiBHZXQgd2FrZXVwIGNsb2NrLiBOb3QgYWxsIG9mIHRoZSBwbGF0Zm9ybXMgbmVlZCB0b1xcbkBAIC00NDgsOCArNDQ4LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRwaW5jdHJsX2hzaWNfaWRsZSA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKGRhdGEtXFx1MDAzZXBpbmN0cmwsIFxcXCJpZGxlXFxcIik7XFxuIFxcdFxcdGlmIChJU19FUlIocGluY3RybF9oc2ljX2lkbGUpKSB7XFxuIFxcdFxcdFxcdGRldl9lcnIoZGV2LFxcbi1cXHRcXHRcXHRcXHRcXFwicGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0UFRSX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpO1xcbitcXHRcXHRcXHRcXHRcXFwicGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0cGluY3RybF9oc2ljX2lkbGUpO1xcbiBcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKTtcXG4gXFx0XFx0XFx0Z290byBlcnJfcHV0O1xcbiBcXHRcXHR9XFxuQEAgLTQ2NCw4ICs0NjQsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXCJhY3RpdmVcXFwiKTtcXG4gXFx0XFx0aWYgKElTX0VSUihkYXRhLVxcdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKSkge1xcbiBcXHRcXHRcXHRkZXZfZXJyKGRldixcXG4tXFx0XFx0XFx0XFx0XFxcInBpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0UFRSX0VSUihkYXRhLVxcdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKSk7XFxuK1xcdFxcdFxcdFxcdFxcXCJwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdGRhdGEtXFx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpO1xcbiBcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKGRhdGEtXFx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpO1xcbiBcXHRcXHRcXHRnb3RvIGVycl9wdXQ7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXFxuaW5kZXggMDc1NjNiZTAwMTNmNGQuLjA5ZGI4YTRlYWNlMjAyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuY1xcbkBAIC02ODAsOCArNjgwLDggQEAgc3RhdGljIGludCBjaV9nZXRfcGxhdGRhdGEoc3RydWN0IGRldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQvKiBubyB2YnVzIHJlZ3VsYXRvciBpcyBuZWVkZWQgKi9cXG4gXFx0XFx0XFx0cGxhdGRhdGEtXFx1MDAzZXJlZ192YnVzID0gTlVMTDtcXG4gXFx0XFx0fSBlbHNlIGlmIChJU19FUlIocGxhdGRhdGEtXFx1MDAzZXJlZ192YnVzKSkge1xcbi1cXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkdldHRpbmcgcmVndWxhdG9yIGVycm9yOiAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdFBUUl9FUlIocGxhdGRhdGEtXFx1MDAzZXJlZ192YnVzKSk7XFxuK1xcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiR2V0dGluZyByZWd1bGF0b3IgZXJyb3I6ICVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0cGxhdGRhdGEtXFx1MDAzZXJlZ192YnVzKTtcXG4gXFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocGxhdGRhdGEtXFx1MDAzZXJlZ192YnVzKTtcXG4gXFx0XFx0fVxcbiBcXHRcXHQvKiBHZXQgVFBMIHN1cHBvcnQgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9odWIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmNcXG5pbmRleCA1MjYyZTExYzEyY2QzYS4uNWUzM2UzOTg0NDk5ZmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9odWIuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmNcXG5AQCAtNTY3MSw4ICs1NjcxLDggQEAgc3RhdGljIHZvaWQgaHViX3BvcnRfY29ubmVjdF9jaGFuZ2Uoc3RydWN0IHVzYl9odWIgKmh1YiwgaW50IHBvcnQxLFxcbiBcXHRcXHRcXHRkZXNjciA9IHVzYl9nZXRfZGV2aWNlX2Rlc2NyaXB0b3IodWRldik7XFxuIFxcdFxcdFxcdGlmIChJU19FUlIoZGVzY3IpKSB7XFxuIFxcdFxcdFxcdFxcdGRldl9kYmcoXFx1MDAyNnVkZXYtXFx1MDAzZWRldixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFxcImNhbid0IHJlYWQgZGV2aWNlIGRlc2NyaXB0b3IgJWxkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRQVFJfRVJSKGRlc2NyKSk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcXCJjYW4ndCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ZGVzY3IpO1xcbiBcXHRcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRcXHRpZiAoZGVzY3JpcHRvcnNfY2hhbmdlZCh1ZGV2LCBkZXNjcixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0dWRldi1cXHUwMDNlYm9zKSkge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jIGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xcbmluZGV4IGYzYTFlNDIzMmEzMWRjLi45ODQ1MzI3Zjk1YzU5ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jXFxuKysrIGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xcbkBAIC02OCw4ICs2OCw4IEBAIHN0YXRpYyBpbnQgZHdjMl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaSxcXG4gXFxuIFxcdHBoeSA9IHVzYl9waHlfZ2VuZXJpY19yZWdpc3RlcigpO1xcbiBcXHRpZiAoSVNfRVJSKHBoeSkpIHtcXG4tXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJWxkKVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0UFRSX0VSUihwaHkpKTtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJXBlKVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0cGh5KTtcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5KTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuY1xcbmluZGV4IGNkZDFkZmM2NjZjNGY2Li5kYTMxZTVjZWEwYTU1MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXFxuQEAgLTEzMTEsOCArMTMxMSw4IEBAIGludCBnc2VyaWFsX2FsbG9jX2xpbmVfbm9fY29uc29sZSh1bnNpZ25lZCBjaGFyICpsaW5lX251bSlcXG4gXFx0dHR5X2RldiA9IHR0eV9wb3J0X3JlZ2lzdGVyX2RldmljZShcXHUwMDI2cG9ydC1cXHUwMDNlcG9ydCxcXG4gXFx0XFx0XFx0Z3NfdHR5X2RyaXZlciwgcG9ydF9udW0sIE5VTEwpO1xcbiBcXHRpZiAoSVNfRVJSKHR0eV9kZXYpKSB7XFxuLVxcdFxcdHByX2VycihcXFwiJXM6IGZhaWxlZCB0byByZWdpc3RlciB0dHkgZm9yIHBvcnQgJWQsIGVyciAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdF9fZnVuY19fLCBwb3J0X251bSwgUFRSX0VSUih0dHlfZGV2KSk7XFxuK1xcdFxcdHByX2VycihcXFwiJXM6IGZhaWxlZCB0byByZWdpc3RlciB0dHkgZm9yIHBvcnQgJWQsIGVyciAlcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdF9fZnVuY19fLCBwb3J0X251bSwgdHR5X2Rldik7XFxuIFxcbiBcXHRcXHRyZXQgPSBQVFJfRVJSKHR0eV9kZXYpO1xcbiBcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwb3J0c1twb3J0X251bV0ubG9jayk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jIGIvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcXG5pbmRleCA3NTk3NzBhMTMyNjA2MS4uM2FjNTdkMzEzNzZjMmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuY1xcbkBAIC0yMDIsOCArMjAyLDggQEAgc3RhdGljIGludCB1c2IzNTAzX3Byb2JlKHN0cnVjdCB1c2IzNTAzICpodWIpXFxuIFxcbiBcXHRcXHRodWItXFx1MDAzZWNsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbChkZXYsIFxcXCJyZWZjbGtcXFwiKTtcXG4gXFx0XFx0aWYgKElTX0VSUihodWItXFx1MDAzZWNsaykpIHtcXG4tXFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJ1bmFibGUgdG8gcmVxdWVzdCByZWZjbGsgKCVsZClcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdFxcdFBUUl9FUlIoaHViLVxcdTAwM2VjbGspKTtcXG4rXFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJ1bmFibGUgdG8gcmVxdWVzdCByZWZjbGsgKCVwZSlcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdGh1Yi1cXHUwMDNlY2xrKTtcXG4gXFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoaHViLVxcdTAwM2VjbGspO1xcbiBcXHRcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXFxuaW5kZXggOTg1NjgzZmU0OWU5MTQuLmEyMzU3YTI4ZWNmNGIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXFxuKysrIGIvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcXG5AQCAtMTM5LDggKzEzOSw4IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4gXFxuIFxcdHBpLVxcdTAwM2VzdyA9IHR5cGVjX3N3aXRjaF9yZWdpc3RlcihkZXYsIFxcdTAwMjZzd19kZXNjKTtcXG4gXFx0aWYgKElTX0VSUihwaS1cXHUwMDNlc3cpKSB7XFxuLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgc3dpdGNoOiAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFBUUl9FUlIocGktXFx1MDAzZXN3KSk7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgc3dpdGNoOiAlcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdHBpLVxcdTAwM2Vzdyk7XFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHBpLVxcdTAwM2Vzdyk7XFxuIFxcdH1cXG4gXFxuQEAgLTE1MSw4ICsxNTEsOCBAQCBzdGF0aWMgaW50IHBpM3VzYjMwNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuIFxcdHBpLVxcdTAwM2VtdXggPSB0eXBlY19tdXhfcmVnaXN0ZXIoZGV2LCBcXHUwMDI2bXV4X2Rlc2MpO1xcbiBcXHRpZiAoSVNfRVJSKHBpLVxcdTAwM2VtdXgpKSB7XFxuIFxcdFxcdHR5cGVjX3N3aXRjaF91bnJlZ2lzdGVyKHBpLVxcdTAwM2Vzdyk7XFxuLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFBUUl9FUlIocGktXFx1MDAzZW11eCkpO1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkVycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIG11eDogJXBlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRwaS1cXHUwMDNlbXV4KTtcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIocGktXFx1MDAzZW11eCk7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcXG5pbmRleCA4OWVlYzIwYTIwNjRjZS4uYWQxMDQ3MGVhNzNiMDYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcXG4rKysgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uY1xcbkBAIC00Nzk2LDcgKzQ3OTYsNyBAQCBzdGF0aWMgdm9pZCB0Y3BtX3R5cGVjX2Nvbm5lY3Qoc3RydWN0IHRjcG1fcG9ydCAqcG9ydClcXG4gXFx0XFx0XFx0cG9ydC1cXHUwMDNlcGFydG5lcl9kZXNjLmFjY2Vzc29yeSA9IFRZUEVDX0FDQ0VTU09SWV9OT05FO1xcbiBcXHRcXHRwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LVxcdTAwM2V0eXBlY19wb3J0LCBcXHUwMDI2cG9ydC1cXHUwMDNlcGFydG5lcl9kZXNjKTtcXG4gXFx0XFx0aWYgKElTX0VSUihwYXJ0bmVyKSkge1xcbi1cXHRcXHRcXHRkZXZfZXJyKHBvcnQtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyICglbGQpXFxcXG5cXFwiLCBQVFJfRVJSKHBhcnRuZXIpKTtcXG4rXFx0XFx0XFx0ZGV2X2Vycihwb3J0LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lciAoJXBlKVxcXFxuXFxcIiwgcGFydG5lcik7XFxuIFxcdFxcdFxcdHJldHVybjtcXG4gXFx0XFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmNcXG5pbmRleCA2MDYyODc1ZmIwNGE5ZC4uODZkMTNhYjQxNjcwNDQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuY1xcbisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmNcXG5AQCAtMjc3LDggKzI3Nyw4IEBAIHN0YXRpYyB2b2lkIHd1c2IzODAxX2h3X3VwZGF0ZShzdHJ1Y3Qgd3VzYjM4MDEgKnd1c2IzODAxKVxcbiBcXHRcXHRpZiAocGFydG5lcl90eXBlICE9IFdVU0IzODAxX1NUQVRfUEFSVE5FUl9TVEFOREJZKSB7XFxuIFxcdFxcdFxcdHd1c2IzODAxLVxcdTAwM2VwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LCBcXHUwMDI2ZGVzYyk7XFxuIFxcdFxcdFxcdGlmIChJU19FUlIod3VzYjM4MDEtXFx1MDAzZXBhcnRuZXIpKVxcbi1cXHRcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyOiAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdFxcdFBUUl9FUlIod3VzYjM4MDEtXFx1MDAzZXBhcnRuZXIpKTtcXG4rXFx0XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJXBlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRcXHR3dXNiMzgwMS1cXHUwMDNlcGFydG5lcik7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGRhdGFfcm9sZSA9IHB3cl9yb2xlID09IFRZUEVDX1NPVVJDRSA/IFRZUEVDX0hPU1QgOiBUWVBFQ19ERVZJQ0U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDEzOjQxOjQ2LjQxNzQwNTczMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIxNjI1OTEzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSB1cGRhdGVzIGVycm9yIGxvZ2dpbmcgc3RhdGVtZW50cyB0byB1c2UgdGhlICclcGUnIGZvcm1hdCBzcGVjaWZpZXIgZm9yIHByaW50aW5nIGVycm9yIHBvaW50ZXJzIGluc3RlYWQgb2YgdXNpbmcgJyVsZCcgYW5kIFBUUl9FUlIoKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRkNjQ4MDVmNTk3ZDg1MWYzYjk0MDRmM2IwN2ZjYmQyNTFmZGVjYzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxOSAxMzo0MTo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uYyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uY1xuaW5kZXggOTYwMGUxZWMwOTkzMDQuLmM3OGNhYTFiNTdjOWQ5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXG4rKysgYi9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmNcbkBAIC05NzksOCArOTc5LDggQEAgc3RhdGljIGludCB1c2JhdG1faGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKmluc3RhbmNlKVxuIFx0dCA9IGt0aHJlYWRfY3JlYXRlKHVzYmF0bV9kb19oZWF2eV9pbml0LCBpbnN0YW5jZSwgXCIlc1wiLFxuIFx0XHRcdGluc3RhbmNlLVx1MDAzZWRyaXZlci1cdTAwM2Vkcml2ZXJfbmFtZSk7XG4gXHRpZiAoSVNfRVJSKHQpKSB7XG4tXHRcdHVzYl9lcnIoaW5zdGFuY2UsIFwiJXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJWxkKSFcXG5cIixcbi1cdFx0XHRcdF9fZnVuY19fLCBQVFJfRVJSKHQpKTtcbitcdFx0dXNiX2VycihpbnN0YW5jZSwgXCIlczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxcblwiLFxuK1x0XHRcdFx0X19mdW5jX18sIHQpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUih0KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xuaW5kZXggNTZkMmJhODI0YTBiMjAuLjdiZmUzN2VkNjhhZWI1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xuKysrIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xuQEAgLTIxOCw4ICsyMTgsOCBAQCBzdGF0aWMgaW50IGlteF9nZXRfY2xrcyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdGlmIChJU19FUlIoZGF0YS1cdTAwM2VjbGspKSB7XG4gXHRcdFx0cmV0ID0gUFRSX0VSUihkYXRhLVx1MDAzZWNsayk7XG4gXHRcdFx0ZGV2X2VycihkZXYsXG4tXHRcdFx0XHRcIkZhaWxlZCB0byBnZXQgY2xrcywgZXJyPSVsZCwlbGRcXG5cIixcbi1cdFx0XHRcdFBUUl9FUlIoZGF0YS1cdTAwM2VjbGspLCBQVFJfRVJSKGRhdGEtXHUwMDNlY2xrX2lwZykpO1xuK1x0XHRcdFx0XCJGYWlsZWQgdG8gZ2V0IGNsa3MsIGVycj0lcGUsJXBlXFxuXCIsXG4rXHRcdFx0XHRkYXRhLVx1MDAzZWNsaywgZGF0YS1cdTAwM2VjbGtfaXBnKTtcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHR9XG4gXHRcdC8qIEdldCB3YWtldXAgY2xvY2suIE5vdCBhbGwgb2YgdGhlIHBsYXRmb3JtcyBuZWVkIHRvXG5AQCAtNDQ4LDggKzQ0OCw4IEBAIHN0YXRpYyBpbnQgY2lfaGRyY19pbXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0cGluY3RybF9oc2ljX2lkbGUgPSBwaW5jdHJsX2xvb2t1cF9zdGF0ZShkYXRhLVx1MDAzZXBpbmN0cmwsIFwiaWRsZVwiKTtcbiBcdFx0aWYgKElTX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpIHtcbiBcdFx0XHRkZXZfZXJyKGRldixcbi1cdFx0XHRcdFwicGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcblwiLFxuLVx0XHRcdFx0XHRQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKSk7XG4rXHRcdFx0XHRcInBpbmN0cmxfaHNpY19pZGxlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcXG5cIixcbitcdFx0XHRcdFx0cGluY3RybF9oc2ljX2lkbGUpO1xuIFx0XHRcdHJldCA9IFBUUl9FUlIocGluY3RybF9oc2ljX2lkbGUpO1xuIFx0XHRcdGdvdG8gZXJyX3B1dDtcbiBcdFx0fVxuQEAgLTQ2NCw4ICs0NjQsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdFx0XHRcdFx0XHRcdFwiYWN0aXZlXCIpO1xuIFx0XHRpZiAoSVNfRVJSKGRhdGEtXHUwMDNlcGluY3RybF9oc2ljX2FjdGl2ZSkpIHtcbiBcdFx0XHRkZXZfZXJyKGRldixcbi1cdFx0XHRcdFwicGluY3RybF9oc2ljX2FjdGl2ZSBsb29rdXAgZmFpbGVkLCBlcnI9JWxkXFxuXCIsXG4tXHRcdFx0XHRcdFBUUl9FUlIoZGF0YS1cdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKSk7XG4rXHRcdFx0XHRcInBpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVwZVxcblwiLFxuK1x0XHRcdFx0XHRkYXRhLVx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpO1xuIFx0XHRcdHJldCA9IFBUUl9FUlIoZGF0YS1cdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKTtcbiBcdFx0XHRnb3RvIGVycl9wdXQ7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmMgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmNcbmluZGV4IDA3NTYzYmUwMDEzZjRkLi4wOWRiOGE0ZWFjZTIwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuY1xuKysrIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXG5AQCAtNjgwLDggKzY4MCw4IEBAIHN0YXRpYyBpbnQgY2lfZ2V0X3BsYXRkYXRhKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQvKiBubyB2YnVzIHJlZ3VsYXRvciBpcyBuZWVkZWQgKi9cbiBcdFx0XHRwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cyA9IE5VTEw7XG4gXHRcdH0gZWxzZSBpZiAoSVNfRVJSKHBsYXRkYXRhLVx1MDAzZXJlZ192YnVzKSkge1xuLVx0XHRcdGRldl9lcnIoZGV2LCBcIkdldHRpbmcgcmVndWxhdG9yIGVycm9yOiAlbGRcXG5cIixcbi1cdFx0XHRcdFBUUl9FUlIocGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMpKTtcbitcdFx0XHRkZXZfZXJyKGRldiwgXCJHZXR0aW5nIHJlZ3VsYXRvciBlcnJvcjogJXBlXFxuXCIsXG4rXHRcdFx0XHRwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cyk7XG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIocGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMpO1xuIFx0XHR9XG4gXHRcdC8qIEdldCBUUEwgc3VwcG9ydCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXG5pbmRleCA1MjYyZTExYzEyY2QzYS4uNWUzM2UzOTg0NDk5ZmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXG4rKysgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXG5AQCAtNTY3MSw4ICs1NjcxLDggQEAgc3RhdGljIHZvaWQgaHViX3BvcnRfY29ubmVjdF9jaGFuZ2Uoc3RydWN0IHVzYl9odWIgKmh1YiwgaW50IHBvcnQxLFxuIFx0XHRcdGRlc2NyID0gdXNiX2dldF9kZXZpY2VfZGVzY3JpcHRvcih1ZGV2KTtcbiBcdFx0XHRpZiAoSVNfRVJSKGRlc2NyKSkge1xuIFx0XHRcdFx0ZGV2X2RiZyhcdTAwMjZ1ZGV2LVx1MDAzZWRldixcbi1cdFx0XHRcdFx0XHRcImNhbid0IHJlYWQgZGV2aWNlIGRlc2NyaXB0b3IgJWxkXFxuXCIsXG4tXHRcdFx0XHRcdFx0UFRSX0VSUihkZXNjcikpO1xuK1x0XHRcdFx0XHRcdFwiY2FuJ3QgcmVhZCBkZXZpY2UgZGVzY3JpcHRvciAlcGVcXG5cIixcbitcdFx0XHRcdFx0XHRkZXNjcik7XG4gXHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdGlmIChkZXNjcmlwdG9yc19jaGFuZ2VkKHVkZXYsIGRlc2NyLFxuIFx0XHRcdFx0XHRcdHVkZXYtXHUwMDNlYm9zKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmMgYi9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jXG5pbmRleCBmM2ExZTQyMzJhMzFkYy4uOTg0NTMyN2Y5NWM1OWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jXG4rKysgYi9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jXG5AQCAtNjgsOCArNjgsOCBAQCBzdGF0aWMgaW50IGR3YzJfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksXG4gXG4gXHRwaHkgPSB1c2JfcGh5X2dlbmVyaWNfcmVnaXN0ZXIoKTtcbiBcdGlmIChJU19FUlIocGh5KSkge1xuLVx0XHRkZXZfZXJyKGRldiwgXCJlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJWxkKVxcblwiLFxuLVx0XHRcdFBUUl9FUlIocGh5KSk7XG4rXHRcdGRldl9lcnIoZGV2LCBcImVycm9yIHJlZ2lzdGVyaW5nIGdlbmVyaWMgUEhZICglcGUpXFxuXCIsXG4rXHRcdFx0cGh5KTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGh5KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXG5pbmRleCBjZGQxZGZjNjY2YzRmNi4uZGEzMWU1Y2VhMGE1NTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuY1xuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmNcbkBAIC0xMzExLDggKzEzMTEsOCBAQCBpbnQgZ3NlcmlhbF9hbGxvY19saW5lX25vX2NvbnNvbGUodW5zaWduZWQgY2hhciAqbGluZV9udW0pXG4gXHR0dHlfZGV2ID0gdHR5X3BvcnRfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNnBvcnQtXHUwMDNlcG9ydCxcbiBcdFx0XHRnc190dHlfZHJpdmVyLCBwb3J0X251bSwgTlVMTCk7XG4gXHRpZiAoSVNfRVJSKHR0eV9kZXYpKSB7XG4tXHRcdHByX2VycihcIiVzOiBmYWlsZWQgdG8gcmVnaXN0ZXIgdHR5IGZvciBwb3J0ICVkLCBlcnIgJWxkXFxuXCIsXG4tXHRcdFx0XHRfX2Z1bmNfXywgcG9ydF9udW0sIFBUUl9FUlIodHR5X2RldikpO1xuK1x0XHRwcl9lcnIoXCIlczogZmFpbGVkIHRvIHJlZ2lzdGVyIHR0eSBmb3IgcG9ydCAlZCwgZXJyICVwZVxcblwiLFxuK1x0XHRcdFx0X19mdW5jX18sIHBvcnRfbnVtLCB0dHlfZGV2KTtcbiBcbiBcdFx0cmV0ID0gUFRSX0VSUih0dHlfZGV2KTtcbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZwb3J0c1twb3J0X251bV0ubG9jayk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmMgYi9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuY1xuaW5kZXggNzU5NzcwYTEzMjYwNjEuLjNhYzU3ZDMxMzc2YzJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcbisrKyBiL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jXG5AQCAtMjAyLDggKzIwMiw4IEBAIHN0YXRpYyBpbnQgdXNiMzUwM19wcm9iZShzdHJ1Y3QgdXNiMzUwMyAqaHViKVxuIFxuIFx0XHRodWItXHUwMDNlY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsKGRldiwgXCJyZWZjbGtcIik7XG4gXHRcdGlmIChJU19FUlIoaHViLVx1MDAzZWNsaykpIHtcbi1cdFx0XHRkZXZfZXJyKGRldiwgXCJ1bmFibGUgdG8gcmVxdWVzdCByZWZjbGsgKCVsZClcXG5cIixcbi1cdFx0XHRcdFx0UFRSX0VSUihodWItXHUwMDNlY2xrKSk7XG4rXHRcdFx0ZGV2X2VycihkZXYsIFwidW5hYmxlIHRvIHJlcXVlc3QgcmVmY2xrICglcGUpXFxuXCIsXG4rXHRcdFx0XHRcdGh1Yi1cdTAwM2VjbGspO1xuIFx0XHRcdHJldHVybiBQVFJfRVJSKGh1Yi1cdTAwM2VjbGspO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmMgYi9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuY1xuaW5kZXggOTg1NjgzZmU0OWU5MTQuLmEyMzU3YTI4ZWNmNGIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcbisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXG5AQCAtMTM5LDggKzEzOSw4IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiBcbiBcdHBpLVx1MDAzZXN3ID0gdHlwZWNfc3dpdGNoX3JlZ2lzdGVyKGRldiwgXHUwMDI2c3dfZGVzYyk7XG4gXHRpZiAoSVNfRVJSKHBpLVx1MDAzZXN3KSkge1xuLVx0XHRkZXZfZXJyKGRldiwgXCJFcnJvciByZWdpc3RlcmluZyB0eXBlYyBzd2l0Y2g6ICVsZFxcblwiLFxuLVx0XHRcdFBUUl9FUlIocGktXHUwMDNlc3cpKTtcbitcdFx0ZGV2X2VycihkZXYsIFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgc3dpdGNoOiAlcGVcXG5cIixcbitcdFx0XHRwaS1cdTAwM2Vzdyk7XG4gXHRcdHJldHVybiBQVFJfRVJSKHBpLVx1MDAzZXN3KTtcbiBcdH1cbiBcbkBAIC0xNTEsOCArMTUxLDggQEAgc3RhdGljIGludCBwaTN1c2IzMDUzMl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIFx0cGktXHUwMDNlbXV4ID0gdHlwZWNfbXV4X3JlZ2lzdGVyKGRldiwgXHUwMDI2bXV4X2Rlc2MpO1xuIFx0aWYgKElTX0VSUihwaS1cdTAwM2VtdXgpKSB7XG4gXHRcdHR5cGVjX3N3aXRjaF91bnJlZ2lzdGVyKHBpLVx1MDAzZXN3KTtcbi1cdFx0ZGV2X2VycihkZXYsIFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlbGRcXG5cIixcbi1cdFx0XHRQVFJfRVJSKHBpLVx1MDAzZW11eCkpO1xuK1x0XHRkZXZfZXJyKGRldiwgXCJFcnJvciByZWdpc3RlcmluZyB0eXBlYyBtdXg6ICVwZVxcblwiLFxuK1x0XHRcdHBpLVx1MDAzZW11eCk7XG4gXHRcdHJldHVybiBQVFJfRVJSKHBpLVx1MDAzZW11eCk7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmMgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uY1xuaW5kZXggODllZWMyMGEyMDY0Y2UuLmFkMTA0NzBlYTczYjA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcbisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXG5AQCAtNDc5Niw3ICs0Nzk2LDcgQEAgc3RhdGljIHZvaWQgdGNwbV90eXBlY19jb25uZWN0KHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpXG4gXHRcdFx0cG9ydC1cdTAwM2VwYXJ0bmVyX2Rlc2MuYWNjZXNzb3J5ID0gVFlQRUNfQUNDRVNTT1JZX05PTkU7XG4gXHRcdHBhcnRuZXIgPSB0eXBlY19yZWdpc3Rlcl9wYXJ0bmVyKHBvcnQtXHUwMDNldHlwZWNfcG9ydCwgXHUwMDI2cG9ydC1cdTAwM2VwYXJ0bmVyX2Rlc2MpO1xuIFx0XHRpZiAoSVNfRVJSKHBhcnRuZXIpKSB7XG4tXHRcdFx0ZGV2X2Vycihwb3J0LVx1MDAzZWRldiwgXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lciAoJWxkKVxcblwiLCBQVFJfRVJSKHBhcnRuZXIpKTtcbitcdFx0XHRkZXZfZXJyKHBvcnQtXHUwMDNlZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyICglcGUpXFxuXCIsIHBhcnRuZXIpO1xuIFx0XHRcdHJldHVybjtcbiBcdFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmMgYi9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXG5pbmRleCA2MDYyODc1ZmIwNGE5ZC4uODZkMTNhYjQxNjcwNDQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXG4rKysgYi9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXG5AQCAtMjc3LDggKzI3Nyw4IEBAIHN0YXRpYyB2b2lkIHd1c2IzODAxX2h3X3VwZGF0ZShzdHJ1Y3Qgd3VzYjM4MDEgKnd1c2IzODAxKVxuIFx0XHRpZiAocGFydG5lcl90eXBlICE9IFdVU0IzODAxX1NUQVRfUEFSVE5FUl9TVEFOREJZKSB7XG4gXHRcdFx0d3VzYjM4MDEtXHUwMDNlcGFydG5lciA9IHR5cGVjX3JlZ2lzdGVyX3BhcnRuZXIocG9ydCwgXHUwMDI2ZGVzYyk7XG4gXHRcdFx0aWYgKElTX0VSUih3dXNiMzgwMS1cdTAwM2VwYXJ0bmVyKSlcbi1cdFx0XHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyOiAlbGRcXG5cIixcbi1cdFx0XHRcdFx0UFRSX0VSUih3dXNiMzgwMS1cdTAwM2VwYXJ0bmVyKSk7XG4rXHRcdFx0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJXBlXFxuXCIsXG4rXHRcdFx0XHRcdHd1c2IzODAxLVx1MDAzZXBhcnRuZXIpO1xuIFx0XHR9XG4gXG4gXHRcdGRhdGFfcm9sZSA9IHB3cl9yb2xlID09IFRZUEVDX1NPVVJDRSA/IFRZUEVDX0hPU1QgOiBUWVBFQ19ERVZJQ0U7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMzo0MTo0Ni40MTc0MDY4OTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjE2MjM2NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIExvZ2dpbmctT25seSBDaGFuZ2UgaW4gdGhlIFVTQiBTdWJzeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgYW5kIGl0J3MgbWFraW5nIGEgcHVyZWx5IGNvc21ldGljIGNoYW5nZSB3aXRoaW4gdGhlIFVTQiBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgaXQncyBzd2FwcGluZyBvdXQgYFBUUl9FUlIoeClgIGZvciBgJXBlYCBhbmQgYHhgIGl0c2VsZiBpbiB2YXJpb3VzIGVycm9yIGxvZ2dpbmcgY2FsbHMgbGlrZSBgZGV2X2VycmAsIGBwcl9lcnJgLCBhbmQgYHVzYl9lcnJgLiBFc3NlbnRpYWxseSwgd2UncmUgcmVmaW5pbmcgdGhlIGVycm9yIG1lc3NhZ2UgZm9ybWF0dGluZyBmb3IgdGhlc2UgcHJpbnRzLlxuXG5MZXQncyBxdWlja2x5IHZlcmlmeS4gSSBzZWUgZXhhbXBsZXMgbGlrZSBgdXNiX2VycihpbnN0YW5jZSwgXCIlczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxcblwiLCBfX2Z1bmNfXywgdCk7YCwgYGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byBnZXQgY2xrcywgZXJyPSVwZSwlcGVcXG5cIiwgZGF0YS1cdTAwM2VjbGssIGRhdGEtXHUwMDNlY2xrX2lwZyk7YCwgYW5kIHNvIG9uLiBJdCdzIHRoZSBzYW1lIHBhdHRlcm4gYWNyb3NzIGFsbCBvZiB0aGVtLiBUaGUgaW50ZW50IGlzIHRvIHByaW50IHRoZSByYXcgcG9pbnRlciB2YWx1ZSB3aXRoIGAlcGVgIHdoaWNoIGlzIHRoZSBjb3JyZWN0IGZvcm1hdCBzcGVjaWZpZXIgZm9yIGEgcG9pbnRlci1hcy1lcnJvci5cblxuTG9va2luZyBhdCBlYWNoIGluc3RhbmNlLCBpdCdzIGNsZWFyOiB0aGlzIGlzIGp1c3Qgc3RhbmRhcmRpemluZyB0aGUgZXJyb3IgcG9pbnRlciBwcmludGluZy4gSXQncyBhIHN0YW5kYXJkIGtlcm5lbCBiZXN0IHByYWN0aWNlIHRvIHByaW50IHRoZSBlcnJvciBwb2ludGVyIHdpdGggYCVwZWAuICBObyBmdW5jdGlvbmFsIGNoYW5nZSwgbm8gYWx0ZXJhdGlvbiB0byBleGVjdXRpb24gZmxvdy4gVGhpcyBpcyBhIGxvZ2dpbmcgZW5oYW5jZW1lbnQsIHBsYWluIGFuZCBzaW1wbGUuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUga2VybmVsIGFuZCBlcnJvciBoYW5kbGluZywgdGhpcyBjaGFuZ2UgaXMgbm90IGdvaW5nIHRvIGludHJvZHVjZSBhbnl0aGluZyBmdXp6LXdvcnRoeS4gIEknbSBjb25maWRlbnRseSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NDIsIk91dHB1dFRva2VucyI6NzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxMzo0MTo1My42MzM2NDUzMTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgdXBkYXRlcyBlcnJvciBsb2dnaW5nIHN0YXRlbWVudHMgdG8gdXNlIHRoZSAnJXBlJyBmb3JtYXQgc3BlY2lmaWVyIGZvciBwcmludGluZyBlcnJvciBwb2ludGVycyBpbnN0ZWFkIG9mIHVzaW5nICclbGQnIGFuZCBQVFJfRVJSKCkuIFRoaXMgaXMgYSBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSB1cGRhdGVzIGVycm9yIGxvZ2dpbmcgc3RhdGVtZW50cyB0byB1c2UgdGhlICclcGUnIGZvcm1hdCBzcGVjaWZpZXIgZm9yIHByaW50aW5nIGVycm9yIHBvaW50ZXJzIGluc3RlYWQgb2YgdXNpbmcgJyVsZCcgYW5kIFBUUl9FUlIoKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbkxq5[1] Phase: Running StartedAt: 2026-07-19 13:42:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbkxq5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-19 13:42:05 +0000 UTC FinishedAt: 2026-07-19 13:42:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}