Name: series-workflowrvkfb Phase: Failed StartedAt: 2026-07-26 17:14:34 +0000 UTC FinishedAt: 2026-07-26 17:40:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvkfb[0] Phase: Succeeded StartedAt: 2026-07-26 17:14:34 +0000 UTC FinishedAt: 2026-07-26 17:40:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvkfb[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 17:14:34 +0000 UTC FinishedAt: 2026-07-26 17:40:15 +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+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnNpc3RzIGVudGlyZWx5IG9mIGNvZGUgcmVmYWN0b3JpbmcvY2xlYW51cHMgdGhhdCBzaW1wbGlmeSBlcnJvciBoYW5kbGluZyBieSBkaXJlY3RseSByZXR1cm5pbmcgdGhlIHJlc3VsdCBvZiBhIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBvZiBzdG9yaW5nIGl0IGluIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNoZWNraW5nIGl0IGJlZm9yZSByZXR1cm5pbmcuIFRoaXMgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNzozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUzMWFiNzU3NTUwOWM2ZmY0OGFmN2NiNjRkNTBhNjM5NmYwYzAyMDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxNzozOTo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcbmluZGV4IGEyYTY0MWI4MzU4ZjIyLi4wNDg4YWU2YWM0ODZjOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jXG5AQCAtMjI3MiwxMSAmIzQzOzIyNzIsNyBAQCB6bDMwNzN4X2RwbGxfaW5pdF9maW5lX3BoYXNlX2FkanVzdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxuIFx0aWYgKHJjKVxuIFx0XHRyZXR1cm4gcmM7XG4gXG4tXHRyYyA9IHpsMzA3M3hfd3JpdGVfdTgoemxkZXYsIFpMX1JFR19TWU5USF9QSEFTRV9TSElGVF9DVFJMLCAweDAxKTtcbi1cdGlmIChyYylcbi1cdFx0cmV0dXJuIHJjO1xuLVxuLVx0cmV0dXJuIHJjO1xuJiM0MztcdHJldHVybiB6bDMwNzN4X3dyaXRlX3U4KHpsZGV2LCBaTF9SRUdfU1lOVEhfUEhBU0VfU0hJRlRfQ1RSTCwgMHgwMSk7XG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L291dC5jIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvb3V0LmNcbmluZGV4IGViNTYyOGFlYmNlZThlLi40MTBkMTViOTZkMGJmMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L291dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuY1xuQEAgLTg1LDEyICYjNDM7ODUsOCBAQCBpbnQgemwzMDczeF9vdXRfc3RhdGVfZmV0Y2goc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdTggaW5kZXgpXG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbiBcbi1cdHJjID0gemwzMDczeF9yZWFkX3UzMih6bGRldiwgWkxfUkVHX09VVFBVVF9QSEFTRV9DT01QLFxuLVx0XHRcdCAgICAgIFx1MDAyNm91dC1cdTAwM2VwaGFzZV9jb21wKTtcbi1cdGlmIChyYylcbi1cdFx0cmV0dXJuIHJjO1xuLVxuLVx0cmV0dXJuIHJjO1xuJiM0MztcdHJldHVybiB6bDMwNzN4X3JlYWRfdTMyKHpsZGV2LCBaTF9SRUdfT1VUUFVUX1BIQVNFX0NPTVAsXG4mIzQzO1x0XHRcdFx0XHUwMDI2b3V0LVx1MDAzZXBoYXNlX2NvbXApO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jXG5pbmRleCA1ZDA1MDIwYTZkMDU4Yi4uZWE4OTYxOTAzOWQ4OWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmNcbkBAIC0yMzAzLDExICYjNDM7MjMwMyw3IEBAIHN0YXRpYyBpbnQgZW5hX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdFx0cmV0dXJuIHJjO1xuIFx0fVxuIFxuLVx0cmMgPSBlbmFfdXAoYWRhcHRlcik7XG4tXHRpZiAocmMpXG4tXHRcdHJldHVybiByYztcbi1cbi1cdHJldHVybiByYztcbiYjNDM7XHRyZXR1cm4gZW5hX3VwKGFkYXB0ZXIpO1xuIH1cbiBcbiAvKiBlbmFfY2xvc2UgLSBEaXNhYmxlcyBhIG5ldHdvcmsgaW50ZXJmYWNlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFjc2VjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWNzZWMuY1xuaW5kZXggM2NhMDcyMzYwZWM3ZTAuLmZkNGVlNjIxMjIzNDg2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFjc2VjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21hY3NlYy5jXG5AQCAtNzM1LDExICYjNDM7NzM1LDcgQEAgc3RhdGljIGludCBhcV9zZXRfcnhzYyhzdHJ1Y3QgYXFfbmljX3MgKm5pYywgY29uc3QgdTMyIHJ4c2NfaWR4KVxuIFx0c2NfcmVjb3JkLnZhbGlkID0gMTtcbiBcdHNjX3JlY29yZC5mcmVzaCA9IDE7XG4gXG4tXHRyZXQgPSBhcV9tc3Nfc2V0X2luZ3Jlc3Nfc2NfcmVjb3JkKGh3LCBcdTAwMjZzY19yZWNvcmQsIGh3X3NjX2lkeCk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gYXFfbXNzX3NldF9pbmdyZXNzX3NjX3JlY29yZChodywgXHUwMDI2c2NfcmVjb3JkLCBod19zY19pZHgpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGFxX21kb19hZGRfcnhzYyhzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmNcbmluZGV4IDMzZTdhOTlkM2U0OWNkLi43OWQ0YTc3ZjcyYmQ0OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1zd2l0Y2guY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC5jXG5AQCAtMzkzNSwxMSAmIzQzOzM5MzUsNyBAQCBzdGF0aWMgaW50IGRwYWEyX3N3aXRjaF9wb3J0X2luaXQoc3RydWN0IGV0aHN3X3BvcnRfcHJpdiAqcG9ydF9wcml2LCB1MTYgcG9ydClcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRlcnIgPSBkcGFhMl9zd2l0Y2hfcG9ydF90cmFwX21hY19hZGRyKHBvcnRfcHJpdiwgbGxfbWFjLCBsbF9tYXNrKTtcbi1cdGlmIChlcnIpXG4tXHRcdHJldHVybiBlcnI7XG4tXG4tXHRyZXR1cm4gZXJyO1xuJiM0MztcdHJldHVybiBkcGFhMl9zd2l0Y2hfcG9ydF90cmFwX21hY19hZGRyKHBvcnRfcHJpdiwgbGxfbWFjLCBsbF9tYXNrKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZHBhYTJfc3dpdGNoX2N0cmxfaWZfdGVhcmRvd24oc3RydWN0IGV0aHN3X2NvcmUgKmV0aHN3KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5pbmRleCA4OTIxNWUxZGRjMmRiMS4uY2Y2MzZmYzVhYWZhYzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5AQCAtMjg3NywxMSAmIzQzOzI4NzcsNyBAQCBzdGF0aWMgaW50IGdmYXJfZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0ZXJyID0gc3RhcnR1cF9nZmFyKGRldik7XG4tXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gZXJyO1xuLVxuLVx0cmV0dXJuIGVycjtcbiYjNDM7XHRyZXR1cm4gc3RhcnR1cF9nZmFyKGRldik7XG4gfVxuIFxuIC8qIFN0b3BzIHRoZSBrZXJuZWwgcXVldWUsIGFuZCBoYWx0cyB0aGUgY29udHJvbGxlciAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5pbmRleCBhMDQ2ODMwMDRhNTY3Ny4uMGNkMGU1NTk3YzkwOWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5AQCAtNDg2NCwxNiAmIzQzOzQ4NjQsMTAgQEAgc3RhdGljIHZvaWQgaTQwZV9jb250cm9sX3J4X3Eoc3RydWN0IGk0MGVfcGYgKnBmLCBpbnQgcGZfcSwgYm9vbCBlbmFibGUpXG4gICoqL1xuIGludCBpNDBlX2NvbnRyb2xfd2FpdF9yeF9xKHN0cnVjdCBpNDBlX3BmICpwZiwgaW50IHBmX3EsIGJvb2wgZW5hYmxlKVxuIHtcbi1cdGludCByZXQgPSAwO1xuLVxuIFx0aTQwZV9jb250cm9sX3J4X3EocGYsIHBmX3EsIGVuYWJsZSk7XG4gXG4gXHQvKiB3YWl0IGZvciB0aGUgY2hhbmdlIHRvIGZpbmlzaCAqL1xuLVx0cmV0ID0gaTQwZV9wZl9yeHFfd2FpdChwZiwgcGZfcSwgZW5hYmxlKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcdHJldHVybiBpNDBlX3BmX3J4cV93YWl0KHBmLCBwZl9xLCBlbmFibGUpO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvZTEwMDBfaTIxMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2UxMDAwX2kyMTAuY1xuaW5kZXggOWRiMjliMjMxZDZhOTUuLjc4NGY5YTdiY2JlZDA3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2UxMDAwX2kyMTAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2UxMDAwX2kyMTAuY1xuQEAgLTc1NiwxMSAmIzQzOzc1Niw3IEBAIHN0YXRpYyBzMzIgX19pZ2JfYWNjZXNzX3htZGlvX3JlZyhzdHJ1Y3QgZTEwMDBfaHcgKmh3LCB1MTYgYWRkcmVzcyxcbiBcdFx0cmV0dXJuIHJldF92YWw7XG4gXG4gXHQvKiBSZWNhbGlicmF0ZSB0aGUgZGV2aWNlIGJhY2sgdG8gMCAqL1xuLVx0cmV0X3ZhbCA9IGh3LVx1MDAzZXBoeS5vcHMud3JpdGVfcmVnKGh3LCBFMTAwMF9NTURBQywgMCk7XG4tXHRpZiAocmV0X3ZhbClcbi1cdFx0cmV0dXJuIHJldF92YWw7XG4tXG4tXHRyZXR1cm4gcmV0X3ZhbDtcbiYjNDM7XHRyZXR1cm4gaHctXHUwMDNlcGh5Lm9wcy53cml0ZV9yZWcoaHcsIEUxMDAwX01NREFDLCAwKTtcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19waHkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcGh5LmNcbmluZGV4IDRjZjczN2ZiM2IyMWU5Li5iNzU4YTdlMGYwMTMyOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcGh5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcGh5LmNcbkBAIC02NzUsMTEgJiM0Mzs2NzUsNyBAQCBzdGF0aWMgczMyIF9faWdjX2FjY2Vzc194bWRpb19yZWcoc3RydWN0IGlnY19odyAqaHcsIHUxNiBhZGRyZXNzLFxuIFx0XHRyZXR1cm4gcmV0X3ZhbDtcbiBcbiBcdC8qIFJlY2FsaWJyYXRlIHRoZSBkZXZpY2UgYmFjayB0byAwICovXG4tXHRyZXRfdmFsID0gaHctXHUwMDNlcGh5Lm9wcy53cml0ZV9yZWcoaHcsIElHQ19NTURBQywgMCk7XG4tXHRpZiAocmV0X3ZhbClcbi1cdFx0cmV0dXJuIHJldF92YWw7XG4tXG4tXHRyZXR1cm4gcmV0X3ZhbDtcbiYjNDM7XHRyZXR1cm4gaHctXHUwMDNlcGh5Lm9wcy53cml0ZV9yZWcoaHcsIElHQ19NTURBQywgMCk7XG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2h3LmNcbmluZGV4IGZmZjhkYzg0MjEyZDVjLi5lOTZhMjY4MDY3ZjI5NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19ody5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfaHcuY1xuQEAgLTI0NzgsNyAmIzQzOzI0NzgsNiBAQCBzdGF0aWMgaW50IG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gc3RhdGljIGludFxuIG5ldHhlbl9jb2xsZWN0X21pbmlkdW1wKHN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqYWRhcHRlcilcbiB7XG4tXHRpbnQgcmV0ID0gMDtcbiBcdHN0cnVjdCBuZXR4ZW5fbWluaWR1bXBfdGVtcGxhdGVfaGRyICpoZHI7XG4gXHRoZHIgPSAoc3RydWN0IG5ldHhlbl9taW5pZHVtcF90ZW1wbGF0ZV9oZHIgKilcbiBcdFx0XHRcdGFkYXB0ZXItXHUwMDNlbWR1bXAubWRfdGVtcGxhdGU7XG5AQCAtMjQ4NiwxMSAmIzQzOzI0ODUsNyBAQCBuZXR4ZW5fY29sbGVjdF9taW5pZHVtcChzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRoZHItXHUwMDNlZHJpdmVyX3RpbWVzdGFtcCA9IGt0aW1lX2dldF9zZWNvbmRzKCk7XG4gXHRoZHItXHUwMDNlZHJpdmVyX2luZm9fd29yZDIgPSBhZGFwdGVyLVx1MDAzZWZ3X3ZlcnNpb247XG4gXHRoZHItXHUwMDNlZHJpdmVyX2luZm9fd29yZDMgPSBOWFJEMzIoYWRhcHRlciwgQ1JCX0RSSVZFUl9WRVJTSU9OKTtcbi1cdHJldCA9IG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShhZGFwdGVyKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcdHJldHVybiBuZXR4ZW5fcGFyc2VfbWRfdGVtcGxhdGUoYWRhcHRlcik7XG4gfVxuIFxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcbmluZGV4IDQ1ZWQ4NzA1YzdjYTZkLi40N2NkOWVjNjY1ZWViNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuY1xuQEAgLTE2MTgsMTEgJiM0MzsxNjE4LDcgQEAgc3RhdGljIGludCBxbGNuaWNfODN4eF9jaGVja19od19zdGF0dXMoc3RydWN0IHFsY25pY19hZGFwdGVyICpwX2RldilcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRlcnIgPSBxbGNuaWNfODN4eF9jaGVja19oZWFydGJlYXQocF9kZXYpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdHJldHVybiBlcnI7XG4mIzQzO1x0cmV0dXJuIHFsY25pY184M3h4X2NoZWNrX2hlYXJ0YmVhdChwX2Rldik7XG4gfVxuIFxuIHN0YXRpYyBpbnQgcWxjbmljXzgzeHhfcG9sbF9yZWcoc3RydWN0IHFsY25pY19hZGFwdGVyICpwX2RldiwgdTMyIGFkZHIsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uY1xuaW5kZXggZWU4MzgxYjYwYjhkNDkuLmY3YmVlYjczZWIxNmJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jXG5AQCAtNjg1LDcgJiM0Mzs2ODUsNiBAQCBzdGF0aWMgdm9pZCBydHNuX3NldF9yYXRlKHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpXG4gc3RhdGljIGludCBydHNuX3JtYWNfaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KVxuIHtcbiBcdGNvbnN0IHU4ICptYWNfYWRkciA9IHByaXYtXHUwMDNlbmRldi1cdTAwM2VkZXZfYWRkcjtcbi1cdGludCByZXQ7XG4gXG4gXHQvKiBTZXQgTUFDIGFkZHJlc3MgKi9cbiBcdHJ0c25fd3JpdGUocHJpdiwgTVJNQUMwLCAobWFjX2FkZHJbMF0gXHUwMDNjXHUwMDNjIDgpIHwgbWFjX2FkZHJbMV0pO1xuQEAgLTcwMiwxMSAmIzQzOzcwMSw3IEBAIHN0YXRpYyBpbnQgcnRzbl9ybWFjX2luaXQoc3RydWN0IHJ0c25fcHJpdmF0ZSAqcHJpdilcbiBcbiBcdC8qIExpbmsgdmVyaWZpY2F0aW9uICovXG4gXHRydHNuX21vZGlmeShwcml2LCBNTFZDLCBNTFZDX1BMViwgTUxWQ19QTFYpO1xuLVx0cmV0ID0gcnRzbl9yZWdfd2FpdChwcml2LCBNTFZDLCBNTFZDX1BMViwgMCk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gcnRzbl9yZWdfd2FpdChwcml2LCBNTFZDLCBNTFZDX1BMViwgMCk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgcnRzbl9od19pbml0KHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXG5pbmRleCA2MmIzNmEzMTgxMDBhZS4uMzI5MmIyMjM1YzhmYTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xuQEAgLTEwMjgsMTEgJiM0MzsxMDI4LDcgQEAgc3RhdGljIGludCBsYW44N3h4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRpZiAocmMgXHUwMDNjIDApXG4gXHRcdHJldHVybiByYztcbiBcbi1cdHJjID0gZ2VucGh5X3JlYWRfc3RhdHVzX2ZpeGVkKHBoeWRldik7XG4tXHRpZiAocmMgXHUwMDNjIDApXG4tXHRcdHJldHVybiByYztcbi1cbi1cdHJldHVybiByYztcbiYjNDM7XHRyZXR1cm4gZ2VucGh5X3JlYWRfc3RhdHVzX2ZpeGVkKHBoeWRldik7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbGFuODd4eF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jIGIvZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmNcbmluZGV4IDQ5ZDYzODlkYTA2N2NhLi44YTNiYmQ2MjM0MTJiMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuY1xuQEAgLTE1MjAsMTEgJiM0MzsxNTIwLDcgQEAgc3RhdGljIGludCB0cHMyMzg4MV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiBcdFx0XHRcdCAgICAgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIFBTRSBjb250cm9sbGVyXFxuXCYjMzQ7KTtcbiBcdH1cbiBcbi1cdHJldCA9IHRwczIzODgxX3NldHVwX2lycShwcml2LCBjbGllbnQtXHUwMDNlaXJxKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcdHJldHVybiB0cHMyMzg4MV9zZXR1cF9pcnEocHJpdiwgY2xpZW50LVx1MDAzZWlycSk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB0cHMyMzg4MV9pZFtdID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb25zaXN0cyBlbnRpcmVseSBvZiBjb2RlIHJlZmFjdG9yaW5nL2NsZWFudXBzIHRoYXQgc2ltcGxpZnkgZXJyb3IgaGFuZGxpbmcgYnkgZGlyZWN0bHkgcmV0dXJuaW5nIHRoZSByZXN1bHQgb2YgYSBmdW5jdGlvbiBjYWxsIGluc3RlYWQgb2Ygc3RvcmluZyBpdCBpbiBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjaGVja2luZyBpdCBiZWZvcmUgcmV0dXJuaW5nLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MzFhYjc1NzU1MDljNmZmNDhhZjdjYjY0ZDUwYTYzOTZmMGMwMjAyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMjYgMTc6Mzk6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMKaW5kZXggYTJhNjQxYjgzNThmMjIuLjA0ODhhZTZhYzQ4NmM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jCkBAIC0yMjcyLDExICYjNDM7MjI3Miw3IEBAIHpsMzA3M3hfZHBsbF9pbml0X2ZpbmVfcGhhc2VfYWRqdXN0KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpCiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7CiAKLQlyYyA9IHpsMzA3M3hfd3JpdGVfdTgoemxkZXYsIFpMX1JFR19TWU5USF9QSEFTRV9TSElGVF9DVFJMLCAweDAxKTsKLQlpZiAocmMpCi0JCXJldHVybiByYzsKLQotCXJldHVybiByYzsKJiM0MzsJcmV0dXJuIHpsMzA3M3hfd3JpdGVfdTgoemxkZXYsIFpMX1JFR19TWU5USF9QSEFTRV9TSElGVF9DVFJMLCAweDAxKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuYyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L291dC5jCmluZGV4IGViNTYyOGFlYmNlZThlLi40MTBkMTViOTZkMGJmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kcGxsL3psMzA3M3gvb3V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL3psMzA3M3gvb3V0LmMKQEAgLTg1LDEyICYjNDM7ODUsOCBAQCBpbnQgemwzMDczeF9vdXRfc3RhdGVfZmV0Y2goc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdTggaW5kZXgpCiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7CiAKLQlyYyA9IHpsMzA3M3hfcmVhZF91MzIoemxkZXYsIFpMX1JFR19PVVRQVVRfUEhBU0VfQ09NUCwKLQkJCSAgICAgICZhbXA7b3V0LSZndDtwaGFzZV9jb21wKTsKLQlpZiAocmMpCi0JCXJldHVybiByYzsKLQotCXJldHVybiByYzsKJiM0MzsJcmV0dXJuIHpsMzA3M3hfcmVhZF91MzIoemxkZXYsIFpMX1JFR19PVVRQVVRfUEhBU0VfQ09NUCwKJiM0MzsJCQkJJmFtcDtvdXQtJmd0O3BoYXNlX2NvbXApOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMKaW5kZXggNWQwNTAyMGE2ZDA1OGIuLmVhODk2MTkwMzlkODliIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYwpAQCAtMjMwMywxMSAmIzQzOzIzMDMsNyBAQCBzdGF0aWMgaW50IGVuYV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCiAJCXJldHVybiByYzsKIAl9CiAKLQlyYyA9IGVuYV91cChhZGFwdGVyKTsKLQlpZiAocmMpCi0JCXJldHVybiByYzsKLQotCXJldHVybiByYzsKJiM0MzsJcmV0dXJuIGVuYV91cChhZGFwdGVyKTsKIH0KIAogLyogZW5hX2Nsb3NlIC0gRGlzYWJsZXMgYSBuZXR3b3JrIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFjc2VjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWNzZWMuYwppbmRleCAzY2EwNzIzNjBlYzdlMC4uZmQ0ZWU2MjEyMjM0ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21hY3NlYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21hY3NlYy5jCkBAIC03MzUsMTEgJiM0Mzs3MzUsNyBAQCBzdGF0aWMgaW50IGFxX3NldF9yeHNjKHN0cnVjdCBhcV9uaWNfcyAqbmljLCBjb25zdCB1MzIgcnhzY19pZHgpCiAJc2NfcmVjb3JkLnZhbGlkID0gMTsKIAlzY19yZWNvcmQuZnJlc2ggPSAxOwogCi0JcmV0ID0gYXFfbXNzX3NldF9pbmdyZXNzX3NjX3JlY29yZChodywgJmFtcDtzY19yZWNvcmQsIGh3X3NjX2lkeCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiBhcV9tc3Nfc2V0X2luZ3Jlc3Nfc2NfcmVjb3JkKGh3LCAmYW1wO3NjX3JlY29yZCwgaHdfc2NfaWR4KTsKIH0KIAogc3RhdGljIGludCBhcV9tZG9fYWRkX3J4c2Moc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmMKaW5kZXggMzNlN2E5OWQzZTQ5Y2QuLjc5ZDRhNzdmNzJiZDQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC5jCkBAIC0zOTM1LDExICYjNDM7MzkzNSw3IEBAIHN0YXRpYyBpbnQgZHBhYTJfc3dpdGNoX3BvcnRfaW5pdChzdHJ1Y3QgZXRoc3dfcG9ydF9wcml2ICpwb3J0X3ByaXYsIHUxNiBwb3J0KQogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQllcnIgPSBkcGFhMl9zd2l0Y2hfcG9ydF90cmFwX21hY19hZGRyKHBvcnRfcHJpdiwgbGxfbWFjLCBsbF9tYXNrKTsKLQlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOwotCi0JcmV0dXJuIGVycjsKJiM0MzsJcmV0dXJuIGRwYWEyX3N3aXRjaF9wb3J0X3RyYXBfbWFjX2FkZHIocG9ydF9wcml2LCBsbF9tYWMsIGxsX21hc2spOwogfQogCiBzdGF0aWMgdm9pZCBkcGFhMl9zd2l0Y2hfY3RybF9pZl90ZWFyZG93bihzdHJ1Y3QgZXRoc3dfY29yZSAqZXRoc3cpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYwppbmRleCA4OTIxNWUxZGRjMmRiMS4uY2Y2MzZmYzVhYWZhYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYwpAQCAtMjg3NywxMSAmIzQzOzI4NzcsNyBAQCBzdGF0aWMgaW50IGdmYXJfZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAotCWVyciA9IHN0YXJ0dXBfZ2ZhcihkZXYpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7Ci0KLQlyZXR1cm4gZXJyOwomIzQzOwlyZXR1cm4gc3RhcnR1cF9nZmFyKGRldik7CiB9CiAKIC8qIFN0b3BzIHRoZSBrZXJuZWwgcXVldWUsIGFuZCBoYWx0cyB0aGUgY29udHJvbGxlciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMKaW5kZXggYTA0NjgzMDA0YTU2NzcuLjBjZDBlNTU5N2M5MDlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMKQEAgLTQ4NjQsMTYgJiM0Mzs0ODY0LDEwIEBAIHN0YXRpYyB2b2lkIGk0MGVfY29udHJvbF9yeF9xKHN0cnVjdCBpNDBlX3BmICpwZiwgaW50IHBmX3EsIGJvb2wgZW5hYmxlKQogICoqLwogaW50IGk0MGVfY29udHJvbF93YWl0X3J4X3Eoc3RydWN0IGk0MGVfcGYgKnBmLCBpbnQgcGZfcSwgYm9vbCBlbmFibGUpCiB7Ci0JaW50IHJldCA9IDA7Ci0KIAlpNDBlX2NvbnRyb2xfcnhfcShwZiwgcGZfcSwgZW5hYmxlKTsKIAogCS8qIHdhaXQgZm9yIHRoZSBjaGFuZ2UgdG8gZmluaXNoICovCi0JcmV0ID0gaTQwZV9wZl9yeHFfd2FpdChwZiwgcGZfcSwgZW5hYmxlKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIGk0MGVfcGZfcnhxX3dhaXQocGYsIHBmX3EsIGVuYWJsZSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2UxMDAwX2kyMTAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmMKaW5kZXggOWRiMjliMjMxZDZhOTUuLjc4NGY5YTdiY2JlZDA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvZTEwMDBfaTIxMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmMKQEAgLTc1NiwxMSAmIzQzOzc1Niw3IEBAIHN0YXRpYyBzMzIgX19pZ2JfYWNjZXNzX3htZGlvX3JlZyhzdHJ1Y3QgZTEwMDBfaHcgKmh3LCB1MTYgYWRkcmVzcywKIAkJcmV0dXJuIHJldF92YWw7CiAKIAkvKiBSZWNhbGlicmF0ZSB0aGUgZGV2aWNlIGJhY2sgdG8gMCAqLwotCXJldF92YWwgPSBody0mZ3Q7cGh5Lm9wcy53cml0ZV9yZWcoaHcsIEUxMDAwX01NREFDLCAwKTsKLQlpZiAocmV0X3ZhbCkKLQkJcmV0dXJuIHJldF92YWw7Ci0KLQlyZXR1cm4gcmV0X3ZhbDsKJiM0MzsJcmV0dXJuIGh3LSZndDtwaHkub3BzLndyaXRlX3JlZyhodywgRTEwMDBfTU1EQUMsIDApOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcGh5LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3BoeS5jCmluZGV4IDRjZjczN2ZiM2IyMWU5Li5iNzU4YTdlMGYwMTMyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19waHkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3BoeS5jCkBAIC02NzUsMTEgJiM0Mzs2NzUsNyBAQCBzdGF0aWMgczMyIF9faWdjX2FjY2Vzc194bWRpb19yZWcoc3RydWN0IGlnY19odyAqaHcsIHUxNiBhZGRyZXNzLAogCQlyZXR1cm4gcmV0X3ZhbDsKIAogCS8qIFJlY2FsaWJyYXRlIHRoZSBkZXZpY2UgYmFjayB0byAwICovCi0JcmV0X3ZhbCA9IGh3LSZndDtwaHkub3BzLndyaXRlX3JlZyhodywgSUdDX01NREFDLCAwKTsKLQlpZiAocmV0X3ZhbCkKLQkJcmV0dXJuIHJldF92YWw7Ci0KLQlyZXR1cm4gcmV0X3ZhbDsKJiM0MzsJcmV0dXJuIGh3LSZndDtwaHkub3BzLndyaXRlX3JlZyhodywgSUdDX01NREFDLCAwKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19ody5jCmluZGV4IGZmZjhkYzg0MjEyZDVjLi5lOTZhMjY4MDY3ZjI5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2h3LmMKQEAgLTI0NzgsNyAmIzQzOzI0NzgsNiBAQCBzdGF0aWMgaW50IG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpCiBzdGF0aWMgaW50CiBuZXR4ZW5fY29sbGVjdF9taW5pZHVtcChzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpCiB7Ci0JaW50IHJldCA9IDA7CiAJc3RydWN0IG5ldHhlbl9taW5pZHVtcF90ZW1wbGF0ZV9oZHIgKmhkcjsKIAloZHIgPSAoc3RydWN0IG5ldHhlbl9taW5pZHVtcF90ZW1wbGF0ZV9oZHIgKikKIAkJCQlhZGFwdGVyLSZndDttZHVtcC5tZF90ZW1wbGF0ZTsKQEAgLTI0ODYsMTEgJiM0MzsyNDg1LDcgQEAgbmV0eGVuX2NvbGxlY3RfbWluaWR1bXAoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKQogCWhkci0mZ3Q7ZHJpdmVyX3RpbWVzdGFtcCA9IGt0aW1lX2dldF9zZWNvbmRzKCk7CiAJaGRyLSZndDtkcml2ZXJfaW5mb193b3JkMiA9IGFkYXB0ZXItJmd0O2Z3X3ZlcnNpb247CiAJaGRyLSZndDtkcml2ZXJfaW5mb193b3JkMyA9IE5YUkQzMihhZGFwdGVyLCBDUkJfRFJJVkVSX1ZFUlNJT04pOwotCXJldCA9IG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShhZGFwdGVyKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShhZGFwdGVyKTsKIH0KIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jCmluZGV4IDQ1ZWQ4NzA1YzdjYTZkLi40N2NkOWVjNjY1ZWViNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmMKQEAgLTE2MTgsMTEgJiM0MzsxNjE4LDcgQEAgc3RhdGljIGludCBxbGNuaWNfODN4eF9jaGVja19od19zdGF0dXMoc3RydWN0IHFsY25pY19hZGFwdGVyICpwX2RldikKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0JZXJyID0gcWxjbmljXzgzeHhfY2hlY2tfaGVhcnRiZWF0KHBfZGV2KTsKLQlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOwotCi0JcmV0dXJuIGVycjsKJiM0MzsJcmV0dXJuIHFsY25pY184M3h4X2NoZWNrX2hlYXJ0YmVhdChwX2Rldik7CiB9CiAKIHN0YXRpYyBpbnQgcWxjbmljXzgzeHhfcG9sbF9yZWcoc3RydWN0IHFsY25pY19hZGFwdGVyICpwX2RldiwgdTMyIGFkZHIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jCmluZGV4IGVlODM4MWI2MGI4ZDQ5Li5mN2JlZWI3M2ViMTZiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMKQEAgLTY4NSw3ICYjNDM7Njg1LDYgQEAgc3RhdGljIHZvaWQgcnRzbl9zZXRfcmF0ZShzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KQogc3RhdGljIGludCBydHNuX3JtYWNfaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KQogewogCWNvbnN0IHU4ICptYWNfYWRkciA9IHByaXYtJmd0O25kZXYtJmd0O2Rldl9hZGRyOwotCWludCByZXQ7CiAKIAkvKiBTZXQgTUFDIGFkZHJlc3MgKi8KIAlydHNuX3dyaXRlKHByaXYsIE1STUFDMCwgKG1hY19hZGRyWzBdICZsdDsmbHQ7IDgpIHwgbWFjX2FkZHJbMV0pOwpAQCAtNzAyLDExICYjNDM7NzAxLDcgQEAgc3RhdGljIGludCBydHNuX3JtYWNfaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KQogCiAJLyogTGluayB2ZXJpZmljYXRpb24gKi8KIAlydHNuX21vZGlmeShwcml2LCBNTFZDLCBNTFZDX1BMViwgTUxWQ19QTFYpOwotCXJldCA9IHJ0c25fcmVnX3dhaXQocHJpdiwgTUxWQywgTUxWQ19QTFYsIDApOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gcnRzbl9yZWdfd2FpdChwcml2LCBNTFZDLCBNTFZDX1BMViwgMCk7CiB9CiAKIHN0YXRpYyBpbnQgcnRzbl9od19pbml0KHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMKaW5kZXggNjJiMzZhMzE4MTAwYWUuLjMyOTJiMjIzNWM4ZmE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jCkBAIC0xMDI4LDExICYjNDM7MTAyOCw3IEBAIHN0YXRpYyBpbnQgbGFuODd4eF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCWlmIChyYyAmbHQ7IDApCiAJCXJldHVybiByYzsKIAotCXJjID0gZ2VucGh5X3JlYWRfc3RhdHVzX2ZpeGVkKHBoeWRldik7Ci0JaWYgKHJjICZsdDsgMCkKLQkJcmV0dXJuIHJjOwotCi0JcmV0dXJuIHJjOwomIzQzOwlyZXR1cm4gZ2VucGh5X3JlYWRfc3RhdHVzX2ZpeGVkKHBoeWRldik7CiB9CiAKIHN0YXRpYyBpbnQgbGFuODd4eF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmMgYi9kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuYwppbmRleCA0OWQ2Mzg5ZGEwNjdjYS4uOGEzYmJkNjIzNDEyYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jCkBAIC0xNTIwLDExICYjNDM7MTUyMCw3IEBAIHN0YXRpYyBpbnQgdHBzMjM4ODFfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJCQkJICAgICAmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBQU0UgY29udHJvbGxlclxuJiMzNDspOwogCX0KIAotCXJldCA9IHRwczIzODgxX3NldHVwX2lycShwcml2LCBjbGllbnQtJmd0O2lycSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiB0cHMyMzg4MV9zZXR1cF9pcnEocHJpdiwgY2xpZW50LSZndDtpcnEpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgdHBzMjM4ODFfaWRbXSA9IHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA3NQoJCQkJCQkJb3V0cHV0OiA4MwoJCQkJCQkJdGhvdWdodHM6IDg1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTZXJpZXMgb2YgUmVmYWN0b3JpbmcgUGF0Y2hlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIGF0IGZpcnN0IGdsYW5jZSwgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvcmUgaWRlYSBpcyBzaW1wbGlmeWluZyBlcnJvciBoYW5kbGluZyBieSBkaXJlY3RseSByZXR1cm5pbmcgdGhlIHJlc3VsdCBvZiBhIGZ1bmN0aW9uIGNhbGwuIEl0JiMzOTtzIHRoYXQgY2xhc3NpYyBwYXR0ZXJuOiBpbnN0ZWFkIG9mIGFzc2lnbmluZyBhIHJldHVybiB2YWx1ZSB0byBhIHZhcmlhYmxlLCBjaGVja2luZyBpdCwgYW5kIHRoZW4gcmV0dXJuaW5nIGl0LCB3ZSBqdXN0IHJldHVybiB0aGUgZnVuY3Rpb24mIzM5O3MgcmVzdWx0IGRpcmVjdGx5LgoKRm9yIGV4YW1wbGUsIEkgc2VlIHRoZSBvbGQgY29kZSBzbmlwcGV0OgpgYGBjCi0JcmMgPSB6bDMwNzN4X3dyaXRlX3U4KHpsZGV2LCBaTF9SRUdfU1lOVEhfUEhBU0VfU0hJRlRfQ1RSTCwgMHgwMSk7Ci0JaWYgKHJjKQotCQlyZXR1cm4gcmM7Ci0KLQlyZXR1cm4gcmM7CmBgYApnZXRzIHNpbXBsaWZpZWQgdG86CmBgYGMKJiM0MzsJcmV0dXJuIHpsMzA3M3hfd3JpdGVfdTgoemxkZXYsIFpMX1JFR19TWU5USF9QSEFTRV9TSElGVF9DVFJMLCAweDAxKTsKYGBgCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIHB1cmVseSBzdHlsaXN0aWMuIFRoZSByZXR1cm4gdmFsdWUsIGFuZCB0aGVyZWZvcmUgYW55IHNpZGUgZWZmZWN0cywgKm11c3QqIGJlIGV4YWN0bHkgdGhlIHNhbWUuIExldCYjMzk7cyBtYWtlIHN1cmUsIHRob3VnaC4gUmlnaHQsIGlmIGByY2Agd2FzIG5vbi16ZXJvLCBpdCByZXR1cm5lZCBgcmNgOyBpZiBpdCB3YXMgemVybywgaXQgc3RpbGwgcmV0dXJuZWQgYHJjYC4gVGhlIG5ldyBjb2RlIGlzIGRvaW5nIHRoZSBzYW1lIHRoaW5nOiByZXR1cm5pbmcgdGhlIGZ1bmN0aW9uJiMzOTtzIHJlc3VsdC4gSXQmIzM5O3MgZXNzZW50aWFsbHkganVzdCByZW1vdmluZyByZWR1bmRhbnQgY29kZS4gIFRoaXMgbG9va3MgbGlrZSBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSB0aGF0IGRvZXNuJiMzOTt0IHRvdWNoIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93LiBJdCYjMzk7cyBhIHJlZmFjdG9yaW5nLCBub3RoaW5nIG1vcmUuCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgYnJlYWR0aCBvZiB0aGUgY2hhbmdlcy4gIEkgc2VlIGEgd2hvbGUgbGlzdCBvZiBmaWxlczogYGRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY2AsIGBkcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuY2AsIGFuZCBzbyBvbiwgYWxsIHRoZSB3YXkgdG8gYGRyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jYC4gIEkmIzM5O20gcXVpY2tseSBzY2FubmluZyB0aGUgZnVuY3Rpb24gbmFtZXMgd2l0aGluIHRob3NlIGZpbGVzLi4uIGB6bDMwNzN4X2RwbGxfaW5pdF9maW5lX3BoYXNlX2FkanVzdGAsIGBlbmFfb3BlbmAsIGBxbGNuaWNfODN4eF9jaGVja19od19zdGF0dXNgLCBldGMuIFllcCwgdGhleSBhbGwgc2hhcmUgdGhpcyBpZGVudGljYWwgY29kZSBjbGVhbnVwLiBJdCYjMzk7cyB0aGUgc2FtZSBwYXR0ZXJuIEkgc2F3IGJlZm9yZS4KCkFscmlnaHQsICp0aGlzKiBpcyBhIHRleHRib29rIGNsZWFudXAgcGF0Y2gsIGxpa2VseSBnZW5lcmF0ZWQgYnkgc29tZXRoaW5nIGxpa2UgQ29jY2luZWxsZSBvciBhIHNpbWlsYXIgdG9vbC4gVGhpcyBpc24mIzM5O3QgYWx0ZXJpbmcgdGhlIGNvbXBpbGVkIGNvZGUgbG9naWMgb3IgZXhlY3V0aW9uIGZsb3cuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyByZWZhY3RvcmluZyBkb2VzIG5vdCBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3csIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29uc2lzdHMgZW50aXJlbHkgb2YgY29kZSByZWZhY3RvcmluZy9jbGVhbnVwcyB0aGF0IHNpbXBsaWZ5IGVycm9yIGhhbmRsaW5nIGJ5IGRpcmVjdGx5IHJldHVybmluZyB0aGUgcmVzdWx0IG9mIGEgZnVuY3Rpb24gY2FsbCBpbnN0ZWFkIG9mIHN0b3JpbmcgaXQgaW4gYSBsb2NhbCB2YXJpYWJsZSBhbmQgY2hlY2tpbmcgaXQgYmVmb3JlIHJldHVybmluZy4gVGhpcyBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb25zaXN0cyBlbnRpcmVseSBvZiBjb2RlIHJlZmFjdG9yaW5nL2NsZWFudXBzIHRoYXQgc2ltcGxpZnkgZXJyb3IgaGFuZGxpbmcgYnkgZGlyZWN0bHkgcmV0dXJuaW5nIHRoZSByZXN1bHQgb2YgYSBmdW5jdGlvbiBjYWxsIGluc3RlYWQgb2Ygc3RvcmluZyBpdCBpbiBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjaGVja2luZyBpdCBiZWZvcmUgcmV0dXJuaW5nLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzozOTo1My4zOTcxNjMzMjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA0Njc0NTg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29uc2lzdHMgZW50aXJlbHkgb2YgY29kZSByZWZhY3RvcmluZy9jbGVhbnVwcyB0aGF0IHNpbXBsaWZ5IGVycm9yIGhhbmRsaW5nIGJ5IGRpcmVjdGx5IHJldHVybmluZyB0aGUgcmVzdWx0IG9mIGEgZnVuY3Rpb24gY2FsbCBpbnN0ZWFkIG9mIHN0b3JpbmcgaXQgaW4gYSBsb2NhbCB2YXJpYWJsZSBhbmQgY2hlY2tpbmcgaXQgYmVmb3JlIHJldHVybmluZy4gVGhpcyBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzozOTo1My4zOTcxOTM1ODdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTc0MjMzNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MzFhYjc1NzU1MDljNmZmNDhhZjdjYjY0ZDUwYTYzOTZmMGMwMjAyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDI2IDE3OjM5OjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY1xcbmluZGV4IGEyYTY0MWI4MzU4ZjIyLi4wNDg4YWU2YWM0ODZjOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcXG4rKysgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcXG5AQCAtMjI3MiwxMSArMjI3Miw3IEBAIHpsMzA3M3hfZHBsbF9pbml0X2ZpbmVfcGhhc2VfYWRqdXN0KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpXFxuIFxcdGlmIChyYylcXG4gXFx0XFx0cmV0dXJuIHJjO1xcbiBcXG4tXFx0cmMgPSB6bDMwNzN4X3dyaXRlX3U4KHpsZGV2LCBaTF9SRUdfU1lOVEhfUEhBU0VfU0hJRlRfQ1RSTCwgMHgwMSk7XFxuLVxcdGlmIChyYylcXG4tXFx0XFx0cmV0dXJuIHJjO1xcbi1cXG4tXFx0cmV0dXJuIHJjO1xcbitcXHRyZXR1cm4gemwzMDczeF93cml0ZV91OCh6bGRldiwgWkxfUkVHX1NZTlRIX1BIQVNFX1NISUZUX0NUUkwsIDB4MDEpO1xcbiB9XFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvb3V0LmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuY1xcbmluZGV4IGViNTYyOGFlYmNlZThlLi40MTBkMTViOTZkMGJmMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuY1xcbisrKyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L291dC5jXFxuQEAgLTg1LDEyICs4NSw4IEBAIGludCB6bDMwNzN4X291dF9zdGF0ZV9mZXRjaChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCB1OCBpbmRleClcXG4gXFx0aWYgKHJjKVxcbiBcXHRcXHRyZXR1cm4gcmM7XFxuIFxcbi1cXHRyYyA9IHpsMzA3M3hfcmVhZF91MzIoemxkZXYsIFpMX1JFR19PVVRQVVRfUEhBU0VfQ09NUCxcXG4tXFx0XFx0XFx0ICAgICAgXFx1MDAyNm91dC1cXHUwMDNlcGhhc2VfY29tcCk7XFxuLVxcdGlmIChyYylcXG4tXFx0XFx0cmV0dXJuIHJjO1xcbi1cXG4tXFx0cmV0dXJuIHJjO1xcbitcXHRyZXR1cm4gemwzMDczeF9yZWFkX3UzMih6bGRldiwgWkxfUkVHX09VVFBVVF9QSEFTRV9DT01QLFxcbitcXHRcXHRcXHRcXHRcXHUwMDI2b3V0LVxcdTAwM2VwaGFzZV9jb21wKTtcXG4gfVxcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmNcXG5pbmRleCA1ZDA1MDIwYTZkMDU4Yi4uZWE4OTYxOTAzOWQ4OWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuY1xcbkBAIC0yMzAzLDExICsyMzAzLDcgQEAgc3RhdGljIGludCBlbmFfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbiBcXHRcXHRyZXR1cm4gcmM7XFxuIFxcdH1cXG4gXFxuLVxcdHJjID0gZW5hX3VwKGFkYXB0ZXIpO1xcbi1cXHRpZiAocmMpXFxuLVxcdFxcdHJldHVybiByYztcXG4tXFxuLVxcdHJldHVybiByYztcXG4rXFx0cmV0dXJuIGVuYV91cChhZGFwdGVyKTtcXG4gfVxcbiBcXG4gLyogZW5hX2Nsb3NlIC0gRGlzYWJsZXMgYSBuZXR3b3JrIGludGVyZmFjZVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWNzZWMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21hY3NlYy5jXFxuaW5kZXggM2NhMDcyMzYwZWM3ZTAuLmZkNGVlNjIxMjIzNDg2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21hY3NlYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFjc2VjLmNcXG5AQCAtNzM1LDExICs3MzUsNyBAQCBzdGF0aWMgaW50IGFxX3NldF9yeHNjKHN0cnVjdCBhcV9uaWNfcyAqbmljLCBjb25zdCB1MzIgcnhzY19pZHgpXFxuIFxcdHNjX3JlY29yZC52YWxpZCA9IDE7XFxuIFxcdHNjX3JlY29yZC5mcmVzaCA9IDE7XFxuIFxcbi1cXHRyZXQgPSBhcV9tc3Nfc2V0X2luZ3Jlc3Nfc2NfcmVjb3JkKGh3LCBcXHUwMDI2c2NfcmVjb3JkLCBod19zY19pZHgpO1xcbi1cXHRpZiAocmV0KVxcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbi1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIGFxX21zc19zZXRfaW5ncmVzc19zY19yZWNvcmQoaHcsIFxcdTAwMjZzY19yZWNvcmQsIGh3X3NjX2lkeCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgYXFfbWRvX2FkZF9yeHNjKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmNcXG5pbmRleCAzM2U3YTk5ZDNlNDljZC4uNzlkNGE3N2Y3MmJkNDkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC5jXFxuQEAgLTM5MzUsMTEgKzM5MzUsNyBAQCBzdGF0aWMgaW50IGRwYWEyX3N3aXRjaF9wb3J0X2luaXQoc3RydWN0IGV0aHN3X3BvcnRfcHJpdiAqcG9ydF9wcml2LCB1MTYgcG9ydClcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdGVyciA9IGRwYWEyX3N3aXRjaF9wb3J0X3RyYXBfbWFjX2FkZHIocG9ydF9wcml2LCBsbF9tYWMsIGxsX21hc2spO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbi1cXG4tXFx0cmV0dXJuIGVycjtcXG4rXFx0cmV0dXJuIGRwYWEyX3N3aXRjaF9wb3J0X3RyYXBfbWFjX2FkZHIocG9ydF9wcml2LCBsbF9tYWMsIGxsX21hc2spO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBkcGFhMl9zd2l0Y2hfY3RybF9pZl90ZWFyZG93bihzdHJ1Y3QgZXRoc3dfY29yZSAqZXRoc3cpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXFxuaW5kZXggODkyMTVlMWRkYzJkYjEuLmNmNjM2ZmM1YWFmYWMyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXFxuQEAgLTI4NzcsMTEgKzI4NzcsNyBAQCBzdGF0aWMgaW50IGdmYXJfZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHRlcnIgPSBzdGFydHVwX2dmYXIoZGV2KTtcXG4tXFx0aWYgKGVycilcXG4tXFx0XFx0cmV0dXJuIGVycjtcXG4tXFxuLVxcdHJldHVybiBlcnI7XFxuK1xcdHJldHVybiBzdGFydHVwX2dmYXIoZGV2KTtcXG4gfVxcbiBcXG4gLyogU3RvcHMgdGhlIGtlcm5lbCBxdWV1ZSwgYW5kIGhhbHRzIHRoZSBjb250cm9sbGVyICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXFxuaW5kZXggYTA0NjgzMDA0YTU2NzcuLjBjZDBlNTU5N2M5MDlkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXFxuQEAgLTQ4NjQsMTYgKzQ4NjQsMTAgQEAgc3RhdGljIHZvaWQgaTQwZV9jb250cm9sX3J4X3Eoc3RydWN0IGk0MGVfcGYgKnBmLCBpbnQgcGZfcSwgYm9vbCBlbmFibGUpXFxuICAqKi9cXG4gaW50IGk0MGVfY29udHJvbF93YWl0X3J4X3Eoc3RydWN0IGk0MGVfcGYgKnBmLCBpbnQgcGZfcSwgYm9vbCBlbmFibGUpXFxuIHtcXG4tXFx0aW50IHJldCA9IDA7XFxuLVxcbiBcXHRpNDBlX2NvbnRyb2xfcnhfcShwZiwgcGZfcSwgZW5hYmxlKTtcXG4gXFxuIFxcdC8qIHdhaXQgZm9yIHRoZSBjaGFuZ2UgdG8gZmluaXNoICovXFxuLVxcdHJldCA9IGk0MGVfcGZfcnhxX3dhaXQocGYsIHBmX3EsIGVuYWJsZSk7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcbi1cXHRyZXR1cm4gcmV0O1xcbitcXHRyZXR1cm4gaTQwZV9wZl9yeHFfd2FpdChwZiwgcGZfcSwgZW5hYmxlKTtcXG4gfVxcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvZTEwMDBfaTIxMC5jXFxuaW5kZXggOWRiMjliMjMxZDZhOTUuLjc4NGY5YTdiY2JlZDA3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvZTEwMDBfaTIxMC5jXFxuQEAgLTc1NiwxMSArNzU2LDcgQEAgc3RhdGljIHMzMiBfX2lnYl9hY2Nlc3NfeG1kaW9fcmVnKHN0cnVjdCBlMTAwMF9odyAqaHcsIHUxNiBhZGRyZXNzLFxcbiBcXHRcXHRyZXR1cm4gcmV0X3ZhbDtcXG4gXFxuIFxcdC8qIFJlY2FsaWJyYXRlIHRoZSBkZXZpY2UgYmFjayB0byAwICovXFxuLVxcdHJldF92YWwgPSBody1cXHUwMDNlcGh5Lm9wcy53cml0ZV9yZWcoaHcsIEUxMDAwX01NREFDLCAwKTtcXG4tXFx0aWYgKHJldF92YWwpXFxuLVxcdFxcdHJldHVybiByZXRfdmFsO1xcbi1cXG4tXFx0cmV0dXJuIHJldF92YWw7XFxuK1xcdHJldHVybiBody1cXHUwMDNlcGh5Lm9wcy53cml0ZV9yZWcoaHcsIEUxMDAwX01NREFDLCAwKTtcXG4gfVxcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcGh5LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3BoeS5jXFxuaW5kZXggNGNmNzM3ZmIzYjIxZTkuLmI3NThhN2UwZjAxMzI4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcGh5LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3BoeS5jXFxuQEAgLTY3NSwxMSArNjc1LDcgQEAgc3RhdGljIHMzMiBfX2lnY19hY2Nlc3NfeG1kaW9fcmVnKHN0cnVjdCBpZ2NfaHcgKmh3LCB1MTYgYWRkcmVzcyxcXG4gXFx0XFx0cmV0dXJuIHJldF92YWw7XFxuIFxcbiBcXHQvKiBSZWNhbGlicmF0ZSB0aGUgZGV2aWNlIGJhY2sgdG8gMCAqL1xcbi1cXHRyZXRfdmFsID0gaHctXFx1MDAzZXBoeS5vcHMud3JpdGVfcmVnKGh3LCBJR0NfTU1EQUMsIDApO1xcbi1cXHRpZiAocmV0X3ZhbClcXG4tXFx0XFx0cmV0dXJuIHJldF92YWw7XFxuLVxcbi1cXHRyZXR1cm4gcmV0X3ZhbDtcXG4rXFx0cmV0dXJuIGh3LVxcdTAwM2VwaHkub3BzLndyaXRlX3JlZyhodywgSUdDX01NREFDLCAwKTtcXG4gfVxcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2h3LmNcXG5pbmRleCBmZmY4ZGM4NDIxMmQ1Yy4uZTk2YTI2ODA2N2YyOTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2h3LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfaHcuY1xcbkBAIC0yNDc4LDcgKzI0NzgsNiBAQCBzdGF0aWMgaW50IG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIHN0YXRpYyBpbnRcXG4gbmV0eGVuX2NvbGxlY3RfbWluaWR1bXAoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKVxcbiB7XFxuLVxcdGludCByZXQgPSAwO1xcbiBcXHRzdHJ1Y3QgbmV0eGVuX21pbmlkdW1wX3RlbXBsYXRlX2hkciAqaGRyO1xcbiBcXHRoZHIgPSAoc3RydWN0IG5ldHhlbl9taW5pZHVtcF90ZW1wbGF0ZV9oZHIgKilcXG4gXFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlbWR1bXAubWRfdGVtcGxhdGU7XFxuQEAgLTI0ODYsMTEgKzI0ODUsNyBAQCBuZXR4ZW5fY29sbGVjdF9taW5pZHVtcChzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdGhkci1cXHUwMDNlZHJpdmVyX3RpbWVzdGFtcCA9IGt0aW1lX2dldF9zZWNvbmRzKCk7XFxuIFxcdGhkci1cXHUwMDNlZHJpdmVyX2luZm9fd29yZDIgPSBhZGFwdGVyLVxcdTAwM2Vmd192ZXJzaW9uO1xcbiBcXHRoZHItXFx1MDAzZWRyaXZlcl9pbmZvX3dvcmQzID0gTlhSRDMyKGFkYXB0ZXIsIENSQl9EUklWRVJfVkVSU0lPTik7XFxuLVxcdHJldCA9IG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShhZGFwdGVyKTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBuZXR4ZW5fcGFyc2VfbWRfdGVtcGxhdGUoYWRhcHRlcik7XFxuIH1cXG4gXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jXFxuaW5kZXggNDVlZDg3MDVjN2NhNmQuLjQ3Y2Q5ZWM2NjVlZWI0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcXG5AQCAtMTYxOCwxMSArMTYxOCw3IEBAIHN0YXRpYyBpbnQgcWxjbmljXzgzeHhfY2hlY2tfaHdfc3RhdHVzKHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqcF9kZXYpXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHRlcnIgPSBxbGNuaWNfODN4eF9jaGVja19oZWFydGJlYXQocF9kZXYpO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbi1cXG4tXFx0cmV0dXJuIGVycjtcXG4rXFx0cmV0dXJuIHFsY25pY184M3h4X2NoZWNrX2hlYXJ0YmVhdChwX2Rldik7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcWxjbmljXzgzeHhfcG9sbF9yZWcoc3RydWN0IHFsY25pY19hZGFwdGVyICpwX2RldiwgdTMyIGFkZHIsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmNcXG5pbmRleCBlZTgzODFiNjBiOGQ0OS4uZjdiZWViNzNlYjE2YmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uY1xcbkBAIC02ODUsNyArNjg1LDYgQEAgc3RhdGljIHZvaWQgcnRzbl9zZXRfcmF0ZShzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KVxcbiBzdGF0aWMgaW50IHJ0c25fcm1hY19pbml0KHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpXFxuIHtcXG4gXFx0Y29uc3QgdTggKm1hY19hZGRyID0gcHJpdi1cXHUwMDNlbmRldi1cXHUwMDNlZGV2X2FkZHI7XFxuLVxcdGludCByZXQ7XFxuIFxcbiBcXHQvKiBTZXQgTUFDIGFkZHJlc3MgKi9cXG4gXFx0cnRzbl93cml0ZShwcml2LCBNUk1BQzAsIChtYWNfYWRkclswXSBcXHUwMDNjXFx1MDAzYyA4KSB8IG1hY19hZGRyWzFdKTtcXG5AQCAtNzAyLDExICs3MDEsNyBAQCBzdGF0aWMgaW50IHJ0c25fcm1hY19pbml0KHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpXFxuIFxcbiBcXHQvKiBMaW5rIHZlcmlmaWNhdGlvbiAqL1xcbiBcXHRydHNuX21vZGlmeShwcml2LCBNTFZDLCBNTFZDX1BMViwgTUxWQ19QTFYpO1xcbi1cXHRyZXQgPSBydHNuX3JlZ193YWl0KHByaXYsIE1MVkMsIE1MVkNfUExWLCAwKTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBydHNuX3JlZ193YWl0KHByaXYsIE1MVkMsIE1MVkNfUExWLCAwKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBydHNuX2h3X2luaXQoc3RydWN0IHJ0c25fcHJpdmF0ZSAqcHJpdilcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXFxuaW5kZXggNjJiMzZhMzE4MTAwYWUuLjMyOTJiMjIzNWM4ZmE4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xcbkBAIC0xMDI4LDExICsxMDI4LDcgQEAgc3RhdGljIGludCBsYW44N3h4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcdGlmIChyYyBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiByYztcXG4gXFxuLVxcdHJjID0gZ2VucGh5X3JlYWRfc3RhdHVzX2ZpeGVkKHBoeWRldik7XFxuLVxcdGlmIChyYyBcXHUwMDNjIDApXFxuLVxcdFxcdHJldHVybiByYztcXG4tXFxuLVxcdHJldHVybiByYztcXG4rXFx0cmV0dXJuIGdlbnBoeV9yZWFkX3N0YXR1c19maXhlZChwaHlkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGxhbjg3eHhfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmMgYi9kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuY1xcbmluZGV4IDQ5ZDYzODlkYTA2N2NhLi44YTNiYmQ2MjM0MTJiMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jXFxuQEAgLTE1MjAsMTEgKzE1MjAsNyBAQCBzdGF0aWMgaW50IHRwczIzODgxX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgUFNFIGNvbnRyb2xsZXJcXFxcblxcXCIpO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXQgPSB0cHMyMzg4MV9zZXR1cF9pcnEocHJpdiwgY2xpZW50LVxcdTAwM2VpcnEpO1xcbi1cXHRpZiAocmV0KVxcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbi1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIHRwczIzODgxX3NldHVwX2lycShwcml2LCBjbGllbnQtXFx1MDAzZWlycSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB0cHMyMzg4MV9pZFtdID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzozOTo1NC41MTU3NzY0M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjk5MjgxMTgwNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnNpc3RzIGVudGlyZWx5IG9mIGNvZGUgcmVmYWN0b3JpbmcvY2xlYW51cHMgdGhhdCBzaW1wbGlmeSBlcnJvciBoYW5kbGluZyBieSBkaXJlY3RseSByZXR1cm5pbmcgdGhlIHJlc3VsdCBvZiBhIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBvZiBzdG9yaW5nIGl0IGluIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNoZWNraW5nIGl0IGJlZm9yZSByZXR1cm5pbmcuIFRoaXMgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTMxYWI3NTc1NTA5YzZmZjQ4YWY3Y2I2NGQ1MGE2Mzk2ZjBjMDIwMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDE3OjM5OjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jXG5pbmRleCBhMmE2NDFiODM1OGYyMi4uMDQ4OGFlNmFjNDg2YzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcbisrKyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY1xuQEAgLTIyNzIsMTEgKzIyNzIsNyBAQCB6bDMwNzN4X2RwbGxfaW5pdF9maW5lX3BoYXNlX2FkanVzdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxuIFx0aWYgKHJjKVxuIFx0XHRyZXR1cm4gcmM7XG4gXG4tXHRyYyA9IHpsMzA3M3hfd3JpdGVfdTgoemxkZXYsIFpMX1JFR19TWU5USF9QSEFTRV9TSElGVF9DVFJMLCAweDAxKTtcbi1cdGlmIChyYylcbi1cdFx0cmV0dXJuIHJjO1xuLVxuLVx0cmV0dXJuIHJjO1xuK1x0cmV0dXJuIHpsMzA3M3hfd3JpdGVfdTgoemxkZXYsIFpMX1JFR19TWU5USF9QSEFTRV9TSElGVF9DVFJMLCAweDAxKTtcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvb3V0LmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuY1xuaW5kZXggZWI1NjI4YWViY2VlOGUuLjQxMGQxNWI5NmQwYmYwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9kcGxsL3psMzA3M3gvb3V0LmNcbisrKyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L291dC5jXG5AQCAtODUsMTIgKzg1LDggQEAgaW50IHpsMzA3M3hfb3V0X3N0YXRlX2ZldGNoKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIHU4IGluZGV4KVxuIFx0aWYgKHJjKVxuIFx0XHRyZXR1cm4gcmM7XG4gXG4tXHRyYyA9IHpsMzA3M3hfcmVhZF91MzIoemxkZXYsIFpMX1JFR19PVVRQVVRfUEhBU0VfQ09NUCxcbi1cdFx0XHQgICAgICBcdTAwMjZvdXQtXHUwMDNlcGhhc2VfY29tcCk7XG4tXHRpZiAocmMpXG4tXHRcdHJldHVybiByYztcbi1cbi1cdHJldHVybiByYztcbitcdHJldHVybiB6bDMwNzN4X3JlYWRfdTMyKHpsZGV2LCBaTF9SRUdfT1VUUFVUX1BIQVNFX0NPTVAsXG4rXHRcdFx0XHRcdTAwMjZvdXQtXHUwMDNlcGhhc2VfY29tcCk7XG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmNcbmluZGV4IDVkMDUwMjBhNmQwNThiLi5lYTg5NjE5MDM5ZDg5YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuY1xuQEAgLTIzMDMsMTEgKzIzMDMsNyBAQCBzdGF0aWMgaW50IGVuYV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gXHRcdHJldHVybiByYztcbiBcdH1cbiBcbi1cdHJjID0gZW5hX3VwKGFkYXB0ZXIpO1xuLVx0aWYgKHJjKVxuLVx0XHRyZXR1cm4gcmM7XG4tXG4tXHRyZXR1cm4gcmM7XG4rXHRyZXR1cm4gZW5hX3VwKGFkYXB0ZXIpO1xuIH1cbiBcbiAvKiBlbmFfY2xvc2UgLSBEaXNhYmxlcyBhIG5ldHdvcmsgaW50ZXJmYWNlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFjc2VjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWNzZWMuY1xuaW5kZXggM2NhMDcyMzYwZWM3ZTAuLmZkNGVlNjIxMjIzNDg2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFjc2VjLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21hY3NlYy5jXG5AQCAtNzM1LDExICs3MzUsNyBAQCBzdGF0aWMgaW50IGFxX3NldF9yeHNjKHN0cnVjdCBhcV9uaWNfcyAqbmljLCBjb25zdCB1MzIgcnhzY19pZHgpXG4gXHRzY19yZWNvcmQudmFsaWQgPSAxO1xuIFx0c2NfcmVjb3JkLmZyZXNoID0gMTtcbiBcbi1cdHJldCA9IGFxX21zc19zZXRfaW5ncmVzc19zY19yZWNvcmQoaHcsIFx1MDAyNnNjX3JlY29yZCwgaHdfc2NfaWR4KTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIGFxX21zc19zZXRfaW5ncmVzc19zY19yZWNvcmQoaHcsIFx1MDAyNnNjX3JlY29yZCwgaHdfc2NfaWR4KTtcbiB9XG4gXG4gc3RhdGljIGludCBhcV9tZG9fYWRkX3J4c2Moc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC5jXG5pbmRleCAzM2U3YTk5ZDNlNDljZC4uNzlkNGE3N2Y3MmJkNDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1zd2l0Y2guY1xuQEAgLTM5MzUsMTEgKzM5MzUsNyBAQCBzdGF0aWMgaW50IGRwYWEyX3N3aXRjaF9wb3J0X2luaXQoc3RydWN0IGV0aHN3X3BvcnRfcHJpdiAqcG9ydF9wcml2LCB1MTYgcG9ydClcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRlcnIgPSBkcGFhMl9zd2l0Y2hfcG9ydF90cmFwX21hY19hZGRyKHBvcnRfcHJpdiwgbGxfbWFjLCBsbF9tYXNrKTtcbi1cdGlmIChlcnIpXG4tXHRcdHJldHVybiBlcnI7XG4tXG4tXHRyZXR1cm4gZXJyO1xuK1x0cmV0dXJuIGRwYWEyX3N3aXRjaF9wb3J0X3RyYXBfbWFjX2FkZHIocG9ydF9wcml2LCBsbF9tYWMsIGxsX21hc2spO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkcGFhMl9zd2l0Y2hfY3RybF9pZl90ZWFyZG93bihzdHJ1Y3QgZXRoc3dfY29yZSAqZXRoc3cpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcbmluZGV4IDg5MjE1ZTFkZGMyZGIxLi5jZjYzNmZjNWFhZmFjMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcbkBAIC0yODc3LDExICsyODc3LDcgQEAgc3RhdGljIGludCBnZmFyX2VuZXRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGVyciA9IHN0YXJ0dXBfZ2ZhcihkZXYpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdHJldHVybiBlcnI7XG4rXHRyZXR1cm4gc3RhcnR1cF9nZmFyKGRldik7XG4gfVxuIFxuIC8qIFN0b3BzIHRoZSBrZXJuZWwgcXVldWUsIGFuZCBoYWx0cyB0aGUgY29udHJvbGxlciAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5pbmRleCBhMDQ2ODMwMDRhNTY3Ny4uMGNkMGU1NTk3YzkwOWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5AQCAtNDg2NCwxNiArNDg2NCwxMCBAQCBzdGF0aWMgdm9pZCBpNDBlX2NvbnRyb2xfcnhfcShzdHJ1Y3QgaTQwZV9wZiAqcGYsIGludCBwZl9xLCBib29sIGVuYWJsZSlcbiAgKiovXG4gaW50IGk0MGVfY29udHJvbF93YWl0X3J4X3Eoc3RydWN0IGk0MGVfcGYgKnBmLCBpbnQgcGZfcSwgYm9vbCBlbmFibGUpXG4ge1xuLVx0aW50IHJldCA9IDA7XG4tXG4gXHRpNDBlX2NvbnRyb2xfcnhfcShwZiwgcGZfcSwgZW5hYmxlKTtcbiBcbiBcdC8qIHdhaXQgZm9yIHRoZSBjaGFuZ2UgdG8gZmluaXNoICovXG4tXHRyZXQgPSBpNDBlX3BmX3J4cV93YWl0KHBmLCBwZl9xLCBlbmFibGUpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gaTQwZV9wZl9yeHFfd2FpdChwZiwgcGZfcSwgZW5hYmxlKTtcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2UxMDAwX2kyMTAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmNcbmluZGV4IDlkYjI5YjIzMWQ2YTk1Li43ODRmOWE3YmNiZWQwNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmNcbkBAIC03NTYsMTEgKzc1Niw3IEBAIHN0YXRpYyBzMzIgX19pZ2JfYWNjZXNzX3htZGlvX3JlZyhzdHJ1Y3QgZTEwMDBfaHcgKmh3LCB1MTYgYWRkcmVzcyxcbiBcdFx0cmV0dXJuIHJldF92YWw7XG4gXG4gXHQvKiBSZWNhbGlicmF0ZSB0aGUgZGV2aWNlIGJhY2sgdG8gMCAqL1xuLVx0cmV0X3ZhbCA9IGh3LVx1MDAzZXBoeS5vcHMud3JpdGVfcmVnKGh3LCBFMTAwMF9NTURBQywgMCk7XG4tXHRpZiAocmV0X3ZhbClcbi1cdFx0cmV0dXJuIHJldF92YWw7XG4tXG4tXHRyZXR1cm4gcmV0X3ZhbDtcbitcdHJldHVybiBody1cdTAwM2VwaHkub3BzLndyaXRlX3JlZyhodywgRTEwMDBfTU1EQUMsIDApO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3BoeS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19waHkuY1xuaW5kZXggNGNmNzM3ZmIzYjIxZTkuLmI3NThhN2UwZjAxMzI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19waHkuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19waHkuY1xuQEAgLTY3NSwxMSArNjc1LDcgQEAgc3RhdGljIHMzMiBfX2lnY19hY2Nlc3NfeG1kaW9fcmVnKHN0cnVjdCBpZ2NfaHcgKmh3LCB1MTYgYWRkcmVzcyxcbiBcdFx0cmV0dXJuIHJldF92YWw7XG4gXG4gXHQvKiBSZWNhbGlicmF0ZSB0aGUgZGV2aWNlIGJhY2sgdG8gMCAqL1xuLVx0cmV0X3ZhbCA9IGh3LVx1MDAzZXBoeS5vcHMud3JpdGVfcmVnKGh3LCBJR0NfTU1EQUMsIDApO1xuLVx0aWYgKHJldF92YWwpXG4tXHRcdHJldHVybiByZXRfdmFsO1xuLVxuLVx0cmV0dXJuIHJldF92YWw7XG4rXHRyZXR1cm4gaHctXHUwMDNlcGh5Lm9wcy53cml0ZV9yZWcoaHcsIElHQ19NTURBQywgMCk7XG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2h3LmNcbmluZGV4IGZmZjhkYzg0MjEyZDVjLi5lOTZhMjY4MDY3ZjI5NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19ody5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfaHcuY1xuQEAgLTI0NzgsNyArMjQ3OCw2IEBAIHN0YXRpYyBpbnQgbmV0eGVuX3BhcnNlX21kX3RlbXBsYXRlKHN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqYWRhcHRlcilcbiBzdGF0aWMgaW50XG4gbmV0eGVuX2NvbGxlY3RfbWluaWR1bXAoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKVxuIHtcbi1cdGludCByZXQgPSAwO1xuIFx0c3RydWN0IG5ldHhlbl9taW5pZHVtcF90ZW1wbGF0ZV9oZHIgKmhkcjtcbiBcdGhkciA9IChzdHJ1Y3QgbmV0eGVuX21pbmlkdW1wX3RlbXBsYXRlX2hkciAqKVxuIFx0XHRcdFx0YWRhcHRlci1cdTAwM2VtZHVtcC5tZF90ZW1wbGF0ZTtcbkBAIC0yNDg2LDExICsyNDg1LDcgQEAgbmV0eGVuX2NvbGxlY3RfbWluaWR1bXAoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKVxuIFx0aGRyLVx1MDAzZWRyaXZlcl90aW1lc3RhbXAgPSBrdGltZV9nZXRfc2Vjb25kcygpO1xuIFx0aGRyLVx1MDAzZWRyaXZlcl9pbmZvX3dvcmQyID0gYWRhcHRlci1cdTAwM2Vmd192ZXJzaW9uO1xuIFx0aGRyLVx1MDAzZWRyaXZlcl9pbmZvX3dvcmQzID0gTlhSRDMyKGFkYXB0ZXIsIENSQl9EUklWRVJfVkVSU0lPTik7XG4tXHRyZXQgPSBuZXR4ZW5fcGFyc2VfbWRfdGVtcGxhdGUoYWRhcHRlcik7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0cmV0dXJuIHJldDtcbitcdHJldHVybiBuZXR4ZW5fcGFyc2VfbWRfdGVtcGxhdGUoYWRhcHRlcik7XG4gfVxuIFxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcbmluZGV4IDQ1ZWQ4NzA1YzdjYTZkLi40N2NkOWVjNjY1ZWViNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuY1xuQEAgLTE2MTgsMTEgKzE2MTgsNyBAQCBzdGF0aWMgaW50IHFsY25pY184M3h4X2NoZWNrX2h3X3N0YXR1cyhzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKnBfZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGVyciA9IHFsY25pY184M3h4X2NoZWNrX2hlYXJ0YmVhdChwX2Rldik7XG4tXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gZXJyO1xuLVxuLVx0cmV0dXJuIGVycjtcbitcdHJldHVybiBxbGNuaWNfODN4eF9jaGVja19oZWFydGJlYXQocF9kZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHFsY25pY184M3h4X3BvbGxfcmVnKHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqcF9kZXYsIHUzMiBhZGRyLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmNcbmluZGV4IGVlODM4MWI2MGI4ZDQ5Li5mN2JlZWI3M2ViMTZiYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uY1xuQEAgLTY4NSw3ICs2ODUsNiBAQCBzdGF0aWMgdm9pZCBydHNuX3NldF9yYXRlKHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpXG4gc3RhdGljIGludCBydHNuX3JtYWNfaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KVxuIHtcbiBcdGNvbnN0IHU4ICptYWNfYWRkciA9IHByaXYtXHUwMDNlbmRldi1cdTAwM2VkZXZfYWRkcjtcbi1cdGludCByZXQ7XG4gXG4gXHQvKiBTZXQgTUFDIGFkZHJlc3MgKi9cbiBcdHJ0c25fd3JpdGUocHJpdiwgTVJNQUMwLCAobWFjX2FkZHJbMF0gXHUwMDNjXHUwMDNjIDgpIHwgbWFjX2FkZHJbMV0pO1xuQEAgLTcwMiwxMSArNzAxLDcgQEAgc3RhdGljIGludCBydHNuX3JtYWNfaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KVxuIFxuIFx0LyogTGluayB2ZXJpZmljYXRpb24gKi9cbiBcdHJ0c25fbW9kaWZ5KHByaXYsIE1MVkMsIE1MVkNfUExWLCBNTFZDX1BMVik7XG4tXHRyZXQgPSBydHNuX3JlZ193YWl0KHByaXYsIE1MVkMsIE1MVkNfUExWLCAwKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIHJ0c25fcmVnX3dhaXQocHJpdiwgTUxWQywgTUxWQ19QTFYsIDApO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJ0c25faHdfaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xuaW5kZXggNjJiMzZhMzE4MTAwYWUuLjMyOTJiMjIzNWM4ZmE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbkBAIC0xMDI4LDExICsxMDI4LDcgQEAgc3RhdGljIGludCBsYW44N3h4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRpZiAocmMgXHUwMDNjIDApXG4gXHRcdHJldHVybiByYztcbiBcbi1cdHJjID0gZ2VucGh5X3JlYWRfc3RhdHVzX2ZpeGVkKHBoeWRldik7XG4tXHRpZiAocmMgXHUwMDNjIDApXG4tXHRcdHJldHVybiByYztcbi1cbi1cdHJldHVybiByYztcbitcdHJldHVybiBnZW5waHlfcmVhZF9zdGF0dXNfZml4ZWQocGh5ZGV2KTtcbiB9XG4gXG4gc3RhdGljIGludCBsYW44N3h4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmMgYi9kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuY1xuaW5kZXggNDlkNjM4OWRhMDY3Y2EuLjhhM2JiZDYyMzQxMmIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jXG5AQCAtMTUyMCwxMSArMTUyMCw3IEBAIHN0YXRpYyBpbnQgdHBzMjM4ODFfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRcdFx0XHQgICAgIFwiZmFpbGVkIHRvIHJlZ2lzdGVyIFBTRSBjb250cm9sbGVyXFxuXCIpO1xuIFx0fVxuIFxuLVx0cmV0ID0gdHBzMjM4ODFfc2V0dXBfaXJxKHByaXYsIGNsaWVudC1cdTAwM2VpcnEpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gdHBzMjM4ODFfc2V0dXBfaXJxKHByaXYsIGNsaWVudC1cdTAwM2VpcnEpO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgdHBzMjM4ODFfaWRbXSA9IHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE3OjM5OjU0LjUxNTc4MDc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTkyODA2MzA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTZXJpZXMgb2YgUmVmYWN0b3JpbmcgUGF0Y2hlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBhdCBmaXJzdCBnbGFuY2UsIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBjb3JlIGlkZWEgaXMgc2ltcGxpZnlpbmcgZXJyb3IgaGFuZGxpbmcgYnkgZGlyZWN0bHkgcmV0dXJuaW5nIHRoZSByZXN1bHQgb2YgYSBmdW5jdGlvbiBjYWxsLiBJdCdzIHRoYXQgY2xhc3NpYyBwYXR0ZXJuOiBpbnN0ZWFkIG9mIGFzc2lnbmluZyBhIHJldHVybiB2YWx1ZSB0byBhIHZhcmlhYmxlLCBjaGVja2luZyBpdCwgYW5kIHRoZW4gcmV0dXJuaW5nIGl0LCB3ZSBqdXN0IHJldHVybiB0aGUgZnVuY3Rpb24ncyByZXN1bHQgZGlyZWN0bHkuXG5cbkZvciBleGFtcGxlLCBJIHNlZSB0aGUgb2xkIGNvZGUgc25pcHBldDpcbmBgYGNcbi1cdHJjID0gemwzMDczeF93cml0ZV91OCh6bGRldiwgWkxfUkVHX1NZTlRIX1BIQVNFX1NISUZUX0NUUkwsIDB4MDEpO1xuLVx0aWYgKHJjKVxuLVx0XHRyZXR1cm4gcmM7XG4tXG4tXHRyZXR1cm4gcmM7XG5gYGBcbmdldHMgc2ltcGxpZmllZCB0bzpcbmBgYGNcbitcdHJldHVybiB6bDMwNzN4X3dyaXRlX3U4KHpsZGV2LCBaTF9SRUdfU1lOVEhfUEhBU0VfU0hJRlRfQ1RSTCwgMHgwMSk7XG5gYGBcblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBwdXJlbHkgc3R5bGlzdGljLiBUaGUgcmV0dXJuIHZhbHVlLCBhbmQgdGhlcmVmb3JlIGFueSBzaWRlIGVmZmVjdHMsICptdXN0KiBiZSBleGFjdGx5IHRoZSBzYW1lLiBMZXQncyBtYWtlIHN1cmUsIHRob3VnaC4gUmlnaHQsIGlmIGByY2Agd2FzIG5vbi16ZXJvLCBpdCByZXR1cm5lZCBgcmNgOyBpZiBpdCB3YXMgemVybywgaXQgc3RpbGwgcmV0dXJuZWQgYHJjYC4gVGhlIG5ldyBjb2RlIGlzIGRvaW5nIHRoZSBzYW1lIHRoaW5nOiByZXR1cm5pbmcgdGhlIGZ1bmN0aW9uJ3MgcmVzdWx0LiBJdCdzIGVzc2VudGlhbGx5IGp1c3QgcmVtb3ZpbmcgcmVkdW5kYW50IGNvZGUuICBUaGlzIGxvb2tzIGxpa2UgYSBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2UgdGhhdCBkb2Vzbid0IHRvdWNoIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93LiBJdCdzIGEgcmVmYWN0b3JpbmcsIG5vdGhpbmcgbW9yZS5cblxuTm93LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgYnJlYWR0aCBvZiB0aGUgY2hhbmdlcy4gIEkgc2VlIGEgd2hvbGUgbGlzdCBvZiBmaWxlczogYGRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY2AsIGBkcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuY2AsIGFuZCBzbyBvbiwgYWxsIHRoZSB3YXkgdG8gYGRyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jYC4gIEknbSBxdWlja2x5IHNjYW5uaW5nIHRoZSBmdW5jdGlvbiBuYW1lcyB3aXRoaW4gdGhvc2UgZmlsZXMuLi4gYHpsMzA3M3hfZHBsbF9pbml0X2ZpbmVfcGhhc2VfYWRqdXN0YCwgYGVuYV9vcGVuYCwgYHFsY25pY184M3h4X2NoZWNrX2h3X3N0YXR1c2AsIGV0Yy4gWWVwLCB0aGV5IGFsbCBzaGFyZSB0aGlzIGlkZW50aWNhbCBjb2RlIGNsZWFudXAuIEl0J3MgdGhlIHNhbWUgcGF0dGVybiBJIHNhdyBiZWZvcmUuXG5cbkFscmlnaHQsICp0aGlzKiBpcyBhIHRleHRib29rIGNsZWFudXAgcGF0Y2gsIGxpa2VseSBnZW5lcmF0ZWQgYnkgc29tZXRoaW5nIGxpa2UgQ29jY2luZWxsZSBvciBhIHNpbWlsYXIgdG9vbC4gVGhpcyBpc24ndCBhbHRlcmluZyB0aGUgY29tcGlsZWQgY29kZSBsb2dpYyBvciBleGVjdXRpb24gZmxvdy5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgcmVmYWN0b3JpbmcgZG9lcyBub3QgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDc1LCJPdXRwdXRUb2tlbnMiOjgzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODU4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTc6NDA6MDQuNDQzODUwODQxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjb25zaXN0cyBlbnRpcmVseSBvZiBjb2RlIHJlZmFjdG9yaW5nL2NsZWFudXBzIHRoYXQgc2ltcGxpZnkgZXJyb3IgaGFuZGxpbmcgYnkgZGlyZWN0bHkgcmV0dXJuaW5nIHRoZSByZXN1bHQgb2YgYSBmdW5jdGlvbiBjYWxsIGluc3RlYWQgb2Ygc3RvcmluZyBpdCBpbiBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjaGVja2luZyBpdCBiZWZvcmUgcmV0dXJuaW5nLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnNpc3RzIGVudGlyZWx5IG9mIGNvZGUgcmVmYWN0b3JpbmcvY2xlYW51cHMgdGhhdCBzaW1wbGlmeSBlcnJvciBoYW5kbGluZyBieSBkaXJlY3RseSByZXR1cm5pbmcgdGhlIHJlc3VsdCBvZiBhIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBvZiBzdG9yaW5nIGl0IGluIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNoZWNraW5nIGl0IGJlZm9yZSByZXR1cm5pbmcuIFRoaXMgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowrvkfb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 17:14:34 +0000 UTC FinishedAt: 2026-07-26 17:40:06 +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+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnNpc3RzIGVudGlyZWx5IG9mIGNvZGUgcmVmYWN0b3JpbmcvY2xlYW51cHMgdGhhdCBzaW1wbGlmeSBlcnJvciBoYW5kbGluZyBieSBkaXJlY3RseSByZXR1cm5pbmcgdGhlIHJlc3VsdCBvZiBhIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBvZiBzdG9yaW5nIGl0IGluIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNoZWNraW5nIGl0IGJlZm9yZSByZXR1cm5pbmcuIFRoaXMgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNzozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUzMWFiNzU3NTUwOWM2ZmY0OGFmN2NiNjRkNTBhNjM5NmYwYzAyMDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxNzozOTo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcbmluZGV4IGEyYTY0MWI4MzU4ZjIyLi4wNDg4YWU2YWM0ODZjOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jXG5AQCAtMjI3MiwxMSAmIzQzOzIyNzIsNyBAQCB6bDMwNzN4X2RwbGxfaW5pdF9maW5lX3BoYXNlX2FkanVzdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxuIFx0aWYgKHJjKVxuIFx0XHRyZXR1cm4gcmM7XG4gXG4tXHRyYyA9IHpsMzA3M3hfd3JpdGVfdTgoemxkZXYsIFpMX1JFR19TWU5USF9QSEFTRV9TSElGVF9DVFJMLCAweDAxKTtcbi1cdGlmIChyYylcbi1cdFx0cmV0dXJuIHJjO1xuLVxuLVx0cmV0dXJuIHJjO1xuJiM0MztcdHJldHVybiB6bDMwNzN4X3dyaXRlX3U4KHpsZGV2LCBaTF9SRUdfU1lOVEhfUEhBU0VfU0hJRlRfQ1RSTCwgMHgwMSk7XG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L291dC5jIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvb3V0LmNcbmluZGV4IGViNTYyOGFlYmNlZThlLi40MTBkMTViOTZkMGJmMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L291dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuY1xuQEAgLTg1LDEyICYjNDM7ODUsOCBAQCBpbnQgemwzMDczeF9vdXRfc3RhdGVfZmV0Y2goc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdTggaW5kZXgpXG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbiBcbi1cdHJjID0gemwzMDczeF9yZWFkX3UzMih6bGRldiwgWkxfUkVHX09VVFBVVF9QSEFTRV9DT01QLFxuLVx0XHRcdCAgICAgIFx1MDAyNm91dC1cdTAwM2VwaGFzZV9jb21wKTtcbi1cdGlmIChyYylcbi1cdFx0cmV0dXJuIHJjO1xuLVxuLVx0cmV0dXJuIHJjO1xuJiM0MztcdHJldHVybiB6bDMwNzN4X3JlYWRfdTMyKHpsZGV2LCBaTF9SRUdfT1VUUFVUX1BIQVNFX0NPTVAsXG4mIzQzO1x0XHRcdFx0XHUwMDI2b3V0LVx1MDAzZXBoYXNlX2NvbXApO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jXG5pbmRleCA1ZDA1MDIwYTZkMDU4Yi4uZWE4OTYxOTAzOWQ4OWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmNcbkBAIC0yMzAzLDExICYjNDM7MjMwMyw3IEBAIHN0YXRpYyBpbnQgZW5hX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdFx0cmV0dXJuIHJjO1xuIFx0fVxuIFxuLVx0cmMgPSBlbmFfdXAoYWRhcHRlcik7XG4tXHRpZiAocmMpXG4tXHRcdHJldHVybiByYztcbi1cbi1cdHJldHVybiByYztcbiYjNDM7XHRyZXR1cm4gZW5hX3VwKGFkYXB0ZXIpO1xuIH1cbiBcbiAvKiBlbmFfY2xvc2UgLSBEaXNhYmxlcyBhIG5ldHdvcmsgaW50ZXJmYWNlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFjc2VjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWNzZWMuY1xuaW5kZXggM2NhMDcyMzYwZWM3ZTAuLmZkNGVlNjIxMjIzNDg2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFjc2VjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21hY3NlYy5jXG5AQCAtNzM1LDExICYjNDM7NzM1LDcgQEAgc3RhdGljIGludCBhcV9zZXRfcnhzYyhzdHJ1Y3QgYXFfbmljX3MgKm5pYywgY29uc3QgdTMyIHJ4c2NfaWR4KVxuIFx0c2NfcmVjb3JkLnZhbGlkID0gMTtcbiBcdHNjX3JlY29yZC5mcmVzaCA9IDE7XG4gXG4tXHRyZXQgPSBhcV9tc3Nfc2V0X2luZ3Jlc3Nfc2NfcmVjb3JkKGh3LCBcdTAwMjZzY19yZWNvcmQsIGh3X3NjX2lkeCk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gYXFfbXNzX3NldF9pbmdyZXNzX3NjX3JlY29yZChodywgXHUwMDI2c2NfcmVjb3JkLCBod19zY19pZHgpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGFxX21kb19hZGRfcnhzYyhzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmNcbmluZGV4IDMzZTdhOTlkM2U0OWNkLi43OWQ0YTc3ZjcyYmQ0OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1zd2l0Y2guY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC5jXG5AQCAtMzkzNSwxMSAmIzQzOzM5MzUsNyBAQCBzdGF0aWMgaW50IGRwYWEyX3N3aXRjaF9wb3J0X2luaXQoc3RydWN0IGV0aHN3X3BvcnRfcHJpdiAqcG9ydF9wcml2LCB1MTYgcG9ydClcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRlcnIgPSBkcGFhMl9zd2l0Y2hfcG9ydF90cmFwX21hY19hZGRyKHBvcnRfcHJpdiwgbGxfbWFjLCBsbF9tYXNrKTtcbi1cdGlmIChlcnIpXG4tXHRcdHJldHVybiBlcnI7XG4tXG4tXHRyZXR1cm4gZXJyO1xuJiM0MztcdHJldHVybiBkcGFhMl9zd2l0Y2hfcG9ydF90cmFwX21hY19hZGRyKHBvcnRfcHJpdiwgbGxfbWFjLCBsbF9tYXNrKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZHBhYTJfc3dpdGNoX2N0cmxfaWZfdGVhcmRvd24oc3RydWN0IGV0aHN3X2NvcmUgKmV0aHN3KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5pbmRleCA4OTIxNWUxZGRjMmRiMS4uY2Y2MzZmYzVhYWZhYzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXG5AQCAtMjg3NywxMSAmIzQzOzI4NzcsNyBAQCBzdGF0aWMgaW50IGdmYXJfZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0ZXJyID0gc3RhcnR1cF9nZmFyKGRldik7XG4tXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gZXJyO1xuLVxuLVx0cmV0dXJuIGVycjtcbiYjNDM7XHRyZXR1cm4gc3RhcnR1cF9nZmFyKGRldik7XG4gfVxuIFxuIC8qIFN0b3BzIHRoZSBrZXJuZWwgcXVldWUsIGFuZCBoYWx0cyB0aGUgY29udHJvbGxlciAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5pbmRleCBhMDQ2ODMwMDRhNTY3Ny4uMGNkMGU1NTk3YzkwOWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5AQCAtNDg2NCwxNiAmIzQzOzQ4NjQsMTAgQEAgc3RhdGljIHZvaWQgaTQwZV9jb250cm9sX3J4X3Eoc3RydWN0IGk0MGVfcGYgKnBmLCBpbnQgcGZfcSwgYm9vbCBlbmFibGUpXG4gICoqL1xuIGludCBpNDBlX2NvbnRyb2xfd2FpdF9yeF9xKHN0cnVjdCBpNDBlX3BmICpwZiwgaW50IHBmX3EsIGJvb2wgZW5hYmxlKVxuIHtcbi1cdGludCByZXQgPSAwO1xuLVxuIFx0aTQwZV9jb250cm9sX3J4X3EocGYsIHBmX3EsIGVuYWJsZSk7XG4gXG4gXHQvKiB3YWl0IGZvciB0aGUgY2hhbmdlIHRvIGZpbmlzaCAqL1xuLVx0cmV0ID0gaTQwZV9wZl9yeHFfd2FpdChwZiwgcGZfcSwgZW5hYmxlKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcdHJldHVybiBpNDBlX3BmX3J4cV93YWl0KHBmLCBwZl9xLCBlbmFibGUpO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvZTEwMDBfaTIxMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2UxMDAwX2kyMTAuY1xuaW5kZXggOWRiMjliMjMxZDZhOTUuLjc4NGY5YTdiY2JlZDA3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2UxMDAwX2kyMTAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2UxMDAwX2kyMTAuY1xuQEAgLTc1NiwxMSAmIzQzOzc1Niw3IEBAIHN0YXRpYyBzMzIgX19pZ2JfYWNjZXNzX3htZGlvX3JlZyhzdHJ1Y3QgZTEwMDBfaHcgKmh3LCB1MTYgYWRkcmVzcyxcbiBcdFx0cmV0dXJuIHJldF92YWw7XG4gXG4gXHQvKiBSZWNhbGlicmF0ZSB0aGUgZGV2aWNlIGJhY2sgdG8gMCAqL1xuLVx0cmV0X3ZhbCA9IGh3LVx1MDAzZXBoeS5vcHMud3JpdGVfcmVnKGh3LCBFMTAwMF9NTURBQywgMCk7XG4tXHRpZiAocmV0X3ZhbClcbi1cdFx0cmV0dXJuIHJldF92YWw7XG4tXG4tXHRyZXR1cm4gcmV0X3ZhbDtcbiYjNDM7XHRyZXR1cm4gaHctXHUwMDNlcGh5Lm9wcy53cml0ZV9yZWcoaHcsIEUxMDAwX01NREFDLCAwKTtcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19waHkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcGh5LmNcbmluZGV4IDRjZjczN2ZiM2IyMWU5Li5iNzU4YTdlMGYwMTMyOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcGh5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcGh5LmNcbkBAIC02NzUsMTEgJiM0Mzs2NzUsNyBAQCBzdGF0aWMgczMyIF9faWdjX2FjY2Vzc194bWRpb19yZWcoc3RydWN0IGlnY19odyAqaHcsIHUxNiBhZGRyZXNzLFxuIFx0XHRyZXR1cm4gcmV0X3ZhbDtcbiBcbiBcdC8qIFJlY2FsaWJyYXRlIHRoZSBkZXZpY2UgYmFjayB0byAwICovXG4tXHRyZXRfdmFsID0gaHctXHUwMDNlcGh5Lm9wcy53cml0ZV9yZWcoaHcsIElHQ19NTURBQywgMCk7XG4tXHRpZiAocmV0X3ZhbClcbi1cdFx0cmV0dXJuIHJldF92YWw7XG4tXG4tXHRyZXR1cm4gcmV0X3ZhbDtcbiYjNDM7XHRyZXR1cm4gaHctXHUwMDNlcGh5Lm9wcy53cml0ZV9yZWcoaHcsIElHQ19NTURBQywgMCk7XG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2h3LmNcbmluZGV4IGZmZjhkYzg0MjEyZDVjLi5lOTZhMjY4MDY3ZjI5NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19ody5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfaHcuY1xuQEAgLTI0NzgsNyAmIzQzOzI0NzgsNiBAQCBzdGF0aWMgaW50IG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gc3RhdGljIGludFxuIG5ldHhlbl9jb2xsZWN0X21pbmlkdW1wKHN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqYWRhcHRlcilcbiB7XG4tXHRpbnQgcmV0ID0gMDtcbiBcdHN0cnVjdCBuZXR4ZW5fbWluaWR1bXBfdGVtcGxhdGVfaGRyICpoZHI7XG4gXHRoZHIgPSAoc3RydWN0IG5ldHhlbl9taW5pZHVtcF90ZW1wbGF0ZV9oZHIgKilcbiBcdFx0XHRcdGFkYXB0ZXItXHUwMDNlbWR1bXAubWRfdGVtcGxhdGU7XG5AQCAtMjQ4NiwxMSAmIzQzOzI0ODUsNyBAQCBuZXR4ZW5fY29sbGVjdF9taW5pZHVtcChzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRoZHItXHUwMDNlZHJpdmVyX3RpbWVzdGFtcCA9IGt0aW1lX2dldF9zZWNvbmRzKCk7XG4gXHRoZHItXHUwMDNlZHJpdmVyX2luZm9fd29yZDIgPSBhZGFwdGVyLVx1MDAzZWZ3X3ZlcnNpb247XG4gXHRoZHItXHUwMDNlZHJpdmVyX2luZm9fd29yZDMgPSBOWFJEMzIoYWRhcHRlciwgQ1JCX0RSSVZFUl9WRVJTSU9OKTtcbi1cdHJldCA9IG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShhZGFwdGVyKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcdHJldHVybiBuZXR4ZW5fcGFyc2VfbWRfdGVtcGxhdGUoYWRhcHRlcik7XG4gfVxuIFxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcbmluZGV4IDQ1ZWQ4NzA1YzdjYTZkLi40N2NkOWVjNjY1ZWViNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuY1xuQEAgLTE2MTgsMTEgJiM0MzsxNjE4LDcgQEAgc3RhdGljIGludCBxbGNuaWNfODN4eF9jaGVja19od19zdGF0dXMoc3RydWN0IHFsY25pY19hZGFwdGVyICpwX2RldilcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRlcnIgPSBxbGNuaWNfODN4eF9jaGVja19oZWFydGJlYXQocF9kZXYpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdHJldHVybiBlcnI7XG4mIzQzO1x0cmV0dXJuIHFsY25pY184M3h4X2NoZWNrX2hlYXJ0YmVhdChwX2Rldik7XG4gfVxuIFxuIHN0YXRpYyBpbnQgcWxjbmljXzgzeHhfcG9sbF9yZWcoc3RydWN0IHFsY25pY19hZGFwdGVyICpwX2RldiwgdTMyIGFkZHIsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uY1xuaW5kZXggZWU4MzgxYjYwYjhkNDkuLmY3YmVlYjczZWIxNmJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jXG5AQCAtNjg1LDcgJiM0Mzs2ODUsNiBAQCBzdGF0aWMgdm9pZCBydHNuX3NldF9yYXRlKHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpXG4gc3RhdGljIGludCBydHNuX3JtYWNfaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KVxuIHtcbiBcdGNvbnN0IHU4ICptYWNfYWRkciA9IHByaXYtXHUwMDNlbmRldi1cdTAwM2VkZXZfYWRkcjtcbi1cdGludCByZXQ7XG4gXG4gXHQvKiBTZXQgTUFDIGFkZHJlc3MgKi9cbiBcdHJ0c25fd3JpdGUocHJpdiwgTVJNQUMwLCAobWFjX2FkZHJbMF0gXHUwMDNjXHUwMDNjIDgpIHwgbWFjX2FkZHJbMV0pO1xuQEAgLTcwMiwxMSAmIzQzOzcwMSw3IEBAIHN0YXRpYyBpbnQgcnRzbl9ybWFjX2luaXQoc3RydWN0IHJ0c25fcHJpdmF0ZSAqcHJpdilcbiBcbiBcdC8qIExpbmsgdmVyaWZpY2F0aW9uICovXG4gXHRydHNuX21vZGlmeShwcml2LCBNTFZDLCBNTFZDX1BMViwgTUxWQ19QTFYpO1xuLVx0cmV0ID0gcnRzbl9yZWdfd2FpdChwcml2LCBNTFZDLCBNTFZDX1BMViwgMCk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gcnRzbl9yZWdfd2FpdChwcml2LCBNTFZDLCBNTFZDX1BMViwgMCk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgcnRzbl9od19pbml0KHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXG5pbmRleCA2MmIzNmEzMTgxMDBhZS4uMzI5MmIyMjM1YzhmYTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xuQEAgLTEwMjgsMTEgJiM0MzsxMDI4LDcgQEAgc3RhdGljIGludCBsYW44N3h4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRpZiAocmMgXHUwMDNjIDApXG4gXHRcdHJldHVybiByYztcbiBcbi1cdHJjID0gZ2VucGh5X3JlYWRfc3RhdHVzX2ZpeGVkKHBoeWRldik7XG4tXHRpZiAocmMgXHUwMDNjIDApXG4tXHRcdHJldHVybiByYztcbi1cbi1cdHJldHVybiByYztcbiYjNDM7XHRyZXR1cm4gZ2VucGh5X3JlYWRfc3RhdHVzX2ZpeGVkKHBoeWRldik7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbGFuODd4eF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jIGIvZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmNcbmluZGV4IDQ5ZDYzODlkYTA2N2NhLi44YTNiYmQ2MjM0MTJiMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuY1xuQEAgLTE1MjAsMTEgJiM0MzsxNTIwLDcgQEAgc3RhdGljIGludCB0cHMyMzg4MV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiBcdFx0XHRcdCAgICAgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIFBTRSBjb250cm9sbGVyXFxuXCYjMzQ7KTtcbiBcdH1cbiBcbi1cdHJldCA9IHRwczIzODgxX3NldHVwX2lycShwcml2LCBjbGllbnQtXHUwMDNlaXJxKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcdHJldHVybiB0cHMyMzg4MV9zZXR1cF9pcnEocHJpdiwgY2xpZW50LVx1MDAzZWlycSk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB0cHMyMzg4MV9pZFtdID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb25zaXN0cyBlbnRpcmVseSBvZiBjb2RlIHJlZmFjdG9yaW5nL2NsZWFudXBzIHRoYXQgc2ltcGxpZnkgZXJyb3IgaGFuZGxpbmcgYnkgZGlyZWN0bHkgcmV0dXJuaW5nIHRoZSByZXN1bHQgb2YgYSBmdW5jdGlvbiBjYWxsIGluc3RlYWQgb2Ygc3RvcmluZyBpdCBpbiBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjaGVja2luZyBpdCBiZWZvcmUgcmV0dXJuaW5nLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MzFhYjc1NzU1MDljNmZmNDhhZjdjYjY0ZDUwYTYzOTZmMGMwMjAyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMjYgMTc6Mzk6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMKaW5kZXggYTJhNjQxYjgzNThmMjIuLjA0ODhhZTZhYzQ4NmM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jCkBAIC0yMjcyLDExICYjNDM7MjI3Miw3IEBAIHpsMzA3M3hfZHBsbF9pbml0X2ZpbmVfcGhhc2VfYWRqdXN0KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpCiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7CiAKLQlyYyA9IHpsMzA3M3hfd3JpdGVfdTgoemxkZXYsIFpMX1JFR19TWU5USF9QSEFTRV9TSElGVF9DVFJMLCAweDAxKTsKLQlpZiAocmMpCi0JCXJldHVybiByYzsKLQotCXJldHVybiByYzsKJiM0MzsJcmV0dXJuIHpsMzA3M3hfd3JpdGVfdTgoemxkZXYsIFpMX1JFR19TWU5USF9QSEFTRV9TSElGVF9DVFJMLCAweDAxKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuYyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L291dC5jCmluZGV4IGViNTYyOGFlYmNlZThlLi40MTBkMTViOTZkMGJmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kcGxsL3psMzA3M3gvb3V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL3psMzA3M3gvb3V0LmMKQEAgLTg1LDEyICYjNDM7ODUsOCBAQCBpbnQgemwzMDczeF9vdXRfc3RhdGVfZmV0Y2goc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdTggaW5kZXgpCiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7CiAKLQlyYyA9IHpsMzA3M3hfcmVhZF91MzIoemxkZXYsIFpMX1JFR19PVVRQVVRfUEhBU0VfQ09NUCwKLQkJCSAgICAgICZhbXA7b3V0LSZndDtwaGFzZV9jb21wKTsKLQlpZiAocmMpCi0JCXJldHVybiByYzsKLQotCXJldHVybiByYzsKJiM0MzsJcmV0dXJuIHpsMzA3M3hfcmVhZF91MzIoemxkZXYsIFpMX1JFR19PVVRQVVRfUEhBU0VfQ09NUCwKJiM0MzsJCQkJJmFtcDtvdXQtJmd0O3BoYXNlX2NvbXApOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMKaW5kZXggNWQwNTAyMGE2ZDA1OGIuLmVhODk2MTkwMzlkODliIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYwpAQCAtMjMwMywxMSAmIzQzOzIzMDMsNyBAQCBzdGF0aWMgaW50IGVuYV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCiAJCXJldHVybiByYzsKIAl9CiAKLQlyYyA9IGVuYV91cChhZGFwdGVyKTsKLQlpZiAocmMpCi0JCXJldHVybiByYzsKLQotCXJldHVybiByYzsKJiM0MzsJcmV0dXJuIGVuYV91cChhZGFwdGVyKTsKIH0KIAogLyogZW5hX2Nsb3NlIC0gRGlzYWJsZXMgYSBuZXR3b3JrIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFjc2VjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWNzZWMuYwppbmRleCAzY2EwNzIzNjBlYzdlMC4uZmQ0ZWU2MjEyMjM0ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21hY3NlYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21hY3NlYy5jCkBAIC03MzUsMTEgJiM0Mzs3MzUsNyBAQCBzdGF0aWMgaW50IGFxX3NldF9yeHNjKHN0cnVjdCBhcV9uaWNfcyAqbmljLCBjb25zdCB1MzIgcnhzY19pZHgpCiAJc2NfcmVjb3JkLnZhbGlkID0gMTsKIAlzY19yZWNvcmQuZnJlc2ggPSAxOwogCi0JcmV0ID0gYXFfbXNzX3NldF9pbmdyZXNzX3NjX3JlY29yZChodywgJmFtcDtzY19yZWNvcmQsIGh3X3NjX2lkeCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiBhcV9tc3Nfc2V0X2luZ3Jlc3Nfc2NfcmVjb3JkKGh3LCAmYW1wO3NjX3JlY29yZCwgaHdfc2NfaWR4KTsKIH0KIAogc3RhdGljIGludCBhcV9tZG9fYWRkX3J4c2Moc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmMKaW5kZXggMzNlN2E5OWQzZTQ5Y2QuLjc5ZDRhNzdmNzJiZDQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC5jCkBAIC0zOTM1LDExICYjNDM7MzkzNSw3IEBAIHN0YXRpYyBpbnQgZHBhYTJfc3dpdGNoX3BvcnRfaW5pdChzdHJ1Y3QgZXRoc3dfcG9ydF9wcml2ICpwb3J0X3ByaXYsIHUxNiBwb3J0KQogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQllcnIgPSBkcGFhMl9zd2l0Y2hfcG9ydF90cmFwX21hY19hZGRyKHBvcnRfcHJpdiwgbGxfbWFjLCBsbF9tYXNrKTsKLQlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOwotCi0JcmV0dXJuIGVycjsKJiM0MzsJcmV0dXJuIGRwYWEyX3N3aXRjaF9wb3J0X3RyYXBfbWFjX2FkZHIocG9ydF9wcml2LCBsbF9tYWMsIGxsX21hc2spOwogfQogCiBzdGF0aWMgdm9pZCBkcGFhMl9zd2l0Y2hfY3RybF9pZl90ZWFyZG93bihzdHJ1Y3QgZXRoc3dfY29yZSAqZXRoc3cpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYwppbmRleCA4OTIxNWUxZGRjMmRiMS4uY2Y2MzZmYzVhYWZhYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYwpAQCAtMjg3NywxMSAmIzQzOzI4NzcsNyBAQCBzdGF0aWMgaW50IGdmYXJfZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAotCWVyciA9IHN0YXJ0dXBfZ2ZhcihkZXYpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7Ci0KLQlyZXR1cm4gZXJyOwomIzQzOwlyZXR1cm4gc3RhcnR1cF9nZmFyKGRldik7CiB9CiAKIC8qIFN0b3BzIHRoZSBrZXJuZWwgcXVldWUsIGFuZCBoYWx0cyB0aGUgY29udHJvbGxlciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMKaW5kZXggYTA0NjgzMDA0YTU2NzcuLjBjZDBlNTU5N2M5MDlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMKQEAgLTQ4NjQsMTYgJiM0Mzs0ODY0LDEwIEBAIHN0YXRpYyB2b2lkIGk0MGVfY29udHJvbF9yeF9xKHN0cnVjdCBpNDBlX3BmICpwZiwgaW50IHBmX3EsIGJvb2wgZW5hYmxlKQogICoqLwogaW50IGk0MGVfY29udHJvbF93YWl0X3J4X3Eoc3RydWN0IGk0MGVfcGYgKnBmLCBpbnQgcGZfcSwgYm9vbCBlbmFibGUpCiB7Ci0JaW50IHJldCA9IDA7Ci0KIAlpNDBlX2NvbnRyb2xfcnhfcShwZiwgcGZfcSwgZW5hYmxlKTsKIAogCS8qIHdhaXQgZm9yIHRoZSBjaGFuZ2UgdG8gZmluaXNoICovCi0JcmV0ID0gaTQwZV9wZl9yeHFfd2FpdChwZiwgcGZfcSwgZW5hYmxlKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIGk0MGVfcGZfcnhxX3dhaXQocGYsIHBmX3EsIGVuYWJsZSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2UxMDAwX2kyMTAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmMKaW5kZXggOWRiMjliMjMxZDZhOTUuLjc4NGY5YTdiY2JlZDA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvZTEwMDBfaTIxMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmMKQEAgLTc1NiwxMSAmIzQzOzc1Niw3IEBAIHN0YXRpYyBzMzIgX19pZ2JfYWNjZXNzX3htZGlvX3JlZyhzdHJ1Y3QgZTEwMDBfaHcgKmh3LCB1MTYgYWRkcmVzcywKIAkJcmV0dXJuIHJldF92YWw7CiAKIAkvKiBSZWNhbGlicmF0ZSB0aGUgZGV2aWNlIGJhY2sgdG8gMCAqLwotCXJldF92YWwgPSBody0mZ3Q7cGh5Lm9wcy53cml0ZV9yZWcoaHcsIEUxMDAwX01NREFDLCAwKTsKLQlpZiAocmV0X3ZhbCkKLQkJcmV0dXJuIHJldF92YWw7Ci0KLQlyZXR1cm4gcmV0X3ZhbDsKJiM0MzsJcmV0dXJuIGh3LSZndDtwaHkub3BzLndyaXRlX3JlZyhodywgRTEwMDBfTU1EQUMsIDApOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcGh5LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3BoeS5jCmluZGV4IDRjZjczN2ZiM2IyMWU5Li5iNzU4YTdlMGYwMTMyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19waHkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3BoeS5jCkBAIC02NzUsMTEgJiM0Mzs2NzUsNyBAQCBzdGF0aWMgczMyIF9faWdjX2FjY2Vzc194bWRpb19yZWcoc3RydWN0IGlnY19odyAqaHcsIHUxNiBhZGRyZXNzLAogCQlyZXR1cm4gcmV0X3ZhbDsKIAogCS8qIFJlY2FsaWJyYXRlIHRoZSBkZXZpY2UgYmFjayB0byAwICovCi0JcmV0X3ZhbCA9IGh3LSZndDtwaHkub3BzLndyaXRlX3JlZyhodywgSUdDX01NREFDLCAwKTsKLQlpZiAocmV0X3ZhbCkKLQkJcmV0dXJuIHJldF92YWw7Ci0KLQlyZXR1cm4gcmV0X3ZhbDsKJiM0MzsJcmV0dXJuIGh3LSZndDtwaHkub3BzLndyaXRlX3JlZyhodywgSUdDX01NREFDLCAwKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19ody5jCmluZGV4IGZmZjhkYzg0MjEyZDVjLi5lOTZhMjY4MDY3ZjI5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2h3LmMKQEAgLTI0NzgsNyAmIzQzOzI0NzgsNiBAQCBzdGF0aWMgaW50IG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpCiBzdGF0aWMgaW50CiBuZXR4ZW5fY29sbGVjdF9taW5pZHVtcChzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpCiB7Ci0JaW50IHJldCA9IDA7CiAJc3RydWN0IG5ldHhlbl9taW5pZHVtcF90ZW1wbGF0ZV9oZHIgKmhkcjsKIAloZHIgPSAoc3RydWN0IG5ldHhlbl9taW5pZHVtcF90ZW1wbGF0ZV9oZHIgKikKIAkJCQlhZGFwdGVyLSZndDttZHVtcC5tZF90ZW1wbGF0ZTsKQEAgLTI0ODYsMTEgJiM0MzsyNDg1LDcgQEAgbmV0eGVuX2NvbGxlY3RfbWluaWR1bXAoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKQogCWhkci0mZ3Q7ZHJpdmVyX3RpbWVzdGFtcCA9IGt0aW1lX2dldF9zZWNvbmRzKCk7CiAJaGRyLSZndDtkcml2ZXJfaW5mb193b3JkMiA9IGFkYXB0ZXItJmd0O2Z3X3ZlcnNpb247CiAJaGRyLSZndDtkcml2ZXJfaW5mb193b3JkMyA9IE5YUkQzMihhZGFwdGVyLCBDUkJfRFJJVkVSX1ZFUlNJT04pOwotCXJldCA9IG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShhZGFwdGVyKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShhZGFwdGVyKTsKIH0KIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jCmluZGV4IDQ1ZWQ4NzA1YzdjYTZkLi40N2NkOWVjNjY1ZWViNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmMKQEAgLTE2MTgsMTEgJiM0MzsxNjE4LDcgQEAgc3RhdGljIGludCBxbGNuaWNfODN4eF9jaGVja19od19zdGF0dXMoc3RydWN0IHFsY25pY19hZGFwdGVyICpwX2RldikKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0JZXJyID0gcWxjbmljXzgzeHhfY2hlY2tfaGVhcnRiZWF0KHBfZGV2KTsKLQlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOwotCi0JcmV0dXJuIGVycjsKJiM0MzsJcmV0dXJuIHFsY25pY184M3h4X2NoZWNrX2hlYXJ0YmVhdChwX2Rldik7CiB9CiAKIHN0YXRpYyBpbnQgcWxjbmljXzgzeHhfcG9sbF9yZWcoc3RydWN0IHFsY25pY19hZGFwdGVyICpwX2RldiwgdTMyIGFkZHIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jCmluZGV4IGVlODM4MWI2MGI4ZDQ5Li5mN2JlZWI3M2ViMTZiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMKQEAgLTY4NSw3ICYjNDM7Njg1LDYgQEAgc3RhdGljIHZvaWQgcnRzbl9zZXRfcmF0ZShzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KQogc3RhdGljIGludCBydHNuX3JtYWNfaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KQogewogCWNvbnN0IHU4ICptYWNfYWRkciA9IHByaXYtJmd0O25kZXYtJmd0O2Rldl9hZGRyOwotCWludCByZXQ7CiAKIAkvKiBTZXQgTUFDIGFkZHJlc3MgKi8KIAlydHNuX3dyaXRlKHByaXYsIE1STUFDMCwgKG1hY19hZGRyWzBdICZsdDsmbHQ7IDgpIHwgbWFjX2FkZHJbMV0pOwpAQCAtNzAyLDExICYjNDM7NzAxLDcgQEAgc3RhdGljIGludCBydHNuX3JtYWNfaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KQogCiAJLyogTGluayB2ZXJpZmljYXRpb24gKi8KIAlydHNuX21vZGlmeShwcml2LCBNTFZDLCBNTFZDX1BMViwgTUxWQ19QTFYpOwotCXJldCA9IHJ0c25fcmVnX3dhaXQocHJpdiwgTUxWQywgTUxWQ19QTFYsIDApOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gcnRzbl9yZWdfd2FpdChwcml2LCBNTFZDLCBNTFZDX1BMViwgMCk7CiB9CiAKIHN0YXRpYyBpbnQgcnRzbl9od19pbml0KHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMKaW5kZXggNjJiMzZhMzE4MTAwYWUuLjMyOTJiMjIzNWM4ZmE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jCkBAIC0xMDI4LDExICYjNDM7MTAyOCw3IEBAIHN0YXRpYyBpbnQgbGFuODd4eF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCWlmIChyYyAmbHQ7IDApCiAJCXJldHVybiByYzsKIAotCXJjID0gZ2VucGh5X3JlYWRfc3RhdHVzX2ZpeGVkKHBoeWRldik7Ci0JaWYgKHJjICZsdDsgMCkKLQkJcmV0dXJuIHJjOwotCi0JcmV0dXJuIHJjOwomIzQzOwlyZXR1cm4gZ2VucGh5X3JlYWRfc3RhdHVzX2ZpeGVkKHBoeWRldik7CiB9CiAKIHN0YXRpYyBpbnQgbGFuODd4eF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmMgYi9kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuYwppbmRleCA0OWQ2Mzg5ZGEwNjdjYS4uOGEzYmJkNjIzNDEyYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jCkBAIC0xNTIwLDExICYjNDM7MTUyMCw3IEBAIHN0YXRpYyBpbnQgdHBzMjM4ODFfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJCQkJICAgICAmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBQU0UgY29udHJvbGxlclxuJiMzNDspOwogCX0KIAotCXJldCA9IHRwczIzODgxX3NldHVwX2lycShwcml2LCBjbGllbnQtJmd0O2lycSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiB0cHMyMzg4MV9zZXR1cF9pcnEocHJpdiwgY2xpZW50LSZndDtpcnEpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgdHBzMjM4ODFfaWRbXSA9IHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA3NQoJCQkJCQkJb3V0cHV0OiA4MwoJCQkJCQkJdGhvdWdodHM6IDg1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTZXJpZXMgb2YgUmVmYWN0b3JpbmcgUGF0Y2hlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIGF0IGZpcnN0IGdsYW5jZSwgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvcmUgaWRlYSBpcyBzaW1wbGlmeWluZyBlcnJvciBoYW5kbGluZyBieSBkaXJlY3RseSByZXR1cm5pbmcgdGhlIHJlc3VsdCBvZiBhIGZ1bmN0aW9uIGNhbGwuIEl0JiMzOTtzIHRoYXQgY2xhc3NpYyBwYXR0ZXJuOiBpbnN0ZWFkIG9mIGFzc2lnbmluZyBhIHJldHVybiB2YWx1ZSB0byBhIHZhcmlhYmxlLCBjaGVja2luZyBpdCwgYW5kIHRoZW4gcmV0dXJuaW5nIGl0LCB3ZSBqdXN0IHJldHVybiB0aGUgZnVuY3Rpb24mIzM5O3MgcmVzdWx0IGRpcmVjdGx5LgoKRm9yIGV4YW1wbGUsIEkgc2VlIHRoZSBvbGQgY29kZSBzbmlwcGV0OgpgYGBjCi0JcmMgPSB6bDMwNzN4X3dyaXRlX3U4KHpsZGV2LCBaTF9SRUdfU1lOVEhfUEhBU0VfU0hJRlRfQ1RSTCwgMHgwMSk7Ci0JaWYgKHJjKQotCQlyZXR1cm4gcmM7Ci0KLQlyZXR1cm4gcmM7CmBgYApnZXRzIHNpbXBsaWZpZWQgdG86CmBgYGMKJiM0MzsJcmV0dXJuIHpsMzA3M3hfd3JpdGVfdTgoemxkZXYsIFpMX1JFR19TWU5USF9QSEFTRV9TSElGVF9DVFJMLCAweDAxKTsKYGBgCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIHB1cmVseSBzdHlsaXN0aWMuIFRoZSByZXR1cm4gdmFsdWUsIGFuZCB0aGVyZWZvcmUgYW55IHNpZGUgZWZmZWN0cywgKm11c3QqIGJlIGV4YWN0bHkgdGhlIHNhbWUuIExldCYjMzk7cyBtYWtlIHN1cmUsIHRob3VnaC4gUmlnaHQsIGlmIGByY2Agd2FzIG5vbi16ZXJvLCBpdCByZXR1cm5lZCBgcmNgOyBpZiBpdCB3YXMgemVybywgaXQgc3RpbGwgcmV0dXJuZWQgYHJjYC4gVGhlIG5ldyBjb2RlIGlzIGRvaW5nIHRoZSBzYW1lIHRoaW5nOiByZXR1cm5pbmcgdGhlIGZ1bmN0aW9uJiMzOTtzIHJlc3VsdC4gSXQmIzM5O3MgZXNzZW50aWFsbHkganVzdCByZW1vdmluZyByZWR1bmRhbnQgY29kZS4gIFRoaXMgbG9va3MgbGlrZSBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSB0aGF0IGRvZXNuJiMzOTt0IHRvdWNoIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93LiBJdCYjMzk7cyBhIHJlZmFjdG9yaW5nLCBub3RoaW5nIG1vcmUuCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgYnJlYWR0aCBvZiB0aGUgY2hhbmdlcy4gIEkgc2VlIGEgd2hvbGUgbGlzdCBvZiBmaWxlczogYGRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY2AsIGBkcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuY2AsIGFuZCBzbyBvbiwgYWxsIHRoZSB3YXkgdG8gYGRyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jYC4gIEkmIzM5O20gcXVpY2tseSBzY2FubmluZyB0aGUgZnVuY3Rpb24gbmFtZXMgd2l0aGluIHRob3NlIGZpbGVzLi4uIGB6bDMwNzN4X2RwbGxfaW5pdF9maW5lX3BoYXNlX2FkanVzdGAsIGBlbmFfb3BlbmAsIGBxbGNuaWNfODN4eF9jaGVja19od19zdGF0dXNgLCBldGMuIFllcCwgdGhleSBhbGwgc2hhcmUgdGhpcyBpZGVudGljYWwgY29kZSBjbGVhbnVwLiBJdCYjMzk7cyB0aGUgc2FtZSBwYXR0ZXJuIEkgc2F3IGJlZm9yZS4KCkFscmlnaHQsICp0aGlzKiBpcyBhIHRleHRib29rIGNsZWFudXAgcGF0Y2gsIGxpa2VseSBnZW5lcmF0ZWQgYnkgc29tZXRoaW5nIGxpa2UgQ29jY2luZWxsZSBvciBhIHNpbWlsYXIgdG9vbC4gVGhpcyBpc24mIzM5O3QgYWx0ZXJpbmcgdGhlIGNvbXBpbGVkIGNvZGUgbG9naWMgb3IgZXhlY3V0aW9uIGZsb3cuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyByZWZhY3RvcmluZyBkb2VzIG5vdCBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3csIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29uc2lzdHMgZW50aXJlbHkgb2YgY29kZSByZWZhY3RvcmluZy9jbGVhbnVwcyB0aGF0IHNpbXBsaWZ5IGVycm9yIGhhbmRsaW5nIGJ5IGRpcmVjdGx5IHJldHVybmluZyB0aGUgcmVzdWx0IG9mIGEgZnVuY3Rpb24gY2FsbCBpbnN0ZWFkIG9mIHN0b3JpbmcgaXQgaW4gYSBsb2NhbCB2YXJpYWJsZSBhbmQgY2hlY2tpbmcgaXQgYmVmb3JlIHJldHVybmluZy4gVGhpcyBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb25zaXN0cyBlbnRpcmVseSBvZiBjb2RlIHJlZmFjdG9yaW5nL2NsZWFudXBzIHRoYXQgc2ltcGxpZnkgZXJyb3IgaGFuZGxpbmcgYnkgZGlyZWN0bHkgcmV0dXJuaW5nIHRoZSByZXN1bHQgb2YgYSBmdW5jdGlvbiBjYWxsIGluc3RlYWQgb2Ygc3RvcmluZyBpdCBpbiBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjaGVja2luZyBpdCBiZWZvcmUgcmV0dXJuaW5nLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzozOTo1My4zOTcxNjMzMjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA0Njc0NTg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29uc2lzdHMgZW50aXJlbHkgb2YgY29kZSByZWZhY3RvcmluZy9jbGVhbnVwcyB0aGF0IHNpbXBsaWZ5IGVycm9yIGhhbmRsaW5nIGJ5IGRpcmVjdGx5IHJldHVybmluZyB0aGUgcmVzdWx0IG9mIGEgZnVuY3Rpb24gY2FsbCBpbnN0ZWFkIG9mIHN0b3JpbmcgaXQgaW4gYSBsb2NhbCB2YXJpYWJsZSBhbmQgY2hlY2tpbmcgaXQgYmVmb3JlIHJldHVybmluZy4gVGhpcyBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzozOTo1My4zOTcxOTM1ODdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTc0MjMzNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MzFhYjc1NzU1MDljNmZmNDhhZjdjYjY0ZDUwYTYzOTZmMGMwMjAyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDI2IDE3OjM5OjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY1xcbmluZGV4IGEyYTY0MWI4MzU4ZjIyLi4wNDg4YWU2YWM0ODZjOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcXG4rKysgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcXG5AQCAtMjI3MiwxMSArMjI3Miw3IEBAIHpsMzA3M3hfZHBsbF9pbml0X2ZpbmVfcGhhc2VfYWRqdXN0KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpXFxuIFxcdGlmIChyYylcXG4gXFx0XFx0cmV0dXJuIHJjO1xcbiBcXG4tXFx0cmMgPSB6bDMwNzN4X3dyaXRlX3U4KHpsZGV2LCBaTF9SRUdfU1lOVEhfUEhBU0VfU0hJRlRfQ1RSTCwgMHgwMSk7XFxuLVxcdGlmIChyYylcXG4tXFx0XFx0cmV0dXJuIHJjO1xcbi1cXG4tXFx0cmV0dXJuIHJjO1xcbitcXHRyZXR1cm4gemwzMDczeF93cml0ZV91OCh6bGRldiwgWkxfUkVHX1NZTlRIX1BIQVNFX1NISUZUX0NUUkwsIDB4MDEpO1xcbiB9XFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvb3V0LmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuY1xcbmluZGV4IGViNTYyOGFlYmNlZThlLi40MTBkMTViOTZkMGJmMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuY1xcbisrKyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L291dC5jXFxuQEAgLTg1LDEyICs4NSw4IEBAIGludCB6bDMwNzN4X291dF9zdGF0ZV9mZXRjaChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCB1OCBpbmRleClcXG4gXFx0aWYgKHJjKVxcbiBcXHRcXHRyZXR1cm4gcmM7XFxuIFxcbi1cXHRyYyA9IHpsMzA3M3hfcmVhZF91MzIoemxkZXYsIFpMX1JFR19PVVRQVVRfUEhBU0VfQ09NUCxcXG4tXFx0XFx0XFx0ICAgICAgXFx1MDAyNm91dC1cXHUwMDNlcGhhc2VfY29tcCk7XFxuLVxcdGlmIChyYylcXG4tXFx0XFx0cmV0dXJuIHJjO1xcbi1cXG4tXFx0cmV0dXJuIHJjO1xcbitcXHRyZXR1cm4gemwzMDczeF9yZWFkX3UzMih6bGRldiwgWkxfUkVHX09VVFBVVF9QSEFTRV9DT01QLFxcbitcXHRcXHRcXHRcXHRcXHUwMDI2b3V0LVxcdTAwM2VwaGFzZV9jb21wKTtcXG4gfVxcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmNcXG5pbmRleCA1ZDA1MDIwYTZkMDU4Yi4uZWE4OTYxOTAzOWQ4OWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuY1xcbkBAIC0yMzAzLDExICsyMzAzLDcgQEAgc3RhdGljIGludCBlbmFfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbiBcXHRcXHRyZXR1cm4gcmM7XFxuIFxcdH1cXG4gXFxuLVxcdHJjID0gZW5hX3VwKGFkYXB0ZXIpO1xcbi1cXHRpZiAocmMpXFxuLVxcdFxcdHJldHVybiByYztcXG4tXFxuLVxcdHJldHVybiByYztcXG4rXFx0cmV0dXJuIGVuYV91cChhZGFwdGVyKTtcXG4gfVxcbiBcXG4gLyogZW5hX2Nsb3NlIC0gRGlzYWJsZXMgYSBuZXR3b3JrIGludGVyZmFjZVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWNzZWMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21hY3NlYy5jXFxuaW5kZXggM2NhMDcyMzYwZWM3ZTAuLmZkNGVlNjIxMjIzNDg2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21hY3NlYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFjc2VjLmNcXG5AQCAtNzM1LDExICs3MzUsNyBAQCBzdGF0aWMgaW50IGFxX3NldF9yeHNjKHN0cnVjdCBhcV9uaWNfcyAqbmljLCBjb25zdCB1MzIgcnhzY19pZHgpXFxuIFxcdHNjX3JlY29yZC52YWxpZCA9IDE7XFxuIFxcdHNjX3JlY29yZC5mcmVzaCA9IDE7XFxuIFxcbi1cXHRyZXQgPSBhcV9tc3Nfc2V0X2luZ3Jlc3Nfc2NfcmVjb3JkKGh3LCBcXHUwMDI2c2NfcmVjb3JkLCBod19zY19pZHgpO1xcbi1cXHRpZiAocmV0KVxcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbi1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIGFxX21zc19zZXRfaW5ncmVzc19zY19yZWNvcmQoaHcsIFxcdTAwMjZzY19yZWNvcmQsIGh3X3NjX2lkeCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgYXFfbWRvX2FkZF9yeHNjKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmNcXG5pbmRleCAzM2U3YTk5ZDNlNDljZC4uNzlkNGE3N2Y3MmJkNDkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC5jXFxuQEAgLTM5MzUsMTEgKzM5MzUsNyBAQCBzdGF0aWMgaW50IGRwYWEyX3N3aXRjaF9wb3J0X2luaXQoc3RydWN0IGV0aHN3X3BvcnRfcHJpdiAqcG9ydF9wcml2LCB1MTYgcG9ydClcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdGVyciA9IGRwYWEyX3N3aXRjaF9wb3J0X3RyYXBfbWFjX2FkZHIocG9ydF9wcml2LCBsbF9tYWMsIGxsX21hc2spO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbi1cXG4tXFx0cmV0dXJuIGVycjtcXG4rXFx0cmV0dXJuIGRwYWEyX3N3aXRjaF9wb3J0X3RyYXBfbWFjX2FkZHIocG9ydF9wcml2LCBsbF9tYWMsIGxsX21hc2spO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBkcGFhMl9zd2l0Y2hfY3RybF9pZl90ZWFyZG93bihzdHJ1Y3QgZXRoc3dfY29yZSAqZXRoc3cpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXFxuaW5kZXggODkyMTVlMWRkYzJkYjEuLmNmNjM2ZmM1YWFmYWMyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jXFxuQEAgLTI4NzcsMTEgKzI4NzcsNyBAQCBzdGF0aWMgaW50IGdmYXJfZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHRlcnIgPSBzdGFydHVwX2dmYXIoZGV2KTtcXG4tXFx0aWYgKGVycilcXG4tXFx0XFx0cmV0dXJuIGVycjtcXG4tXFxuLVxcdHJldHVybiBlcnI7XFxuK1xcdHJldHVybiBzdGFydHVwX2dmYXIoZGV2KTtcXG4gfVxcbiBcXG4gLyogU3RvcHMgdGhlIGtlcm5lbCBxdWV1ZSwgYW5kIGhhbHRzIHRoZSBjb250cm9sbGVyICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXFxuaW5kZXggYTA0NjgzMDA0YTU2NzcuLjBjZDBlNTU5N2M5MDlkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXFxuQEAgLTQ4NjQsMTYgKzQ4NjQsMTAgQEAgc3RhdGljIHZvaWQgaTQwZV9jb250cm9sX3J4X3Eoc3RydWN0IGk0MGVfcGYgKnBmLCBpbnQgcGZfcSwgYm9vbCBlbmFibGUpXFxuICAqKi9cXG4gaW50IGk0MGVfY29udHJvbF93YWl0X3J4X3Eoc3RydWN0IGk0MGVfcGYgKnBmLCBpbnQgcGZfcSwgYm9vbCBlbmFibGUpXFxuIHtcXG4tXFx0aW50IHJldCA9IDA7XFxuLVxcbiBcXHRpNDBlX2NvbnRyb2xfcnhfcShwZiwgcGZfcSwgZW5hYmxlKTtcXG4gXFxuIFxcdC8qIHdhaXQgZm9yIHRoZSBjaGFuZ2UgdG8gZmluaXNoICovXFxuLVxcdHJldCA9IGk0MGVfcGZfcnhxX3dhaXQocGYsIHBmX3EsIGVuYWJsZSk7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcbi1cXHRyZXR1cm4gcmV0O1xcbitcXHRyZXR1cm4gaTQwZV9wZl9yeHFfd2FpdChwZiwgcGZfcSwgZW5hYmxlKTtcXG4gfVxcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvZTEwMDBfaTIxMC5jXFxuaW5kZXggOWRiMjliMjMxZDZhOTUuLjc4NGY5YTdiY2JlZDA3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvZTEwMDBfaTIxMC5jXFxuQEAgLTc1NiwxMSArNzU2LDcgQEAgc3RhdGljIHMzMiBfX2lnYl9hY2Nlc3NfeG1kaW9fcmVnKHN0cnVjdCBlMTAwMF9odyAqaHcsIHUxNiBhZGRyZXNzLFxcbiBcXHRcXHRyZXR1cm4gcmV0X3ZhbDtcXG4gXFxuIFxcdC8qIFJlY2FsaWJyYXRlIHRoZSBkZXZpY2UgYmFjayB0byAwICovXFxuLVxcdHJldF92YWwgPSBody1cXHUwMDNlcGh5Lm9wcy53cml0ZV9yZWcoaHcsIEUxMDAwX01NREFDLCAwKTtcXG4tXFx0aWYgKHJldF92YWwpXFxuLVxcdFxcdHJldHVybiByZXRfdmFsO1xcbi1cXG4tXFx0cmV0dXJuIHJldF92YWw7XFxuK1xcdHJldHVybiBody1cXHUwMDNlcGh5Lm9wcy53cml0ZV9yZWcoaHcsIEUxMDAwX01NREFDLCAwKTtcXG4gfVxcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcGh5LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3BoeS5jXFxuaW5kZXggNGNmNzM3ZmIzYjIxZTkuLmI3NThhN2UwZjAxMzI4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfcGh5LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3BoeS5jXFxuQEAgLTY3NSwxMSArNjc1LDcgQEAgc3RhdGljIHMzMiBfX2lnY19hY2Nlc3NfeG1kaW9fcmVnKHN0cnVjdCBpZ2NfaHcgKmh3LCB1MTYgYWRkcmVzcyxcXG4gXFx0XFx0cmV0dXJuIHJldF92YWw7XFxuIFxcbiBcXHQvKiBSZWNhbGlicmF0ZSB0aGUgZGV2aWNlIGJhY2sgdG8gMCAqL1xcbi1cXHRyZXRfdmFsID0gaHctXFx1MDAzZXBoeS5vcHMud3JpdGVfcmVnKGh3LCBJR0NfTU1EQUMsIDApO1xcbi1cXHRpZiAocmV0X3ZhbClcXG4tXFx0XFx0cmV0dXJuIHJldF92YWw7XFxuLVxcbi1cXHRyZXR1cm4gcmV0X3ZhbDtcXG4rXFx0cmV0dXJuIGh3LVxcdTAwM2VwaHkub3BzLndyaXRlX3JlZyhodywgSUdDX01NREFDLCAwKTtcXG4gfVxcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2h3LmNcXG5pbmRleCBmZmY4ZGM4NDIxMmQ1Yy4uZTk2YTI2ODA2N2YyOTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2h3LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfaHcuY1xcbkBAIC0yNDc4LDcgKzI0NzgsNiBAQCBzdGF0aWMgaW50IG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIHN0YXRpYyBpbnRcXG4gbmV0eGVuX2NvbGxlY3RfbWluaWR1bXAoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKVxcbiB7XFxuLVxcdGludCByZXQgPSAwO1xcbiBcXHRzdHJ1Y3QgbmV0eGVuX21pbmlkdW1wX3RlbXBsYXRlX2hkciAqaGRyO1xcbiBcXHRoZHIgPSAoc3RydWN0IG5ldHhlbl9taW5pZHVtcF90ZW1wbGF0ZV9oZHIgKilcXG4gXFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlbWR1bXAubWRfdGVtcGxhdGU7XFxuQEAgLTI0ODYsMTEgKzI0ODUsNyBAQCBuZXR4ZW5fY29sbGVjdF9taW5pZHVtcChzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdGhkci1cXHUwMDNlZHJpdmVyX3RpbWVzdGFtcCA9IGt0aW1lX2dldF9zZWNvbmRzKCk7XFxuIFxcdGhkci1cXHUwMDNlZHJpdmVyX2luZm9fd29yZDIgPSBhZGFwdGVyLVxcdTAwM2Vmd192ZXJzaW9uO1xcbiBcXHRoZHItXFx1MDAzZWRyaXZlcl9pbmZvX3dvcmQzID0gTlhSRDMyKGFkYXB0ZXIsIENSQl9EUklWRVJfVkVSU0lPTik7XFxuLVxcdHJldCA9IG5ldHhlbl9wYXJzZV9tZF90ZW1wbGF0ZShhZGFwdGVyKTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBuZXR4ZW5fcGFyc2VfbWRfdGVtcGxhdGUoYWRhcHRlcik7XFxuIH1cXG4gXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jXFxuaW5kZXggNDVlZDg3MDVjN2NhNmQuLjQ3Y2Q5ZWM2NjVlZWI0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcXG5AQCAtMTYxOCwxMSArMTYxOCw3IEBAIHN0YXRpYyBpbnQgcWxjbmljXzgzeHhfY2hlY2tfaHdfc3RhdHVzKHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqcF9kZXYpXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHRlcnIgPSBxbGNuaWNfODN4eF9jaGVja19oZWFydGJlYXQocF9kZXYpO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbi1cXG4tXFx0cmV0dXJuIGVycjtcXG4rXFx0cmV0dXJuIHFsY25pY184M3h4X2NoZWNrX2hlYXJ0YmVhdChwX2Rldik7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcWxjbmljXzgzeHhfcG9sbF9yZWcoc3RydWN0IHFsY25pY19hZGFwdGVyICpwX2RldiwgdTMyIGFkZHIsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmNcXG5pbmRleCBlZTgzODFiNjBiOGQ0OS4uZjdiZWViNzNlYjE2YmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uY1xcbkBAIC02ODUsNyArNjg1LDYgQEAgc3RhdGljIHZvaWQgcnRzbl9zZXRfcmF0ZShzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KVxcbiBzdGF0aWMgaW50IHJ0c25fcm1hY19pbml0KHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpXFxuIHtcXG4gXFx0Y29uc3QgdTggKm1hY19hZGRyID0gcHJpdi1cXHUwMDNlbmRldi1cXHUwMDNlZGV2X2FkZHI7XFxuLVxcdGludCByZXQ7XFxuIFxcbiBcXHQvKiBTZXQgTUFDIGFkZHJlc3MgKi9cXG4gXFx0cnRzbl93cml0ZShwcml2LCBNUk1BQzAsIChtYWNfYWRkclswXSBcXHUwMDNjXFx1MDAzYyA4KSB8IG1hY19hZGRyWzFdKTtcXG5AQCAtNzAyLDExICs3MDEsNyBAQCBzdGF0aWMgaW50IHJ0c25fcm1hY19pbml0KHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpXFxuIFxcbiBcXHQvKiBMaW5rIHZlcmlmaWNhdGlvbiAqL1xcbiBcXHRydHNuX21vZGlmeShwcml2LCBNTFZDLCBNTFZDX1BMViwgTUxWQ19QTFYpO1xcbi1cXHRyZXQgPSBydHNuX3JlZ193YWl0KHByaXYsIE1MVkMsIE1MVkNfUExWLCAwKTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBydHNuX3JlZ193YWl0KHByaXYsIE1MVkMsIE1MVkNfUExWLCAwKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBydHNuX2h3X2luaXQoc3RydWN0IHJ0c25fcHJpdmF0ZSAqcHJpdilcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXFxuaW5kZXggNjJiMzZhMzE4MTAwYWUuLjMyOTJiMjIzNWM4ZmE4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xcbkBAIC0xMDI4LDExICsxMDI4LDcgQEAgc3RhdGljIGludCBsYW44N3h4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcdGlmIChyYyBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiByYztcXG4gXFxuLVxcdHJjID0gZ2VucGh5X3JlYWRfc3RhdHVzX2ZpeGVkKHBoeWRldik7XFxuLVxcdGlmIChyYyBcXHUwMDNjIDApXFxuLVxcdFxcdHJldHVybiByYztcXG4tXFxuLVxcdHJldHVybiByYztcXG4rXFx0cmV0dXJuIGdlbnBoeV9yZWFkX3N0YXR1c19maXhlZChwaHlkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGxhbjg3eHhfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmMgYi9kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuY1xcbmluZGV4IDQ5ZDYzODlkYTA2N2NhLi44YTNiYmQ2MjM0MTJiMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jXFxuQEAgLTE1MjAsMTEgKzE1MjAsNyBAQCBzdGF0aWMgaW50IHRwczIzODgxX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgUFNFIGNvbnRyb2xsZXJcXFxcblxcXCIpO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXQgPSB0cHMyMzg4MV9zZXR1cF9pcnEocHJpdiwgY2xpZW50LVxcdTAwM2VpcnEpO1xcbi1cXHRpZiAocmV0KVxcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbi1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIHRwczIzODgxX3NldHVwX2lycShwcml2LCBjbGllbnQtXFx1MDAzZWlycSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB0cHMyMzg4MV9pZFtdID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzozOTo1NC41MTU3NzY0M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjk5MjgxMTgwNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnNpc3RzIGVudGlyZWx5IG9mIGNvZGUgcmVmYWN0b3JpbmcvY2xlYW51cHMgdGhhdCBzaW1wbGlmeSBlcnJvciBoYW5kbGluZyBieSBkaXJlY3RseSByZXR1cm5pbmcgdGhlIHJlc3VsdCBvZiBhIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBvZiBzdG9yaW5nIGl0IGluIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNoZWNraW5nIGl0IGJlZm9yZSByZXR1cm5pbmcuIFRoaXMgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTMxYWI3NTc1NTA5YzZmZjQ4YWY3Y2I2NGQ1MGE2Mzk2ZjBjMDIwMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDE3OjM5OjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jXG5pbmRleCBhMmE2NDFiODM1OGYyMi4uMDQ4OGFlNmFjNDg2YzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcbisrKyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY1xuQEAgLTIyNzIsMTEgKzIyNzIsNyBAQCB6bDMwNzN4X2RwbGxfaW5pdF9maW5lX3BoYXNlX2FkanVzdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxuIFx0aWYgKHJjKVxuIFx0XHRyZXR1cm4gcmM7XG4gXG4tXHRyYyA9IHpsMzA3M3hfd3JpdGVfdTgoemxkZXYsIFpMX1JFR19TWU5USF9QSEFTRV9TSElGVF9DVFJMLCAweDAxKTtcbi1cdGlmIChyYylcbi1cdFx0cmV0dXJuIHJjO1xuLVxuLVx0cmV0dXJuIHJjO1xuK1x0cmV0dXJuIHpsMzA3M3hfd3JpdGVfdTgoemxkZXYsIFpMX1JFR19TWU5USF9QSEFTRV9TSElGVF9DVFJMLCAweDAxKTtcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvb3V0LmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuY1xuaW5kZXggZWI1NjI4YWViY2VlOGUuLjQxMGQxNWI5NmQwYmYwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9kcGxsL3psMzA3M3gvb3V0LmNcbisrKyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L291dC5jXG5AQCAtODUsMTIgKzg1LDggQEAgaW50IHpsMzA3M3hfb3V0X3N0YXRlX2ZldGNoKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIHU4IGluZGV4KVxuIFx0aWYgKHJjKVxuIFx0XHRyZXR1cm4gcmM7XG4gXG4tXHRyYyA9IHpsMzA3M3hfcmVhZF91MzIoemxkZXYsIFpMX1JFR19PVVRQVVRfUEhBU0VfQ09NUCxcbi1cdFx0XHQgICAgICBcdTAwMjZvdXQtXHUwMDNlcGhhc2VfY29tcCk7XG4tXHRpZiAocmMpXG4tXHRcdHJldHVybiByYztcbi1cbi1cdHJldHVybiByYztcbitcdHJldHVybiB6bDMwNzN4X3JlYWRfdTMyKHpsZGV2LCBaTF9SRUdfT1VUUFVUX1BIQVNFX0NPTVAsXG4rXHRcdFx0XHRcdTAwMjZvdXQtXHUwMDNlcGhhc2VfY29tcCk7XG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmNcbmluZGV4IDVkMDUwMjBhNmQwNThiLi5lYTg5NjE5MDM5ZDg5YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuY1xuQEAgLTIzMDMsMTEgKzIzMDMsNyBAQCBzdGF0aWMgaW50IGVuYV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gXHRcdHJldHVybiByYztcbiBcdH1cbiBcbi1cdHJjID0gZW5hX3VwKGFkYXB0ZXIpO1xuLVx0aWYgKHJjKVxuLVx0XHRyZXR1cm4gcmM7XG4tXG4tXHRyZXR1cm4gcmM7XG4rXHRyZXR1cm4gZW5hX3VwKGFkYXB0ZXIpO1xuIH1cbiBcbiAvKiBlbmFfY2xvc2UgLSBEaXNhYmxlcyBhIG5ldHdvcmsgaW50ZXJmYWNlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFjc2VjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWNzZWMuY1xuaW5kZXggM2NhMDcyMzYwZWM3ZTAuLmZkNGVlNjIxMjIzNDg2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFjc2VjLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21hY3NlYy5jXG5AQCAtNzM1LDExICs3MzUsNyBAQCBzdGF0aWMgaW50IGFxX3NldF9yeHNjKHN0cnVjdCBhcV9uaWNfcyAqbmljLCBjb25zdCB1MzIgcnhzY19pZHgpXG4gXHRzY19yZWNvcmQudmFsaWQgPSAxO1xuIFx0c2NfcmVjb3JkLmZyZXNoID0gMTtcbiBcbi1cdHJldCA9IGFxX21zc19zZXRfaW5ncmVzc19zY19yZWNvcmQoaHcsIFx1MDAyNnNjX3JlY29yZCwgaHdfc2NfaWR4KTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIGFxX21zc19zZXRfaW5ncmVzc19zY19yZWNvcmQoaHcsIFx1MDAyNnNjX3JlY29yZCwgaHdfc2NfaWR4KTtcbiB9XG4gXG4gc3RhdGljIGludCBhcV9tZG9fYWRkX3J4c2Moc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC5jXG5pbmRleCAzM2U3YTk5ZDNlNDljZC4uNzlkNGE3N2Y3MmJkNDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1zd2l0Y2guY1xuQEAgLTM5MzUsMTEgKzM5MzUsNyBAQCBzdGF0aWMgaW50IGRwYWEyX3N3aXRjaF9wb3J0X2luaXQoc3RydWN0IGV0aHN3X3BvcnRfcHJpdiAqcG9ydF9wcml2LCB1MTYgcG9ydClcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRlcnIgPSBkcGFhMl9zd2l0Y2hfcG9ydF90cmFwX21hY19hZGRyKHBvcnRfcHJpdiwgbGxfbWFjLCBsbF9tYXNrKTtcbi1cdGlmIChlcnIpXG4tXHRcdHJldHVybiBlcnI7XG4tXG4tXHRyZXR1cm4gZXJyO1xuK1x0cmV0dXJuIGRwYWEyX3N3aXRjaF9wb3J0X3RyYXBfbWFjX2FkZHIocG9ydF9wcml2LCBsbF9tYWMsIGxsX21hc2spO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkcGFhMl9zd2l0Y2hfY3RybF9pZl90ZWFyZG93bihzdHJ1Y3QgZXRoc3dfY29yZSAqZXRoc3cpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcbmluZGV4IDg5MjE1ZTFkZGMyZGIxLi5jZjYzNmZjNWFhZmFjMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmNcbkBAIC0yODc3LDExICsyODc3LDcgQEAgc3RhdGljIGludCBnZmFyX2VuZXRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGVyciA9IHN0YXJ0dXBfZ2ZhcihkZXYpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdHJldHVybiBlcnI7XG4rXHRyZXR1cm4gc3RhcnR1cF9nZmFyKGRldik7XG4gfVxuIFxuIC8qIFN0b3BzIHRoZSBrZXJuZWwgcXVldWUsIGFuZCBoYWx0cyB0aGUgY29udHJvbGxlciAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5pbmRleCBhMDQ2ODMwMDRhNTY3Ny4uMGNkMGU1NTk3YzkwOWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5AQCAtNDg2NCwxNiArNDg2NCwxMCBAQCBzdGF0aWMgdm9pZCBpNDBlX2NvbnRyb2xfcnhfcShzdHJ1Y3QgaTQwZV9wZiAqcGYsIGludCBwZl9xLCBib29sIGVuYWJsZSlcbiAgKiovXG4gaW50IGk0MGVfY29udHJvbF93YWl0X3J4X3Eoc3RydWN0IGk0MGVfcGYgKnBmLCBpbnQgcGZfcSwgYm9vbCBlbmFibGUpXG4ge1xuLVx0aW50IHJldCA9IDA7XG4tXG4gXHRpNDBlX2NvbnRyb2xfcnhfcShwZiwgcGZfcSwgZW5hYmxlKTtcbiBcbiBcdC8qIHdhaXQgZm9yIHRoZSBjaGFuZ2UgdG8gZmluaXNoICovXG4tXHRyZXQgPSBpNDBlX3BmX3J4cV93YWl0KHBmLCBwZl9xLCBlbmFibGUpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gaTQwZV9wZl9yeHFfd2FpdChwZiwgcGZfcSwgZW5hYmxlKTtcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2UxMDAwX2kyMTAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmNcbmluZGV4IDlkYjI5YjIzMWQ2YTk1Li43ODRmOWE3YmNiZWQwNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9pMjEwLmNcbkBAIC03NTYsMTEgKzc1Niw3IEBAIHN0YXRpYyBzMzIgX19pZ2JfYWNjZXNzX3htZGlvX3JlZyhzdHJ1Y3QgZTEwMDBfaHcgKmh3LCB1MTYgYWRkcmVzcyxcbiBcdFx0cmV0dXJuIHJldF92YWw7XG4gXG4gXHQvKiBSZWNhbGlicmF0ZSB0aGUgZGV2aWNlIGJhY2sgdG8gMCAqL1xuLVx0cmV0X3ZhbCA9IGh3LVx1MDAzZXBoeS5vcHMud3JpdGVfcmVnKGh3LCBFMTAwMF9NTURBQywgMCk7XG4tXHRpZiAocmV0X3ZhbClcbi1cdFx0cmV0dXJuIHJldF92YWw7XG4tXG4tXHRyZXR1cm4gcmV0X3ZhbDtcbitcdHJldHVybiBody1cdTAwM2VwaHkub3BzLndyaXRlX3JlZyhodywgRTEwMDBfTU1EQUMsIDApO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX3BoeS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19waHkuY1xuaW5kZXggNGNmNzM3ZmIzYjIxZTkuLmI3NThhN2UwZjAxMzI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19waHkuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19waHkuY1xuQEAgLTY3NSwxMSArNjc1LDcgQEAgc3RhdGljIHMzMiBfX2lnY19hY2Nlc3NfeG1kaW9fcmVnKHN0cnVjdCBpZ2NfaHcgKmh3LCB1MTYgYWRkcmVzcyxcbiBcdFx0cmV0dXJuIHJldF92YWw7XG4gXG4gXHQvKiBSZWNhbGlicmF0ZSB0aGUgZGV2aWNlIGJhY2sgdG8gMCAqL1xuLVx0cmV0X3ZhbCA9IGh3LVx1MDAzZXBoeS5vcHMud3JpdGVfcmVnKGh3LCBJR0NfTU1EQUMsIDApO1xuLVx0aWYgKHJldF92YWwpXG4tXHRcdHJldHVybiByZXRfdmFsO1xuLVxuLVx0cmV0dXJuIHJldF92YWw7XG4rXHRyZXR1cm4gaHctXHUwMDNlcGh5Lm9wcy53cml0ZV9yZWcoaHcsIElHQ19NTURBQywgMCk7XG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2h3LmNcbmluZGV4IGZmZjhkYzg0MjEyZDVjLi5lOTZhMjY4MDY3ZjI5NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19ody5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfaHcuY1xuQEAgLTI0NzgsNyArMjQ3OCw2IEBAIHN0YXRpYyBpbnQgbmV0eGVuX3BhcnNlX21kX3RlbXBsYXRlKHN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqYWRhcHRlcilcbiBzdGF0aWMgaW50XG4gbmV0eGVuX2NvbGxlY3RfbWluaWR1bXAoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKVxuIHtcbi1cdGludCByZXQgPSAwO1xuIFx0c3RydWN0IG5ldHhlbl9taW5pZHVtcF90ZW1wbGF0ZV9oZHIgKmhkcjtcbiBcdGhkciA9IChzdHJ1Y3QgbmV0eGVuX21pbmlkdW1wX3RlbXBsYXRlX2hkciAqKVxuIFx0XHRcdFx0YWRhcHRlci1cdTAwM2VtZHVtcC5tZF90ZW1wbGF0ZTtcbkBAIC0yNDg2LDExICsyNDg1LDcgQEAgbmV0eGVuX2NvbGxlY3RfbWluaWR1bXAoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKVxuIFx0aGRyLVx1MDAzZWRyaXZlcl90aW1lc3RhbXAgPSBrdGltZV9nZXRfc2Vjb25kcygpO1xuIFx0aGRyLVx1MDAzZWRyaXZlcl9pbmZvX3dvcmQyID0gYWRhcHRlci1cdTAwM2Vmd192ZXJzaW9uO1xuIFx0aGRyLVx1MDAzZWRyaXZlcl9pbmZvX3dvcmQzID0gTlhSRDMyKGFkYXB0ZXIsIENSQl9EUklWRVJfVkVSU0lPTik7XG4tXHRyZXQgPSBuZXR4ZW5fcGFyc2VfbWRfdGVtcGxhdGUoYWRhcHRlcik7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0cmV0dXJuIHJldDtcbitcdHJldHVybiBuZXR4ZW5fcGFyc2VfbWRfdGVtcGxhdGUoYWRhcHRlcik7XG4gfVxuIFxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcbmluZGV4IDQ1ZWQ4NzA1YzdjYTZkLi40N2NkOWVjNjY1ZWViNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuY1xuQEAgLTE2MTgsMTEgKzE2MTgsNyBAQCBzdGF0aWMgaW50IHFsY25pY184M3h4X2NoZWNrX2h3X3N0YXR1cyhzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKnBfZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGVyciA9IHFsY25pY184M3h4X2NoZWNrX2hlYXJ0YmVhdChwX2Rldik7XG4tXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gZXJyO1xuLVxuLVx0cmV0dXJuIGVycjtcbitcdHJldHVybiBxbGNuaWNfODN4eF9jaGVja19oZWFydGJlYXQocF9kZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHFsY25pY184M3h4X3BvbGxfcmVnKHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqcF9kZXYsIHUzMiBhZGRyLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmNcbmluZGV4IGVlODM4MWI2MGI4ZDQ5Li5mN2JlZWI3M2ViMTZiYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uY1xuQEAgLTY4NSw3ICs2ODUsNiBAQCBzdGF0aWMgdm9pZCBydHNuX3NldF9yYXRlKHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpXG4gc3RhdGljIGludCBydHNuX3JtYWNfaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KVxuIHtcbiBcdGNvbnN0IHU4ICptYWNfYWRkciA9IHByaXYtXHUwMDNlbmRldi1cdTAwM2VkZXZfYWRkcjtcbi1cdGludCByZXQ7XG4gXG4gXHQvKiBTZXQgTUFDIGFkZHJlc3MgKi9cbiBcdHJ0c25fd3JpdGUocHJpdiwgTVJNQUMwLCAobWFjX2FkZHJbMF0gXHUwMDNjXHUwMDNjIDgpIHwgbWFjX2FkZHJbMV0pO1xuQEAgLTcwMiwxMSArNzAxLDcgQEAgc3RhdGljIGludCBydHNuX3JtYWNfaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KVxuIFxuIFx0LyogTGluayB2ZXJpZmljYXRpb24gKi9cbiBcdHJ0c25fbW9kaWZ5KHByaXYsIE1MVkMsIE1MVkNfUExWLCBNTFZDX1BMVik7XG4tXHRyZXQgPSBydHNuX3JlZ193YWl0KHByaXYsIE1MVkMsIE1MVkNfUExWLCAwKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIHJ0c25fcmVnX3dhaXQocHJpdiwgTUxWQywgTUxWQ19QTFYsIDApO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJ0c25faHdfaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xuaW5kZXggNjJiMzZhMzE4MTAwYWUuLjMyOTJiMjIzNWM4ZmE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbkBAIC0xMDI4LDExICsxMDI4LDcgQEAgc3RhdGljIGludCBsYW44N3h4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRpZiAocmMgXHUwMDNjIDApXG4gXHRcdHJldHVybiByYztcbiBcbi1cdHJjID0gZ2VucGh5X3JlYWRfc3RhdHVzX2ZpeGVkKHBoeWRldik7XG4tXHRpZiAocmMgXHUwMDNjIDApXG4tXHRcdHJldHVybiByYztcbi1cbi1cdHJldHVybiByYztcbitcdHJldHVybiBnZW5waHlfcmVhZF9zdGF0dXNfZml4ZWQocGh5ZGV2KTtcbiB9XG4gXG4gc3RhdGljIGludCBsYW44N3h4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmMgYi9kcml2ZXJzL25ldC9wc2UtcGQvdHBzMjM4ODEuY1xuaW5kZXggNDlkNjM4OWRhMDY3Y2EuLjhhM2JiZDYyMzQxMmIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcHNlLXBkL3RwczIzODgxLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jXG5AQCAtMTUyMCwxMSArMTUyMCw3IEBAIHN0YXRpYyBpbnQgdHBzMjM4ODFfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRcdFx0XHQgICAgIFwiZmFpbGVkIHRvIHJlZ2lzdGVyIFBTRSBjb250cm9sbGVyXFxuXCIpO1xuIFx0fVxuIFxuLVx0cmV0ID0gdHBzMjM4ODFfc2V0dXBfaXJxKHByaXYsIGNsaWVudC1cdTAwM2VpcnEpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gdHBzMjM4ODFfc2V0dXBfaXJxKHByaXYsIGNsaWVudC1cdTAwM2VpcnEpO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgdHBzMjM4ODFfaWRbXSA9IHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE3OjM5OjU0LjUxNTc4MDc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTkyODA2MzA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTZXJpZXMgb2YgUmVmYWN0b3JpbmcgUGF0Y2hlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBhdCBmaXJzdCBnbGFuY2UsIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBjb3JlIGlkZWEgaXMgc2ltcGxpZnlpbmcgZXJyb3IgaGFuZGxpbmcgYnkgZGlyZWN0bHkgcmV0dXJuaW5nIHRoZSByZXN1bHQgb2YgYSBmdW5jdGlvbiBjYWxsLiBJdCdzIHRoYXQgY2xhc3NpYyBwYXR0ZXJuOiBpbnN0ZWFkIG9mIGFzc2lnbmluZyBhIHJldHVybiB2YWx1ZSB0byBhIHZhcmlhYmxlLCBjaGVja2luZyBpdCwgYW5kIHRoZW4gcmV0dXJuaW5nIGl0LCB3ZSBqdXN0IHJldHVybiB0aGUgZnVuY3Rpb24ncyByZXN1bHQgZGlyZWN0bHkuXG5cbkZvciBleGFtcGxlLCBJIHNlZSB0aGUgb2xkIGNvZGUgc25pcHBldDpcbmBgYGNcbi1cdHJjID0gemwzMDczeF93cml0ZV91OCh6bGRldiwgWkxfUkVHX1NZTlRIX1BIQVNFX1NISUZUX0NUUkwsIDB4MDEpO1xuLVx0aWYgKHJjKVxuLVx0XHRyZXR1cm4gcmM7XG4tXG4tXHRyZXR1cm4gcmM7XG5gYGBcbmdldHMgc2ltcGxpZmllZCB0bzpcbmBgYGNcbitcdHJldHVybiB6bDMwNzN4X3dyaXRlX3U4KHpsZGV2LCBaTF9SRUdfU1lOVEhfUEhBU0VfU0hJRlRfQ1RSTCwgMHgwMSk7XG5gYGBcblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBwdXJlbHkgc3R5bGlzdGljLiBUaGUgcmV0dXJuIHZhbHVlLCBhbmQgdGhlcmVmb3JlIGFueSBzaWRlIGVmZmVjdHMsICptdXN0KiBiZSBleGFjdGx5IHRoZSBzYW1lLiBMZXQncyBtYWtlIHN1cmUsIHRob3VnaC4gUmlnaHQsIGlmIGByY2Agd2FzIG5vbi16ZXJvLCBpdCByZXR1cm5lZCBgcmNgOyBpZiBpdCB3YXMgemVybywgaXQgc3RpbGwgcmV0dXJuZWQgYHJjYC4gVGhlIG5ldyBjb2RlIGlzIGRvaW5nIHRoZSBzYW1lIHRoaW5nOiByZXR1cm5pbmcgdGhlIGZ1bmN0aW9uJ3MgcmVzdWx0LiBJdCdzIGVzc2VudGlhbGx5IGp1c3QgcmVtb3ZpbmcgcmVkdW5kYW50IGNvZGUuICBUaGlzIGxvb2tzIGxpa2UgYSBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2UgdGhhdCBkb2Vzbid0IHRvdWNoIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93LiBJdCdzIGEgcmVmYWN0b3JpbmcsIG5vdGhpbmcgbW9yZS5cblxuTm93LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgYnJlYWR0aCBvZiB0aGUgY2hhbmdlcy4gIEkgc2VlIGEgd2hvbGUgbGlzdCBvZiBmaWxlczogYGRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY2AsIGBkcml2ZXJzL2RwbGwvemwzMDczeC9vdXQuY2AsIGFuZCBzbyBvbiwgYWxsIHRoZSB3YXkgdG8gYGRyaXZlcnMvbmV0L3BzZS1wZC90cHMyMzg4MS5jYC4gIEknbSBxdWlja2x5IHNjYW5uaW5nIHRoZSBmdW5jdGlvbiBuYW1lcyB3aXRoaW4gdGhvc2UgZmlsZXMuLi4gYHpsMzA3M3hfZHBsbF9pbml0X2ZpbmVfcGhhc2VfYWRqdXN0YCwgYGVuYV9vcGVuYCwgYHFsY25pY184M3h4X2NoZWNrX2h3X3N0YXR1c2AsIGV0Yy4gWWVwLCB0aGV5IGFsbCBzaGFyZSB0aGlzIGlkZW50aWNhbCBjb2RlIGNsZWFudXAuIEl0J3MgdGhlIHNhbWUgcGF0dGVybiBJIHNhdyBiZWZvcmUuXG5cbkFscmlnaHQsICp0aGlzKiBpcyBhIHRleHRib29rIGNsZWFudXAgcGF0Y2gsIGxpa2VseSBnZW5lcmF0ZWQgYnkgc29tZXRoaW5nIGxpa2UgQ29jY2luZWxsZSBvciBhIHNpbWlsYXIgdG9vbC4gVGhpcyBpc24ndCBhbHRlcmluZyB0aGUgY29tcGlsZWQgY29kZSBsb2dpYyBvciBleGVjdXRpb24gZmxvdy5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgcmVmYWN0b3JpbmcgZG9lcyBub3QgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDc1LCJPdXRwdXRUb2tlbnMiOjgzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODU4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTc6NDA6MDQuNDQzODUwODQxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjb25zaXN0cyBlbnRpcmVseSBvZiBjb2RlIHJlZmFjdG9yaW5nL2NsZWFudXBzIHRoYXQgc2ltcGxpZnkgZXJyb3IgaGFuZGxpbmcgYnkgZGlyZWN0bHkgcmV0dXJuaW5nIHRoZSByZXN1bHQgb2YgYSBmdW5jdGlvbiBjYWxsIGluc3RlYWQgb2Ygc3RvcmluZyBpdCBpbiBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjaGVja2luZyBpdCBiZWZvcmUgcmV0dXJuaW5nLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnNpc3RzIGVudGlyZWx5IG9mIGNvZGUgcmVmYWN0b3JpbmcvY2xlYW51cHMgdGhhdCBzaW1wbGlmeSBlcnJvciBoYW5kbGluZyBieSBkaXJlY3RseSByZXR1cm5pbmcgdGhlIHJlc3VsdCBvZiBhIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBvZiBzdG9yaW5nIGl0IGluIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNoZWNraW5nIGl0IGJlZm9yZSByZXR1cm5pbmcuIFRoaXMgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowrvkfb[1] Phase: Running StartedAt: 2026-07-26 17:40:15 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvkfb[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-26 17:40:15 +0000 UTC FinishedAt: 2026-07-26 17:40:37 +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,}