Name: series-workflowg8vlh Phase: Failed StartedAt: 2026-08-21 12:06:27 +0000 UTC FinishedAt: 2026-08-21 12:34:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8vlh[0] Phase: Succeeded StartedAt: 2026-08-21 12:06:27 +0000 UTC FinishedAt: 2026-08-21 12:34:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8vlh[0].run-triage Phase: Succeeded StartedAt: 2026-08-21 12:06:27 +0000 UTC FinishedAt: 2026-08-21 12:34:16 +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+CgkJCTx0ZD4yMDI2LzA4LzIxIDEyOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgYSBTbWFydE5JQy9Tb0MuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHNvIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMjozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcwYjEzZTA0ZDExOGE1NmY1MGI2NDNmMGJmYzg1YjVlM2M2YjcxZjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxMjozMzo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2FwaS5oXG5pbmRleCA0Mjg1YjVkNmE2YTI5Li5mMzZhMWQ1ZjIzNmY2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvYXBpLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2FwaS5oXG5AQCAtMjEsNiAmIzQzOzIxLDcgQEAgaW50IGNuMjBrX3J2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSwgaW50IG51bSk7XG4gaW50IGNuMjBrX3J2dV9nZXRfbWJveF9yZWdpb25zKHN0cnVjdCBydnUgKnJ2dSwgdm9pZCAqKm1ib3hfYWRkcixcbiBcdFx0XHQgICAgICAgaW50IG51bSwgaW50IHR5cGUsIHVuc2lnbmVkIGxvbmcgKnBmX2JtYXApO1xuIHZvaWQgY24yMGtfZnJlZV9tYm94X21lbW9yeShzdHJ1Y3QgcnZ1ICpydnUpO1xuJiM0Mzt2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShzdHJ1Y3QgcnZ1ICpydnUsIGludCB0eXBlKTtcbiBpbnQgY24yMGtfcmVnaXN0ZXJfYWZwZl9tYm94X2ludHIoc3RydWN0IHJ2dSAqcnZ1KTtcbiBpbnQgY24yMGtfcmVnaXN0ZXJfYWZ2Zl9tYm94X2ludHIoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGZfdmVjX3N0YXJ0KTtcbiB2b2lkIGNuMjBrX3J2dV9lbmFibGVfbWJveF9pbnRyKHN0cnVjdCBydnUgKnJ2dSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuY1xuaW5kZXggNzE0MDFkZWMwZDc3Ni4uMDFmMzJhZGFjNTk5MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuY1xuQEAgLTMzNSwxMyAmIzQzOzMzNSwzMCBAQCBpbnQgY24yMGtfcnZ1X21ib3hfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIGludCB0eXBlLCBpbnQgbmRldnMpXG4gXHRyZXR1cm4gcnZ1X2FsbG9jX21ib3hfbWVtb3J5KHJ2dSwgdHlwZSwgbmRldnMsIE1CT1hfU0laRSk7XG4gfVxuIFxuJiM0Mzt2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShzdHJ1Y3QgcnZ1ICpydnUsIGludCB0eXBlKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFpc19jbjIwayhydnUtXHUwMDNlcGRldikgfHwgIXJ2dS1cdTAwM2VuZ19ydnUpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAodHlwZSkge1xuJiM0MztcdGNhc2UgVFlQRV9BRlBGOlxuJiM0MztcdFx0cW1lbV9mcmVlKHJ2dS1cdTAwM2VkZXYsIHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNlcGZfbWJveF9hZGRyKTtcbiYjNDM7XHRcdHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNlcGZfbWJveF9hZGRyID0gTlVMTDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgVFlQRV9BRlZGOlxuJiM0MztcdFx0cW1lbV9mcmVlKHJ2dS1cdTAwM2VkZXYsIHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNldmZfbWJveF9hZGRyKTtcbiYjNDM7XHRcdHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNldmZfbWJveF9hZGRyID0gTlVMTDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiB2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkoc3RydWN0IHJ2dSAqcnZ1KVxuIHtcbiBcdGlmICghaXNfY24yMGsocnZ1LVx1MDAzZXBkZXYpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRxbWVtX2ZyZWUocnZ1LVx1MDAzZWRldiwgcnZ1LVx1MDAzZW5nX3J2dS1cdTAwM2VwZl9tYm94X2FkZHIpO1xuLVx0cW1lbV9mcmVlKHJ2dS1cdTAwM2VkZXYsIHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNldmZfbWJveF9hZGRyKTtcbiYjNDM7XHRjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGUocnZ1LCBUWVBFX0FGUEYpO1xuJiM0MztcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIFRZUEVfQUZWRik7XG4gfVxuIFxuIHZvaWQgY24yMGtfcnZ1X2Rpc2FibGVfYWZ2Zl9pbnRyKHN0cnVjdCBydnUgKnJ2dSwgaW50IHZmcylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jXG5pbmRleCBmZmJhNTZlZThhNjBjLi5hMGQ1MzVhMTcyOGVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jXG5AQCAtMjU4NSwxMiAmIzQzOzI1ODUsNiBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdyxcbiBcdGlmICghcGZfYm1hcClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRuZ19ydnVfbWJveCA9IGt6YWxsb2Nfb2JqKCpuZ19ydnVfbWJveCk7XG4tXHRpZiAoIW5nX3J2dV9tYm94KSB7XG4tXHRcdGVyciA9IC1FTk9NRU07XG4tXHRcdGdvdG8gZnJlZV9iaXRtYXA7XG4tXHR9XG4tXG4gXHQvKiBSVlUgVkZzICovXG4gXHRpZiAodHlwZSA9PSBUWVBFX0FGVkYpXG4gXHRcdGJpdG1hcF9zZXQocGZfYm1hcCwgMCwgbnVtKTtcbkBAIC0yNjA0LDE1ICYjNDM7MjU5OCwyMiBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdyxcbiBcdFx0fVxuIFx0fVxuIFxuLVx0cnZ1LVx1MDAzZW5nX3J2dSA9IG5nX3J2dV9tYm94O1xuJiM0MztcdGlmICghcnZ1LVx1MDAzZW5nX3J2dSkge1xuJiM0MztcdFx0bmdfcnZ1X21ib3ggPSBkZXZtX2t6YWxsb2MocnZ1LVx1MDAzZWRldiwgc2l6ZW9mKCpuZ19ydnVfbWJveCksIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0aWYgKCFuZ19ydnVfbWJveCkge1xuJiM0MztcdFx0XHRlcnIgPSAtRU5PTUVNO1xuJiM0MztcdFx0XHRnb3RvIGZyZWVfYml0bWFwO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHJ2dS1cdTAwM2VuZ19ydnUgPSBuZ19ydnVfbWJveDtcbiBcbi1cdHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNlcnZ1X21ib3hfb3BzID0gXHUwMDI2cnZ1X21ib3hfb3BzO1xuJiM0MztcdFx0cnZ1LVx1MDAzZW5nX3J2dS1cdTAwM2VydnVfbWJveF9vcHMgPSBcdTAwMjZydnVfbWJveF9vcHM7XG4mIzQzO1x0XHRtdXRleF9pbml0KFx1MDAyNnJ2dS1cdTAwM2VtYm94X2xvY2spO1xuJiM0MztcdH1cbiBcbiBcdGVyciA9IGNuMjBrX3J2dV9tYm94X2luaXQocnZ1LCB0eXBlLCBudW0pO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBmcmVlX21lbTtcbi1cbi1cdG11dGV4X2luaXQoXHUwMDI2cnZ1LVx1MDAzZW1ib3hfbG9jayk7XG4mIzQzO1x0XHRnb3RvIGZyZWVfYml0bWFwO1xuIFxuIFx0bWJveF9yZWdpb25zID0ga2NhbGxvYyhudW0sIHNpemVvZih2b2lkIF9faW9tZW0gKiksIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFtYm94X3JlZ2lvbnMpIHtcbkBAIC0yNzAyLDE0ICYjNDM7MjcwMywxOCBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdyxcbiBmcmVlX3JlZ2lvbnM6XG4gXHRrZnJlZShtYm94X3JlZ2lvbnMpO1xuIGZyZWVfcW1lbTpcbi1cdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkocnZ1KTtcbi1mcmVlX21lbTpcbi1cdGtmcmVlKHJ2dS1cdTAwM2VuZ19ydnUpO1xuJiM0MztcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIHR5cGUpO1xuIGZyZWVfYml0bWFwOlxuIFx0Yml0bWFwX2ZyZWUocGZfYm1hcCk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgcnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnkoc3RydWN0IHJ2dSAqcnZ1KVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSlcbiYjNDM7XHRcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkocnZ1KTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBydnVfbWJveF9kZXN0cm95KHN0cnVjdCBtYm94X3dxX2luZm8gKm13KVxuIHtcbiBcdHN0cnVjdCBvdHgyX21ib3ggKm1ib3ggPSBcdTAwMjZtdy1cdTAwM2VtYm94O1xuQEAgLTM1MTksNiAmIzQzOzM1MjQsNyBAQCBzdGF0aWMgaW50IHJ2dV9lbmFibGVfc3Jpb3Yoc3RydWN0IHJ2dSAqcnZ1KVxuIFx0aWYgKGVycikge1xuIFx0XHRydnVfZGlzYWJsZV9hZnZmX2ludHIocnZ1KTtcbiBcdFx0cnZ1X21ib3hfZGVzdHJveShcdTAwMjZydnUtXHUwMDNlYWZ2Zl93cV9pbmZvKTtcbiYjNDM7XHRcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIFRZUEVfQUZWRik7XG4gXHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXG5AQCAtMzY4MSw2ICYjNDM7MzY4Nyw3IEBAIHN0YXRpYyBpbnQgcnZ1X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4gZXJyX21ib3g6XG4gXHRydnVfbWJveF9kZXN0cm95KFx1MDAyNnJ2dS1cdTAwM2VhZnBmX3dxX2luZm8pO1xuIGVycl9od3NldHVwOlxuJiM0MztcdHJ2dV9mcmVlX2NuMjBrX21ib3hfbWVtb3J5KHJ2dSk7XG4gXHRydnVfY2d4X2V4aXQocnZ1KTtcbiBcdHJ2dV9md2RhdGFfZXhpdChydnUpO1xuIFx0cnZ1X21jc19leGl0KHJ2dSk7XG5AQCAtMzcyMyw5ICYjNDM7MzczMCw3IEBAIHN0YXRpYyB2b2lkIHJ2dV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHRwY2lfc2V0X2RydmRhdGEocGRldiwgTlVMTCk7XG4gXG4gXHRkZXZtX2tmcmVlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBydnUtXHUwMDNlaHcpO1xuLVx0aWYgKGlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSlcbi1cdFx0Y24yMGtfZnJlZV9tYm94X21lbW9yeShydnUpO1xuLVx0a2ZyZWUocnZ1LVx1MDAzZW5nX3J2dSk7XG4mIzQzO1x0cnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnkocnZ1KTtcbiBcdGRldm1fa2ZyZWUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJ2dSk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmRldmljZV9ib3VuZCwgMCk7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEyOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIFNtYXJ0TklDL1NvQy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzBiMTNlMDRkMTE4YTU2ZjUwYjY0M2YwYmZjODViNWUzYzZiNzFmMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDIxIDEyOjMzOjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvYXBpLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaAppbmRleCA0Mjg1YjVkNmE2YTI5Li5mMzZhMWQ1ZjIzNmY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaApAQCAtMjEsNiAmIzQzOzIxLDcgQEAgaW50IGNuMjBrX3J2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSwgaW50IG51bSk7CiBpbnQgY24yMGtfcnZ1X2dldF9tYm94X3JlZ2lvbnMoc3RydWN0IHJ2dSAqcnZ1LCB2b2lkICoqbWJveF9hZGRyLAogCQkJICAgICAgIGludCBudW0sIGludCB0eXBlLCB1bnNpZ25lZCBsb25nICpwZl9ibWFwKTsKIHZvaWQgY24yMGtfZnJlZV9tYm94X21lbW9yeShzdHJ1Y3QgcnZ1ICpydnUpOwomIzQzO3ZvaWQgY24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlKHN0cnVjdCBydnUgKnJ2dSwgaW50IHR5cGUpOwogaW50IGNuMjBrX3JlZ2lzdGVyX2FmcGZfbWJveF9pbnRyKHN0cnVjdCBydnUgKnJ2dSk7CiBpbnQgY24yMGtfcmVnaXN0ZXJfYWZ2Zl9tYm94X2ludHIoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGZfdmVjX3N0YXJ0KTsKIHZvaWQgY24yMGtfcnZ1X2VuYWJsZV9tYm94X2ludHIoc3RydWN0IHJ2dSAqcnZ1KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMKaW5kZXggNzE0MDFkZWMwZDc3Ni4uMDFmMzJhZGFjNTk5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMKQEAgLTMzNSwxMyAmIzQzOzMzNSwzMCBAQCBpbnQgY24yMGtfcnZ1X21ib3hfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIGludCB0eXBlLCBpbnQgbmRldnMpCiAJcmV0dXJuIHJ2dV9hbGxvY19tYm94X21lbW9yeShydnUsIHR5cGUsIG5kZXZzLCBNQk9YX1NJWkUpOwogfQogCiYjNDM7dm9pZCBjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGUoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSkKJiM0Mzt7CiYjNDM7CWlmICghaXNfY24yMGsocnZ1LSZndDtwZGV2KSB8fCAhcnZ1LSZndDtuZ19ydnUpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXN3aXRjaCAodHlwZSkgewomIzQzOwljYXNlIFRZUEVfQUZQRjoKJiM0MzsJCXFtZW1fZnJlZShydnUtJmd0O2RldiwgcnZ1LSZndDtuZ19ydnUtJmd0O3BmX21ib3hfYWRkcik7CiYjNDM7CQlydnUtJmd0O25nX3J2dS0mZ3Q7cGZfbWJveF9hZGRyID0gTlVMTDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFRZUEVfQUZWRjoKJiM0MzsJCXFtZW1fZnJlZShydnUtJmd0O2RldiwgcnZ1LSZndDtuZ19ydnUtJmd0O3ZmX21ib3hfYWRkcik7CiYjNDM7CQlydnUtJmd0O25nX3J2dS0mZ3Q7dmZfbWJveF9hZGRyID0gTlVMTDsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7fQomIzQzOwogdm9pZCBjbjIwa19mcmVlX21ib3hfbWVtb3J5KHN0cnVjdCBydnUgKnJ2dSkKIHsKIAlpZiAoIWlzX2NuMjBrKHJ2dS0mZ3Q7cGRldikpCiAJCXJldHVybjsKIAotCXFtZW1fZnJlZShydnUtJmd0O2RldiwgcnZ1LSZndDtuZ19ydnUtJmd0O3BmX21ib3hfYWRkcik7Ci0JcW1lbV9mcmVlKHJ2dS0mZ3Q7ZGV2LCBydnUtJmd0O25nX3J2dS0mZ3Q7dmZfbWJveF9hZGRyKTsKJiM0MzsJY24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlKHJ2dSwgVFlQRV9BRlBGKTsKJiM0MzsJY24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlKHJ2dSwgVFlQRV9BRlZGKTsKIH0KIAogdm9pZCBjbjIwa19ydnVfZGlzYWJsZV9hZnZmX2ludHIoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdmZzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYwppbmRleCBmZmJhNTZlZThhNjBjLi5hMGQ1MzVhMTcyOGVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYwpAQCAtMjU4NSwxMiAmIzQzOzI1ODUsNiBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdywKIAlpZiAoIXBmX2JtYXApCiAJCXJldHVybiAtRU5PTUVNOwogCi0JbmdfcnZ1X21ib3ggPSBremFsbG9jX29iaigqbmdfcnZ1X21ib3gpOwotCWlmICghbmdfcnZ1X21ib3gpIHsKLQkJZXJyID0gLUVOT01FTTsKLQkJZ290byBmcmVlX2JpdG1hcDsKLQl9Ci0KIAkvKiBSVlUgVkZzICovCiAJaWYgKHR5cGUgPT0gVFlQRV9BRlZGKQogCQliaXRtYXBfc2V0KHBmX2JtYXAsIDAsIG51bSk7CkBAIC0yNjA0LDE1ICYjNDM7MjU5OCwyMiBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdywKIAkJfQogCX0KIAotCXJ2dS0mZ3Q7bmdfcnZ1ID0gbmdfcnZ1X21ib3g7CiYjNDM7CWlmICghcnZ1LSZndDtuZ19ydnUpIHsKJiM0MzsJCW5nX3J2dV9tYm94ID0gZGV2bV9remFsbG9jKHJ2dS0mZ3Q7ZGV2LCBzaXplb2YoKm5nX3J2dV9tYm94KSwgR0ZQX0tFUk5FTCk7CiYjNDM7CQlpZiAoIW5nX3J2dV9tYm94KSB7CiYjNDM7CQkJZXJyID0gLUVOT01FTTsKJiM0MzsJCQlnb3RvIGZyZWVfYml0bWFwOwomIzQzOwkJfQomIzQzOwomIzQzOwkJcnZ1LSZndDtuZ19ydnUgPSBuZ19ydnVfbWJveDsKIAotCXJ2dS0mZ3Q7bmdfcnZ1LSZndDtydnVfbWJveF9vcHMgPSAmYW1wO3J2dV9tYm94X29wczsKJiM0MzsJCXJ2dS0mZ3Q7bmdfcnZ1LSZndDtydnVfbWJveF9vcHMgPSAmYW1wO3J2dV9tYm94X29wczsKJiM0MzsJCW11dGV4X2luaXQoJmFtcDtydnUtJmd0O21ib3hfbG9jayk7CiYjNDM7CX0KIAogCWVyciA9IGNuMjBrX3J2dV9tYm94X2luaXQocnZ1LCB0eXBlLCBudW0pOwogCWlmIChlcnIpCi0JCWdvdG8gZnJlZV9tZW07Ci0KLQltdXRleF9pbml0KCZhbXA7cnZ1LSZndDttYm94X2xvY2spOwomIzQzOwkJZ290byBmcmVlX2JpdG1hcDsKIAogCW1ib3hfcmVnaW9ucyA9IGtjYWxsb2MobnVtLCBzaXplb2Yodm9pZCBfX2lvbWVtICopLCBHRlBfS0VSTkVMKTsKIAlpZiAoIW1ib3hfcmVnaW9ucykgewpAQCAtMjcwMiwxNCAmIzQzOzI3MDMsMTggQEAgc3RhdGljIGludCBydnVfbWJveF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1ib3hfd3FfaW5mbyAqbXcsCiBmcmVlX3JlZ2lvbnM6CiAJa2ZyZWUobWJveF9yZWdpb25zKTsKIGZyZWVfcW1lbToKLQljbjIwa19mcmVlX21ib3hfbWVtb3J5KHJ2dSk7Ci1mcmVlX21lbToKLQlrZnJlZShydnUtJmd0O25nX3J2dSk7CiYjNDM7CWNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIHR5cGUpOwogZnJlZV9iaXRtYXA6CiAJYml0bWFwX2ZyZWUocGZfYm1hcCk7CiAJcmV0dXJuIGVycjsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJ2dV9mcmVlX2NuMjBrX21ib3hfbWVtb3J5KHN0cnVjdCBydnUgKnJ2dSkKJiM0Mzt7CiYjNDM7CWlmIChpc19jbjIwayhydnUtJmd0O3BkZXYpKQomIzQzOwkJY24yMGtfZnJlZV9tYm94X21lbW9yeShydnUpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHJ2dV9tYm94X2Rlc3Ryb3koc3RydWN0IG1ib3hfd3FfaW5mbyAqbXcpCiB7CiAJc3RydWN0IG90eDJfbWJveCAqbWJveCA9ICZhbXA7bXctJmd0O21ib3g7CkBAIC0zNTE5LDYgJiM0MzszNTI0LDcgQEAgc3RhdGljIGludCBydnVfZW5hYmxlX3NyaW92KHN0cnVjdCBydnUgKnJ2dSkKIAlpZiAoZXJyKSB7CiAJCXJ2dV9kaXNhYmxlX2FmdmZfaW50cihydnUpOwogCQlydnVfbWJveF9kZXN0cm95KCZhbXA7cnZ1LSZndDthZnZmX3dxX2luZm8pOwomIzQzOwkJY24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlKHJ2dSwgVFlQRV9BRlZGKTsKIAkJcmV0dXJuIGVycjsKIAl9CiAKQEAgLTM2ODEsNiAmIzQzOzM2ODcsNyBAQCBzdGF0aWMgaW50IHJ2dV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKQogZXJyX21ib3g6CiAJcnZ1X21ib3hfZGVzdHJveSgmYW1wO3J2dS0mZ3Q7YWZwZl93cV9pbmZvKTsKIGVycl9od3NldHVwOgomIzQzOwlydnVfZnJlZV9jbjIwa19tYm94X21lbW9yeShydnUpOwogCXJ2dV9jZ3hfZXhpdChydnUpOwogCXJ2dV9md2RhdGFfZXhpdChydnUpOwogCXJ2dV9tY3NfZXhpdChydnUpOwpAQCAtMzcyMyw5ICYjNDM7MzczMCw3IEBAIHN0YXRpYyB2b2lkIHJ2dV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJcGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpOwogCiAJZGV2bV9rZnJlZSgmYW1wO3BkZXYtJmd0O2RldiwgcnZ1LSZndDtodyk7Ci0JaWYgKGlzX2NuMjBrKHJ2dS0mZ3Q7cGRldikpCi0JCWNuMjBrX2ZyZWVfbWJveF9tZW1vcnkocnZ1KTsKLQlrZnJlZShydnUtJmd0O25nX3J2dSk7CiYjNDM7CXJ2dV9mcmVlX2NuMjBrX21ib3hfbWVtb3J5KHJ2dSk7CiAJZGV2bV9rZnJlZSgmYW1wO3BkZXYtJmd0O2RldiwgcnZ1KTsKIAlhdG9taWNfc2V0KCZhbXA7ZGV2aWNlX2JvdW5kLCAwKTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTI6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA5MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0IG5lZWRzIGEgZnV6emluZyBhc3Nlc3NtZW50LiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlcyBhcmUgaW4gYGFwaS5oYCwgYG1ib3hfaW5pdC5jYCwgYW5kIGBydnUuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgZm9jdXNpbmcgb24gbWVtb3J5IGxlYWsgZml4ZXMgYW5kIGFsbG9jYXRpb24gaXNzdWVzIHRpZWQgdG8gYG5nX3J2dV9tYm94YCBhbmQgYGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZWAuCgpMb29raW5nIGNsb3NlciwgdGhlIGtleSBjaGFuZ2VzIGludm9sdmUgcmVwbGFjaW5nIGBremFsbG9jX29iamAgKHdoaWNoIEkgc3VzcGVjdCB3YXMgYSBNYXJ2ZWxsLXNwZWNpZmljIG1hY3JvIOKAkyBpbnRlcmVzdGluZywgZ29vZCBjYXRjaCBvbiB0aGF0KSB3aXRoIGBkZXZtX2t6YWxsb2NgIGluIGBydnVfbWJveF9pbml0YCwgYW5kIGFkZGluZyBmdW5jdGlvbnMgbGlrZSBgY24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlYCBhbmQgYHJ2dV9mcmVlX2NuMjBrX21ib3hfbWVtb3J5YCB0byBoYW5kbGUgbWVtb3J5IGRlYWxsb2NhdGlvbiBtb3JlIGNsZWFubHkuIFRoZXJlIGFyZSBhbHNvIHVwZGF0ZXMgdG8gZXJyb3IgcGF0aHMgaW4gYHJ2dV9yZW1vdmVgIGFuZCBgcnZ1X3Byb2JlYC4gQWxsIG1lbW9yeSBtYW5hZ2VtZW50IHJlbGF0ZWQuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCwgaXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgdGhlc2UgZml4ZXMgYXJlIGNyaXRpY2FsIGZvciBzdGFiaWxpdHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlICphY3R1YWwqIE9jdGVvblRYMiBoYXJkd2FyZS4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGl0IHdhcnJhbnQgZnV6emluZz8KClRoZSBpbnN0cnVjdGlvbnMgY2xlYXJseSBzdGF0ZSB0aGF0IHdlIHNob3VsZCBza2lwIGZ1enppbmcgcGF0Y2hlcyB0aGF0IGRlYWwgd2l0aCB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycywgZXNwZWNpYWxseSB0aG9zZSB0aGF0IGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gUUVNVS4gVGhpbmtpbmcgYWJvdXQgaXQsIHRoZSBPY3Rlb25UWDIgaXMgYSBTb0MvTklDLCBhbmQgdGhlcmUgaXMgbm8gd2F5IGluIFFFTVUgdG8gZW11bGF0ZSB0aGUgT2N0ZW9uVFgyLiBTbywgaXQmIzM5O3MgZGVmaW5pdGVseSBpbiB0aGF0ICYjMzQ7cmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUmIzM0OyBjYXRlZ29yeS4KClRoZXJlZm9yZSwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3ksIGFuZCB0aGUgZnV6emluZyBleGNsdXNpb24gY3JpdGVyaWEsIEkgdGhpbmsgd2UgY2FuIGNvbmZpZGVudGx5IG1hcmsgdGhpcyBvbmUgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgd2lsbCBxdWlja2x5IHZlcmlmeSB0aGF0IGBvY3Rlb250eDJgIGlzIHJlYWNoYWJsZSwgYW5kIHRoZW4gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMjozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvY3Rlb250eDImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9MTY5PWNvbmZpZyBTS1kyX0RFQlVHXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTE3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzoxODA6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy0xODEtc291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL01ha2VmaWxlPTE1PW9iai15XHRcdCYjNDM7PSBvY3Rlb25fZXBfdmYvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL01ha2VmaWxlOjE2Om9iai15XHRcdCYjNDM7PSBvY3Rlb250eDIvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL01ha2VmaWxlLTE3LW9iai15XHRcdCYjNDM7PSBwcmVzdGVyYS9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyODojZGVmaW5lIERFQlVHRlNfRElSX05BTUUgXCYjMzQ7b2N0ZW9udHgyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM9NDAxMz1zdGF0aWMgY29uc3QgY2hhciAqcnZ1X2dldF9kYmdfZGlyX25hbWUoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtNDAyMC1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6NDAyMTpcdFx0cmV0dXJuIFwmIzM0O29jdGVvbnR4MlwmIzM0OztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtNDAyMi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RldmxpbmsuYy0xNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZXZsaW5rLmM6MTY6I2RlZmluZSBEUlZfTkFNRSBcJiMzNDtvY3Rlb250eDItYWZcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZXZsaW5rLmMtMTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlPTE4PXJ2dV9uaWNwZi0kKENPTkZJR19YRlJNX09GRkxPQUQpICYjNDM7PSBjbjEwa19pcHNlYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU6MjA6Y2NmbGFncy15ICYjNDM7PSAtSSQoc3JjdHJlZSkvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC0xNy0jaW5jbHVkZSBcdTAwM2NsaW51eC9zb2MvbWFydmVsbC9zaWxpY29ucy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDoxODojaW5jbHVkZSBcdTAwM2NsaW51eC9zb2MvbWFydmVsbC9vY3Rlb250eDIvYXNtLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTE5LSNpbmNsdWRlIFx1MDAzY25ldC9tYWNzZWMuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYz0xMTE1PXN0YXRpYyBpbnQgb3R4Ml9xb3NfdmFsaWRhdGVfcXVhbnR1bShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUzMiBxdWFudHVtKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYy0xMTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jOjExMjA6XHQvKiBNYXggUm91bmQgcm9iaW4gd2VpZ2h0IHN1cHBvcnRlZCBieSBvY3Rlb250eDIgYW5kIENOMTBLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmMtMTEyMS1cdCAqIGlzIGRpZmZlcmVudC4gVmFsaWRhdGUgYWNjb3JkaW5nbHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDUyCgkJCQkJCQlvdXRwdXQ6IDkzCgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdGFyZ2V0ZWQgYXQgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZSwgYSBkcml2ZXIgdGhhdCBkaXJlY3RseSBpbnRlcmFjdHMgd2l0aCB0aGUgT2N0ZW9uVFgyJiMzOTtzIGFyY2hpdGVjdHVyZS4gVGhlIGtleSBxdWVzdGlvbiwgdGhlIG9uZSB0aGF0IG1ha2VzIG9yIGJyZWFrcyB3aGV0aGVyIEkgc2hvdWxkIGV2ZW4gYm90aGVyIGFuYWx5emluZyB0aGlzIGZvciBmdXp6aW5nIHB1cnBvc2VzLCBpcyB3aGV0aGVyIHRoaXMgZHJpdmVyIGlzIGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBBbmQgdGhlIGluc3RydWN0aW9ucyBhcmUgY3J5c3RhbCBjbGVhciBvbiB0aGlzIHBvaW50OiBubywgaXQmIzM5O3Mgbm90LiBUaGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgc3RhdGUgdGhhdCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSB3aXRoaW4gZHJpdmVycyBvZiB0aGlzIG5hdHVyZSwgZHJpdmVycyBmb3IgdGhpbmdzIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgKnJlcXVpcmUqIGFjdHVhbCBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLCB0aGVuIHRoZSBXb3J0aEZ1enppbmcgdmFsdWUgbXVzdCBiZSBzZXQgdG8gZmFsc2UuIFNpbmNlIHRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGFuZCBpc24mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhvc2UgaW5zdHJ1Y3Rpb25zLiBUaGVyZWZvcmUsIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZXNvdXJjZXMgbmVlZGVkIHRvIHRydWx5IHJ1biB0aGlzIGNvZGUgZG9uJiMzOTt0IGV4aXN0IGluIGEgdXNhYmxlIGZ1enppbmcgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTI6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIFNtYXJ0TklDL1NvQy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIFNtYXJ0TklDL1NvQy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEyOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMjozMzo1MC42MjkzODM2MTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE5ODIyNzMyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIGEgU21hcnROSUMvU29DLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBzbyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBhbmQgZnV6emVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEyOjMzOjUwLjYyOTM4OTI2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk5ODY3Nzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzBiMTNlMDRkMTE4YTU2ZjUwYjY0M2YwYmZjODViNWUzYzZiNzFmM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxMjozMzo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2FwaS5oXFxuaW5kZXggNDI4NWI1ZDZhNmEyOS4uZjM2YTFkNWYyMzZmNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2FwaS5oXFxuQEAgLTIxLDYgKzIxLDcgQEAgaW50IGNuMjBrX3J2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSwgaW50IG51bSk7XFxuIGludCBjbjIwa19ydnVfZ2V0X21ib3hfcmVnaW9ucyhzdHJ1Y3QgcnZ1ICpydnUsIHZvaWQgKiptYm94X2FkZHIsXFxuIFxcdFxcdFxcdCAgICAgICBpbnQgbnVtLCBpbnQgdHlwZSwgdW5zaWduZWQgbG9uZyAqcGZfYm1hcCk7XFxuIHZvaWQgY24yMGtfZnJlZV9tYm94X21lbW9yeShzdHJ1Y3QgcnZ1ICpydnUpO1xcbit2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShzdHJ1Y3QgcnZ1ICpydnUsIGludCB0eXBlKTtcXG4gaW50IGNuMjBrX3JlZ2lzdGVyX2FmcGZfbWJveF9pbnRyKHN0cnVjdCBydnUgKnJ2dSk7XFxuIGludCBjbjIwa19yZWdpc3Rlcl9hZnZmX21ib3hfaW50cihzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZl92ZWNfc3RhcnQpO1xcbiB2b2lkIGNuMjBrX3J2dV9lbmFibGVfbWJveF9pbnRyKHN0cnVjdCBydnUgKnJ2dSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmNcXG5pbmRleCA3MTQwMWRlYzBkNzc2Li4wMWYzMmFkYWM1OTkyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmNcXG5AQCAtMzM1LDEzICszMzUsMzAgQEAgaW50IGNuMjBrX3J2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSwgaW50IG5kZXZzKVxcbiBcXHRyZXR1cm4gcnZ1X2FsbG9jX21ib3hfbWVtb3J5KHJ2dSwgdHlwZSwgbmRldnMsIE1CT1hfU0laRSk7XFxuIH1cXG4gXFxuK3ZvaWQgY24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlKHN0cnVjdCBydnUgKnJ2dSwgaW50IHR5cGUpXFxuK3tcXG4rXFx0aWYgKCFpc19jbjIwayhydnUtXFx1MDAzZXBkZXYpIHx8ICFydnUtXFx1MDAzZW5nX3J2dSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0c3dpdGNoICh0eXBlKSB7XFxuK1xcdGNhc2UgVFlQRV9BRlBGOlxcbitcXHRcXHRxbWVtX2ZyZWUocnZ1LVxcdTAwM2VkZXYsIHJ2dS1cXHUwMDNlbmdfcnZ1LVxcdTAwM2VwZl9tYm94X2FkZHIpO1xcbitcXHRcXHRydnUtXFx1MDAzZW5nX3J2dS1cXHUwMDNlcGZfbWJveF9hZGRyID0gTlVMTDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgVFlQRV9BRlZGOlxcbitcXHRcXHRxbWVtX2ZyZWUocnZ1LVxcdTAwM2VkZXYsIHJ2dS1cXHUwMDNlbmdfcnZ1LVxcdTAwM2V2Zl9tYm94X2FkZHIpO1xcbitcXHRcXHRydnUtXFx1MDAzZW5nX3J2dS1cXHUwMDNldmZfbWJveF9hZGRyID0gTlVMTDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rfVxcbitcXG4gdm9pZCBjbjIwa19mcmVlX21ib3hfbWVtb3J5KHN0cnVjdCBydnUgKnJ2dSlcXG4ge1xcbiBcXHRpZiAoIWlzX2NuMjBrKHJ2dS1cXHUwMDNlcGRldikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdHFtZW1fZnJlZShydnUtXFx1MDAzZWRldiwgcnZ1LVxcdTAwM2VuZ19ydnUtXFx1MDAzZXBmX21ib3hfYWRkcik7XFxuLVxcdHFtZW1fZnJlZShydnUtXFx1MDAzZWRldiwgcnZ1LVxcdTAwM2VuZ19ydnUtXFx1MDAzZXZmX21ib3hfYWRkcik7XFxuK1xcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIFRZUEVfQUZQRik7XFxuK1xcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIFRZUEVfQUZWRik7XFxuIH1cXG4gXFxuIHZvaWQgY24yMGtfcnZ1X2Rpc2FibGVfYWZ2Zl9pbnRyKHN0cnVjdCBydnUgKnJ2dSwgaW50IHZmcylcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuY1xcbmluZGV4IGZmYmE1NmVlOGE2MGMuLmEwZDUzNWExNzI4ZWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuY1xcbkBAIC0yNTg1LDEyICsyNTg1LDYgQEAgc3RhdGljIGludCBydnVfbWJveF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1ib3hfd3FfaW5mbyAqbXcsXFxuIFxcdGlmICghcGZfYm1hcClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRuZ19ydnVfbWJveCA9IGt6YWxsb2Nfb2JqKCpuZ19ydnVfbWJveCk7XFxuLVxcdGlmICghbmdfcnZ1X21ib3gpIHtcXG4tXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4tXFx0XFx0Z290byBmcmVlX2JpdG1hcDtcXG4tXFx0fVxcbi1cXG4gXFx0LyogUlZVIFZGcyAqL1xcbiBcXHRpZiAodHlwZSA9PSBUWVBFX0FGVkYpXFxuIFxcdFxcdGJpdG1hcF9zZXQocGZfYm1hcCwgMCwgbnVtKTtcXG5AQCAtMjYwNCwxNSArMjU5OCwyMiBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdyxcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHRydnUtXFx1MDAzZW5nX3J2dSA9IG5nX3J2dV9tYm94O1xcbitcXHRpZiAoIXJ2dS1cXHUwMDNlbmdfcnZ1KSB7XFxuK1xcdFxcdG5nX3J2dV9tYm94ID0gZGV2bV9remFsbG9jKHJ2dS1cXHUwMDNlZGV2LCBzaXplb2YoKm5nX3J2dV9tYm94KSwgR0ZQX0tFUk5FTCk7XFxuK1xcdFxcdGlmICghbmdfcnZ1X21ib3gpIHtcXG4rXFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4rXFx0XFx0XFx0Z290byBmcmVlX2JpdG1hcDtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cnZ1LVxcdTAwM2VuZ19ydnUgPSBuZ19ydnVfbWJveDtcXG4gXFxuLVxcdHJ2dS1cXHUwMDNlbmdfcnZ1LVxcdTAwM2VydnVfbWJveF9vcHMgPSBcXHUwMDI2cnZ1X21ib3hfb3BzO1xcbitcXHRcXHRydnUtXFx1MDAzZW5nX3J2dS1cXHUwMDNlcnZ1X21ib3hfb3BzID0gXFx1MDAyNnJ2dV9tYm94X29wcztcXG4rXFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2cnZ1LVxcdTAwM2VtYm94X2xvY2spO1xcbitcXHR9XFxuIFxcbiBcXHRlcnIgPSBjbjIwa19ydnVfbWJveF9pbml0KHJ2dSwgdHlwZSwgbnVtKTtcXG4gXFx0aWYgKGVycilcXG4tXFx0XFx0Z290byBmcmVlX21lbTtcXG4tXFxuLVxcdG11dGV4X2luaXQoXFx1MDAyNnJ2dS1cXHUwMDNlbWJveF9sb2NrKTtcXG4rXFx0XFx0Z290byBmcmVlX2JpdG1hcDtcXG4gXFxuIFxcdG1ib3hfcmVnaW9ucyA9IGtjYWxsb2MobnVtLCBzaXplb2Yodm9pZCBfX2lvbWVtICopLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFtYm94X3JlZ2lvbnMpIHtcXG5AQCAtMjcwMiwxNCArMjcwMywxOCBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdyxcXG4gZnJlZV9yZWdpb25zOlxcbiBcXHRrZnJlZShtYm94X3JlZ2lvbnMpO1xcbiBmcmVlX3FtZW06XFxuLVxcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkocnZ1KTtcXG4tZnJlZV9tZW06XFxuLVxcdGtmcmVlKHJ2dS1cXHUwMDNlbmdfcnZ1KTtcXG4rXFx0Y24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlKHJ2dSwgdHlwZSk7XFxuIGZyZWVfYml0bWFwOlxcbiBcXHRiaXRtYXBfZnJlZShwZl9ibWFwKTtcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnkoc3RydWN0IHJ2dSAqcnZ1KVxcbit7XFxuK1xcdGlmIChpc19jbjIwayhydnUtXFx1MDAzZXBkZXYpKVxcbitcXHRcXHRjbjIwa19mcmVlX21ib3hfbWVtb3J5KHJ2dSk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHJ2dV9tYm94X2Rlc3Ryb3koc3RydWN0IG1ib3hfd3FfaW5mbyAqbXcpXFxuIHtcXG4gXFx0c3RydWN0IG90eDJfbWJveCAqbWJveCA9IFxcdTAwMjZtdy1cXHUwMDNlbWJveDtcXG5AQCAtMzUxOSw2ICszNTI0LDcgQEAgc3RhdGljIGludCBydnVfZW5hYmxlX3NyaW92KHN0cnVjdCBydnUgKnJ2dSlcXG4gXFx0aWYgKGVycikge1xcbiBcXHRcXHRydnVfZGlzYWJsZV9hZnZmX2ludHIocnZ1KTtcXG4gXFx0XFx0cnZ1X21ib3hfZGVzdHJveShcXHUwMDI2cnZ1LVxcdTAwM2VhZnZmX3dxX2luZm8pO1xcbitcXHRcXHRjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGUocnZ1LCBUWVBFX0FGVkYpO1xcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHR9XFxuIFxcbkBAIC0zNjgxLDYgKzM2ODcsNyBAQCBzdGF0aWMgaW50IHJ2dV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbiBlcnJfbWJveDpcXG4gXFx0cnZ1X21ib3hfZGVzdHJveShcXHUwMDI2cnZ1LVxcdTAwM2VhZnBmX3dxX2luZm8pO1xcbiBlcnJfaHdzZXR1cDpcXG4rXFx0cnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnkocnZ1KTtcXG4gXFx0cnZ1X2NneF9leGl0KHJ2dSk7XFxuIFxcdHJ2dV9md2RhdGFfZXhpdChydnUpO1xcbiBcXHRydnVfbWNzX2V4aXQocnZ1KTtcXG5AQCAtMzcyMyw5ICszNzMwLDcgQEAgc3RhdGljIHZvaWQgcnZ1X3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gXFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpO1xcbiBcXG4gXFx0ZGV2bV9rZnJlZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBydnUtXFx1MDAzZWh3KTtcXG4tXFx0aWYgKGlzX2NuMjBrKHJ2dS1cXHUwMDNlcGRldikpXFxuLVxcdFxcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkocnZ1KTtcXG4tXFx0a2ZyZWUocnZ1LVxcdTAwM2VuZ19ydnUpO1xcbitcXHRydnVfZnJlZV9jbjIwa19tYm94X21lbW9yeShydnUpO1xcbiBcXHRkZXZtX2tmcmVlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHJ2dSk7XFxuIFxcdGF0b21pY19zZXQoXFx1MDAyNmRldmljZV9ib3VuZCwgMCk7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTI6MzM6NTEuMjI5OTQzNjIzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTM1OTc2NDkwOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIGEgU21hcnROSUMvU29DLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBzbyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBhbmQgZnV6emVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcwYjEzZTA0ZDExOGE1NmY1MGI2NDNmMGJmYzg1YjVlM2M2YjcxZjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxMjozMzo0OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2FwaS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvYXBpLmhcbmluZGV4IDQyODViNWQ2YTZhMjkuLmYzNmExZDVmMjM2ZjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvYXBpLmhcbkBAIC0yMSw2ICsyMSw3IEBAIGludCBjbjIwa19ydnVfbWJveF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgaW50IHR5cGUsIGludCBudW0pO1xuIGludCBjbjIwa19ydnVfZ2V0X21ib3hfcmVnaW9ucyhzdHJ1Y3QgcnZ1ICpydnUsIHZvaWQgKiptYm94X2FkZHIsXG4gXHRcdFx0ICAgICAgIGludCBudW0sIGludCB0eXBlLCB1bnNpZ25lZCBsb25nICpwZl9ibWFwKTtcbiB2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkoc3RydWN0IHJ2dSAqcnZ1KTtcbit2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShzdHJ1Y3QgcnZ1ICpydnUsIGludCB0eXBlKTtcbiBpbnQgY24yMGtfcmVnaXN0ZXJfYWZwZl9tYm94X2ludHIoc3RydWN0IHJ2dSAqcnZ1KTtcbiBpbnQgY24yMGtfcmVnaXN0ZXJfYWZ2Zl9tYm94X2ludHIoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGZfdmVjX3N0YXJ0KTtcbiB2b2lkIGNuMjBrX3J2dV9lbmFibGVfbWJveF9pbnRyKHN0cnVjdCBydnUgKnJ2dSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuY1xuaW5kZXggNzE0MDFkZWMwZDc3Ni4uMDFmMzJhZGFjNTk5MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuY1xuQEAgLTMzNSwxMyArMzM1LDMwIEBAIGludCBjbjIwa19ydnVfbWJveF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgaW50IHR5cGUsIGludCBuZGV2cylcbiBcdHJldHVybiBydnVfYWxsb2NfbWJveF9tZW1vcnkocnZ1LCB0eXBlLCBuZGV2cywgTUJPWF9TSVpFKTtcbiB9XG4gXG4rdm9pZCBjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGUoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSlcbit7XG4rXHRpZiAoIWlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSB8fCAhcnZ1LVx1MDAzZW5nX3J2dSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0c3dpdGNoICh0eXBlKSB7XG4rXHRjYXNlIFRZUEVfQUZQRjpcbitcdFx0cW1lbV9mcmVlKHJ2dS1cdTAwM2VkZXYsIHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNlcGZfbWJveF9hZGRyKTtcbitcdFx0cnZ1LVx1MDAzZW5nX3J2dS1cdTAwM2VwZl9tYm94X2FkZHIgPSBOVUxMO1xuK1x0XHRicmVhaztcbitcdGNhc2UgVFlQRV9BRlZGOlxuK1x0XHRxbWVtX2ZyZWUocnZ1LVx1MDAzZWRldiwgcnZ1LVx1MDAzZW5nX3J2dS1cdTAwM2V2Zl9tYm94X2FkZHIpO1xuK1x0XHRydnUtXHUwMDNlbmdfcnZ1LVx1MDAzZXZmX21ib3hfYWRkciA9IE5VTEw7XG4rXHRcdGJyZWFrO1xuK1x0fVxuK31cbitcbiB2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkoc3RydWN0IHJ2dSAqcnZ1KVxuIHtcbiBcdGlmICghaXNfY24yMGsocnZ1LVx1MDAzZXBkZXYpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRxbWVtX2ZyZWUocnZ1LVx1MDAzZWRldiwgcnZ1LVx1MDAzZW5nX3J2dS1cdTAwM2VwZl9tYm94X2FkZHIpO1xuLVx0cW1lbV9mcmVlKHJ2dS1cdTAwM2VkZXYsIHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNldmZfbWJveF9hZGRyKTtcbitcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIFRZUEVfQUZQRik7XG4rXHRjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGUocnZ1LCBUWVBFX0FGVkYpO1xuIH1cbiBcbiB2b2lkIGNuMjBrX3J2dV9kaXNhYmxlX2FmdmZfaW50cihzdHJ1Y3QgcnZ1ICpydnUsIGludCB2ZnMpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuY1xuaW5kZXggZmZiYTU2ZWU4YTYwYy4uYTBkNTM1YTE3MjhlZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuY1xuQEAgLTI1ODUsMTIgKzI1ODUsNiBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdyxcbiBcdGlmICghcGZfYm1hcClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRuZ19ydnVfbWJveCA9IGt6YWxsb2Nfb2JqKCpuZ19ydnVfbWJveCk7XG4tXHRpZiAoIW5nX3J2dV9tYm94KSB7XG4tXHRcdGVyciA9IC1FTk9NRU07XG4tXHRcdGdvdG8gZnJlZV9iaXRtYXA7XG4tXHR9XG4tXG4gXHQvKiBSVlUgVkZzICovXG4gXHRpZiAodHlwZSA9PSBUWVBFX0FGVkYpXG4gXHRcdGJpdG1hcF9zZXQocGZfYm1hcCwgMCwgbnVtKTtcbkBAIC0yNjA0LDE1ICsyNTk4LDIyIEBAIHN0YXRpYyBpbnQgcnZ1X21ib3hfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtYm94X3dxX2luZm8gKm13LFxuIFx0XHR9XG4gXHR9XG4gXG4tXHRydnUtXHUwMDNlbmdfcnZ1ID0gbmdfcnZ1X21ib3g7XG4rXHRpZiAoIXJ2dS1cdTAwM2VuZ19ydnUpIHtcbitcdFx0bmdfcnZ1X21ib3ggPSBkZXZtX2t6YWxsb2MocnZ1LVx1MDAzZWRldiwgc2l6ZW9mKCpuZ19ydnVfbWJveCksIEdGUF9LRVJORUwpO1xuK1x0XHRpZiAoIW5nX3J2dV9tYm94KSB7XG4rXHRcdFx0ZXJyID0gLUVOT01FTTtcbitcdFx0XHRnb3RvIGZyZWVfYml0bWFwO1xuK1x0XHR9XG4rXG4rXHRcdHJ2dS1cdTAwM2VuZ19ydnUgPSBuZ19ydnVfbWJveDtcbiBcbi1cdHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNlcnZ1X21ib3hfb3BzID0gXHUwMDI2cnZ1X21ib3hfb3BzO1xuK1x0XHRydnUtXHUwMDNlbmdfcnZ1LVx1MDAzZXJ2dV9tYm94X29wcyA9IFx1MDAyNnJ2dV9tYm94X29wcztcbitcdFx0bXV0ZXhfaW5pdChcdTAwMjZydnUtXHUwMDNlbWJveF9sb2NrKTtcbitcdH1cbiBcbiBcdGVyciA9IGNuMjBrX3J2dV9tYm94X2luaXQocnZ1LCB0eXBlLCBudW0pO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBmcmVlX21lbTtcbi1cbi1cdG11dGV4X2luaXQoXHUwMDI2cnZ1LVx1MDAzZW1ib3hfbG9jayk7XG4rXHRcdGdvdG8gZnJlZV9iaXRtYXA7XG4gXG4gXHRtYm94X3JlZ2lvbnMgPSBrY2FsbG9jKG51bSwgc2l6ZW9mKHZvaWQgX19pb21lbSAqKSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIW1ib3hfcmVnaW9ucykge1xuQEAgLTI3MDIsMTQgKzI3MDMsMTggQEAgc3RhdGljIGludCBydnVfbWJveF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1ib3hfd3FfaW5mbyAqbXcsXG4gZnJlZV9yZWdpb25zOlxuIFx0a2ZyZWUobWJveF9yZWdpb25zKTtcbiBmcmVlX3FtZW06XG4tXHRjbjIwa19mcmVlX21ib3hfbWVtb3J5KHJ2dSk7XG4tZnJlZV9tZW06XG4tXHRrZnJlZShydnUtXHUwMDNlbmdfcnZ1KTtcbitcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIHR5cGUpO1xuIGZyZWVfYml0bWFwOlxuIFx0Yml0bWFwX2ZyZWUocGZfYm1hcCk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBydnVfZnJlZV9jbjIwa19tYm94X21lbW9yeShzdHJ1Y3QgcnZ1ICpydnUpXG4re1xuK1x0aWYgKGlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSlcbitcdFx0Y24yMGtfZnJlZV9tYm94X21lbW9yeShydnUpO1xuK31cbitcbiBzdGF0aWMgdm9pZCBydnVfbWJveF9kZXN0cm95KHN0cnVjdCBtYm94X3dxX2luZm8gKm13KVxuIHtcbiBcdHN0cnVjdCBvdHgyX21ib3ggKm1ib3ggPSBcdTAwMjZtdy1cdTAwM2VtYm94O1xuQEAgLTM1MTksNiArMzUyNCw3IEBAIHN0YXRpYyBpbnQgcnZ1X2VuYWJsZV9zcmlvdihzdHJ1Y3QgcnZ1ICpydnUpXG4gXHRpZiAoZXJyKSB7XG4gXHRcdHJ2dV9kaXNhYmxlX2FmdmZfaW50cihydnUpO1xuIFx0XHRydnVfbWJveF9kZXN0cm95KFx1MDAyNnJ2dS1cdTAwM2VhZnZmX3dxX2luZm8pO1xuK1x0XHRjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGUocnZ1LCBUWVBFX0FGVkYpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuQEAgLTM2ODEsNiArMzY4Nyw3IEBAIHN0YXRpYyBpbnQgcnZ1X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4gZXJyX21ib3g6XG4gXHRydnVfbWJveF9kZXN0cm95KFx1MDAyNnJ2dS1cdTAwM2VhZnBmX3dxX2luZm8pO1xuIGVycl9od3NldHVwOlxuK1x0cnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnkocnZ1KTtcbiBcdHJ2dV9jZ3hfZXhpdChydnUpO1xuIFx0cnZ1X2Z3ZGF0YV9leGl0KHJ2dSk7XG4gXHRydnVfbWNzX2V4aXQocnZ1KTtcbkBAIC0zNzIzLDkgKzM3MzAsNyBAQCBzdGF0aWMgdm9pZCBydnVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpO1xuIFxuIFx0ZGV2bV9rZnJlZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcnZ1LVx1MDAzZWh3KTtcbi1cdGlmIChpc19jbjIwayhydnUtXHUwMDNlcGRldikpXG4tXHRcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkocnZ1KTtcbi1cdGtmcmVlKHJ2dS1cdTAwM2VuZ19ydnUpO1xuK1x0cnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnkocnZ1KTtcbiBcdGRldm1fa2ZyZWUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJ2dSk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmRldmljZV9ib3VuZCwgMCk7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTI6MzM6NTEuMjI5OTQ0ODczWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcwMjE0Nzc1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCBuZWVkcyBhIGZ1enppbmcgYXNzZXNzbWVudC4gSXQncyB0b3VjaGluZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlcyBhcmUgaW4gYGFwaS5oYCwgYG1ib3hfaW5pdC5jYCwgYW5kIGBydnUuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgZm9jdXNpbmcgb24gbWVtb3J5IGxlYWsgZml4ZXMgYW5kIGFsbG9jYXRpb24gaXNzdWVzIHRpZWQgdG8gYG5nX3J2dV9tYm94YCBhbmQgYGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZWAuXG5cbkxvb2tpbmcgY2xvc2VyLCB0aGUga2V5IGNoYW5nZXMgaW52b2x2ZSByZXBsYWNpbmcgYGt6YWxsb2Nfb2JqYCAod2hpY2ggSSBzdXNwZWN0IHdhcyBhIE1hcnZlbGwtc3BlY2lmaWMgbWFjcm8g4oCTIGludGVyZXN0aW5nLCBnb29kIGNhdGNoIG9uIHRoYXQpIHdpdGggYGRldm1fa3phbGxvY2AgaW4gYHJ2dV9tYm94X2luaXRgLCBhbmQgYWRkaW5nIGZ1bmN0aW9ucyBsaWtlIGBjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGVgIGFuZCBgcnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnlgIHRvIGhhbmRsZSBtZW1vcnkgZGVhbGxvY2F0aW9uIG1vcmUgY2xlYW5seS4gVGhlcmUgYXJlIGFsc28gdXBkYXRlcyB0byBlcnJvciBwYXRocyBpbiBgcnZ1X3JlbW92ZWAgYW5kIGBydnVfcHJvYmVgLiBBbGwgbWVtb3J5IG1hbmFnZW1lbnQgcmVsYXRlZC5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIGl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGF0IHRoZXNlIGZpeGVzIGFyZSBjcml0aWNhbCBmb3Igc3RhYmlsaXR5IGluIHRoZSBjb250ZXh0IG9mIHRoZSAqYWN0dWFsKiBPY3Rlb25UWDIgaGFyZHdhcmUuIFRoZSBxdWVzdGlvbiBpcywgZG9lcyBpdCB3YXJyYW50IGZ1enppbmc/XG5cblRoZSBpbnN0cnVjdGlvbnMgY2xlYXJseSBzdGF0ZSB0aGF0IHdlIHNob3VsZCBza2lwIGZ1enppbmcgcGF0Y2hlcyB0aGF0IGRlYWwgd2l0aCB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycywgZXNwZWNpYWxseSB0aG9zZSB0aGF0IGFyZW4ndCBlbXVsYXRlZCBpbiBRRU1VLiBUaGlua2luZyBhYm91dCBpdCwgdGhlIE9jdGVvblRYMiBpcyBhIFNvQy9OSUMsIGFuZCB0aGVyZSBpcyBubyB3YXkgaW4gUUVNVSB0byBlbXVsYXRlIHRoZSBPY3Rlb25UWDIuIFNvLCBpdCdzIGRlZmluaXRlbHkgaW4gdGhhdCBcInJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlXCIgY2F0ZWdvcnkuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3ksIGFuZCB0aGUgZnV6emluZyBleGNsdXNpb24gY3JpdGVyaWEsIEkgdGhpbmsgd2UgY2FuIGNvbmZpZGVudGx5IG1hcmsgdGhpcyBvbmUgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgd2lsbCBxdWlja2x5IHZlcmlmeSB0aGF0IGBvY3Rlb250eDJgIGlzIHJlYWNoYWJsZSwgYW5kIHRoZW4gY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEyOjMzOjU5LjkzMjA5NTcxNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTk1NjMxMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2N0ZW9udHgyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz0xNjk9Y29uZmlnIFNLWTJfREVCVUdcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy0xNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjE4MDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTE4MS1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL01ha2VmaWxlPTE1PW9iai15XFx0XFx0Kz0gb2N0ZW9uX2VwX3ZmL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvTWFrZWZpbGU6MTY6b2JqLXlcXHRcXHQrPSBvY3Rlb250eDIvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9NYWtlZmlsZS0xNy1vYmoteVxcdFxcdCs9IHByZXN0ZXJhL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jOjI4OiNkZWZpbmUgREVCVUdGU19ESVJfTkFNRSBcXFwib2N0ZW9udHgyXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTQwMTM9c3RhdGljIGNvbnN0IGNoYXIgKnJ2dV9nZXRfZGJnX2Rpcl9uYW1lKHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtNDAyMC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzo0MDIxOlxcdFxcdHJldHVybiBcXFwib2N0ZW9udHgyXFxcIjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTQwMjItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RldmxpbmsuYy0xNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGV2bGluay5jOjE2OiNkZWZpbmUgRFJWX05BTUUgXFxcIm9jdGVvbnR4Mi1hZlxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGV2bGluay5jLTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlPTE4PXJ2dV9uaWNwZi0kKENPTkZJR19YRlJNX09GRkxPQUQpICs9IGNuMTBrX2lwc2VjLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjIwOmNjZmxhZ3MteSArPSAtSSQoc3JjdHJlZSkvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTE3LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zb2MvbWFydmVsbC9zaWxpY29ucy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjE4OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9zb2MvbWFydmVsbC9vY3Rlb250eDIvYXNtLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtMTktI2luY2x1ZGUgXFx1MDAzY25ldC9tYWNzZWMuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYz0xMTE1PXN0YXRpYyBpbnQgb3R4Ml9xb3NfdmFsaWRhdGVfcXVhbnR1bShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUzMiBxdWFudHVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jLTExMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jOjExMjA6XFx0LyogTWF4IFJvdW5kIHJvYmluIHdlaWdodCBzdXBwb3J0ZWQgYnkgb2N0ZW9udHgyIGFuZCBDTjEwS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYy0xMTIxLVxcdCAqIGlzIGRpZmZlcmVudC4gVmFsaWRhdGUgYWNjb3JkaW5nbHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTI6MzQ6MDAuMDUxNjY3ODgzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3NTg4ODE0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0YXJnZXRlZCBhdCB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBpZWNlIG9mIGhhcmR3YXJlLCBhIGRyaXZlciB0aGF0IGRpcmVjdGx5IGludGVyYWN0cyB3aXRoIHRoZSBPY3Rlb25UWDIncyBhcmNoaXRlY3R1cmUuIFRoZSBrZXkgcXVlc3Rpb24sIHRoZSBvbmUgdGhhdCBtYWtlcyBvciBicmVha3Mgd2hldGhlciBJIHNob3VsZCBldmVuIGJvdGhlciBhbmFseXppbmcgdGhpcyBmb3IgZnV6emluZyBwdXJwb3NlcywgaXMgd2hldGhlciB0aGlzIGRyaXZlciBpcyBlbXVsYXRlZCB3aXRoaW4gUUVNVS4gQW5kIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNyeXN0YWwgY2xlYXIgb24gdGhpcyBwb2ludDogbm8sIGl0J3Mgbm90LiBUaGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgc3RhdGUgdGhhdCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSB3aXRoaW4gZHJpdmVycyBvZiB0aGlzIG5hdHVyZSwgZHJpdmVycyBmb3IgdGhpbmdzIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgKnJlcXVpcmUqIGFjdHVhbCBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLCB0aGVuIHRoZSBXb3J0aEZ1enppbmcgdmFsdWUgbXVzdCBiZSBzZXQgdG8gZmFsc2UuIFNpbmNlIHRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGFuZCBpc24ndCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBJJ20gZ29pbmcgdG8gZm9sbG93IHRob3NlIGluc3RydWN0aW9ucy4gVGhlcmVmb3JlLCBJIHdpbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVzb3VyY2VzIG5lZWRlZCB0byB0cnVseSBydW4gdGhpcyBjb2RlIGRvbid0IGV4aXN0IGluIGEgdXNhYmxlIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNTIsIk91dHB1dFRva2VucyI6OTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTI6MzQ6MDQuODI3NTYwNjk1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTMxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIFNtYXJ0TklDL1NvQy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIFNtYXJ0TklDL1NvQy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMjozNDowNC44Mjc1OTU0MjVaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg8vlh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-21 12:06:27 +0000 UTC FinishedAt: 2026-08-21 12:34: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+CgkJCTx0ZD4yMDI2LzA4LzIxIDEyOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgYSBTbWFydE5JQy9Tb0MuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHNvIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMjozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcwYjEzZTA0ZDExOGE1NmY1MGI2NDNmMGJmYzg1YjVlM2M2YjcxZjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxMjozMzo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2FwaS5oXG5pbmRleCA0Mjg1YjVkNmE2YTI5Li5mMzZhMWQ1ZjIzNmY2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvYXBpLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2FwaS5oXG5AQCAtMjEsNiAmIzQzOzIxLDcgQEAgaW50IGNuMjBrX3J2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSwgaW50IG51bSk7XG4gaW50IGNuMjBrX3J2dV9nZXRfbWJveF9yZWdpb25zKHN0cnVjdCBydnUgKnJ2dSwgdm9pZCAqKm1ib3hfYWRkcixcbiBcdFx0XHQgICAgICAgaW50IG51bSwgaW50IHR5cGUsIHVuc2lnbmVkIGxvbmcgKnBmX2JtYXApO1xuIHZvaWQgY24yMGtfZnJlZV9tYm94X21lbW9yeShzdHJ1Y3QgcnZ1ICpydnUpO1xuJiM0Mzt2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShzdHJ1Y3QgcnZ1ICpydnUsIGludCB0eXBlKTtcbiBpbnQgY24yMGtfcmVnaXN0ZXJfYWZwZl9tYm94X2ludHIoc3RydWN0IHJ2dSAqcnZ1KTtcbiBpbnQgY24yMGtfcmVnaXN0ZXJfYWZ2Zl9tYm94X2ludHIoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGZfdmVjX3N0YXJ0KTtcbiB2b2lkIGNuMjBrX3J2dV9lbmFibGVfbWJveF9pbnRyKHN0cnVjdCBydnUgKnJ2dSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuY1xuaW5kZXggNzE0MDFkZWMwZDc3Ni4uMDFmMzJhZGFjNTk5MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuY1xuQEAgLTMzNSwxMyAmIzQzOzMzNSwzMCBAQCBpbnQgY24yMGtfcnZ1X21ib3hfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIGludCB0eXBlLCBpbnQgbmRldnMpXG4gXHRyZXR1cm4gcnZ1X2FsbG9jX21ib3hfbWVtb3J5KHJ2dSwgdHlwZSwgbmRldnMsIE1CT1hfU0laRSk7XG4gfVxuIFxuJiM0Mzt2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShzdHJ1Y3QgcnZ1ICpydnUsIGludCB0eXBlKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFpc19jbjIwayhydnUtXHUwMDNlcGRldikgfHwgIXJ2dS1cdTAwM2VuZ19ydnUpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAodHlwZSkge1xuJiM0MztcdGNhc2UgVFlQRV9BRlBGOlxuJiM0MztcdFx0cW1lbV9mcmVlKHJ2dS1cdTAwM2VkZXYsIHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNlcGZfbWJveF9hZGRyKTtcbiYjNDM7XHRcdHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNlcGZfbWJveF9hZGRyID0gTlVMTDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgVFlQRV9BRlZGOlxuJiM0MztcdFx0cW1lbV9mcmVlKHJ2dS1cdTAwM2VkZXYsIHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNldmZfbWJveF9hZGRyKTtcbiYjNDM7XHRcdHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNldmZfbWJveF9hZGRyID0gTlVMTDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiB2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkoc3RydWN0IHJ2dSAqcnZ1KVxuIHtcbiBcdGlmICghaXNfY24yMGsocnZ1LVx1MDAzZXBkZXYpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRxbWVtX2ZyZWUocnZ1LVx1MDAzZWRldiwgcnZ1LVx1MDAzZW5nX3J2dS1cdTAwM2VwZl9tYm94X2FkZHIpO1xuLVx0cW1lbV9mcmVlKHJ2dS1cdTAwM2VkZXYsIHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNldmZfbWJveF9hZGRyKTtcbiYjNDM7XHRjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGUocnZ1LCBUWVBFX0FGUEYpO1xuJiM0MztcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIFRZUEVfQUZWRik7XG4gfVxuIFxuIHZvaWQgY24yMGtfcnZ1X2Rpc2FibGVfYWZ2Zl9pbnRyKHN0cnVjdCBydnUgKnJ2dSwgaW50IHZmcylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jXG5pbmRleCBmZmJhNTZlZThhNjBjLi5hMGQ1MzVhMTcyOGVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jXG5AQCAtMjU4NSwxMiAmIzQzOzI1ODUsNiBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdyxcbiBcdGlmICghcGZfYm1hcClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRuZ19ydnVfbWJveCA9IGt6YWxsb2Nfb2JqKCpuZ19ydnVfbWJveCk7XG4tXHRpZiAoIW5nX3J2dV9tYm94KSB7XG4tXHRcdGVyciA9IC1FTk9NRU07XG4tXHRcdGdvdG8gZnJlZV9iaXRtYXA7XG4tXHR9XG4tXG4gXHQvKiBSVlUgVkZzICovXG4gXHRpZiAodHlwZSA9PSBUWVBFX0FGVkYpXG4gXHRcdGJpdG1hcF9zZXQocGZfYm1hcCwgMCwgbnVtKTtcbkBAIC0yNjA0LDE1ICYjNDM7MjU5OCwyMiBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdyxcbiBcdFx0fVxuIFx0fVxuIFxuLVx0cnZ1LVx1MDAzZW5nX3J2dSA9IG5nX3J2dV9tYm94O1xuJiM0MztcdGlmICghcnZ1LVx1MDAzZW5nX3J2dSkge1xuJiM0MztcdFx0bmdfcnZ1X21ib3ggPSBkZXZtX2t6YWxsb2MocnZ1LVx1MDAzZWRldiwgc2l6ZW9mKCpuZ19ydnVfbWJveCksIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0aWYgKCFuZ19ydnVfbWJveCkge1xuJiM0MztcdFx0XHRlcnIgPSAtRU5PTUVNO1xuJiM0MztcdFx0XHRnb3RvIGZyZWVfYml0bWFwO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHJ2dS1cdTAwM2VuZ19ydnUgPSBuZ19ydnVfbWJveDtcbiBcbi1cdHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNlcnZ1X21ib3hfb3BzID0gXHUwMDI2cnZ1X21ib3hfb3BzO1xuJiM0MztcdFx0cnZ1LVx1MDAzZW5nX3J2dS1cdTAwM2VydnVfbWJveF9vcHMgPSBcdTAwMjZydnVfbWJveF9vcHM7XG4mIzQzO1x0XHRtdXRleF9pbml0KFx1MDAyNnJ2dS1cdTAwM2VtYm94X2xvY2spO1xuJiM0MztcdH1cbiBcbiBcdGVyciA9IGNuMjBrX3J2dV9tYm94X2luaXQocnZ1LCB0eXBlLCBudW0pO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBmcmVlX21lbTtcbi1cbi1cdG11dGV4X2luaXQoXHUwMDI2cnZ1LVx1MDAzZW1ib3hfbG9jayk7XG4mIzQzO1x0XHRnb3RvIGZyZWVfYml0bWFwO1xuIFxuIFx0bWJveF9yZWdpb25zID0ga2NhbGxvYyhudW0sIHNpemVvZih2b2lkIF9faW9tZW0gKiksIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFtYm94X3JlZ2lvbnMpIHtcbkBAIC0yNzAyLDE0ICYjNDM7MjcwMywxOCBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdyxcbiBmcmVlX3JlZ2lvbnM6XG4gXHRrZnJlZShtYm94X3JlZ2lvbnMpO1xuIGZyZWVfcW1lbTpcbi1cdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkocnZ1KTtcbi1mcmVlX21lbTpcbi1cdGtmcmVlKHJ2dS1cdTAwM2VuZ19ydnUpO1xuJiM0MztcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIHR5cGUpO1xuIGZyZWVfYml0bWFwOlxuIFx0Yml0bWFwX2ZyZWUocGZfYm1hcCk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgcnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnkoc3RydWN0IHJ2dSAqcnZ1KVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSlcbiYjNDM7XHRcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkocnZ1KTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBydnVfbWJveF9kZXN0cm95KHN0cnVjdCBtYm94X3dxX2luZm8gKm13KVxuIHtcbiBcdHN0cnVjdCBvdHgyX21ib3ggKm1ib3ggPSBcdTAwMjZtdy1cdTAwM2VtYm94O1xuQEAgLTM1MTksNiAmIzQzOzM1MjQsNyBAQCBzdGF0aWMgaW50IHJ2dV9lbmFibGVfc3Jpb3Yoc3RydWN0IHJ2dSAqcnZ1KVxuIFx0aWYgKGVycikge1xuIFx0XHRydnVfZGlzYWJsZV9hZnZmX2ludHIocnZ1KTtcbiBcdFx0cnZ1X21ib3hfZGVzdHJveShcdTAwMjZydnUtXHUwMDNlYWZ2Zl93cV9pbmZvKTtcbiYjNDM7XHRcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIFRZUEVfQUZWRik7XG4gXHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXG5AQCAtMzY4MSw2ICYjNDM7MzY4Nyw3IEBAIHN0YXRpYyBpbnQgcnZ1X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4gZXJyX21ib3g6XG4gXHRydnVfbWJveF9kZXN0cm95KFx1MDAyNnJ2dS1cdTAwM2VhZnBmX3dxX2luZm8pO1xuIGVycl9od3NldHVwOlxuJiM0MztcdHJ2dV9mcmVlX2NuMjBrX21ib3hfbWVtb3J5KHJ2dSk7XG4gXHRydnVfY2d4X2V4aXQocnZ1KTtcbiBcdHJ2dV9md2RhdGFfZXhpdChydnUpO1xuIFx0cnZ1X21jc19leGl0KHJ2dSk7XG5AQCAtMzcyMyw5ICYjNDM7MzczMCw3IEBAIHN0YXRpYyB2b2lkIHJ2dV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHRwY2lfc2V0X2RydmRhdGEocGRldiwgTlVMTCk7XG4gXG4gXHRkZXZtX2tmcmVlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBydnUtXHUwMDNlaHcpO1xuLVx0aWYgKGlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSlcbi1cdFx0Y24yMGtfZnJlZV9tYm94X21lbW9yeShydnUpO1xuLVx0a2ZyZWUocnZ1LVx1MDAzZW5nX3J2dSk7XG4mIzQzO1x0cnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnkocnZ1KTtcbiBcdGRldm1fa2ZyZWUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJ2dSk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmRldmljZV9ib3VuZCwgMCk7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEyOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIFNtYXJ0TklDL1NvQy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzBiMTNlMDRkMTE4YTU2ZjUwYjY0M2YwYmZjODViNWUzYzZiNzFmMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDIxIDEyOjMzOjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvYXBpLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaAppbmRleCA0Mjg1YjVkNmE2YTI5Li5mMzZhMWQ1ZjIzNmY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaApAQCAtMjEsNiAmIzQzOzIxLDcgQEAgaW50IGNuMjBrX3J2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSwgaW50IG51bSk7CiBpbnQgY24yMGtfcnZ1X2dldF9tYm94X3JlZ2lvbnMoc3RydWN0IHJ2dSAqcnZ1LCB2b2lkICoqbWJveF9hZGRyLAogCQkJICAgICAgIGludCBudW0sIGludCB0eXBlLCB1bnNpZ25lZCBsb25nICpwZl9ibWFwKTsKIHZvaWQgY24yMGtfZnJlZV9tYm94X21lbW9yeShzdHJ1Y3QgcnZ1ICpydnUpOwomIzQzO3ZvaWQgY24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlKHN0cnVjdCBydnUgKnJ2dSwgaW50IHR5cGUpOwogaW50IGNuMjBrX3JlZ2lzdGVyX2FmcGZfbWJveF9pbnRyKHN0cnVjdCBydnUgKnJ2dSk7CiBpbnQgY24yMGtfcmVnaXN0ZXJfYWZ2Zl9tYm94X2ludHIoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGZfdmVjX3N0YXJ0KTsKIHZvaWQgY24yMGtfcnZ1X2VuYWJsZV9tYm94X2ludHIoc3RydWN0IHJ2dSAqcnZ1KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMKaW5kZXggNzE0MDFkZWMwZDc3Ni4uMDFmMzJhZGFjNTk5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMKQEAgLTMzNSwxMyAmIzQzOzMzNSwzMCBAQCBpbnQgY24yMGtfcnZ1X21ib3hfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIGludCB0eXBlLCBpbnQgbmRldnMpCiAJcmV0dXJuIHJ2dV9hbGxvY19tYm94X21lbW9yeShydnUsIHR5cGUsIG5kZXZzLCBNQk9YX1NJWkUpOwogfQogCiYjNDM7dm9pZCBjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGUoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSkKJiM0Mzt7CiYjNDM7CWlmICghaXNfY24yMGsocnZ1LSZndDtwZGV2KSB8fCAhcnZ1LSZndDtuZ19ydnUpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXN3aXRjaCAodHlwZSkgewomIzQzOwljYXNlIFRZUEVfQUZQRjoKJiM0MzsJCXFtZW1fZnJlZShydnUtJmd0O2RldiwgcnZ1LSZndDtuZ19ydnUtJmd0O3BmX21ib3hfYWRkcik7CiYjNDM7CQlydnUtJmd0O25nX3J2dS0mZ3Q7cGZfbWJveF9hZGRyID0gTlVMTDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFRZUEVfQUZWRjoKJiM0MzsJCXFtZW1fZnJlZShydnUtJmd0O2RldiwgcnZ1LSZndDtuZ19ydnUtJmd0O3ZmX21ib3hfYWRkcik7CiYjNDM7CQlydnUtJmd0O25nX3J2dS0mZ3Q7dmZfbWJveF9hZGRyID0gTlVMTDsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7fQomIzQzOwogdm9pZCBjbjIwa19mcmVlX21ib3hfbWVtb3J5KHN0cnVjdCBydnUgKnJ2dSkKIHsKIAlpZiAoIWlzX2NuMjBrKHJ2dS0mZ3Q7cGRldikpCiAJCXJldHVybjsKIAotCXFtZW1fZnJlZShydnUtJmd0O2RldiwgcnZ1LSZndDtuZ19ydnUtJmd0O3BmX21ib3hfYWRkcik7Ci0JcW1lbV9mcmVlKHJ2dS0mZ3Q7ZGV2LCBydnUtJmd0O25nX3J2dS0mZ3Q7dmZfbWJveF9hZGRyKTsKJiM0MzsJY24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlKHJ2dSwgVFlQRV9BRlBGKTsKJiM0MzsJY24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlKHJ2dSwgVFlQRV9BRlZGKTsKIH0KIAogdm9pZCBjbjIwa19ydnVfZGlzYWJsZV9hZnZmX2ludHIoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdmZzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYwppbmRleCBmZmJhNTZlZThhNjBjLi5hMGQ1MzVhMTcyOGVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYwpAQCAtMjU4NSwxMiAmIzQzOzI1ODUsNiBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdywKIAlpZiAoIXBmX2JtYXApCiAJCXJldHVybiAtRU5PTUVNOwogCi0JbmdfcnZ1X21ib3ggPSBremFsbG9jX29iaigqbmdfcnZ1X21ib3gpOwotCWlmICghbmdfcnZ1X21ib3gpIHsKLQkJZXJyID0gLUVOT01FTTsKLQkJZ290byBmcmVlX2JpdG1hcDsKLQl9Ci0KIAkvKiBSVlUgVkZzICovCiAJaWYgKHR5cGUgPT0gVFlQRV9BRlZGKQogCQliaXRtYXBfc2V0KHBmX2JtYXAsIDAsIG51bSk7CkBAIC0yNjA0LDE1ICYjNDM7MjU5OCwyMiBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdywKIAkJfQogCX0KIAotCXJ2dS0mZ3Q7bmdfcnZ1ID0gbmdfcnZ1X21ib3g7CiYjNDM7CWlmICghcnZ1LSZndDtuZ19ydnUpIHsKJiM0MzsJCW5nX3J2dV9tYm94ID0gZGV2bV9remFsbG9jKHJ2dS0mZ3Q7ZGV2LCBzaXplb2YoKm5nX3J2dV9tYm94KSwgR0ZQX0tFUk5FTCk7CiYjNDM7CQlpZiAoIW5nX3J2dV9tYm94KSB7CiYjNDM7CQkJZXJyID0gLUVOT01FTTsKJiM0MzsJCQlnb3RvIGZyZWVfYml0bWFwOwomIzQzOwkJfQomIzQzOwomIzQzOwkJcnZ1LSZndDtuZ19ydnUgPSBuZ19ydnVfbWJveDsKIAotCXJ2dS0mZ3Q7bmdfcnZ1LSZndDtydnVfbWJveF9vcHMgPSAmYW1wO3J2dV9tYm94X29wczsKJiM0MzsJCXJ2dS0mZ3Q7bmdfcnZ1LSZndDtydnVfbWJveF9vcHMgPSAmYW1wO3J2dV9tYm94X29wczsKJiM0MzsJCW11dGV4X2luaXQoJmFtcDtydnUtJmd0O21ib3hfbG9jayk7CiYjNDM7CX0KIAogCWVyciA9IGNuMjBrX3J2dV9tYm94X2luaXQocnZ1LCB0eXBlLCBudW0pOwogCWlmIChlcnIpCi0JCWdvdG8gZnJlZV9tZW07Ci0KLQltdXRleF9pbml0KCZhbXA7cnZ1LSZndDttYm94X2xvY2spOwomIzQzOwkJZ290byBmcmVlX2JpdG1hcDsKIAogCW1ib3hfcmVnaW9ucyA9IGtjYWxsb2MobnVtLCBzaXplb2Yodm9pZCBfX2lvbWVtICopLCBHRlBfS0VSTkVMKTsKIAlpZiAoIW1ib3hfcmVnaW9ucykgewpAQCAtMjcwMiwxNCAmIzQzOzI3MDMsMTggQEAgc3RhdGljIGludCBydnVfbWJveF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1ib3hfd3FfaW5mbyAqbXcsCiBmcmVlX3JlZ2lvbnM6CiAJa2ZyZWUobWJveF9yZWdpb25zKTsKIGZyZWVfcW1lbToKLQljbjIwa19mcmVlX21ib3hfbWVtb3J5KHJ2dSk7Ci1mcmVlX21lbToKLQlrZnJlZShydnUtJmd0O25nX3J2dSk7CiYjNDM7CWNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIHR5cGUpOwogZnJlZV9iaXRtYXA6CiAJYml0bWFwX2ZyZWUocGZfYm1hcCk7CiAJcmV0dXJuIGVycjsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJ2dV9mcmVlX2NuMjBrX21ib3hfbWVtb3J5KHN0cnVjdCBydnUgKnJ2dSkKJiM0Mzt7CiYjNDM7CWlmIChpc19jbjIwayhydnUtJmd0O3BkZXYpKQomIzQzOwkJY24yMGtfZnJlZV9tYm94X21lbW9yeShydnUpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHJ2dV9tYm94X2Rlc3Ryb3koc3RydWN0IG1ib3hfd3FfaW5mbyAqbXcpCiB7CiAJc3RydWN0IG90eDJfbWJveCAqbWJveCA9ICZhbXA7bXctJmd0O21ib3g7CkBAIC0zNTE5LDYgJiM0MzszNTI0LDcgQEAgc3RhdGljIGludCBydnVfZW5hYmxlX3NyaW92KHN0cnVjdCBydnUgKnJ2dSkKIAlpZiAoZXJyKSB7CiAJCXJ2dV9kaXNhYmxlX2FmdmZfaW50cihydnUpOwogCQlydnVfbWJveF9kZXN0cm95KCZhbXA7cnZ1LSZndDthZnZmX3dxX2luZm8pOwomIzQzOwkJY24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlKHJ2dSwgVFlQRV9BRlZGKTsKIAkJcmV0dXJuIGVycjsKIAl9CiAKQEAgLTM2ODEsNiAmIzQzOzM2ODcsNyBAQCBzdGF0aWMgaW50IHJ2dV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKQogZXJyX21ib3g6CiAJcnZ1X21ib3hfZGVzdHJveSgmYW1wO3J2dS0mZ3Q7YWZwZl93cV9pbmZvKTsKIGVycl9od3NldHVwOgomIzQzOwlydnVfZnJlZV9jbjIwa19tYm94X21lbW9yeShydnUpOwogCXJ2dV9jZ3hfZXhpdChydnUpOwogCXJ2dV9md2RhdGFfZXhpdChydnUpOwogCXJ2dV9tY3NfZXhpdChydnUpOwpAQCAtMzcyMyw5ICYjNDM7MzczMCw3IEBAIHN0YXRpYyB2b2lkIHJ2dV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJcGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpOwogCiAJZGV2bV9rZnJlZSgmYW1wO3BkZXYtJmd0O2RldiwgcnZ1LSZndDtodyk7Ci0JaWYgKGlzX2NuMjBrKHJ2dS0mZ3Q7cGRldikpCi0JCWNuMjBrX2ZyZWVfbWJveF9tZW1vcnkocnZ1KTsKLQlrZnJlZShydnUtJmd0O25nX3J2dSk7CiYjNDM7CXJ2dV9mcmVlX2NuMjBrX21ib3hfbWVtb3J5KHJ2dSk7CiAJZGV2bV9rZnJlZSgmYW1wO3BkZXYtJmd0O2RldiwgcnZ1KTsKIAlhdG9taWNfc2V0KCZhbXA7ZGV2aWNlX2JvdW5kLCAwKTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTI6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA5MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0IG5lZWRzIGEgZnV6emluZyBhc3Nlc3NtZW50LiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlcyBhcmUgaW4gYGFwaS5oYCwgYG1ib3hfaW5pdC5jYCwgYW5kIGBydnUuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgZm9jdXNpbmcgb24gbWVtb3J5IGxlYWsgZml4ZXMgYW5kIGFsbG9jYXRpb24gaXNzdWVzIHRpZWQgdG8gYG5nX3J2dV9tYm94YCBhbmQgYGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZWAuCgpMb29raW5nIGNsb3NlciwgdGhlIGtleSBjaGFuZ2VzIGludm9sdmUgcmVwbGFjaW5nIGBremFsbG9jX29iamAgKHdoaWNoIEkgc3VzcGVjdCB3YXMgYSBNYXJ2ZWxsLXNwZWNpZmljIG1hY3JvIOKAkyBpbnRlcmVzdGluZywgZ29vZCBjYXRjaCBvbiB0aGF0KSB3aXRoIGBkZXZtX2t6YWxsb2NgIGluIGBydnVfbWJveF9pbml0YCwgYW5kIGFkZGluZyBmdW5jdGlvbnMgbGlrZSBgY24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlYCBhbmQgYHJ2dV9mcmVlX2NuMjBrX21ib3hfbWVtb3J5YCB0byBoYW5kbGUgbWVtb3J5IGRlYWxsb2NhdGlvbiBtb3JlIGNsZWFubHkuIFRoZXJlIGFyZSBhbHNvIHVwZGF0ZXMgdG8gZXJyb3IgcGF0aHMgaW4gYHJ2dV9yZW1vdmVgIGFuZCBgcnZ1X3Byb2JlYC4gQWxsIG1lbW9yeSBtYW5hZ2VtZW50IHJlbGF0ZWQuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCwgaXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgdGhlc2UgZml4ZXMgYXJlIGNyaXRpY2FsIGZvciBzdGFiaWxpdHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlICphY3R1YWwqIE9jdGVvblRYMiBoYXJkd2FyZS4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGl0IHdhcnJhbnQgZnV6emluZz8KClRoZSBpbnN0cnVjdGlvbnMgY2xlYXJseSBzdGF0ZSB0aGF0IHdlIHNob3VsZCBza2lwIGZ1enppbmcgcGF0Y2hlcyB0aGF0IGRlYWwgd2l0aCB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycywgZXNwZWNpYWxseSB0aG9zZSB0aGF0IGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gUUVNVS4gVGhpbmtpbmcgYWJvdXQgaXQsIHRoZSBPY3Rlb25UWDIgaXMgYSBTb0MvTklDLCBhbmQgdGhlcmUgaXMgbm8gd2F5IGluIFFFTVUgdG8gZW11bGF0ZSB0aGUgT2N0ZW9uVFgyLiBTbywgaXQmIzM5O3MgZGVmaW5pdGVseSBpbiB0aGF0ICYjMzQ7cmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUmIzM0OyBjYXRlZ29yeS4KClRoZXJlZm9yZSwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3ksIGFuZCB0aGUgZnV6emluZyBleGNsdXNpb24gY3JpdGVyaWEsIEkgdGhpbmsgd2UgY2FuIGNvbmZpZGVudGx5IG1hcmsgdGhpcyBvbmUgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgd2lsbCBxdWlja2x5IHZlcmlmeSB0aGF0IGBvY3Rlb250eDJgIGlzIHJlYWNoYWJsZSwgYW5kIHRoZW4gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMjozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvY3Rlb250eDImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9MTY5PWNvbmZpZyBTS1kyX0RFQlVHXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTE3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzoxODA6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy0xODEtc291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL01ha2VmaWxlPTE1PW9iai15XHRcdCYjNDM7PSBvY3Rlb25fZXBfdmYvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL01ha2VmaWxlOjE2Om9iai15XHRcdCYjNDM7PSBvY3Rlb250eDIvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL01ha2VmaWxlLTE3LW9iai15XHRcdCYjNDM7PSBwcmVzdGVyYS9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyODojZGVmaW5lIERFQlVHRlNfRElSX05BTUUgXCYjMzQ7b2N0ZW9udHgyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM9NDAxMz1zdGF0aWMgY29uc3QgY2hhciAqcnZ1X2dldF9kYmdfZGlyX25hbWUoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtNDAyMC1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6NDAyMTpcdFx0cmV0dXJuIFwmIzM0O29jdGVvbnR4MlwmIzM0OztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtNDAyMi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RldmxpbmsuYy0xNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZXZsaW5rLmM6MTY6I2RlZmluZSBEUlZfTkFNRSBcJiMzNDtvY3Rlb250eDItYWZcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZXZsaW5rLmMtMTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlPTE4PXJ2dV9uaWNwZi0kKENPTkZJR19YRlJNX09GRkxPQUQpICYjNDM7PSBjbjEwa19pcHNlYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU6MjA6Y2NmbGFncy15ICYjNDM7PSAtSSQoc3JjdHJlZSkvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC0xNy0jaW5jbHVkZSBcdTAwM2NsaW51eC9zb2MvbWFydmVsbC9zaWxpY29ucy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDoxODojaW5jbHVkZSBcdTAwM2NsaW51eC9zb2MvbWFydmVsbC9vY3Rlb250eDIvYXNtLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTE5LSNpbmNsdWRlIFx1MDAzY25ldC9tYWNzZWMuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYz0xMTE1PXN0YXRpYyBpbnQgb3R4Ml9xb3NfdmFsaWRhdGVfcXVhbnR1bShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUzMiBxdWFudHVtKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYy0xMTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jOjExMjA6XHQvKiBNYXggUm91bmQgcm9iaW4gd2VpZ2h0IHN1cHBvcnRlZCBieSBvY3Rlb250eDIgYW5kIENOMTBLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmMtMTEyMS1cdCAqIGlzIGRpZmZlcmVudC4gVmFsaWRhdGUgYWNjb3JkaW5nbHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDUyCgkJCQkJCQlvdXRwdXQ6IDkzCgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdGFyZ2V0ZWQgYXQgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZSwgYSBkcml2ZXIgdGhhdCBkaXJlY3RseSBpbnRlcmFjdHMgd2l0aCB0aGUgT2N0ZW9uVFgyJiMzOTtzIGFyY2hpdGVjdHVyZS4gVGhlIGtleSBxdWVzdGlvbiwgdGhlIG9uZSB0aGF0IG1ha2VzIG9yIGJyZWFrcyB3aGV0aGVyIEkgc2hvdWxkIGV2ZW4gYm90aGVyIGFuYWx5emluZyB0aGlzIGZvciBmdXp6aW5nIHB1cnBvc2VzLCBpcyB3aGV0aGVyIHRoaXMgZHJpdmVyIGlzIGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBBbmQgdGhlIGluc3RydWN0aW9ucyBhcmUgY3J5c3RhbCBjbGVhciBvbiB0aGlzIHBvaW50OiBubywgaXQmIzM5O3Mgbm90LiBUaGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgc3RhdGUgdGhhdCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSB3aXRoaW4gZHJpdmVycyBvZiB0aGlzIG5hdHVyZSwgZHJpdmVycyBmb3IgdGhpbmdzIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgKnJlcXVpcmUqIGFjdHVhbCBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLCB0aGVuIHRoZSBXb3J0aEZ1enppbmcgdmFsdWUgbXVzdCBiZSBzZXQgdG8gZmFsc2UuIFNpbmNlIHRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGFuZCBpc24mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhvc2UgaW5zdHJ1Y3Rpb25zLiBUaGVyZWZvcmUsIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZXNvdXJjZXMgbmVlZGVkIHRvIHRydWx5IHJ1biB0aGlzIGNvZGUgZG9uJiMzOTt0IGV4aXN0IGluIGEgdXNhYmxlIGZ1enppbmcgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTI6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIFNtYXJ0TklDL1NvQy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIFNtYXJ0TklDL1NvQy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEyOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMjozMzo1MC42MjkzODM2MTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE5ODIyNzMyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIGEgU21hcnROSUMvU29DLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBzbyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBhbmQgZnV6emVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEyOjMzOjUwLjYyOTM4OTI2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk5ODY3Nzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzBiMTNlMDRkMTE4YTU2ZjUwYjY0M2YwYmZjODViNWUzYzZiNzFmM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxMjozMzo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2FwaS5oXFxuaW5kZXggNDI4NWI1ZDZhNmEyOS4uZjM2YTFkNWYyMzZmNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2FwaS5oXFxuQEAgLTIxLDYgKzIxLDcgQEAgaW50IGNuMjBrX3J2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSwgaW50IG51bSk7XFxuIGludCBjbjIwa19ydnVfZ2V0X21ib3hfcmVnaW9ucyhzdHJ1Y3QgcnZ1ICpydnUsIHZvaWQgKiptYm94X2FkZHIsXFxuIFxcdFxcdFxcdCAgICAgICBpbnQgbnVtLCBpbnQgdHlwZSwgdW5zaWduZWQgbG9uZyAqcGZfYm1hcCk7XFxuIHZvaWQgY24yMGtfZnJlZV9tYm94X21lbW9yeShzdHJ1Y3QgcnZ1ICpydnUpO1xcbit2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShzdHJ1Y3QgcnZ1ICpydnUsIGludCB0eXBlKTtcXG4gaW50IGNuMjBrX3JlZ2lzdGVyX2FmcGZfbWJveF9pbnRyKHN0cnVjdCBydnUgKnJ2dSk7XFxuIGludCBjbjIwa19yZWdpc3Rlcl9hZnZmX21ib3hfaW50cihzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZl92ZWNfc3RhcnQpO1xcbiB2b2lkIGNuMjBrX3J2dV9lbmFibGVfbWJveF9pbnRyKHN0cnVjdCBydnUgKnJ2dSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmNcXG5pbmRleCA3MTQwMWRlYzBkNzc2Li4wMWYzMmFkYWM1OTkyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmNcXG5AQCAtMzM1LDEzICszMzUsMzAgQEAgaW50IGNuMjBrX3J2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSwgaW50IG5kZXZzKVxcbiBcXHRyZXR1cm4gcnZ1X2FsbG9jX21ib3hfbWVtb3J5KHJ2dSwgdHlwZSwgbmRldnMsIE1CT1hfU0laRSk7XFxuIH1cXG4gXFxuK3ZvaWQgY24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlKHN0cnVjdCBydnUgKnJ2dSwgaW50IHR5cGUpXFxuK3tcXG4rXFx0aWYgKCFpc19jbjIwayhydnUtXFx1MDAzZXBkZXYpIHx8ICFydnUtXFx1MDAzZW5nX3J2dSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0c3dpdGNoICh0eXBlKSB7XFxuK1xcdGNhc2UgVFlQRV9BRlBGOlxcbitcXHRcXHRxbWVtX2ZyZWUocnZ1LVxcdTAwM2VkZXYsIHJ2dS1cXHUwMDNlbmdfcnZ1LVxcdTAwM2VwZl9tYm94X2FkZHIpO1xcbitcXHRcXHRydnUtXFx1MDAzZW5nX3J2dS1cXHUwMDNlcGZfbWJveF9hZGRyID0gTlVMTDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgVFlQRV9BRlZGOlxcbitcXHRcXHRxbWVtX2ZyZWUocnZ1LVxcdTAwM2VkZXYsIHJ2dS1cXHUwMDNlbmdfcnZ1LVxcdTAwM2V2Zl9tYm94X2FkZHIpO1xcbitcXHRcXHRydnUtXFx1MDAzZW5nX3J2dS1cXHUwMDNldmZfbWJveF9hZGRyID0gTlVMTDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rfVxcbitcXG4gdm9pZCBjbjIwa19mcmVlX21ib3hfbWVtb3J5KHN0cnVjdCBydnUgKnJ2dSlcXG4ge1xcbiBcXHRpZiAoIWlzX2NuMjBrKHJ2dS1cXHUwMDNlcGRldikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdHFtZW1fZnJlZShydnUtXFx1MDAzZWRldiwgcnZ1LVxcdTAwM2VuZ19ydnUtXFx1MDAzZXBmX21ib3hfYWRkcik7XFxuLVxcdHFtZW1fZnJlZShydnUtXFx1MDAzZWRldiwgcnZ1LVxcdTAwM2VuZ19ydnUtXFx1MDAzZXZmX21ib3hfYWRkcik7XFxuK1xcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIFRZUEVfQUZQRik7XFxuK1xcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIFRZUEVfQUZWRik7XFxuIH1cXG4gXFxuIHZvaWQgY24yMGtfcnZ1X2Rpc2FibGVfYWZ2Zl9pbnRyKHN0cnVjdCBydnUgKnJ2dSwgaW50IHZmcylcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuY1xcbmluZGV4IGZmYmE1NmVlOGE2MGMuLmEwZDUzNWExNzI4ZWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuY1xcbkBAIC0yNTg1LDEyICsyNTg1LDYgQEAgc3RhdGljIGludCBydnVfbWJveF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1ib3hfd3FfaW5mbyAqbXcsXFxuIFxcdGlmICghcGZfYm1hcClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRuZ19ydnVfbWJveCA9IGt6YWxsb2Nfb2JqKCpuZ19ydnVfbWJveCk7XFxuLVxcdGlmICghbmdfcnZ1X21ib3gpIHtcXG4tXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4tXFx0XFx0Z290byBmcmVlX2JpdG1hcDtcXG4tXFx0fVxcbi1cXG4gXFx0LyogUlZVIFZGcyAqL1xcbiBcXHRpZiAodHlwZSA9PSBUWVBFX0FGVkYpXFxuIFxcdFxcdGJpdG1hcF9zZXQocGZfYm1hcCwgMCwgbnVtKTtcXG5AQCAtMjYwNCwxNSArMjU5OCwyMiBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdyxcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHRydnUtXFx1MDAzZW5nX3J2dSA9IG5nX3J2dV9tYm94O1xcbitcXHRpZiAoIXJ2dS1cXHUwMDNlbmdfcnZ1KSB7XFxuK1xcdFxcdG5nX3J2dV9tYm94ID0gZGV2bV9remFsbG9jKHJ2dS1cXHUwMDNlZGV2LCBzaXplb2YoKm5nX3J2dV9tYm94KSwgR0ZQX0tFUk5FTCk7XFxuK1xcdFxcdGlmICghbmdfcnZ1X21ib3gpIHtcXG4rXFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4rXFx0XFx0XFx0Z290byBmcmVlX2JpdG1hcDtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cnZ1LVxcdTAwM2VuZ19ydnUgPSBuZ19ydnVfbWJveDtcXG4gXFxuLVxcdHJ2dS1cXHUwMDNlbmdfcnZ1LVxcdTAwM2VydnVfbWJveF9vcHMgPSBcXHUwMDI2cnZ1X21ib3hfb3BzO1xcbitcXHRcXHRydnUtXFx1MDAzZW5nX3J2dS1cXHUwMDNlcnZ1X21ib3hfb3BzID0gXFx1MDAyNnJ2dV9tYm94X29wcztcXG4rXFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2cnZ1LVxcdTAwM2VtYm94X2xvY2spO1xcbitcXHR9XFxuIFxcbiBcXHRlcnIgPSBjbjIwa19ydnVfbWJveF9pbml0KHJ2dSwgdHlwZSwgbnVtKTtcXG4gXFx0aWYgKGVycilcXG4tXFx0XFx0Z290byBmcmVlX21lbTtcXG4tXFxuLVxcdG11dGV4X2luaXQoXFx1MDAyNnJ2dS1cXHUwMDNlbWJveF9sb2NrKTtcXG4rXFx0XFx0Z290byBmcmVlX2JpdG1hcDtcXG4gXFxuIFxcdG1ib3hfcmVnaW9ucyA9IGtjYWxsb2MobnVtLCBzaXplb2Yodm9pZCBfX2lvbWVtICopLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFtYm94X3JlZ2lvbnMpIHtcXG5AQCAtMjcwMiwxNCArMjcwMywxOCBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdyxcXG4gZnJlZV9yZWdpb25zOlxcbiBcXHRrZnJlZShtYm94X3JlZ2lvbnMpO1xcbiBmcmVlX3FtZW06XFxuLVxcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkocnZ1KTtcXG4tZnJlZV9tZW06XFxuLVxcdGtmcmVlKHJ2dS1cXHUwMDNlbmdfcnZ1KTtcXG4rXFx0Y24yMGtfZnJlZV9tYm94X21lbW9yeV90eXBlKHJ2dSwgdHlwZSk7XFxuIGZyZWVfYml0bWFwOlxcbiBcXHRiaXRtYXBfZnJlZShwZl9ibWFwKTtcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnkoc3RydWN0IHJ2dSAqcnZ1KVxcbit7XFxuK1xcdGlmIChpc19jbjIwayhydnUtXFx1MDAzZXBkZXYpKVxcbitcXHRcXHRjbjIwa19mcmVlX21ib3hfbWVtb3J5KHJ2dSk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHJ2dV9tYm94X2Rlc3Ryb3koc3RydWN0IG1ib3hfd3FfaW5mbyAqbXcpXFxuIHtcXG4gXFx0c3RydWN0IG90eDJfbWJveCAqbWJveCA9IFxcdTAwMjZtdy1cXHUwMDNlbWJveDtcXG5AQCAtMzUxOSw2ICszNTI0LDcgQEAgc3RhdGljIGludCBydnVfZW5hYmxlX3NyaW92KHN0cnVjdCBydnUgKnJ2dSlcXG4gXFx0aWYgKGVycikge1xcbiBcXHRcXHRydnVfZGlzYWJsZV9hZnZmX2ludHIocnZ1KTtcXG4gXFx0XFx0cnZ1X21ib3hfZGVzdHJveShcXHUwMDI2cnZ1LVxcdTAwM2VhZnZmX3dxX2luZm8pO1xcbitcXHRcXHRjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGUocnZ1LCBUWVBFX0FGVkYpO1xcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHR9XFxuIFxcbkBAIC0zNjgxLDYgKzM2ODcsNyBAQCBzdGF0aWMgaW50IHJ2dV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbiBlcnJfbWJveDpcXG4gXFx0cnZ1X21ib3hfZGVzdHJveShcXHUwMDI2cnZ1LVxcdTAwM2VhZnBmX3dxX2luZm8pO1xcbiBlcnJfaHdzZXR1cDpcXG4rXFx0cnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnkocnZ1KTtcXG4gXFx0cnZ1X2NneF9leGl0KHJ2dSk7XFxuIFxcdHJ2dV9md2RhdGFfZXhpdChydnUpO1xcbiBcXHRydnVfbWNzX2V4aXQocnZ1KTtcXG5AQCAtMzcyMyw5ICszNzMwLDcgQEAgc3RhdGljIHZvaWQgcnZ1X3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gXFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpO1xcbiBcXG4gXFx0ZGV2bV9rZnJlZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBydnUtXFx1MDAzZWh3KTtcXG4tXFx0aWYgKGlzX2NuMjBrKHJ2dS1cXHUwMDNlcGRldikpXFxuLVxcdFxcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkocnZ1KTtcXG4tXFx0a2ZyZWUocnZ1LVxcdTAwM2VuZ19ydnUpO1xcbitcXHRydnVfZnJlZV9jbjIwa19tYm94X21lbW9yeShydnUpO1xcbiBcXHRkZXZtX2tmcmVlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHJ2dSk7XFxuIFxcdGF0b21pY19zZXQoXFx1MDAyNmRldmljZV9ib3VuZCwgMCk7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTI6MzM6NTEuMjI5OTQzNjIzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTM1OTc2NDkwOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIGEgU21hcnROSUMvU29DLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBzbyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBhbmQgZnV6emVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcwYjEzZTA0ZDExOGE1NmY1MGI2NDNmMGJmYzg1YjVlM2M2YjcxZjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxMjozMzo0OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2FwaS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvYXBpLmhcbmluZGV4IDQyODViNWQ2YTZhMjkuLmYzNmExZDVmMjM2ZjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9hcGkuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvYXBpLmhcbkBAIC0yMSw2ICsyMSw3IEBAIGludCBjbjIwa19ydnVfbWJveF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgaW50IHR5cGUsIGludCBudW0pO1xuIGludCBjbjIwa19ydnVfZ2V0X21ib3hfcmVnaW9ucyhzdHJ1Y3QgcnZ1ICpydnUsIHZvaWQgKiptYm94X2FkZHIsXG4gXHRcdFx0ICAgICAgIGludCBudW0sIGludCB0eXBlLCB1bnNpZ25lZCBsb25nICpwZl9ibWFwKTtcbiB2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkoc3RydWN0IHJ2dSAqcnZ1KTtcbit2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShzdHJ1Y3QgcnZ1ICpydnUsIGludCB0eXBlKTtcbiBpbnQgY24yMGtfcmVnaXN0ZXJfYWZwZl9tYm94X2ludHIoc3RydWN0IHJ2dSAqcnZ1KTtcbiBpbnQgY24yMGtfcmVnaXN0ZXJfYWZ2Zl9tYm94X2ludHIoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGZfdmVjX3N0YXJ0KTtcbiB2b2lkIGNuMjBrX3J2dV9lbmFibGVfbWJveF9pbnRyKHN0cnVjdCBydnUgKnJ2dSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuY1xuaW5kZXggNzE0MDFkZWMwZDc3Ni4uMDFmMzJhZGFjNTk5MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuY1xuQEAgLTMzNSwxMyArMzM1LDMwIEBAIGludCBjbjIwa19ydnVfbWJveF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgaW50IHR5cGUsIGludCBuZGV2cylcbiBcdHJldHVybiBydnVfYWxsb2NfbWJveF9tZW1vcnkocnZ1LCB0eXBlLCBuZGV2cywgTUJPWF9TSVpFKTtcbiB9XG4gXG4rdm9pZCBjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGUoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSlcbit7XG4rXHRpZiAoIWlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSB8fCAhcnZ1LVx1MDAzZW5nX3J2dSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0c3dpdGNoICh0eXBlKSB7XG4rXHRjYXNlIFRZUEVfQUZQRjpcbitcdFx0cW1lbV9mcmVlKHJ2dS1cdTAwM2VkZXYsIHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNlcGZfbWJveF9hZGRyKTtcbitcdFx0cnZ1LVx1MDAzZW5nX3J2dS1cdTAwM2VwZl9tYm94X2FkZHIgPSBOVUxMO1xuK1x0XHRicmVhaztcbitcdGNhc2UgVFlQRV9BRlZGOlxuK1x0XHRxbWVtX2ZyZWUocnZ1LVx1MDAzZWRldiwgcnZ1LVx1MDAzZW5nX3J2dS1cdTAwM2V2Zl9tYm94X2FkZHIpO1xuK1x0XHRydnUtXHUwMDNlbmdfcnZ1LVx1MDAzZXZmX21ib3hfYWRkciA9IE5VTEw7XG4rXHRcdGJyZWFrO1xuK1x0fVxuK31cbitcbiB2b2lkIGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkoc3RydWN0IHJ2dSAqcnZ1KVxuIHtcbiBcdGlmICghaXNfY24yMGsocnZ1LVx1MDAzZXBkZXYpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRxbWVtX2ZyZWUocnZ1LVx1MDAzZWRldiwgcnZ1LVx1MDAzZW5nX3J2dS1cdTAwM2VwZl9tYm94X2FkZHIpO1xuLVx0cW1lbV9mcmVlKHJ2dS1cdTAwM2VkZXYsIHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNldmZfbWJveF9hZGRyKTtcbitcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIFRZUEVfQUZQRik7XG4rXHRjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGUocnZ1LCBUWVBFX0FGVkYpO1xuIH1cbiBcbiB2b2lkIGNuMjBrX3J2dV9kaXNhYmxlX2FmdmZfaW50cihzdHJ1Y3QgcnZ1ICpydnUsIGludCB2ZnMpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuY1xuaW5kZXggZmZiYTU2ZWU4YTYwYy4uYTBkNTM1YTE3MjhlZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuY1xuQEAgLTI1ODUsMTIgKzI1ODUsNiBAQCBzdGF0aWMgaW50IHJ2dV9tYm94X2luaXQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbWJveF93cV9pbmZvICptdyxcbiBcdGlmICghcGZfYm1hcClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRuZ19ydnVfbWJveCA9IGt6YWxsb2Nfb2JqKCpuZ19ydnVfbWJveCk7XG4tXHRpZiAoIW5nX3J2dV9tYm94KSB7XG4tXHRcdGVyciA9IC1FTk9NRU07XG4tXHRcdGdvdG8gZnJlZV9iaXRtYXA7XG4tXHR9XG4tXG4gXHQvKiBSVlUgVkZzICovXG4gXHRpZiAodHlwZSA9PSBUWVBFX0FGVkYpXG4gXHRcdGJpdG1hcF9zZXQocGZfYm1hcCwgMCwgbnVtKTtcbkBAIC0yNjA0LDE1ICsyNTk4LDIyIEBAIHN0YXRpYyBpbnQgcnZ1X21ib3hfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtYm94X3dxX2luZm8gKm13LFxuIFx0XHR9XG4gXHR9XG4gXG4tXHRydnUtXHUwMDNlbmdfcnZ1ID0gbmdfcnZ1X21ib3g7XG4rXHRpZiAoIXJ2dS1cdTAwM2VuZ19ydnUpIHtcbitcdFx0bmdfcnZ1X21ib3ggPSBkZXZtX2t6YWxsb2MocnZ1LVx1MDAzZWRldiwgc2l6ZW9mKCpuZ19ydnVfbWJveCksIEdGUF9LRVJORUwpO1xuK1x0XHRpZiAoIW5nX3J2dV9tYm94KSB7XG4rXHRcdFx0ZXJyID0gLUVOT01FTTtcbitcdFx0XHRnb3RvIGZyZWVfYml0bWFwO1xuK1x0XHR9XG4rXG4rXHRcdHJ2dS1cdTAwM2VuZ19ydnUgPSBuZ19ydnVfbWJveDtcbiBcbi1cdHJ2dS1cdTAwM2VuZ19ydnUtXHUwMDNlcnZ1X21ib3hfb3BzID0gXHUwMDI2cnZ1X21ib3hfb3BzO1xuK1x0XHRydnUtXHUwMDNlbmdfcnZ1LVx1MDAzZXJ2dV9tYm94X29wcyA9IFx1MDAyNnJ2dV9tYm94X29wcztcbitcdFx0bXV0ZXhfaW5pdChcdTAwMjZydnUtXHUwMDNlbWJveF9sb2NrKTtcbitcdH1cbiBcbiBcdGVyciA9IGNuMjBrX3J2dV9tYm94X2luaXQocnZ1LCB0eXBlLCBudW0pO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBmcmVlX21lbTtcbi1cbi1cdG11dGV4X2luaXQoXHUwMDI2cnZ1LVx1MDAzZW1ib3hfbG9jayk7XG4rXHRcdGdvdG8gZnJlZV9iaXRtYXA7XG4gXG4gXHRtYm94X3JlZ2lvbnMgPSBrY2FsbG9jKG51bSwgc2l6ZW9mKHZvaWQgX19pb21lbSAqKSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIW1ib3hfcmVnaW9ucykge1xuQEAgLTI3MDIsMTQgKzI3MDMsMTggQEAgc3RhdGljIGludCBydnVfbWJveF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1ib3hfd3FfaW5mbyAqbXcsXG4gZnJlZV9yZWdpb25zOlxuIFx0a2ZyZWUobWJveF9yZWdpb25zKTtcbiBmcmVlX3FtZW06XG4tXHRjbjIwa19mcmVlX21ib3hfbWVtb3J5KHJ2dSk7XG4tZnJlZV9tZW06XG4tXHRrZnJlZShydnUtXHUwMDNlbmdfcnZ1KTtcbitcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZShydnUsIHR5cGUpO1xuIGZyZWVfYml0bWFwOlxuIFx0Yml0bWFwX2ZyZWUocGZfYm1hcCk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBydnVfZnJlZV9jbjIwa19tYm94X21lbW9yeShzdHJ1Y3QgcnZ1ICpydnUpXG4re1xuK1x0aWYgKGlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSlcbitcdFx0Y24yMGtfZnJlZV9tYm94X21lbW9yeShydnUpO1xuK31cbitcbiBzdGF0aWMgdm9pZCBydnVfbWJveF9kZXN0cm95KHN0cnVjdCBtYm94X3dxX2luZm8gKm13KVxuIHtcbiBcdHN0cnVjdCBvdHgyX21ib3ggKm1ib3ggPSBcdTAwMjZtdy1cdTAwM2VtYm94O1xuQEAgLTM1MTksNiArMzUyNCw3IEBAIHN0YXRpYyBpbnQgcnZ1X2VuYWJsZV9zcmlvdihzdHJ1Y3QgcnZ1ICpydnUpXG4gXHRpZiAoZXJyKSB7XG4gXHRcdHJ2dV9kaXNhYmxlX2FmdmZfaW50cihydnUpO1xuIFx0XHRydnVfbWJveF9kZXN0cm95KFx1MDAyNnJ2dS1cdTAwM2VhZnZmX3dxX2luZm8pO1xuK1x0XHRjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGUocnZ1LCBUWVBFX0FGVkYpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuQEAgLTM2ODEsNiArMzY4Nyw3IEBAIHN0YXRpYyBpbnQgcnZ1X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4gZXJyX21ib3g6XG4gXHRydnVfbWJveF9kZXN0cm95KFx1MDAyNnJ2dS1cdTAwM2VhZnBmX3dxX2luZm8pO1xuIGVycl9od3NldHVwOlxuK1x0cnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnkocnZ1KTtcbiBcdHJ2dV9jZ3hfZXhpdChydnUpO1xuIFx0cnZ1X2Z3ZGF0YV9leGl0KHJ2dSk7XG4gXHRydnVfbWNzX2V4aXQocnZ1KTtcbkBAIC0zNzIzLDkgKzM3MzAsNyBAQCBzdGF0aWMgdm9pZCBydnVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpO1xuIFxuIFx0ZGV2bV9rZnJlZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcnZ1LVx1MDAzZWh3KTtcbi1cdGlmIChpc19jbjIwayhydnUtXHUwMDNlcGRldikpXG4tXHRcdGNuMjBrX2ZyZWVfbWJveF9tZW1vcnkocnZ1KTtcbi1cdGtmcmVlKHJ2dS1cdTAwM2VuZ19ydnUpO1xuK1x0cnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnkocnZ1KTtcbiBcdGRldm1fa2ZyZWUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJ2dSk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmRldmljZV9ib3VuZCwgMCk7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTI6MzM6NTEuMjI5OTQ0ODczWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcwMjE0Nzc1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCBuZWVkcyBhIGZ1enppbmcgYXNzZXNzbWVudC4gSXQncyB0b3VjaGluZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlcyBhcmUgaW4gYGFwaS5oYCwgYG1ib3hfaW5pdC5jYCwgYW5kIGBydnUuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgZm9jdXNpbmcgb24gbWVtb3J5IGxlYWsgZml4ZXMgYW5kIGFsbG9jYXRpb24gaXNzdWVzIHRpZWQgdG8gYG5nX3J2dV9tYm94YCBhbmQgYGNuMjBrX2ZyZWVfbWJveF9tZW1vcnlfdHlwZWAuXG5cbkxvb2tpbmcgY2xvc2VyLCB0aGUga2V5IGNoYW5nZXMgaW52b2x2ZSByZXBsYWNpbmcgYGt6YWxsb2Nfb2JqYCAod2hpY2ggSSBzdXNwZWN0IHdhcyBhIE1hcnZlbGwtc3BlY2lmaWMgbWFjcm8g4oCTIGludGVyZXN0aW5nLCBnb29kIGNhdGNoIG9uIHRoYXQpIHdpdGggYGRldm1fa3phbGxvY2AgaW4gYHJ2dV9tYm94X2luaXRgLCBhbmQgYWRkaW5nIGZ1bmN0aW9ucyBsaWtlIGBjbjIwa19mcmVlX21ib3hfbWVtb3J5X3R5cGVgIGFuZCBgcnZ1X2ZyZWVfY24yMGtfbWJveF9tZW1vcnlgIHRvIGhhbmRsZSBtZW1vcnkgZGVhbGxvY2F0aW9uIG1vcmUgY2xlYW5seS4gVGhlcmUgYXJlIGFsc28gdXBkYXRlcyB0byBlcnJvciBwYXRocyBpbiBgcnZ1X3JlbW92ZWAgYW5kIGBydnVfcHJvYmVgLiBBbGwgbWVtb3J5IG1hbmFnZW1lbnQgcmVsYXRlZC5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIGl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGF0IHRoZXNlIGZpeGVzIGFyZSBjcml0aWNhbCBmb3Igc3RhYmlsaXR5IGluIHRoZSBjb250ZXh0IG9mIHRoZSAqYWN0dWFsKiBPY3Rlb25UWDIgaGFyZHdhcmUuIFRoZSBxdWVzdGlvbiBpcywgZG9lcyBpdCB3YXJyYW50IGZ1enppbmc/XG5cblRoZSBpbnN0cnVjdGlvbnMgY2xlYXJseSBzdGF0ZSB0aGF0IHdlIHNob3VsZCBza2lwIGZ1enppbmcgcGF0Y2hlcyB0aGF0IGRlYWwgd2l0aCB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycywgZXNwZWNpYWxseSB0aG9zZSB0aGF0IGFyZW4ndCBlbXVsYXRlZCBpbiBRRU1VLiBUaGlua2luZyBhYm91dCBpdCwgdGhlIE9jdGVvblRYMiBpcyBhIFNvQy9OSUMsIGFuZCB0aGVyZSBpcyBubyB3YXkgaW4gUUVNVSB0byBlbXVsYXRlIHRoZSBPY3Rlb25UWDIuIFNvLCBpdCdzIGRlZmluaXRlbHkgaW4gdGhhdCBcInJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlXCIgY2F0ZWdvcnkuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3ksIGFuZCB0aGUgZnV6emluZyBleGNsdXNpb24gY3JpdGVyaWEsIEkgdGhpbmsgd2UgY2FuIGNvbmZpZGVudGx5IG1hcmsgdGhpcyBvbmUgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgd2lsbCBxdWlja2x5IHZlcmlmeSB0aGF0IGBvY3Rlb250eDJgIGlzIHJlYWNoYWJsZSwgYW5kIHRoZW4gY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEyOjMzOjU5LjkzMjA5NTcxNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTk1NjMxMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2N0ZW9udHgyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz0xNjk9Y29uZmlnIFNLWTJfREVCVUdcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy0xNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjE4MDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTE4MS1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL01ha2VmaWxlPTE1PW9iai15XFx0XFx0Kz0gb2N0ZW9uX2VwX3ZmL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvTWFrZWZpbGU6MTY6b2JqLXlcXHRcXHQrPSBvY3Rlb250eDIvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9NYWtlZmlsZS0xNy1vYmoteVxcdFxcdCs9IHByZXN0ZXJhL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jOjI4OiNkZWZpbmUgREVCVUdGU19ESVJfTkFNRSBcXFwib2N0ZW9udHgyXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTQwMTM9c3RhdGljIGNvbnN0IGNoYXIgKnJ2dV9nZXRfZGJnX2Rpcl9uYW1lKHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtNDAyMC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzo0MDIxOlxcdFxcdHJldHVybiBcXFwib2N0ZW9udHgyXFxcIjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTQwMjItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RldmxpbmsuYy0xNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGV2bGluay5jOjE2OiNkZWZpbmUgRFJWX05BTUUgXFxcIm9jdGVvbnR4Mi1hZlxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGV2bGluay5jLTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlPTE4PXJ2dV9uaWNwZi0kKENPTkZJR19YRlJNX09GRkxPQUQpICs9IGNuMTBrX2lwc2VjLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjIwOmNjZmxhZ3MteSArPSAtSSQoc3JjdHJlZSkvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTE3LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zb2MvbWFydmVsbC9zaWxpY29ucy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjE4OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9zb2MvbWFydmVsbC9vY3Rlb250eDIvYXNtLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtMTktI2luY2x1ZGUgXFx1MDAzY25ldC9tYWNzZWMuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYz0xMTE1PXN0YXRpYyBpbnQgb3R4Ml9xb3NfdmFsaWRhdGVfcXVhbnR1bShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUzMiBxdWFudHVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jLTExMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jOjExMjA6XFx0LyogTWF4IFJvdW5kIHJvYmluIHdlaWdodCBzdXBwb3J0ZWQgYnkgb2N0ZW9udHgyIGFuZCBDTjEwS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYy0xMTIxLVxcdCAqIGlzIGRpZmZlcmVudC4gVmFsaWRhdGUgYWNjb3JkaW5nbHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTI6MzQ6MDAuMDUxNjY3ODgzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3NTg4ODE0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0YXJnZXRlZCBhdCB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBpZWNlIG9mIGhhcmR3YXJlLCBhIGRyaXZlciB0aGF0IGRpcmVjdGx5IGludGVyYWN0cyB3aXRoIHRoZSBPY3Rlb25UWDIncyBhcmNoaXRlY3R1cmUuIFRoZSBrZXkgcXVlc3Rpb24sIHRoZSBvbmUgdGhhdCBtYWtlcyBvciBicmVha3Mgd2hldGhlciBJIHNob3VsZCBldmVuIGJvdGhlciBhbmFseXppbmcgdGhpcyBmb3IgZnV6emluZyBwdXJwb3NlcywgaXMgd2hldGhlciB0aGlzIGRyaXZlciBpcyBlbXVsYXRlZCB3aXRoaW4gUUVNVS4gQW5kIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNyeXN0YWwgY2xlYXIgb24gdGhpcyBwb2ludDogbm8sIGl0J3Mgbm90LiBUaGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgc3RhdGUgdGhhdCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSB3aXRoaW4gZHJpdmVycyBvZiB0aGlzIG5hdHVyZSwgZHJpdmVycyBmb3IgdGhpbmdzIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgKnJlcXVpcmUqIGFjdHVhbCBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLCB0aGVuIHRoZSBXb3J0aEZ1enppbmcgdmFsdWUgbXVzdCBiZSBzZXQgdG8gZmFsc2UuIFNpbmNlIHRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGFuZCBpc24ndCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBJJ20gZ29pbmcgdG8gZm9sbG93IHRob3NlIGluc3RydWN0aW9ucy4gVGhlcmVmb3JlLCBJIHdpbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVzb3VyY2VzIG5lZWRlZCB0byB0cnVseSBydW4gdGhpcyBjb2RlIGRvbid0IGV4aXN0IGluIGEgdXNhYmxlIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNTIsIk91dHB1dFRva2VucyI6OTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTI6MzQ6MDQuODI3NTYwNjk1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTMxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIFNtYXJ0TklDL1NvQy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIFNtYXJ0TklDL1NvQy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMjozNDowNC44Mjc1OTU0MjVaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg8vlh[1] Phase: Running StartedAt: 2026-08-21 12:34:16 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg8vlh[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-21 12:34:16 +0000 UTC FinishedAt: 2026-08-21 12:34:20 +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,}