Name: series-workflowk9bm2 Phase: Failed StartedAt: 2026-08-18 04:00:46 +0000 UTC FinishedAt: 2026-08-18 04:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk9bm2[0] Phase: Succeeded StartedAt: 2026-08-18 04:00:46 +0000 UTC FinishedAt: 2026-08-18 04:40:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk9bm2[0].run-triage Phase: Succeeded StartedAt: 2026-08-18 04:00:46 +0000 UTC FinishedAt: 2026-08-18 04:40:39 +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+CgkJCTx0ZD4yMDI2LzA4LzE4IDA0OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGVyZWZvcmUsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNDo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM0NTBlMDg0NmZmYjVhZDU5MmU2NWExNWI5YzEyMWM4NjI0YTczOTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNDo0MDoxOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmhcbmluZGV4IDcxNGU0N2Y2OGQ5MzIuLjk2ZTFiOTNmODEyMjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxuQEAgLTQyNyw3ICYjNDM7NDI3LDggQEAgTShNQ1NfQ1VTVE9NX1RBR19DRkdfR0VULCAweGEwMjEsIG1jc19jdXN0b21fdGFnX2NmZ19nZXQsXHRcdFx0XFxcbiBcbiAvKiBNZXNzYWdlcyBpbml0aWF0ZWQgYnkgQUYgKHJhbmdlIDB4QzAwIC0gMHhFRkYpICovXG4gI2RlZmluZSBNQk9YX1VQX0NHWF9NRVNTQUdFU1x0XHRcdFx0XHRcdFxcXG4tTShDR1hfTElOS19FVkVOVCxcdDB4QzAwLCBjZ3hfbGlua19ldmVudCwgY2d4X2xpbmtfaW5mb19tc2csIG1zZ19yc3ApXG4mIzQzO00oQ0dYX0xJTktfRVZFTlQsXHQweEMwMCwgY2d4X2xpbmtfZXZlbnQsIGNneF9saW5rX2luZm9fbXNnLCBtc2dfcnNwKSBcXFxuJiM0MztNKENHWF9QVFBfUlhfSU5GTyxcdDB4QzAxLCBjZ3hfcHRwX3J4X2luZm8sXHRjZ3hfcHRwX3J4X2luZm9fbXNnLCBtc2dfcnNwKVxuIFxuICNkZWZpbmUgTUJPWF9VUF9DUFRfTUVTU0FHRVNcdFx0XHRcdFx0XHRcXFxuIE0oQ1BUX0lOU1RfTE1UU1QsXHQweEQwMCwgY3B0X2luc3RfbG10c3QsIGNwdF9pbnN0X2xtdHN0X3JlcSwgbXNnX3JzcClcbkBAIC02NDcsNiAmIzQzOzY0OCwxMSBAQCBzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cge1xuIFx0c3RydWN0IGNneF9saW5rX3VzZXJfaW5mbyBsaW5rX2luZm87XG4gfTtcbiBcbiYjNDM7c3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cge1xuJiM0MztcdHN0cnVjdCBtYm94X21zZ2hkciBoZHI7XG4mIzQzO1x0dTggcHRwX2VuO1xuJiM0Mzt9O1xuJiM0MztcbiBzdHJ1Y3QgY2d4X3BhdXNlX2ZybV9jZmcge1xuIFx0c3RydWN0IG1ib3hfbXNnaGRyIGhkcjtcbiBcdHU4IHNldDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbmluZGV4IDg3ZDIxODg5ZGM0OWUuLmNiOTVmM2ZiNjBhZTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuQEAgLTgyMCw2ICYjNDM7ODIwLDI0IEBAIGludCBydnVfbWJveF9oYW5kbGVyX2NneF9wcm9taXNjX2Rpc2FibGUoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBjZ3hfbm90aWZ5X3VwX3B0cF9pbmZvKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBib29sIGVuYWJsZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2c7XG4mIzQzO1xuJiM0MztcdC8qIFNlbmQgbWJveCBtZXNzYWdlIHRvIFBGICovXG4mIzQzO1x0bXNnID0gb3R4Ml9tYm94X2FsbG9jX21zZ19jZ3hfcHRwX3J4X2luZm8ocnZ1LCBwZik7XG4mIzQzO1x0aWYgKCFtc2cpIHtcbiYjNDM7XHRcdGRldl9lcnIocnZ1LVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jIG1lc3NhZ2VcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bXNnLVx1MDAzZXB0cF9lbiA9IGVuYWJsZTtcbiYjNDM7XG4mIzQzO1x0b3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oXHUwMDI2cnZ1LVx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XG4mIzQzO1xuJiM0MztcdG90eDJfbWJveF9tc2dfc2VuZF91cChcdTAwMjZydnUtXHUwMDNlYWZwZl93cV9pbmZvLm1ib3hfdXAsIHBmKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSlcbiB7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTtcbkBAIC04MzcsNiAmIzQzOzg1NSw4IEBAIHN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxuIFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG4gXHRcdHJldHVybiAtRVBFUk07XG4gXG4mIzQzO1x0Y2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpO1xuJiM0MztcbiBcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbiBcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXG5pbmRleCBlZWNlZTYxMmI3YjJjLi4xM2I1NDI4N2ZhY2Y3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXG5AQCAtMjg2LDYgJiM0MzsyODYsNyBAQCBlbnVtIHZmcGVybSB7XG4gc3RydWN0IG90eDJfdmZfY29uZmlnIHtcbiBcdHN0cnVjdCBvdHgyX25pYyAqcGY7XG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGxpbmtfZXZlbnRfd29yaztcbiYjNDM7XHRzdHJ1Y3QgZGVsYXllZF93b3JrIHB0cF9pbmZvX3dvcms7XG4gXHRib29sIGludGZfZG93bjsgLyogaW50ZXJmYWNlIHdhcyBlaXRoZXIgY29uZmlndXJlZCBvciBub3QgKi9cbiBcdHU4IG1hY1tFVEhfQUxFTl07XG4gXHR1MTYgdmxhbjtcbkBAIC0zMjQsNiAmIzQzOzMyNSw3IEBAIHN0cnVjdCBvdHgyX3B0cCB7XG4gXHR1NjQgdGhyZXNoO1xuIFxuIFx0c3RydWN0IHB0cF9waW5fZGVzYyBleHR0c19jb25maWc7XG4mIzQzO1x0Ym9vbCBwdHBfZW47XG4gXHR1NjQgKCpjb252ZXJ0X3J4X3B0cF90c3RtcCkodTY0IHRpbWVzdGFtcCk7XG4gXHR1NjQgKCpjb252ZXJ0X3R4X3B0cF90c3RtcCkodTY0IHRpbWVzdGFtcCk7XG4gXHR1NjQgKCpwdHBfdHN0YW1wMm5zZWMpKGNvbnN0IHN0cnVjdCB0aW1lY291bnRlciAqdGltZV9jb3VudGVyLCB1NjQgdGltZXN0YW1wKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuY1xuaW5kZXggYzk5NWYyOTAwODU5MC4uOGUyNDQzMDQxZWU4YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcbkBAIC00NCw2ICYjNDM7NDQsNyBAQCBNT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBvdHgyX3BmX2lkX3RhYmxlKTtcbiBcbiBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuJiM0MztzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiBlbnVtIHtcbiBcdFRZUEVfUEZBRixcbkBAIC05NjAsNiAmIzQzOzk2MSwzMCBAQCBpbnQgb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X2xpbmtfZXZlbnQoc3RydWN0IG90eDJfbmljICpwZixcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7aW50IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyhzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuJiM0MztcdFx0XHRcdFx0IHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2csXG4mIzQzO1x0XHRcdFx0XHQgc3RydWN0IG1zZ19yc3AgKnJzcClcbiYjNDM7e1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBmLVx1MDAzZXB0cClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRwZi1cdTAwM2VwdHAtXHUwMDNlcHRwX2VuID0gbXNnLVx1MDAzZXB0cF9lbjtcbiYjNDM7XG4mIzQzO1x0Lyogbm90aWZ5IFZGcyBhYm91dCBwdHAgZXZlbnQgKi9cbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwY2lfbnVtX3ZmKHBmLVx1MDAzZXBkZXYpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWcgPSBcdTAwMjZwZi1cdTAwM2V2Zl9jb25maWdzW2ldO1xuJiM0MztcdFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZHdvcmsgPSBcdTAwMjZjb25maWctXHUwMDNlcHRwX2luZm9fd29yaztcbiYjNDM7XG4mIzQzO1x0XHRpZiAoY29uZmlnLVx1MDAzZWludGZfZG93bilcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKGR3b3JrLCBtc2Vjc190b19qaWZmaWVzKDEwMCkpO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90eDJfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBtYm94X21zZ2hkciAqcmVxKVxuIHtcbkBAIC0zMDQxLDYgJiM0MzszMDY2LDggQEAgc3RhdGljIGludCBvdHgyX3NyaW92X3ZmY2ZnX2luaXQoc3RydWN0IG90eDJfbmljICpwZilcbiBcdFx0cGYtXHUwMDNldmZfY29uZmlnc1tpXS50cnVzdGVkID0gZmFsc2U7XG4gXHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnBmLVx1MDAzZXZmX2NvbmZpZ3NbaV0ubGlua19ldmVudF93b3JrLFxuIFx0XHRcdFx0ICBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayk7XG4mIzQzO1x0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwZi1cdTAwM2V2Zl9jb25maWdzW2ldLnB0cF9pbmZvX3dvcmssXG4mIzQzO1x0XHRcdFx0ICBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2spO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMzA1NSw2ICYjNDM7MzA4Miw3IEBAIHN0YXRpYyB2b2lkIG90eDJfc3Jpb3ZfdmZjZmdfY2xlYW51cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNldG90YWxfdmZzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5saW5rX2V2ZW50X3dvcmspO1xuJiM0MztcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBmLVx1MDAzZXZmX2NvbmZpZ3NbaV0ucHRwX2luZm9fd29yayk7XG4gXHRcdG90eDJfc2V0X3ZmX3Blcm1pc3Npb25zKHBmLCBpLCBPVFgyX1JFU0VUX1ZGX1BFUk0pO1xuIFx0fVxuIH1cbkBAIC0zNDE3LDYgJiM0MzszNDQ1LDM3IEBAIHN0YXRpYyB2b2lkIG90eDJfdmZfbGlua19ldmVudF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VtYm94LmxvY2spO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICpyZXE7XG4mIzQzO1x0c3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWc7XG4mIzQzO1x0c3RydWN0IG1ib3hfbXNnaGRyICptc2doZHI7XG4mIzQzO1x0c3RydWN0IG90eDJfbmljICpwZjtcbiYjNDM7XHRpbnQgdmZfaWR4O1xuJiM0MztcbiYjNDM7XHRjb25maWcgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG90eDJfdmZfY29uZmlnLFxuJiM0MztcdFx0XHQgICAgICBwdHBfaW5mb193b3JrLndvcmspO1xuJiM0MztcdHZmX2lkeCA9IGNvbmZpZyAtIGNvbmZpZy1cdTAwM2VwZi1cdTAwM2V2Zl9jb25maWdzO1xuJiM0MztcdHBmID0gY29uZmlnLVx1MDAzZXBmO1xuJiM0MztcbiYjNDM7XHRpZiAoY29uZmlnLVx1MDAzZWludGZfZG93biB8fCAhcGYtXHUwMDNlcHRwKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRtc2doZHIgPSBvdHgyX21ib3hfYWxsb2NfbXNnX3JzcChcdTAwMjZwZi1cdTAwM2VtYm94X3BmdmZbMF0ubWJveF91cCwgdmZfaWR4LFxuJiM0MztcdFx0XHRcdFx0IHNpemVvZigqcmVxKSwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7XG4mIzQzO1x0aWYgKCFtc2doZHIpIHtcbiYjNDM7XHRcdGRldl9lcnIocGYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gY3JlYXRlIFZGJWQgcHRwIGluZm8gZXZlbnRcXG5cJiMzNDssIHZmX2lkeCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXEgPSAoc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cgKiltc2doZHI7XG4mIzQzO1x0cmVxLVx1MDAzZWhkci5pZCA9IE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTztcbiYjNDM7XHRyZXEtXHUwMDNlaGRyLnNpZyA9IE9UWDJfTUJPWF9SRVFfU0lHO1xuJiM0MztcdHJlcS1cdTAwM2VwdHBfZW4gPSBwZi1cdTAwM2VwdHAtXHUwMDNlcHRwX2VuO1xuJiM0MztcbiYjNDM7XHRvdHgyX3N5bmNfbWJveF91cF9tc2coXHUwMDI2cGYtXHUwMDNlbWJveF9wZnZmWzBdLCB2Zl9pZHgpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgb3R4Ml9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuY1xuaW5kZXggYjAyMmY1MmM2ODQ1MC4uNjBmODEwNjIwMDdiMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbkBAIC0xNDEsNiAmIzQzOzE0MSwyMCBAQCBzdGF0aWMgaW50IG90eDJ2Zl9wcm9jZXNzX21ib3hfbXNnX3VwKHN0cnVjdCBvdHgyX25pYyAqdmYsXG4gXHRcdGVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KFxuIFx0XHRcdFx0dmYsIChzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cgKilyZXEsIHJzcCk7XG4gXHRcdHJldHVybiBlcnI7XG4mIzQzO1x0Y2FzZSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk86XG4mIzQzO1x0XHRyc3AgPSAoc3RydWN0IG1zZ19yc3AgKilvdHgyX21ib3hfYWxsb2NfbXNnKFx1MDAyNnZmLVx1MDAzZW1ib3gubWJveF91cCxcbiYjNDM7XHRcdFx0XHRcdFx0MCwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7XG4mIzQzO1x0XHRpZiAoIXJzcClcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdFx0cnNwLVx1MDAzZWhkci5pZCA9IE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTztcbiYjNDM7XHRcdHJzcC1cdTAwM2VoZHIuc2lnID0gT1RYMl9NQk9YX1JTUF9TSUc7XG4mIzQzO1x0XHRyc3AtXHUwMDNlaGRyLnBjaWZ1bmMgPSByZXEtXHUwMDNlcGNpZnVuYztcbiYjNDM7XHRcdHJzcC1cdTAwM2VoZHIucmMgPSAwO1xuJiM0MztcdFx0ZXJyID0gb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X3B0cF9yeF9pbmZvKHZmLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgIChzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqKXJlcSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICByc3ApO1xuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcdGRlZmF1bHQ6XG4gXHRcdG90eDJfcmVwbHlfaW52YWxpZF9tc2coXHUwMDI2dmYtXHUwMDNlbWJveC5tYm94X3VwLCAwLCAwLCByZXEtXHUwMDNlaWQpO1xuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNDo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGVyZWZvcmUsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM0NTBlMDg0NmZmYjVhZDU5MmU2NWExNWI5YzEyMWM4NjI0YTczOTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAwNDo0MDoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaAppbmRleCA3MTRlNDdmNjhkOTMyLi45NmUxYjkzZjgxMjIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWJveC5oCkBAIC00MjcsNyAmIzQzOzQyNyw4IEBAIE0oTUNTX0NVU1RPTV9UQUdfQ0ZHX0dFVCwgMHhhMDIxLCBtY3NfY3VzdG9tX3RhZ19jZmdfZ2V0LAkJCVwKIAogLyogTWVzc2FnZXMgaW5pdGlhdGVkIGJ5IEFGIChyYW5nZSAweEMwMCAtIDB4RUZGKSAqLwogI2RlZmluZSBNQk9YX1VQX0NHWF9NRVNTQUdFUwkJCQkJCVwKLU0oQ0dYX0xJTktfRVZFTlQsCTB4QzAwLCBjZ3hfbGlua19ldmVudCwgY2d4X2xpbmtfaW5mb19tc2csIG1zZ19yc3ApCiYjNDM7TShDR1hfTElOS19FVkVOVCwJMHhDMDAsIGNneF9saW5rX2V2ZW50LCBjZ3hfbGlua19pbmZvX21zZywgbXNnX3JzcCkgXAomIzQzO00oQ0dYX1BUUF9SWF9JTkZPLAkweEMwMSwgY2d4X3B0cF9yeF9pbmZvLAljZ3hfcHRwX3J4X2luZm9fbXNnLCBtc2dfcnNwKQogCiAjZGVmaW5lIE1CT1hfVVBfQ1BUX01FU1NBR0VTCQkJCQkJXAogTShDUFRfSU5TVF9MTVRTVCwJMHhEMDAsIGNwdF9pbnN0X2xtdHN0LCBjcHRfaW5zdF9sbXRzdF9yZXEsIG1zZ19yc3ApCkBAIC02NDcsNiAmIzQzOzY0OCwxMSBAQCBzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cgewogCXN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGlua19pbmZvOwogfTsKIAomIzQzO3N0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnIHsKJiM0MzsJc3RydWN0IG1ib3hfbXNnaGRyIGhkcjsKJiM0MzsJdTggcHRwX2VuOwomIzQzO307CiYjNDM7CiBzdHJ1Y3QgY2d4X3BhdXNlX2ZybV9jZmcgewogCXN0cnVjdCBtYm94X21zZ2hkciBoZHI7CiAJdTggc2V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jCmluZGV4IDg3ZDIxODg5ZGM0OWUuLmNiOTVmM2ZiNjBhZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMKQEAgLTgyMCw2ICYjNDM7ODIwLDI0IEBAIGludCBydnVfbWJveF9oYW5kbGVyX2NneF9wcm9taXNjX2Rpc2FibGUoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIHZvaWQgY2d4X25vdGlmeV91cF9wdHBfaW5mbyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgYm9vbCBlbmFibGUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnOwomIzQzOwomIzQzOwkvKiBTZW5kIG1ib3ggbWVzc2FnZSB0byBQRiAqLwomIzQzOwltc2cgPSBvdHgyX21ib3hfYWxsb2NfbXNnX2NneF9wdHBfcnhfaW5mbyhydnUsIHBmKTsKJiM0MzsJaWYgKCFtc2cpIHsKJiM0MzsJCWRldl9lcnIocnZ1LSZndDtkZXYsICYjMzQ7ZmFpbGVkIHRvIGFsbG9jIG1lc3NhZ2VcbiYjMzQ7KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwltc2ctJmd0O3B0cF9lbiA9IGVuYWJsZTsKJiM0MzsKJiM0MzsJb3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oJmFtcDtydnUtJmd0O2FmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7CiYjNDM7CiYjNDM7CW90eDJfbWJveF9tc2dfc2VuZF91cCgmYW1wO3J2dS0mZ3Q7YWZwZl93cV9pbmZvLm1ib3hfdXAsIHBmKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSkKIHsKIAlzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTsKQEAgLTgzNyw2ICYjNDM7ODU1LDggQEAgc3RhdGljIGludCBydnVfY2d4X3B0cF9yeF9jZmcoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBlbmFibGUpCiAJaWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpCiAJCXJldHVybiAtRVBFUk07CiAKJiM0MzsJY2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpOwomIzQzOwogCXJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LSZndDtwZjJjZ3hsbWFjX21hcFtwZl0sICZhbXA7Y2d4X2lkLCAmYW1wO2xtYWNfaWQpOwogCWNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaAppbmRleCBlZWNlZTYxMmI3YjJjLi4xM2I1NDI4N2ZhY2Y3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaApAQCAtMjg2LDYgJiM0MzsyODYsNyBAQCBlbnVtIHZmcGVybSB7CiBzdHJ1Y3Qgb3R4Ml92Zl9jb25maWcgewogCXN0cnVjdCBvdHgyX25pYyAqcGY7CiAJc3RydWN0IGRlbGF5ZWRfd29yayBsaW5rX2V2ZW50X3dvcms7CiYjNDM7CXN0cnVjdCBkZWxheWVkX3dvcmsgcHRwX2luZm9fd29yazsKIAlib29sIGludGZfZG93bjsgLyogaW50ZXJmYWNlIHdhcyBlaXRoZXIgY29uZmlndXJlZCBvciBub3QgKi8KIAl1OCBtYWNbRVRIX0FMRU5dOwogCXUxNiB2bGFuOwpAQCAtMzI0LDYgJiM0MzszMjUsNyBAQCBzdHJ1Y3Qgb3R4Ml9wdHAgewogCXU2NCB0aHJlc2g7CiAKIAlzdHJ1Y3QgcHRwX3Bpbl9kZXNjIGV4dHRzX2NvbmZpZzsKJiM0MzsJYm9vbCBwdHBfZW47CiAJdTY0ICgqY29udmVydF9yeF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApOwogCXU2NCAoKmNvbnZlcnRfdHhfcHRwX3RzdG1wKSh1NjQgdGltZXN0YW1wKTsKIAl1NjQgKCpwdHBfdHN0YW1wMm5zZWMpKGNvbnN0IHN0cnVjdCB0aW1lY291bnRlciAqdGltZV9jb3VudGVyLCB1NjQgdGltZXN0YW1wKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jCmluZGV4IGM5OTVmMjkwMDg1OTAuLjhlMjQ0MzA0MWVlOGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYwpAQCAtNDQsNiAmIzQzOzQ0LDcgQEAgTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwgdjImIzM0Oyk7CiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3R4Ml9wZl9pZF90YWJsZSk7CiAKIHN0YXRpYyB2b2lkIG90eDJfdmZfbGlua19ldmVudF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiYjNDM7c3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKIGVudW0gewogCVRZUEVfUEZBRiwKQEAgLTk2MCw2ICYjNDM7OTYxLDMwIEBAIGludCBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfbGlua19ldmVudChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLAogCXJldHVybiAwOwogfQogCiYjNDM7aW50IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyhzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLAomIzQzOwkJCQkJIHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2csCiYjNDM7CQkJCQkgc3RydWN0IG1zZ19yc3AgKnJzcCkKJiM0Mzt7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlpZiAoIXBmLSZndDtwdHApCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJcGYtJmd0O3B0cC0mZ3Q7cHRwX2VuID0gbXNnLSZndDtwdHBfZW47CiYjNDM7CiYjNDM7CS8qIG5vdGlmeSBWRnMgYWJvdXQgcHRwIGV2ZW50ICovCiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBwY2lfbnVtX3ZmKHBmLSZndDtwZGV2KTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXN0cnVjdCBvdHgyX3ZmX2NvbmZpZyAqY29uZmlnID0gJmFtcDtwZi0mZ3Q7dmZfY29uZmlnc1tpXTsKJiM0MzsJCXN0cnVjdCBkZWxheWVkX3dvcmsgKmR3b3JrID0gJmFtcDtjb25maWctJmd0O3B0cF9pbmZvX3dvcms7CiYjNDM7CiYjNDM7CQlpZiAoY29uZmlnLSZndDtpbnRmX2Rvd24pCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoZHdvcmssIG1zZWNzX3RvX2ppZmZpZXMoMTAwKSk7CiYjNDM7CX0KJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHgyX3Byb2Nlc3NfbWJveF9tc2dfdXAoc3RydWN0IG90eDJfbmljICpwZiwKIAkJCQkgICAgc3RydWN0IG1ib3hfbXNnaGRyICpyZXEpCiB7CkBAIC0zMDQxLDYgJiM0MzszMDY2LDggQEAgc3RhdGljIGludCBvdHgyX3NyaW92X3ZmY2ZnX2luaXQoc3RydWN0IG90eDJfbmljICpwZikKIAkJcGYtJmd0O3ZmX2NvbmZpZ3NbaV0udHJ1c3RlZCA9IGZhbHNlOwogCQlJTklUX0RFTEFZRURfV09SSygmYW1wO3BmLSZndDt2Zl9jb25maWdzW2ldLmxpbmtfZXZlbnRfd29yaywKIAkJCQkgIG90eDJfdmZfbGlua19ldmVudF90YXNrKTsKJiM0MzsJCUlOSVRfREVMQVlFRF9XT1JLKCZhbXA7cGYtJmd0O3ZmX2NvbmZpZ3NbaV0ucHRwX2luZm9fd29yaywKJiM0MzsJCQkJICBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2spOwogCX0KIAogCXJldHVybiAwOwpAQCAtMzA1NSw2ICYjNDM7MzA4Miw3IEBAIHN0YXRpYyB2b2lkIG90eDJfc3Jpb3ZfdmZjZmdfY2xlYW51cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKQogCiAJZm9yIChpID0gMDsgaSAmbHQ7IHBmLSZndDt0b3RhbF92ZnM7IGkmIzQzOyYjNDM7KSB7CiAJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO3BmLSZndDt2Zl9jb25maWdzW2ldLmxpbmtfZXZlbnRfd29yayk7CiYjNDM7CQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtwZi0mZ3Q7dmZfY29uZmlnc1tpXS5wdHBfaW5mb193b3JrKTsKIAkJb3R4Ml9zZXRfdmZfcGVybWlzc2lvbnMocGYsIGksIE9UWDJfUkVTRVRfVkZfUEVSTSk7CiAJfQogfQpAQCAtMzQxNyw2ICYjNDM7MzQ0NSwzNyBAQCBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJbXV0ZXhfdW5sb2NrKCZhbXA7cGYtJmd0O21ib3gubG9jayk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQomIzQzO3sKJiM0MzsJc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cgKnJlcTsKJiM0MzsJc3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWc7CiYjNDM7CXN0cnVjdCBtYm94X21zZ2hkciAqbXNnaGRyOwomIzQzOwlzdHJ1Y3Qgb3R4Ml9uaWMgKnBmOwomIzQzOwlpbnQgdmZfaWR4OwomIzQzOwomIzQzOwljb25maWcgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG90eDJfdmZfY29uZmlnLAomIzQzOwkJCSAgICAgIHB0cF9pbmZvX3dvcmsud29yayk7CiYjNDM7CXZmX2lkeCA9IGNvbmZpZyAtIGNvbmZpZy0mZ3Q7cGYtJmd0O3ZmX2NvbmZpZ3M7CiYjNDM7CXBmID0gY29uZmlnLSZndDtwZjsKJiM0MzsKJiM0MzsJaWYgKGNvbmZpZy0mZ3Q7aW50Zl9kb3duIHx8ICFwZi0mZ3Q7cHRwKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltc2doZHIgPSBvdHgyX21ib3hfYWxsb2NfbXNnX3JzcCgmYW1wO3BmLSZndDttYm94X3BmdmZbMF0ubWJveF91cCwgdmZfaWR4LAomIzQzOwkJCQkJIHNpemVvZigqcmVxKSwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7CiYjNDM7CWlmICghbXNnaGRyKSB7CiYjNDM7CQlkZXZfZXJyKHBmLSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBWRiVkIHB0cCBpbmZvIGV2ZW50XG4mIzM0OywgdmZfaWR4KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXEgPSAoc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cgKiltc2doZHI7CiYjNDM7CXJlcS0mZ3Q7aGRyLmlkID0gTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPOwomIzQzOwlyZXEtJmd0O2hkci5zaWcgPSBPVFgyX01CT1hfUkVRX1NJRzsKJiM0MzsJcmVxLSZndDtwdHBfZW4gPSBwZi0mZ3Q7cHRwLSZndDtwdHBfZW47CiYjNDM7CiYjNDM7CW90eDJfc3luY19tYm94X3VwX21zZygmYW1wO3BmLSZndDttYm94X3BmdmZbMF0sIHZmX2lkeCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHgyX3NyaW92X2VuYWJsZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG51bXZmcykKIHsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMKaW5kZXggYjAyMmY1MmM2ODQ1MC4uNjBmODEwNjIwMDdiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jCkBAIC0xNDEsNiAmIzQzOzE0MSwyMCBAQCBzdGF0aWMgaW50IG90eDJ2Zl9wcm9jZXNzX21ib3hfbXNnX3VwKHN0cnVjdCBvdHgyX25pYyAqdmYsCiAJCWVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KAogCQkJCXZmLCAoc3RydWN0IGNneF9saW5rX2luZm9fbXNnICopcmVxLCByc3ApOwogCQlyZXR1cm4gZXJyOwomIzQzOwljYXNlIE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzoKJiM0MzsJCXJzcCA9IChzdHJ1Y3QgbXNnX3JzcCAqKW90eDJfbWJveF9hbGxvY19tc2coJmFtcDt2Zi0mZ3Q7bWJveC5tYm94X3VwLAomIzQzOwkJCQkJCTAsIHNpemVvZihzdHJ1Y3QgbXNnX3JzcCkpOwomIzQzOwkJaWYgKCFyc3ApCiYjNDM7CQkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CQlyc3AtJmd0O2hkci5pZCA9IE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzsKJiM0MzsJCXJzcC0mZ3Q7aGRyLnNpZyA9IE9UWDJfTUJPWF9SU1BfU0lHOwomIzQzOwkJcnNwLSZndDtoZHIucGNpZnVuYyA9IHJlcS0mZ3Q7cGNpZnVuYzsKJiM0MzsJCXJzcC0mZ3Q7aGRyLnJjID0gMDsKJiM0MzsJCWVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyh2ZiwKJiM0MzsJCQkJCQkJICAgKHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICopcmVxLAomIzQzOwkJCQkJCQkgICByc3ApOwomIzQzOwkJcmV0dXJuIGVycjsKIAlkZWZhdWx0OgogCQlvdHgyX3JlcGx5X2ludmFsaWRfbXNnKCZhbXA7dmYtJmd0O21ib3gubWJveF91cCwgMCwgMCwgcmVxLSZndDtpZCk7CiAJCXJldHVybiAtRU5PREVWOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQ1CgkJCQkJCQlvdXRwdXQ6IDcyCgkJCQkJCQl0aG91Z2h0czogNTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBhIG5ldyBtYWlsYm94IG1lc3NhZ2UsIGBDR1hfUFRQX1JYX0lORk9gLCB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLiBUaGUgY29kZSYjMzk7cyBzcHJlYWQgYWNyb3NzIGBydnVfY2d4LmNgLCBgb3R4Ml9wZi5jYCwgYW5kIGBvdHgyX3ZmLmNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBkZXNpZ25lZCBmb3IgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgTklDcy4KCk5vdywgdGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IGlmIHRoZSBwYXRjaCYjMzk7cyBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCAqcGh5c2ljYWwqIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZW4gaXQmIzM5O3Mgbm90IHdvcnRoIGZ1enppbmcsIGFuZCB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKVGhlIE9jdGVvblRYMiBkZWZpbml0ZWx5IGZpdHMgdGhhdCBkZXNjcmlwdGlvbi4gSXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyLCBhbmQgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGl0IHJlbGllcyBvbiBzcGVjaWZpYyBNYXJ2ZWxsIGhhcmR3YXJlIG9yLCBhdCBiZXN0LCBhIG5vbi1zdGFuZGFyZCBNYXJ2ZWxsLXNwZWNpZmljIGVtdWxhdGlvbiBlbnZpcm9ubWVudCB0aGF0IGlzbiYjMzk7dCByZXBsaWNhdGVkIGluIHNvbWV0aGluZyBsaWtlIGEgc3RhbmRhcmQgUUVNVSBzZXR1cC4gSSYjMzk7dmUgZG91YmxlLWNoZWNrZWQsIGFuZCB0aGVyZSYjMzk7cyBubyB3YXkgdG8gcmVsaWFibHkgcnVuIGFuZCB0ZXN0IHRoaXMgY29kZSBpbiB0aGUgdXN1YWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdlIHVzZSBmb3IgZnV6emluZywgbGlrZSBHQ0Ugb3IgdmFuaWxsYSBRRU1VLiBJdCYjMzk7cyBzaW1wbHkgdW5yZWFjaGFibGUuCgpUbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcsIEkgY2hlY2tlZCB0aGUgcGF0aCBhZ2FpbjogYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2AuIFllcCwgaXQmIzM5O3MgYSBzcGVjaWZpYyBFdGhlcm5ldCBkcml2ZXIuIE5vIGdlbmVyaWMgY29kZSBpcyB0b3VjaGVkLiBJIGNvbmZpcm1lZCB0aGlzIGJ5IGNoZWNraW5nIHRoZSBtb2RpZmllZCBmaWxlczogYGFmL21ib3guaGAsIGBhZi9ydnVfY2d4LmNgLCBgbmljL290eDJfY29tbW9uLmhgLCBgbmljL290eDJfcGYuY2AsIGFuZCBgbmljL290eDJfdmYuY2AuIEFsbCB0aG9zZSBmaWxlcyBhcmUgaW4gdGhlIGBtYXJ2ZWxsL29jdGVvbnR4MmAgZGlyZWN0b3J5LgoKVGhlcmVmb3JlLCB0aGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBtb2RpZmllcyBPY3Rlb25UWDIgY29kZSB0aGF0IG5lZWRzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cy4gU28sIHRoZSByZXN1bHQgaXMgYFdvcnRoRnV6emluZzogZmFsc2VgLiBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIHdpbGwgYmUgZW1wdHkuIEkmIzM5O2xsIHVzZSBgc2V0LXJlc3VsdHNgIHRvIHJlY29yZCB0aGlzIGFzc2Vzc21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDQ6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA0OjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNDo0MDoyMC41Nzc1MDkwNzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDYzMjEwNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGVyZWZvcmUsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDQ6NDA6MjAuNTc3NTEzODUyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzIyMzc4ODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzQ1MGUwODQ2ZmZiNWFkNTkyZTY1YTE1YjljMTIxYzg2MjRhNzM5MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNDo0MDoxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmhcXG5pbmRleCA3MTRlNDdmNjhkOTMyLi45NmUxYjkzZjgxMjIzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxcbkBAIC00MjcsNyArNDI3LDggQEAgTShNQ1NfQ1VTVE9NX1RBR19DRkdfR0VULCAweGEwMjEsIG1jc19jdXN0b21fdGFnX2NmZ19nZXQsXFx0XFx0XFx0XFxcXFxcbiBcXG4gLyogTWVzc2FnZXMgaW5pdGlhdGVkIGJ5IEFGIChyYW5nZSAweEMwMCAtIDB4RUZGKSAqL1xcbiAjZGVmaW5lIE1CT1hfVVBfQ0dYX01FU1NBR0VTXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1NKENHWF9MSU5LX0VWRU5ULFxcdDB4QzAwLCBjZ3hfbGlua19ldmVudCwgY2d4X2xpbmtfaW5mb19tc2csIG1zZ19yc3ApXFxuK00oQ0dYX0xJTktfRVZFTlQsXFx0MHhDMDAsIGNneF9saW5rX2V2ZW50LCBjZ3hfbGlua19pbmZvX21zZywgbXNnX3JzcCkgXFxcXFxcbitNKENHWF9QVFBfUlhfSU5GTyxcXHQweEMwMSwgY2d4X3B0cF9yeF9pbmZvLFxcdGNneF9wdHBfcnhfaW5mb19tc2csIG1zZ19yc3ApXFxuIFxcbiAjZGVmaW5lIE1CT1hfVVBfQ1BUX01FU1NBR0VTXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBNKENQVF9JTlNUX0xNVFNULFxcdDB4RDAwLCBjcHRfaW5zdF9sbXRzdCwgY3B0X2luc3RfbG10c3RfcmVxLCBtc2dfcnNwKVxcbkBAIC02NDcsNiArNjQ4LDExIEBAIHN0cnVjdCBjZ3hfbGlua19pbmZvX21zZyB7XFxuIFxcdHN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGlua19pbmZvO1xcbiB9O1xcbiBcXG4rc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cge1xcbitcXHRzdHJ1Y3QgbWJveF9tc2doZHIgaGRyO1xcbitcXHR1OCBwdHBfZW47XFxuK307XFxuK1xcbiBzdHJ1Y3QgY2d4X3BhdXNlX2ZybV9jZmcge1xcbiBcXHRzdHJ1Y3QgbWJveF9tc2doZHIgaGRyO1xcbiBcXHR1OCBzZXQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xcbmluZGV4IDg3ZDIxODg5ZGM0OWUuLmNiOTVmM2ZiNjBhZTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuQEAgLTgyMCw2ICs4MjAsMjQgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X3Byb21pc2NfZGlzYWJsZShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBjZ3hfbm90aWZ5X3VwX3B0cF9pbmZvKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBib29sIGVuYWJsZSlcXG4re1xcbitcXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnO1xcbitcXG4rXFx0LyogU2VuZCBtYm94IG1lc3NhZ2UgdG8gUEYgKi9cXG4rXFx0bXNnID0gb3R4Ml9tYm94X2FsbG9jX21zZ19jZ3hfcHRwX3J4X2luZm8ocnZ1LCBwZik7XFxuK1xcdGlmICghbXNnKSB7XFxuK1xcdFxcdGRldl9lcnIocnZ1LVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gYWxsb2MgbWVzc2FnZVxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0bXNnLVxcdTAwM2VwdHBfZW4gPSBlbmFibGU7XFxuK1xcbitcXHRvdHgyX21ib3hfd2FpdF9mb3JfemVybyhcXHUwMDI2cnZ1LVxcdTAwM2VhZnBmX3dxX2luZm8ubWJveF91cCwgcGYpO1xcbitcXG4rXFx0b3R4Ml9tYm94X21zZ19zZW5kX3VwKFxcdTAwMjZydnUtXFx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxcbiB7XFxuIFxcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpO1xcbkBAIC04MzcsNiArODU1LDggQEAgc3RhdGljIGludCBydnVfY2d4X3B0cF9yeF9jZmcoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBlbmFibGUpXFxuIFxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbiBcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiBcXG4rXFx0Y2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpO1xcbitcXG4gXFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXFx1MDAyNmNneF9pZCwgXFx1MDAyNmxtYWNfaWQpO1xcbiBcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXFxuaW5kZXggZWVjZWU2MTJiN2IyYy4uMTNiNTQyODdmYWNmNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXFxuQEAgLTI4Niw2ICsyODYsNyBAQCBlbnVtIHZmcGVybSB7XFxuIHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyB7XFxuIFxcdHN0cnVjdCBvdHgyX25pYyAqcGY7XFxuIFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgbGlua19ldmVudF93b3JrO1xcbitcXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHB0cF9pbmZvX3dvcms7XFxuIFxcdGJvb2wgaW50Zl9kb3duOyAvKiBpbnRlcmZhY2Ugd2FzIGVpdGhlciBjb25maWd1cmVkIG9yIG5vdCAqL1xcbiBcXHR1OCBtYWNbRVRIX0FMRU5dO1xcbiBcXHR1MTYgdmxhbjtcXG5AQCAtMzI0LDYgKzMyNSw3IEBAIHN0cnVjdCBvdHgyX3B0cCB7XFxuIFxcdHU2NCB0aHJlc2g7XFxuIFxcbiBcXHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIGV4dHRzX2NvbmZpZztcXG4rXFx0Ym9vbCBwdHBfZW47XFxuIFxcdHU2NCAoKmNvbnZlcnRfcnhfcHRwX3RzdG1wKSh1NjQgdGltZXN0YW1wKTtcXG4gXFx0dTY0ICgqY29udmVydF90eF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApO1xcbiBcXHR1NjQgKCpwdHBfdHN0YW1wMm5zZWMpKGNvbnN0IHN0cnVjdCB0aW1lY291bnRlciAqdGltZV9jb3VudGVyLCB1NjQgdGltZXN0YW1wKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcXG5pbmRleCBjOTk1ZjI5MDA4NTkwLi44ZTI0NDMwNDFlZThiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jXFxuQEAgLTQ0LDYgKzQ0LDcgQEAgTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3R4Ml9wZl9pZF90YWJsZSk7XFxuIFxcbiBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbitzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4gXFxuIGVudW0ge1xcbiBcXHRUWVBFX1BGQUYsXFxuQEAgLTk2MCw2ICs5NjEsMzAgQEAgaW50IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KHN0cnVjdCBvdHgyX25pYyAqcGYsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitpbnQgb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X3B0cF9yeF9pbmZvKHN0cnVjdCBvdHgyX25pYyAqcGYsXFxuK1xcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnLFxcbitcXHRcXHRcXHRcXHRcXHQgc3RydWN0IG1zZ19yc3AgKnJzcClcXG4re1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdGlmICghcGYtXFx1MDAzZXB0cClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRwZi1cXHUwMDNlcHRwLVxcdTAwM2VwdHBfZW4gPSBtc2ctXFx1MDAzZXB0cF9lbjtcXG4rXFxuK1xcdC8qIG5vdGlmeSBWRnMgYWJvdXQgcHRwIGV2ZW50ICovXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwY2lfbnVtX3ZmKHBmLVxcdTAwM2VwZGV2KTsgaSsrKSB7XFxuK1xcdFxcdHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyAqY29uZmlnID0gXFx1MDAyNnBmLVxcdTAwM2V2Zl9jb25maWdzW2ldO1xcbitcXHRcXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkd29yayA9IFxcdTAwMjZjb25maWctXFx1MDAzZXB0cF9pbmZvX3dvcms7XFxuK1xcbitcXHRcXHRpZiAoY29uZmlnLVxcdTAwM2VpbnRmX2Rvd24pXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKGR3b3JrLCBtc2Vjc190b19qaWZmaWVzKDEwMCkpO1xcbitcXHR9XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG90eDJfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1ib3hfbXNnaGRyICpyZXEpXFxuIHtcXG5AQCAtMzA0MSw2ICszMDY2LDggQEAgc3RhdGljIGludCBvdHgyX3NyaW92X3ZmY2ZnX2luaXQoc3RydWN0IG90eDJfbmljICpwZilcXG4gXFx0XFx0cGYtXFx1MDAzZXZmX2NvbmZpZ3NbaV0udHJ1c3RlZCA9IGZhbHNlO1xcbiBcXHRcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2cGYtXFx1MDAzZXZmX2NvbmZpZ3NbaV0ubGlua19ldmVudF93b3JrLFxcbiBcXHRcXHRcXHRcXHQgIG90eDJfdmZfbGlua19ldmVudF90YXNrKTtcXG4rXFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnBmLVxcdTAwM2V2Zl9jb25maWdzW2ldLnB0cF9pbmZvX3dvcmssXFxuK1xcdFxcdFxcdFxcdCAgb3R4Ml92Zl9wdHBfaW5mb190YXNrKTtcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTMwNTUsNiArMzA4Miw3IEBAIHN0YXRpYyB2b2lkIG90eDJfc3Jpb3ZfdmZjZmdfY2xlYW51cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHBmLVxcdTAwM2V0b3RhbF92ZnM7IGkrKykge1xcbiBcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnBmLVxcdTAwM2V2Zl9jb25maWdzW2ldLmxpbmtfZXZlbnRfd29yayk7XFxuK1xcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cGYtXFx1MDAzZXZmX2NvbmZpZ3NbaV0ucHRwX2luZm9fd29yayk7XFxuIFxcdFxcdG90eDJfc2V0X3ZmX3Blcm1pc3Npb25zKHBmLCBpLCBPVFgyX1JFU0VUX1ZGX1BFUk0pO1xcbiBcXHR9XFxuIH1cXG5AQCAtMzQxNyw2ICszNDQ1LDM3IEBAIHN0YXRpYyB2b2lkIG90eDJfdmZfbGlua19ldmVudF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwZi1cXHUwMDNlbWJveC5sb2NrKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4re1xcbitcXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqcmVxO1xcbitcXHRzdHJ1Y3Qgb3R4Ml92Zl9jb25maWcgKmNvbmZpZztcXG4rXFx0c3RydWN0IG1ib3hfbXNnaGRyICptc2doZHI7XFxuK1xcdHN0cnVjdCBvdHgyX25pYyAqcGY7XFxuK1xcdGludCB2Zl9pZHg7XFxuK1xcbitcXHRjb25maWcgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG90eDJfdmZfY29uZmlnLFxcbitcXHRcXHRcXHQgICAgICBwdHBfaW5mb193b3JrLndvcmspO1xcbitcXHR2Zl9pZHggPSBjb25maWcgLSBjb25maWctXFx1MDAzZXBmLVxcdTAwM2V2Zl9jb25maWdzO1xcbitcXHRwZiA9IGNvbmZpZy1cXHUwMDNlcGY7XFxuK1xcbitcXHRpZiAoY29uZmlnLVxcdTAwM2VpbnRmX2Rvd24gfHwgIXBmLVxcdTAwM2VwdHApXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdG1zZ2hkciA9IG90eDJfbWJveF9hbGxvY19tc2dfcnNwKFxcdTAwMjZwZi1cXHUwMDNlbWJveF9wZnZmWzBdLm1ib3hfdXAsIHZmX2lkeCxcXG4rXFx0XFx0XFx0XFx0XFx0IHNpemVvZigqcmVxKSwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7XFxuK1xcdGlmICghbXNnaGRyKSB7XFxuK1xcdFxcdGRldl9lcnIocGYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBjcmVhdGUgVkYlZCBwdHAgaW5mbyBldmVudFxcXFxuXFxcIiwgdmZfaWR4KTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRyZXEgPSAoc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cgKiltc2doZHI7XFxuK1xcdHJlcS1cXHUwMDNlaGRyLmlkID0gTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPO1xcbitcXHRyZXEtXFx1MDAzZWhkci5zaWcgPSBPVFgyX01CT1hfUkVRX1NJRztcXG4rXFx0cmVxLVxcdTAwM2VwdHBfZW4gPSBwZi1cXHUwMDNlcHRwLVxcdTAwM2VwdHBfZW47XFxuK1xcbitcXHRvdHgyX3N5bmNfbWJveF91cF9tc2coXFx1MDAyNnBmLVxcdTAwM2VtYm94X3BmdmZbMF0sIHZmX2lkeCk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgb3R4Ml9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpXFxuIHtcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcXG5pbmRleCBiMDIyZjUyYzY4NDUwLi42MGY4MTA2MjAwN2IyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jXFxuQEAgLTE0MSw2ICsxNDEsMjAgQEAgc3RhdGljIGludCBvdHgydmZfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnZmLFxcbiBcXHRcXHRlcnIgPSBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfbGlua19ldmVudChcXG4gXFx0XFx0XFx0XFx0dmYsIChzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cgKilyZXEsIHJzcCk7XFxuIFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdGNhc2UgTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPOlxcbitcXHRcXHRyc3AgPSAoc3RydWN0IG1zZ19yc3AgKilvdHgyX21ib3hfYWxsb2NfbXNnKFxcdTAwMjZ2Zi1cXHUwMDNlbWJveC5tYm94X3VwLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQwLCBzaXplb2Yoc3RydWN0IG1zZ19yc3ApKTtcXG4rXFx0XFx0aWYgKCFyc3ApXFxuK1xcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0XFx0cnNwLVxcdTAwM2VoZHIuaWQgPSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk87XFxuK1xcdFxcdHJzcC1cXHUwMDNlaGRyLnNpZyA9IE9UWDJfTUJPWF9SU1BfU0lHO1xcbitcXHRcXHRyc3AtXFx1MDAzZWhkci5wY2lmdW5jID0gcmVxLVxcdTAwM2VwY2lmdW5jO1xcbitcXHRcXHRyc3AtXFx1MDAzZWhkci5yYyA9IDA7XFxuK1xcdFxcdGVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyh2ZixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgKHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICopcmVxLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICByc3ApO1xcbitcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHRvdHgyX3JlcGx5X2ludmFsaWRfbXNnKFxcdTAwMjZ2Zi1cXHUwMDNlbWJveC5tYm94X3VwLCAwLCAwLCByZXEtXFx1MDAzZWlkKTtcXG4gXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA0OjQwOjIxLjkwMDYyNTg3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjcxNDAwODMxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBuZXR3b3JrIGRyaXZlciwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhlcmVmb3JlLCB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM0NTBlMDg0NmZmYjVhZDU5MmU2NWExNWI5YzEyMWM4NjI0YTczOTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNDo0MDoxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxuaW5kZXggNzE0ZTQ3ZjY4ZDkzMi4uOTZlMWI5M2Y4MTIyMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWJveC5oXG5AQCAtNDI3LDcgKzQyNyw4IEBAIE0oTUNTX0NVU1RPTV9UQUdfQ0ZHX0dFVCwgMHhhMDIxLCBtY3NfY3VzdG9tX3RhZ19jZmdfZ2V0LFx0XHRcdFxcXG4gXG4gLyogTWVzc2FnZXMgaW5pdGlhdGVkIGJ5IEFGIChyYW5nZSAweEMwMCAtIDB4RUZGKSAqL1xuICNkZWZpbmUgTUJPWF9VUF9DR1hfTUVTU0FHRVNcdFx0XHRcdFx0XHRcXFxuLU0oQ0dYX0xJTktfRVZFTlQsXHQweEMwMCwgY2d4X2xpbmtfZXZlbnQsIGNneF9saW5rX2luZm9fbXNnLCBtc2dfcnNwKVxuK00oQ0dYX0xJTktfRVZFTlQsXHQweEMwMCwgY2d4X2xpbmtfZXZlbnQsIGNneF9saW5rX2luZm9fbXNnLCBtc2dfcnNwKSBcXFxuK00oQ0dYX1BUUF9SWF9JTkZPLFx0MHhDMDEsIGNneF9wdHBfcnhfaW5mbyxcdGNneF9wdHBfcnhfaW5mb19tc2csIG1zZ19yc3ApXG4gXG4gI2RlZmluZSBNQk9YX1VQX0NQVF9NRVNTQUdFU1x0XHRcdFx0XHRcdFxcXG4gTShDUFRfSU5TVF9MTVRTVCxcdDB4RDAwLCBjcHRfaW5zdF9sbXRzdCwgY3B0X2luc3RfbG10c3RfcmVxLCBtc2dfcnNwKVxuQEAgLTY0Nyw2ICs2NDgsMTEgQEAgc3RydWN0IGNneF9saW5rX2luZm9fbXNnIHtcbiBcdHN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGlua19pbmZvO1xuIH07XG4gXG4rc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cge1xuK1x0c3RydWN0IG1ib3hfbXNnaGRyIGhkcjtcbitcdHU4IHB0cF9lbjtcbit9O1xuK1xuIHN0cnVjdCBjZ3hfcGF1c2VfZnJtX2NmZyB7XG4gXHRzdHJ1Y3QgbWJveF9tc2doZHIgaGRyO1xuIFx0dTggc2V0O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuaW5kZXggODdkMjE4ODlkYzQ5ZS4uY2I5NWYzZmI2MGFlNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG5AQCAtODIwLDYgKzgyMCwyNCBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfcHJvbWlzY19kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBjZ3hfbm90aWZ5X3VwX3B0cF9pbmZvKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBib29sIGVuYWJsZSlcbit7XG4rXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnO1xuK1xuK1x0LyogU2VuZCBtYm94IG1lc3NhZ2UgdG8gUEYgKi9cbitcdG1zZyA9IG90eDJfbWJveF9hbGxvY19tc2dfY2d4X3B0cF9yeF9pbmZvKHJ2dSwgcGYpO1xuK1x0aWYgKCFtc2cpIHtcbitcdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcImZhaWxlZCB0byBhbGxvYyBtZXNzYWdlXFxuXCIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRtc2ctXHUwMDNlcHRwX2VuID0gZW5hYmxlO1xuK1xuK1x0b3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oXHUwMDI2cnZ1LVx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XG4rXG4rXHRvdHgyX21ib3hfbXNnX3NlbmRfdXAoXHUwMDI2cnZ1LVx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxuIHtcbiBcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpO1xuQEAgLTgzNyw2ICs4NTUsOCBAQCBzdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSlcbiBcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFxuK1x0Y2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpO1xuK1xuIFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuIFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmhcbmluZGV4IGVlY2VlNjEyYjdiMmMuLjEzYjU0Mjg3ZmFjZjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmhcbkBAIC0yODYsNiArMjg2LDcgQEAgZW51bSB2ZnBlcm0ge1xuIHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyB7XG4gXHRzdHJ1Y3Qgb3R4Ml9uaWMgKnBmO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29yayBsaW5rX2V2ZW50X3dvcms7XG4rXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHB0cF9pbmZvX3dvcms7XG4gXHRib29sIGludGZfZG93bjsgLyogaW50ZXJmYWNlIHdhcyBlaXRoZXIgY29uZmlndXJlZCBvciBub3QgKi9cbiBcdHU4IG1hY1tFVEhfQUxFTl07XG4gXHR1MTYgdmxhbjtcbkBAIC0zMjQsNiArMzI1LDcgQEAgc3RydWN0IG90eDJfcHRwIHtcbiBcdHU2NCB0aHJlc2g7XG4gXG4gXHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIGV4dHRzX2NvbmZpZztcbitcdGJvb2wgcHRwX2VuO1xuIFx0dTY0ICgqY29udmVydF9yeF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApO1xuIFx0dTY0ICgqY29udmVydF90eF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApO1xuIFx0dTY0ICgqcHRwX3RzdGFtcDJuc2VjKShjb25zdCBzdHJ1Y3QgdGltZWNvdW50ZXIgKnRpbWVfY291bnRlciwgdTY0IHRpbWVzdGFtcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcbmluZGV4IGM5OTVmMjkwMDg1OTAuLjhlMjQ0MzA0MWVlOGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jXG5AQCAtNDQsNiArNDQsNyBAQCBNT0RVTEVfTElDRU5TRShcIkdQTCB2MlwiKTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3R4Ml9wZl9pZF90YWJsZSk7XG4gXG4gc3RhdGljIHZvaWQgb3R4Ml92Zl9saW5rX2V2ZW50X3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbitzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiBlbnVtIHtcbiBcdFRZUEVfUEZBRixcbkBAIC05NjAsNiArOTYxLDMwIEBAIGludCBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfbGlua19ldmVudChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK2ludCBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfcHRwX3J4X2luZm8oc3RydWN0IG90eDJfbmljICpwZixcbitcdFx0XHRcdFx0IHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2csXG4rXHRcdFx0XHRcdCBzdHJ1Y3QgbXNnX3JzcCAqcnNwKVxuK3tcbitcdGludCBpO1xuK1xuK1x0aWYgKCFwZi1cdTAwM2VwdHApXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cGYtXHUwMDNlcHRwLVx1MDAzZXB0cF9lbiA9IG1zZy1cdTAwM2VwdHBfZW47XG4rXG4rXHQvKiBub3RpZnkgVkZzIGFib3V0IHB0cCBldmVudCAqL1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGNpX251bV92ZihwZi1cdTAwM2VwZGV2KTsgaSsrKSB7XG4rXHRcdHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyAqY29uZmlnID0gXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXTtcbitcdFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZHdvcmsgPSBcdTAwMjZjb25maWctXHUwMDNlcHRwX2luZm9fd29yaztcbitcbitcdFx0aWYgKGNvbmZpZy1cdTAwM2VpbnRmX2Rvd24pXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhkd29yaywgbXNlY3NfdG9famlmZmllcygxMDApKTtcbitcdH1cbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgaW50IG90eDJfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBtYm94X21zZ2hkciAqcmVxKVxuIHtcbkBAIC0zMDQxLDYgKzMwNjYsOCBAQCBzdGF0aWMgaW50IG90eDJfc3Jpb3ZfdmZjZmdfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKVxuIFx0XHRwZi1cdTAwM2V2Zl9jb25maWdzW2ldLnRydXN0ZWQgPSBmYWxzZTtcbiBcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5saW5rX2V2ZW50X3dvcmssXG4gXHRcdFx0XHQgIG90eDJfdmZfbGlua19ldmVudF90YXNrKTtcbitcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5wdHBfaW5mb193b3JrLFxuK1x0XHRcdFx0ICBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2spO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMzA1NSw2ICszMDgyLDcgQEAgc3RhdGljIHZvaWQgb3R4Ml9zcmlvdl92ZmNmZ19jbGVhbnVwKHN0cnVjdCBvdHgyX25pYyAqcGYpXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2V0b3RhbF92ZnM7IGkrKykge1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5saW5rX2V2ZW50X3dvcmspO1xuK1x0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5wdHBfaW5mb193b3JrKTtcbiBcdFx0b3R4Ml9zZXRfdmZfcGVybWlzc2lvbnMocGYsIGksIE9UWDJfUkVTRVRfVkZfUEVSTSk7XG4gXHR9XG4gfVxuQEAgLTM0MTcsNiArMzQ0NSwzNyBAQCBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRtdXRleF91bmxvY2soXHUwMDI2cGYtXHUwMDNlbWJveC5sb2NrKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbit7XG4rXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqcmVxO1xuK1x0c3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWc7XG4rXHRzdHJ1Y3QgbWJveF9tc2doZHIgKm1zZ2hkcjtcbitcdHN0cnVjdCBvdHgyX25pYyAqcGY7XG4rXHRpbnQgdmZfaWR4O1xuK1xuK1x0Y29uZmlnID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyxcbitcdFx0XHQgICAgICBwdHBfaW5mb193b3JrLndvcmspO1xuK1x0dmZfaWR4ID0gY29uZmlnIC0gY29uZmlnLVx1MDAzZXBmLVx1MDAzZXZmX2NvbmZpZ3M7XG4rXHRwZiA9IGNvbmZpZy1cdTAwM2VwZjtcbitcbitcdGlmIChjb25maWctXHUwMDNlaW50Zl9kb3duIHx8ICFwZi1cdTAwM2VwdHApXG4rXHRcdHJldHVybjtcbitcbitcdG1zZ2hkciA9IG90eDJfbWJveF9hbGxvY19tc2dfcnNwKFx1MDAyNnBmLVx1MDAzZW1ib3hfcGZ2ZlswXS5tYm94X3VwLCB2Zl9pZHgsXG4rXHRcdFx0XHRcdCBzaXplb2YoKnJlcSksIHNpemVvZihzdHJ1Y3QgbXNnX3JzcCkpO1xuK1x0aWYgKCFtc2doZHIpIHtcbitcdFx0ZGV2X2VycihwZi1cdTAwM2VkZXYsIFwiRmFpbGVkIHRvIGNyZWF0ZSBWRiVkIHB0cCBpbmZvIGV2ZW50XFxuXCIsIHZmX2lkeCk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdHJlcSA9IChzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqKW1zZ2hkcjtcbitcdHJlcS1cdTAwM2VoZHIuaWQgPSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk87XG4rXHRyZXEtXHUwMDNlaGRyLnNpZyA9IE9UWDJfTUJPWF9SRVFfU0lHO1xuK1x0cmVxLVx1MDAzZXB0cF9lbiA9IHBmLVx1MDAzZXB0cC1cdTAwM2VwdHBfZW47XG4rXG4rXHRvdHgyX3N5bmNfbWJveF91cF9tc2coXHUwMDI2cGYtXHUwMDNlbWJveF9wZnZmWzBdLCB2Zl9pZHgpO1xuK31cbitcbiBzdGF0aWMgaW50IG90eDJfc3Jpb3ZfZW5hYmxlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnVtdmZzKVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbmluZGV4IGIwMjJmNTJjNjg0NTAuLjYwZjgxMDYyMDA3YjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jXG5AQCAtMTQxLDYgKzE0MSwyMCBAQCBzdGF0aWMgaW50IG90eDJ2Zl9wcm9jZXNzX21ib3hfbXNnX3VwKHN0cnVjdCBvdHgyX25pYyAqdmYsXG4gXHRcdGVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KFxuIFx0XHRcdFx0dmYsIChzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cgKilyZXEsIHJzcCk7XG4gXHRcdHJldHVybiBlcnI7XG4rXHRjYXNlIE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzpcbitcdFx0cnNwID0gKHN0cnVjdCBtc2dfcnNwICopb3R4Ml9tYm94X2FsbG9jX21zZyhcdTAwMjZ2Zi1cdTAwM2VtYm94Lm1ib3hfdXAsXG4rXHRcdFx0XHRcdFx0MCwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7XG4rXHRcdGlmICghcnNwKVxuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0XHRyc3AtXHUwMDNlaGRyLmlkID0gTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPO1xuK1x0XHRyc3AtXHUwMDNlaGRyLnNpZyA9IE9UWDJfTUJPWF9SU1BfU0lHO1xuK1x0XHRyc3AtXHUwMDNlaGRyLnBjaWZ1bmMgPSByZXEtXHUwMDNlcGNpZnVuYztcbitcdFx0cnNwLVx1MDAzZWhkci5yYyA9IDA7XG4rXHRcdGVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyh2ZixcbitcdFx0XHRcdFx0XHRcdCAgIChzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqKXJlcSxcbitcdFx0XHRcdFx0XHRcdCAgIHJzcCk7XG4rXHRcdHJldHVybiBlcnI7XG4gXHRkZWZhdWx0OlxuIFx0XHRvdHgyX3JlcGx5X2ludmFsaWRfbXNnKFx1MDAyNnZmLVx1MDAzZW1ib3gubWJveF91cCwgMCwgMCwgcmVxLVx1MDAzZWlkKTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNDo0MDoyMS45MDA2MjcxMzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTQwMDU2MzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkndmUgZ290IGEgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgbmV3IG1haWxib3ggbWVzc2FnZSwgYENHWF9QVFBfUlhfSU5GT2AsIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIuIFRoZSBjb2RlJ3Mgc3ByZWFkIGFjcm9zcyBgcnZ1X2NneC5jYCwgYG90eDJfcGYuY2AsIGFuZCBgb3R4Ml92Zi5jYC4gSXQncyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBkZXNpZ25lZCBmb3IgTWFydmVsbCdzIE9jdGVvblRYMiBOSUNzLlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiB0aGUgcGF0Y2gncyBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCAqcGh5c2ljYWwqIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZW4gaXQncyBub3Qgd29ydGggZnV6emluZywgYW5kIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblRoZSBPY3Rlb25UWDIgZGVmaW5pdGVseSBmaXRzIHRoYXQgZGVzY3JpcHRpb24uIEl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyLCBhbmQgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGl0IHJlbGllcyBvbiBzcGVjaWZpYyBNYXJ2ZWxsIGhhcmR3YXJlIG9yLCBhdCBiZXN0LCBhIG5vbi1zdGFuZGFyZCBNYXJ2ZWxsLXNwZWNpZmljIGVtdWxhdGlvbiBlbnZpcm9ubWVudCB0aGF0IGlzbid0IHJlcGxpY2F0ZWQgaW4gc29tZXRoaW5nIGxpa2UgYSBzdGFuZGFyZCBRRU1VIHNldHVwLiBJJ3ZlIGRvdWJsZS1jaGVja2VkLCBhbmQgdGhlcmUncyBubyB3YXkgdG8gcmVsaWFibHkgcnVuIGFuZCB0ZXN0IHRoaXMgY29kZSBpbiB0aGUgdXN1YWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdlIHVzZSBmb3IgZnV6emluZywgbGlrZSBHQ0Ugb3IgdmFuaWxsYSBRRU1VLiBJdCdzIHNpbXBseSB1bnJlYWNoYWJsZS5cblxuVG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLCBJIGNoZWNrZWQgdGhlIHBhdGggYWdhaW46IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9gLiBZZXAsIGl0J3MgYSBzcGVjaWZpYyBFdGhlcm5ldCBkcml2ZXIuIE5vIGdlbmVyaWMgY29kZSBpcyB0b3VjaGVkLiBJIGNvbmZpcm1lZCB0aGlzIGJ5IGNoZWNraW5nIHRoZSBtb2RpZmllZCBmaWxlczogYGFmL21ib3guaGAsIGBhZi9ydnVfY2d4LmNgLCBgbmljL290eDJfY29tbW9uLmhgLCBgbmljL290eDJfcGYuY2AsIGFuZCBgbmljL290eDJfdmYuY2AuIEFsbCB0aG9zZSBmaWxlcyBhcmUgaW4gdGhlIGBtYXJ2ZWxsL29jdGVvbnR4MmAgZGlyZWN0b3J5LlxuXG5UaGVyZWZvcmUsIHRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIG1vZGlmaWVzIE9jdGVvblRYMiBjb2RlIHRoYXQgbmVlZHMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgYXZhaWxhYmxlIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBTbywgdGhlIHJlc3VsdCBpcyBgV29ydGhGdXp6aW5nOiBmYWxzZWAuIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBlbXB0eS4gSSdsbCB1c2UgYHNldC1yZXN1bHRzYCB0byByZWNvcmQgdGhpcyBhc3Nlc3NtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjQ1LCJPdXRwdXRUb2tlbnMiOjcyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDQ6NDA6MjkuMDQwNjg2NTgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNDo0MDoyOS4wNDA3MTA1MTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowk9bm2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-18 04:00:46 +0000 UTC FinishedAt: 2026-08-18 04:40:29 +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+CgkJCTx0ZD4yMDI2LzA4LzE4IDA0OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGVyZWZvcmUsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNDo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM0NTBlMDg0NmZmYjVhZDU5MmU2NWExNWI5YzEyMWM4NjI0YTczOTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNDo0MDoxOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmhcbmluZGV4IDcxNGU0N2Y2OGQ5MzIuLjk2ZTFiOTNmODEyMjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxuQEAgLTQyNyw3ICYjNDM7NDI3LDggQEAgTShNQ1NfQ1VTVE9NX1RBR19DRkdfR0VULCAweGEwMjEsIG1jc19jdXN0b21fdGFnX2NmZ19nZXQsXHRcdFx0XFxcbiBcbiAvKiBNZXNzYWdlcyBpbml0aWF0ZWQgYnkgQUYgKHJhbmdlIDB4QzAwIC0gMHhFRkYpICovXG4gI2RlZmluZSBNQk9YX1VQX0NHWF9NRVNTQUdFU1x0XHRcdFx0XHRcdFxcXG4tTShDR1hfTElOS19FVkVOVCxcdDB4QzAwLCBjZ3hfbGlua19ldmVudCwgY2d4X2xpbmtfaW5mb19tc2csIG1zZ19yc3ApXG4mIzQzO00oQ0dYX0xJTktfRVZFTlQsXHQweEMwMCwgY2d4X2xpbmtfZXZlbnQsIGNneF9saW5rX2luZm9fbXNnLCBtc2dfcnNwKSBcXFxuJiM0MztNKENHWF9QVFBfUlhfSU5GTyxcdDB4QzAxLCBjZ3hfcHRwX3J4X2luZm8sXHRjZ3hfcHRwX3J4X2luZm9fbXNnLCBtc2dfcnNwKVxuIFxuICNkZWZpbmUgTUJPWF9VUF9DUFRfTUVTU0FHRVNcdFx0XHRcdFx0XHRcXFxuIE0oQ1BUX0lOU1RfTE1UU1QsXHQweEQwMCwgY3B0X2luc3RfbG10c3QsIGNwdF9pbnN0X2xtdHN0X3JlcSwgbXNnX3JzcClcbkBAIC02NDcsNiAmIzQzOzY0OCwxMSBAQCBzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cge1xuIFx0c3RydWN0IGNneF9saW5rX3VzZXJfaW5mbyBsaW5rX2luZm87XG4gfTtcbiBcbiYjNDM7c3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cge1xuJiM0MztcdHN0cnVjdCBtYm94X21zZ2hkciBoZHI7XG4mIzQzO1x0dTggcHRwX2VuO1xuJiM0Mzt9O1xuJiM0MztcbiBzdHJ1Y3QgY2d4X3BhdXNlX2ZybV9jZmcge1xuIFx0c3RydWN0IG1ib3hfbXNnaGRyIGhkcjtcbiBcdHU4IHNldDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbmluZGV4IDg3ZDIxODg5ZGM0OWUuLmNiOTVmM2ZiNjBhZTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuQEAgLTgyMCw2ICYjNDM7ODIwLDI0IEBAIGludCBydnVfbWJveF9oYW5kbGVyX2NneF9wcm9taXNjX2Rpc2FibGUoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBjZ3hfbm90aWZ5X3VwX3B0cF9pbmZvKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBib29sIGVuYWJsZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2c7XG4mIzQzO1xuJiM0MztcdC8qIFNlbmQgbWJveCBtZXNzYWdlIHRvIFBGICovXG4mIzQzO1x0bXNnID0gb3R4Ml9tYm94X2FsbG9jX21zZ19jZ3hfcHRwX3J4X2luZm8ocnZ1LCBwZik7XG4mIzQzO1x0aWYgKCFtc2cpIHtcbiYjNDM7XHRcdGRldl9lcnIocnZ1LVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jIG1lc3NhZ2VcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bXNnLVx1MDAzZXB0cF9lbiA9IGVuYWJsZTtcbiYjNDM7XG4mIzQzO1x0b3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oXHUwMDI2cnZ1LVx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XG4mIzQzO1xuJiM0MztcdG90eDJfbWJveF9tc2dfc2VuZF91cChcdTAwMjZydnUtXHUwMDNlYWZwZl93cV9pbmZvLm1ib3hfdXAsIHBmKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSlcbiB7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTtcbkBAIC04MzcsNiAmIzQzOzg1NSw4IEBAIHN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxuIFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG4gXHRcdHJldHVybiAtRVBFUk07XG4gXG4mIzQzO1x0Y2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpO1xuJiM0MztcbiBcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbiBcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXG5pbmRleCBlZWNlZTYxMmI3YjJjLi4xM2I1NDI4N2ZhY2Y3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXG5AQCAtMjg2LDYgJiM0MzsyODYsNyBAQCBlbnVtIHZmcGVybSB7XG4gc3RydWN0IG90eDJfdmZfY29uZmlnIHtcbiBcdHN0cnVjdCBvdHgyX25pYyAqcGY7XG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGxpbmtfZXZlbnRfd29yaztcbiYjNDM7XHRzdHJ1Y3QgZGVsYXllZF93b3JrIHB0cF9pbmZvX3dvcms7XG4gXHRib29sIGludGZfZG93bjsgLyogaW50ZXJmYWNlIHdhcyBlaXRoZXIgY29uZmlndXJlZCBvciBub3QgKi9cbiBcdHU4IG1hY1tFVEhfQUxFTl07XG4gXHR1MTYgdmxhbjtcbkBAIC0zMjQsNiAmIzQzOzMyNSw3IEBAIHN0cnVjdCBvdHgyX3B0cCB7XG4gXHR1NjQgdGhyZXNoO1xuIFxuIFx0c3RydWN0IHB0cF9waW5fZGVzYyBleHR0c19jb25maWc7XG4mIzQzO1x0Ym9vbCBwdHBfZW47XG4gXHR1NjQgKCpjb252ZXJ0X3J4X3B0cF90c3RtcCkodTY0IHRpbWVzdGFtcCk7XG4gXHR1NjQgKCpjb252ZXJ0X3R4X3B0cF90c3RtcCkodTY0IHRpbWVzdGFtcCk7XG4gXHR1NjQgKCpwdHBfdHN0YW1wMm5zZWMpKGNvbnN0IHN0cnVjdCB0aW1lY291bnRlciAqdGltZV9jb3VudGVyLCB1NjQgdGltZXN0YW1wKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuY1xuaW5kZXggYzk5NWYyOTAwODU5MC4uOGUyNDQzMDQxZWU4YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcbkBAIC00NCw2ICYjNDM7NDQsNyBAQCBNT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBvdHgyX3BmX2lkX3RhYmxlKTtcbiBcbiBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuJiM0MztzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiBlbnVtIHtcbiBcdFRZUEVfUEZBRixcbkBAIC05NjAsNiAmIzQzOzk2MSwzMCBAQCBpbnQgb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X2xpbmtfZXZlbnQoc3RydWN0IG90eDJfbmljICpwZixcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7aW50IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyhzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuJiM0MztcdFx0XHRcdFx0IHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2csXG4mIzQzO1x0XHRcdFx0XHQgc3RydWN0IG1zZ19yc3AgKnJzcClcbiYjNDM7e1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBmLVx1MDAzZXB0cClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRwZi1cdTAwM2VwdHAtXHUwMDNlcHRwX2VuID0gbXNnLVx1MDAzZXB0cF9lbjtcbiYjNDM7XG4mIzQzO1x0Lyogbm90aWZ5IFZGcyBhYm91dCBwdHAgZXZlbnQgKi9cbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwY2lfbnVtX3ZmKHBmLVx1MDAzZXBkZXYpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWcgPSBcdTAwMjZwZi1cdTAwM2V2Zl9jb25maWdzW2ldO1xuJiM0MztcdFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZHdvcmsgPSBcdTAwMjZjb25maWctXHUwMDNlcHRwX2luZm9fd29yaztcbiYjNDM7XG4mIzQzO1x0XHRpZiAoY29uZmlnLVx1MDAzZWludGZfZG93bilcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKGR3b3JrLCBtc2Vjc190b19qaWZmaWVzKDEwMCkpO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90eDJfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBtYm94X21zZ2hkciAqcmVxKVxuIHtcbkBAIC0zMDQxLDYgJiM0MzszMDY2LDggQEAgc3RhdGljIGludCBvdHgyX3NyaW92X3ZmY2ZnX2luaXQoc3RydWN0IG90eDJfbmljICpwZilcbiBcdFx0cGYtXHUwMDNldmZfY29uZmlnc1tpXS50cnVzdGVkID0gZmFsc2U7XG4gXHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnBmLVx1MDAzZXZmX2NvbmZpZ3NbaV0ubGlua19ldmVudF93b3JrLFxuIFx0XHRcdFx0ICBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayk7XG4mIzQzO1x0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwZi1cdTAwM2V2Zl9jb25maWdzW2ldLnB0cF9pbmZvX3dvcmssXG4mIzQzO1x0XHRcdFx0ICBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2spO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMzA1NSw2ICYjNDM7MzA4Miw3IEBAIHN0YXRpYyB2b2lkIG90eDJfc3Jpb3ZfdmZjZmdfY2xlYW51cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNldG90YWxfdmZzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5saW5rX2V2ZW50X3dvcmspO1xuJiM0MztcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBmLVx1MDAzZXZmX2NvbmZpZ3NbaV0ucHRwX2luZm9fd29yayk7XG4gXHRcdG90eDJfc2V0X3ZmX3Blcm1pc3Npb25zKHBmLCBpLCBPVFgyX1JFU0VUX1ZGX1BFUk0pO1xuIFx0fVxuIH1cbkBAIC0zNDE3LDYgJiM0MzszNDQ1LDM3IEBAIHN0YXRpYyB2b2lkIG90eDJfdmZfbGlua19ldmVudF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VtYm94LmxvY2spO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICpyZXE7XG4mIzQzO1x0c3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWc7XG4mIzQzO1x0c3RydWN0IG1ib3hfbXNnaGRyICptc2doZHI7XG4mIzQzO1x0c3RydWN0IG90eDJfbmljICpwZjtcbiYjNDM7XHRpbnQgdmZfaWR4O1xuJiM0MztcbiYjNDM7XHRjb25maWcgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG90eDJfdmZfY29uZmlnLFxuJiM0MztcdFx0XHQgICAgICBwdHBfaW5mb193b3JrLndvcmspO1xuJiM0MztcdHZmX2lkeCA9IGNvbmZpZyAtIGNvbmZpZy1cdTAwM2VwZi1cdTAwM2V2Zl9jb25maWdzO1xuJiM0MztcdHBmID0gY29uZmlnLVx1MDAzZXBmO1xuJiM0MztcbiYjNDM7XHRpZiAoY29uZmlnLVx1MDAzZWludGZfZG93biB8fCAhcGYtXHUwMDNlcHRwKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRtc2doZHIgPSBvdHgyX21ib3hfYWxsb2NfbXNnX3JzcChcdTAwMjZwZi1cdTAwM2VtYm94X3BmdmZbMF0ubWJveF91cCwgdmZfaWR4LFxuJiM0MztcdFx0XHRcdFx0IHNpemVvZigqcmVxKSwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7XG4mIzQzO1x0aWYgKCFtc2doZHIpIHtcbiYjNDM7XHRcdGRldl9lcnIocGYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gY3JlYXRlIFZGJWQgcHRwIGluZm8gZXZlbnRcXG5cJiMzNDssIHZmX2lkeCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXEgPSAoc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cgKiltc2doZHI7XG4mIzQzO1x0cmVxLVx1MDAzZWhkci5pZCA9IE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTztcbiYjNDM7XHRyZXEtXHUwMDNlaGRyLnNpZyA9IE9UWDJfTUJPWF9SRVFfU0lHO1xuJiM0MztcdHJlcS1cdTAwM2VwdHBfZW4gPSBwZi1cdTAwM2VwdHAtXHUwMDNlcHRwX2VuO1xuJiM0MztcbiYjNDM7XHRvdHgyX3N5bmNfbWJveF91cF9tc2coXHUwMDI2cGYtXHUwMDNlbWJveF9wZnZmWzBdLCB2Zl9pZHgpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgb3R4Ml9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuY1xuaW5kZXggYjAyMmY1MmM2ODQ1MC4uNjBmODEwNjIwMDdiMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbkBAIC0xNDEsNiAmIzQzOzE0MSwyMCBAQCBzdGF0aWMgaW50IG90eDJ2Zl9wcm9jZXNzX21ib3hfbXNnX3VwKHN0cnVjdCBvdHgyX25pYyAqdmYsXG4gXHRcdGVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KFxuIFx0XHRcdFx0dmYsIChzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cgKilyZXEsIHJzcCk7XG4gXHRcdHJldHVybiBlcnI7XG4mIzQzO1x0Y2FzZSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk86XG4mIzQzO1x0XHRyc3AgPSAoc3RydWN0IG1zZ19yc3AgKilvdHgyX21ib3hfYWxsb2NfbXNnKFx1MDAyNnZmLVx1MDAzZW1ib3gubWJveF91cCxcbiYjNDM7XHRcdFx0XHRcdFx0MCwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7XG4mIzQzO1x0XHRpZiAoIXJzcClcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdFx0cnNwLVx1MDAzZWhkci5pZCA9IE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTztcbiYjNDM7XHRcdHJzcC1cdTAwM2VoZHIuc2lnID0gT1RYMl9NQk9YX1JTUF9TSUc7XG4mIzQzO1x0XHRyc3AtXHUwMDNlaGRyLnBjaWZ1bmMgPSByZXEtXHUwMDNlcGNpZnVuYztcbiYjNDM7XHRcdHJzcC1cdTAwM2VoZHIucmMgPSAwO1xuJiM0MztcdFx0ZXJyID0gb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X3B0cF9yeF9pbmZvKHZmLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgIChzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqKXJlcSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICByc3ApO1xuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcdGRlZmF1bHQ6XG4gXHRcdG90eDJfcmVwbHlfaW52YWxpZF9tc2coXHUwMDI2dmYtXHUwMDNlbWJveC5tYm94X3VwLCAwLCAwLCByZXEtXHUwMDNlaWQpO1xuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNDo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGVyZWZvcmUsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM0NTBlMDg0NmZmYjVhZDU5MmU2NWExNWI5YzEyMWM4NjI0YTczOTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAwNDo0MDoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaAppbmRleCA3MTRlNDdmNjhkOTMyLi45NmUxYjkzZjgxMjIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWJveC5oCkBAIC00MjcsNyAmIzQzOzQyNyw4IEBAIE0oTUNTX0NVU1RPTV9UQUdfQ0ZHX0dFVCwgMHhhMDIxLCBtY3NfY3VzdG9tX3RhZ19jZmdfZ2V0LAkJCVwKIAogLyogTWVzc2FnZXMgaW5pdGlhdGVkIGJ5IEFGIChyYW5nZSAweEMwMCAtIDB4RUZGKSAqLwogI2RlZmluZSBNQk9YX1VQX0NHWF9NRVNTQUdFUwkJCQkJCVwKLU0oQ0dYX0xJTktfRVZFTlQsCTB4QzAwLCBjZ3hfbGlua19ldmVudCwgY2d4X2xpbmtfaW5mb19tc2csIG1zZ19yc3ApCiYjNDM7TShDR1hfTElOS19FVkVOVCwJMHhDMDAsIGNneF9saW5rX2V2ZW50LCBjZ3hfbGlua19pbmZvX21zZywgbXNnX3JzcCkgXAomIzQzO00oQ0dYX1BUUF9SWF9JTkZPLAkweEMwMSwgY2d4X3B0cF9yeF9pbmZvLAljZ3hfcHRwX3J4X2luZm9fbXNnLCBtc2dfcnNwKQogCiAjZGVmaW5lIE1CT1hfVVBfQ1BUX01FU1NBR0VTCQkJCQkJXAogTShDUFRfSU5TVF9MTVRTVCwJMHhEMDAsIGNwdF9pbnN0X2xtdHN0LCBjcHRfaW5zdF9sbXRzdF9yZXEsIG1zZ19yc3ApCkBAIC02NDcsNiAmIzQzOzY0OCwxMSBAQCBzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cgewogCXN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGlua19pbmZvOwogfTsKIAomIzQzO3N0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnIHsKJiM0MzsJc3RydWN0IG1ib3hfbXNnaGRyIGhkcjsKJiM0MzsJdTggcHRwX2VuOwomIzQzO307CiYjNDM7CiBzdHJ1Y3QgY2d4X3BhdXNlX2ZybV9jZmcgewogCXN0cnVjdCBtYm94X21zZ2hkciBoZHI7CiAJdTggc2V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jCmluZGV4IDg3ZDIxODg5ZGM0OWUuLmNiOTVmM2ZiNjBhZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMKQEAgLTgyMCw2ICYjNDM7ODIwLDI0IEBAIGludCBydnVfbWJveF9oYW5kbGVyX2NneF9wcm9taXNjX2Rpc2FibGUoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIHZvaWQgY2d4X25vdGlmeV91cF9wdHBfaW5mbyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgYm9vbCBlbmFibGUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnOwomIzQzOwomIzQzOwkvKiBTZW5kIG1ib3ggbWVzc2FnZSB0byBQRiAqLwomIzQzOwltc2cgPSBvdHgyX21ib3hfYWxsb2NfbXNnX2NneF9wdHBfcnhfaW5mbyhydnUsIHBmKTsKJiM0MzsJaWYgKCFtc2cpIHsKJiM0MzsJCWRldl9lcnIocnZ1LSZndDtkZXYsICYjMzQ7ZmFpbGVkIHRvIGFsbG9jIG1lc3NhZ2VcbiYjMzQ7KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwltc2ctJmd0O3B0cF9lbiA9IGVuYWJsZTsKJiM0MzsKJiM0MzsJb3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oJmFtcDtydnUtJmd0O2FmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7CiYjNDM7CiYjNDM7CW90eDJfbWJveF9tc2dfc2VuZF91cCgmYW1wO3J2dS0mZ3Q7YWZwZl93cV9pbmZvLm1ib3hfdXAsIHBmKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSkKIHsKIAlzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTsKQEAgLTgzNyw2ICYjNDM7ODU1LDggQEAgc3RhdGljIGludCBydnVfY2d4X3B0cF9yeF9jZmcoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBlbmFibGUpCiAJaWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpCiAJCXJldHVybiAtRVBFUk07CiAKJiM0MzsJY2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpOwomIzQzOwogCXJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LSZndDtwZjJjZ3hsbWFjX21hcFtwZl0sICZhbXA7Y2d4X2lkLCAmYW1wO2xtYWNfaWQpOwogCWNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaAppbmRleCBlZWNlZTYxMmI3YjJjLi4xM2I1NDI4N2ZhY2Y3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaApAQCAtMjg2LDYgJiM0MzsyODYsNyBAQCBlbnVtIHZmcGVybSB7CiBzdHJ1Y3Qgb3R4Ml92Zl9jb25maWcgewogCXN0cnVjdCBvdHgyX25pYyAqcGY7CiAJc3RydWN0IGRlbGF5ZWRfd29yayBsaW5rX2V2ZW50X3dvcms7CiYjNDM7CXN0cnVjdCBkZWxheWVkX3dvcmsgcHRwX2luZm9fd29yazsKIAlib29sIGludGZfZG93bjsgLyogaW50ZXJmYWNlIHdhcyBlaXRoZXIgY29uZmlndXJlZCBvciBub3QgKi8KIAl1OCBtYWNbRVRIX0FMRU5dOwogCXUxNiB2bGFuOwpAQCAtMzI0LDYgJiM0MzszMjUsNyBAQCBzdHJ1Y3Qgb3R4Ml9wdHAgewogCXU2NCB0aHJlc2g7CiAKIAlzdHJ1Y3QgcHRwX3Bpbl9kZXNjIGV4dHRzX2NvbmZpZzsKJiM0MzsJYm9vbCBwdHBfZW47CiAJdTY0ICgqY29udmVydF9yeF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApOwogCXU2NCAoKmNvbnZlcnRfdHhfcHRwX3RzdG1wKSh1NjQgdGltZXN0YW1wKTsKIAl1NjQgKCpwdHBfdHN0YW1wMm5zZWMpKGNvbnN0IHN0cnVjdCB0aW1lY291bnRlciAqdGltZV9jb3VudGVyLCB1NjQgdGltZXN0YW1wKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jCmluZGV4IGM5OTVmMjkwMDg1OTAuLjhlMjQ0MzA0MWVlOGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYwpAQCAtNDQsNiAmIzQzOzQ0LDcgQEAgTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwgdjImIzM0Oyk7CiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3R4Ml9wZl9pZF90YWJsZSk7CiAKIHN0YXRpYyB2b2lkIG90eDJfdmZfbGlua19ldmVudF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiYjNDM7c3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKIGVudW0gewogCVRZUEVfUEZBRiwKQEAgLTk2MCw2ICYjNDM7OTYxLDMwIEBAIGludCBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfbGlua19ldmVudChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLAogCXJldHVybiAwOwogfQogCiYjNDM7aW50IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyhzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLAomIzQzOwkJCQkJIHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2csCiYjNDM7CQkJCQkgc3RydWN0IG1zZ19yc3AgKnJzcCkKJiM0Mzt7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlpZiAoIXBmLSZndDtwdHApCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJcGYtJmd0O3B0cC0mZ3Q7cHRwX2VuID0gbXNnLSZndDtwdHBfZW47CiYjNDM7CiYjNDM7CS8qIG5vdGlmeSBWRnMgYWJvdXQgcHRwIGV2ZW50ICovCiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBwY2lfbnVtX3ZmKHBmLSZndDtwZGV2KTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXN0cnVjdCBvdHgyX3ZmX2NvbmZpZyAqY29uZmlnID0gJmFtcDtwZi0mZ3Q7dmZfY29uZmlnc1tpXTsKJiM0MzsJCXN0cnVjdCBkZWxheWVkX3dvcmsgKmR3b3JrID0gJmFtcDtjb25maWctJmd0O3B0cF9pbmZvX3dvcms7CiYjNDM7CiYjNDM7CQlpZiAoY29uZmlnLSZndDtpbnRmX2Rvd24pCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoZHdvcmssIG1zZWNzX3RvX2ppZmZpZXMoMTAwKSk7CiYjNDM7CX0KJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHgyX3Byb2Nlc3NfbWJveF9tc2dfdXAoc3RydWN0IG90eDJfbmljICpwZiwKIAkJCQkgICAgc3RydWN0IG1ib3hfbXNnaGRyICpyZXEpCiB7CkBAIC0zMDQxLDYgJiM0MzszMDY2LDggQEAgc3RhdGljIGludCBvdHgyX3NyaW92X3ZmY2ZnX2luaXQoc3RydWN0IG90eDJfbmljICpwZikKIAkJcGYtJmd0O3ZmX2NvbmZpZ3NbaV0udHJ1c3RlZCA9IGZhbHNlOwogCQlJTklUX0RFTEFZRURfV09SSygmYW1wO3BmLSZndDt2Zl9jb25maWdzW2ldLmxpbmtfZXZlbnRfd29yaywKIAkJCQkgIG90eDJfdmZfbGlua19ldmVudF90YXNrKTsKJiM0MzsJCUlOSVRfREVMQVlFRF9XT1JLKCZhbXA7cGYtJmd0O3ZmX2NvbmZpZ3NbaV0ucHRwX2luZm9fd29yaywKJiM0MzsJCQkJICBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2spOwogCX0KIAogCXJldHVybiAwOwpAQCAtMzA1NSw2ICYjNDM7MzA4Miw3IEBAIHN0YXRpYyB2b2lkIG90eDJfc3Jpb3ZfdmZjZmdfY2xlYW51cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKQogCiAJZm9yIChpID0gMDsgaSAmbHQ7IHBmLSZndDt0b3RhbF92ZnM7IGkmIzQzOyYjNDM7KSB7CiAJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO3BmLSZndDt2Zl9jb25maWdzW2ldLmxpbmtfZXZlbnRfd29yayk7CiYjNDM7CQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtwZi0mZ3Q7dmZfY29uZmlnc1tpXS5wdHBfaW5mb193b3JrKTsKIAkJb3R4Ml9zZXRfdmZfcGVybWlzc2lvbnMocGYsIGksIE9UWDJfUkVTRVRfVkZfUEVSTSk7CiAJfQogfQpAQCAtMzQxNyw2ICYjNDM7MzQ0NSwzNyBAQCBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJbXV0ZXhfdW5sb2NrKCZhbXA7cGYtJmd0O21ib3gubG9jayk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQomIzQzO3sKJiM0MzsJc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cgKnJlcTsKJiM0MzsJc3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWc7CiYjNDM7CXN0cnVjdCBtYm94X21zZ2hkciAqbXNnaGRyOwomIzQzOwlzdHJ1Y3Qgb3R4Ml9uaWMgKnBmOwomIzQzOwlpbnQgdmZfaWR4OwomIzQzOwomIzQzOwljb25maWcgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG90eDJfdmZfY29uZmlnLAomIzQzOwkJCSAgICAgIHB0cF9pbmZvX3dvcmsud29yayk7CiYjNDM7CXZmX2lkeCA9IGNvbmZpZyAtIGNvbmZpZy0mZ3Q7cGYtJmd0O3ZmX2NvbmZpZ3M7CiYjNDM7CXBmID0gY29uZmlnLSZndDtwZjsKJiM0MzsKJiM0MzsJaWYgKGNvbmZpZy0mZ3Q7aW50Zl9kb3duIHx8ICFwZi0mZ3Q7cHRwKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltc2doZHIgPSBvdHgyX21ib3hfYWxsb2NfbXNnX3JzcCgmYW1wO3BmLSZndDttYm94X3BmdmZbMF0ubWJveF91cCwgdmZfaWR4LAomIzQzOwkJCQkJIHNpemVvZigqcmVxKSwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7CiYjNDM7CWlmICghbXNnaGRyKSB7CiYjNDM7CQlkZXZfZXJyKHBmLSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBWRiVkIHB0cCBpbmZvIGV2ZW50XG4mIzM0OywgdmZfaWR4KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXEgPSAoc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cgKiltc2doZHI7CiYjNDM7CXJlcS0mZ3Q7aGRyLmlkID0gTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPOwomIzQzOwlyZXEtJmd0O2hkci5zaWcgPSBPVFgyX01CT1hfUkVRX1NJRzsKJiM0MzsJcmVxLSZndDtwdHBfZW4gPSBwZi0mZ3Q7cHRwLSZndDtwdHBfZW47CiYjNDM7CiYjNDM7CW90eDJfc3luY19tYm94X3VwX21zZygmYW1wO3BmLSZndDttYm94X3BmdmZbMF0sIHZmX2lkeCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHgyX3NyaW92X2VuYWJsZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG51bXZmcykKIHsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMKaW5kZXggYjAyMmY1MmM2ODQ1MC4uNjBmODEwNjIwMDdiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jCkBAIC0xNDEsNiAmIzQzOzE0MSwyMCBAQCBzdGF0aWMgaW50IG90eDJ2Zl9wcm9jZXNzX21ib3hfbXNnX3VwKHN0cnVjdCBvdHgyX25pYyAqdmYsCiAJCWVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KAogCQkJCXZmLCAoc3RydWN0IGNneF9saW5rX2luZm9fbXNnICopcmVxLCByc3ApOwogCQlyZXR1cm4gZXJyOwomIzQzOwljYXNlIE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzoKJiM0MzsJCXJzcCA9IChzdHJ1Y3QgbXNnX3JzcCAqKW90eDJfbWJveF9hbGxvY19tc2coJmFtcDt2Zi0mZ3Q7bWJveC5tYm94X3VwLAomIzQzOwkJCQkJCTAsIHNpemVvZihzdHJ1Y3QgbXNnX3JzcCkpOwomIzQzOwkJaWYgKCFyc3ApCiYjNDM7CQkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CQlyc3AtJmd0O2hkci5pZCA9IE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzsKJiM0MzsJCXJzcC0mZ3Q7aGRyLnNpZyA9IE9UWDJfTUJPWF9SU1BfU0lHOwomIzQzOwkJcnNwLSZndDtoZHIucGNpZnVuYyA9IHJlcS0mZ3Q7cGNpZnVuYzsKJiM0MzsJCXJzcC0mZ3Q7aGRyLnJjID0gMDsKJiM0MzsJCWVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyh2ZiwKJiM0MzsJCQkJCQkJICAgKHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICopcmVxLAomIzQzOwkJCQkJCQkgICByc3ApOwomIzQzOwkJcmV0dXJuIGVycjsKIAlkZWZhdWx0OgogCQlvdHgyX3JlcGx5X2ludmFsaWRfbXNnKCZhbXA7dmYtJmd0O21ib3gubWJveF91cCwgMCwgMCwgcmVxLSZndDtpZCk7CiAJCXJldHVybiAtRU5PREVWOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQ1CgkJCQkJCQlvdXRwdXQ6IDcyCgkJCQkJCQl0aG91Z2h0czogNTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBhIG5ldyBtYWlsYm94IG1lc3NhZ2UsIGBDR1hfUFRQX1JYX0lORk9gLCB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLiBUaGUgY29kZSYjMzk7cyBzcHJlYWQgYWNyb3NzIGBydnVfY2d4LmNgLCBgb3R4Ml9wZi5jYCwgYW5kIGBvdHgyX3ZmLmNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBkZXNpZ25lZCBmb3IgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgTklDcy4KCk5vdywgdGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IGlmIHRoZSBwYXRjaCYjMzk7cyBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCAqcGh5c2ljYWwqIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZW4gaXQmIzM5O3Mgbm90IHdvcnRoIGZ1enppbmcsIGFuZCB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKVGhlIE9jdGVvblRYMiBkZWZpbml0ZWx5IGZpdHMgdGhhdCBkZXNjcmlwdGlvbi4gSXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyLCBhbmQgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGl0IHJlbGllcyBvbiBzcGVjaWZpYyBNYXJ2ZWxsIGhhcmR3YXJlIG9yLCBhdCBiZXN0LCBhIG5vbi1zdGFuZGFyZCBNYXJ2ZWxsLXNwZWNpZmljIGVtdWxhdGlvbiBlbnZpcm9ubWVudCB0aGF0IGlzbiYjMzk7dCByZXBsaWNhdGVkIGluIHNvbWV0aGluZyBsaWtlIGEgc3RhbmRhcmQgUUVNVSBzZXR1cC4gSSYjMzk7dmUgZG91YmxlLWNoZWNrZWQsIGFuZCB0aGVyZSYjMzk7cyBubyB3YXkgdG8gcmVsaWFibHkgcnVuIGFuZCB0ZXN0IHRoaXMgY29kZSBpbiB0aGUgdXN1YWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdlIHVzZSBmb3IgZnV6emluZywgbGlrZSBHQ0Ugb3IgdmFuaWxsYSBRRU1VLiBJdCYjMzk7cyBzaW1wbHkgdW5yZWFjaGFibGUuCgpUbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcsIEkgY2hlY2tlZCB0aGUgcGF0aCBhZ2FpbjogYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2AuIFllcCwgaXQmIzM5O3MgYSBzcGVjaWZpYyBFdGhlcm5ldCBkcml2ZXIuIE5vIGdlbmVyaWMgY29kZSBpcyB0b3VjaGVkLiBJIGNvbmZpcm1lZCB0aGlzIGJ5IGNoZWNraW5nIHRoZSBtb2RpZmllZCBmaWxlczogYGFmL21ib3guaGAsIGBhZi9ydnVfY2d4LmNgLCBgbmljL290eDJfY29tbW9uLmhgLCBgbmljL290eDJfcGYuY2AsIGFuZCBgbmljL290eDJfdmYuY2AuIEFsbCB0aG9zZSBmaWxlcyBhcmUgaW4gdGhlIGBtYXJ2ZWxsL29jdGVvbnR4MmAgZGlyZWN0b3J5LgoKVGhlcmVmb3JlLCB0aGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBtb2RpZmllcyBPY3Rlb25UWDIgY29kZSB0aGF0IG5lZWRzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cy4gU28sIHRoZSByZXN1bHQgaXMgYFdvcnRoRnV6emluZzogZmFsc2VgLiBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIHdpbGwgYmUgZW1wdHkuIEkmIzM5O2xsIHVzZSBgc2V0LXJlc3VsdHNgIHRvIHJlY29yZCB0aGlzIGFzc2Vzc21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDQ6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA0OjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNDo0MDoyMC41Nzc1MDkwNzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDYzMjEwNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGVyZWZvcmUsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDQ6NDA6MjAuNTc3NTEzODUyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzIyMzc4ODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzQ1MGUwODQ2ZmZiNWFkNTkyZTY1YTE1YjljMTIxYzg2MjRhNzM5MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNDo0MDoxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmhcXG5pbmRleCA3MTRlNDdmNjhkOTMyLi45NmUxYjkzZjgxMjIzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxcbkBAIC00MjcsNyArNDI3LDggQEAgTShNQ1NfQ1VTVE9NX1RBR19DRkdfR0VULCAweGEwMjEsIG1jc19jdXN0b21fdGFnX2NmZ19nZXQsXFx0XFx0XFx0XFxcXFxcbiBcXG4gLyogTWVzc2FnZXMgaW5pdGlhdGVkIGJ5IEFGIChyYW5nZSAweEMwMCAtIDB4RUZGKSAqL1xcbiAjZGVmaW5lIE1CT1hfVVBfQ0dYX01FU1NBR0VTXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1NKENHWF9MSU5LX0VWRU5ULFxcdDB4QzAwLCBjZ3hfbGlua19ldmVudCwgY2d4X2xpbmtfaW5mb19tc2csIG1zZ19yc3ApXFxuK00oQ0dYX0xJTktfRVZFTlQsXFx0MHhDMDAsIGNneF9saW5rX2V2ZW50LCBjZ3hfbGlua19pbmZvX21zZywgbXNnX3JzcCkgXFxcXFxcbitNKENHWF9QVFBfUlhfSU5GTyxcXHQweEMwMSwgY2d4X3B0cF9yeF9pbmZvLFxcdGNneF9wdHBfcnhfaW5mb19tc2csIG1zZ19yc3ApXFxuIFxcbiAjZGVmaW5lIE1CT1hfVVBfQ1BUX01FU1NBR0VTXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBNKENQVF9JTlNUX0xNVFNULFxcdDB4RDAwLCBjcHRfaW5zdF9sbXRzdCwgY3B0X2luc3RfbG10c3RfcmVxLCBtc2dfcnNwKVxcbkBAIC02NDcsNiArNjQ4LDExIEBAIHN0cnVjdCBjZ3hfbGlua19pbmZvX21zZyB7XFxuIFxcdHN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGlua19pbmZvO1xcbiB9O1xcbiBcXG4rc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cge1xcbitcXHRzdHJ1Y3QgbWJveF9tc2doZHIgaGRyO1xcbitcXHR1OCBwdHBfZW47XFxuK307XFxuK1xcbiBzdHJ1Y3QgY2d4X3BhdXNlX2ZybV9jZmcge1xcbiBcXHRzdHJ1Y3QgbWJveF9tc2doZHIgaGRyO1xcbiBcXHR1OCBzZXQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xcbmluZGV4IDg3ZDIxODg5ZGM0OWUuLmNiOTVmM2ZiNjBhZTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuQEAgLTgyMCw2ICs4MjAsMjQgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X3Byb21pc2NfZGlzYWJsZShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBjZ3hfbm90aWZ5X3VwX3B0cF9pbmZvKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBib29sIGVuYWJsZSlcXG4re1xcbitcXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnO1xcbitcXG4rXFx0LyogU2VuZCBtYm94IG1lc3NhZ2UgdG8gUEYgKi9cXG4rXFx0bXNnID0gb3R4Ml9tYm94X2FsbG9jX21zZ19jZ3hfcHRwX3J4X2luZm8ocnZ1LCBwZik7XFxuK1xcdGlmICghbXNnKSB7XFxuK1xcdFxcdGRldl9lcnIocnZ1LVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gYWxsb2MgbWVzc2FnZVxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0bXNnLVxcdTAwM2VwdHBfZW4gPSBlbmFibGU7XFxuK1xcbitcXHRvdHgyX21ib3hfd2FpdF9mb3JfemVybyhcXHUwMDI2cnZ1LVxcdTAwM2VhZnBmX3dxX2luZm8ubWJveF91cCwgcGYpO1xcbitcXG4rXFx0b3R4Ml9tYm94X21zZ19zZW5kX3VwKFxcdTAwMjZydnUtXFx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxcbiB7XFxuIFxcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpO1xcbkBAIC04MzcsNiArODU1LDggQEAgc3RhdGljIGludCBydnVfY2d4X3B0cF9yeF9jZmcoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBlbmFibGUpXFxuIFxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbiBcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiBcXG4rXFx0Y2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpO1xcbitcXG4gXFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXFx1MDAyNmNneF9pZCwgXFx1MDAyNmxtYWNfaWQpO1xcbiBcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXFxuaW5kZXggZWVjZWU2MTJiN2IyYy4uMTNiNTQyODdmYWNmNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXFxuQEAgLTI4Niw2ICsyODYsNyBAQCBlbnVtIHZmcGVybSB7XFxuIHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyB7XFxuIFxcdHN0cnVjdCBvdHgyX25pYyAqcGY7XFxuIFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgbGlua19ldmVudF93b3JrO1xcbitcXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHB0cF9pbmZvX3dvcms7XFxuIFxcdGJvb2wgaW50Zl9kb3duOyAvKiBpbnRlcmZhY2Ugd2FzIGVpdGhlciBjb25maWd1cmVkIG9yIG5vdCAqL1xcbiBcXHR1OCBtYWNbRVRIX0FMRU5dO1xcbiBcXHR1MTYgdmxhbjtcXG5AQCAtMzI0LDYgKzMyNSw3IEBAIHN0cnVjdCBvdHgyX3B0cCB7XFxuIFxcdHU2NCB0aHJlc2g7XFxuIFxcbiBcXHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIGV4dHRzX2NvbmZpZztcXG4rXFx0Ym9vbCBwdHBfZW47XFxuIFxcdHU2NCAoKmNvbnZlcnRfcnhfcHRwX3RzdG1wKSh1NjQgdGltZXN0YW1wKTtcXG4gXFx0dTY0ICgqY29udmVydF90eF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApO1xcbiBcXHR1NjQgKCpwdHBfdHN0YW1wMm5zZWMpKGNvbnN0IHN0cnVjdCB0aW1lY291bnRlciAqdGltZV9jb3VudGVyLCB1NjQgdGltZXN0YW1wKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcXG5pbmRleCBjOTk1ZjI5MDA4NTkwLi44ZTI0NDMwNDFlZThiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jXFxuQEAgLTQ0LDYgKzQ0LDcgQEAgTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3R4Ml9wZl9pZF90YWJsZSk7XFxuIFxcbiBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbitzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4gXFxuIGVudW0ge1xcbiBcXHRUWVBFX1BGQUYsXFxuQEAgLTk2MCw2ICs5NjEsMzAgQEAgaW50IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KHN0cnVjdCBvdHgyX25pYyAqcGYsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitpbnQgb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X3B0cF9yeF9pbmZvKHN0cnVjdCBvdHgyX25pYyAqcGYsXFxuK1xcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnLFxcbitcXHRcXHRcXHRcXHRcXHQgc3RydWN0IG1zZ19yc3AgKnJzcClcXG4re1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdGlmICghcGYtXFx1MDAzZXB0cClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRwZi1cXHUwMDNlcHRwLVxcdTAwM2VwdHBfZW4gPSBtc2ctXFx1MDAzZXB0cF9lbjtcXG4rXFxuK1xcdC8qIG5vdGlmeSBWRnMgYWJvdXQgcHRwIGV2ZW50ICovXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwY2lfbnVtX3ZmKHBmLVxcdTAwM2VwZGV2KTsgaSsrKSB7XFxuK1xcdFxcdHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyAqY29uZmlnID0gXFx1MDAyNnBmLVxcdTAwM2V2Zl9jb25maWdzW2ldO1xcbitcXHRcXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkd29yayA9IFxcdTAwMjZjb25maWctXFx1MDAzZXB0cF9pbmZvX3dvcms7XFxuK1xcbitcXHRcXHRpZiAoY29uZmlnLVxcdTAwM2VpbnRmX2Rvd24pXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKGR3b3JrLCBtc2Vjc190b19qaWZmaWVzKDEwMCkpO1xcbitcXHR9XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG90eDJfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1ib3hfbXNnaGRyICpyZXEpXFxuIHtcXG5AQCAtMzA0MSw2ICszMDY2LDggQEAgc3RhdGljIGludCBvdHgyX3NyaW92X3ZmY2ZnX2luaXQoc3RydWN0IG90eDJfbmljICpwZilcXG4gXFx0XFx0cGYtXFx1MDAzZXZmX2NvbmZpZ3NbaV0udHJ1c3RlZCA9IGZhbHNlO1xcbiBcXHRcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2cGYtXFx1MDAzZXZmX2NvbmZpZ3NbaV0ubGlua19ldmVudF93b3JrLFxcbiBcXHRcXHRcXHRcXHQgIG90eDJfdmZfbGlua19ldmVudF90YXNrKTtcXG4rXFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnBmLVxcdTAwM2V2Zl9jb25maWdzW2ldLnB0cF9pbmZvX3dvcmssXFxuK1xcdFxcdFxcdFxcdCAgb3R4Ml92Zl9wdHBfaW5mb190YXNrKTtcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTMwNTUsNiArMzA4Miw3IEBAIHN0YXRpYyB2b2lkIG90eDJfc3Jpb3ZfdmZjZmdfY2xlYW51cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHBmLVxcdTAwM2V0b3RhbF92ZnM7IGkrKykge1xcbiBcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnBmLVxcdTAwM2V2Zl9jb25maWdzW2ldLmxpbmtfZXZlbnRfd29yayk7XFxuK1xcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cGYtXFx1MDAzZXZmX2NvbmZpZ3NbaV0ucHRwX2luZm9fd29yayk7XFxuIFxcdFxcdG90eDJfc2V0X3ZmX3Blcm1pc3Npb25zKHBmLCBpLCBPVFgyX1JFU0VUX1ZGX1BFUk0pO1xcbiBcXHR9XFxuIH1cXG5AQCAtMzQxNyw2ICszNDQ1LDM3IEBAIHN0YXRpYyB2b2lkIG90eDJfdmZfbGlua19ldmVudF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwZi1cXHUwMDNlbWJveC5sb2NrKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4re1xcbitcXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqcmVxO1xcbitcXHRzdHJ1Y3Qgb3R4Ml92Zl9jb25maWcgKmNvbmZpZztcXG4rXFx0c3RydWN0IG1ib3hfbXNnaGRyICptc2doZHI7XFxuK1xcdHN0cnVjdCBvdHgyX25pYyAqcGY7XFxuK1xcdGludCB2Zl9pZHg7XFxuK1xcbitcXHRjb25maWcgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG90eDJfdmZfY29uZmlnLFxcbitcXHRcXHRcXHQgICAgICBwdHBfaW5mb193b3JrLndvcmspO1xcbitcXHR2Zl9pZHggPSBjb25maWcgLSBjb25maWctXFx1MDAzZXBmLVxcdTAwM2V2Zl9jb25maWdzO1xcbitcXHRwZiA9IGNvbmZpZy1cXHUwMDNlcGY7XFxuK1xcbitcXHRpZiAoY29uZmlnLVxcdTAwM2VpbnRmX2Rvd24gfHwgIXBmLVxcdTAwM2VwdHApXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdG1zZ2hkciA9IG90eDJfbWJveF9hbGxvY19tc2dfcnNwKFxcdTAwMjZwZi1cXHUwMDNlbWJveF9wZnZmWzBdLm1ib3hfdXAsIHZmX2lkeCxcXG4rXFx0XFx0XFx0XFx0XFx0IHNpemVvZigqcmVxKSwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7XFxuK1xcdGlmICghbXNnaGRyKSB7XFxuK1xcdFxcdGRldl9lcnIocGYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBjcmVhdGUgVkYlZCBwdHAgaW5mbyBldmVudFxcXFxuXFxcIiwgdmZfaWR4KTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRyZXEgPSAoc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cgKiltc2doZHI7XFxuK1xcdHJlcS1cXHUwMDNlaGRyLmlkID0gTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPO1xcbitcXHRyZXEtXFx1MDAzZWhkci5zaWcgPSBPVFgyX01CT1hfUkVRX1NJRztcXG4rXFx0cmVxLVxcdTAwM2VwdHBfZW4gPSBwZi1cXHUwMDNlcHRwLVxcdTAwM2VwdHBfZW47XFxuK1xcbitcXHRvdHgyX3N5bmNfbWJveF91cF9tc2coXFx1MDAyNnBmLVxcdTAwM2VtYm94X3BmdmZbMF0sIHZmX2lkeCk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgb3R4Ml9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpXFxuIHtcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcXG5pbmRleCBiMDIyZjUyYzY4NDUwLi42MGY4MTA2MjAwN2IyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jXFxuQEAgLTE0MSw2ICsxNDEsMjAgQEAgc3RhdGljIGludCBvdHgydmZfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnZmLFxcbiBcXHRcXHRlcnIgPSBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfbGlua19ldmVudChcXG4gXFx0XFx0XFx0XFx0dmYsIChzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cgKilyZXEsIHJzcCk7XFxuIFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdGNhc2UgTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPOlxcbitcXHRcXHRyc3AgPSAoc3RydWN0IG1zZ19yc3AgKilvdHgyX21ib3hfYWxsb2NfbXNnKFxcdTAwMjZ2Zi1cXHUwMDNlbWJveC5tYm94X3VwLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQwLCBzaXplb2Yoc3RydWN0IG1zZ19yc3ApKTtcXG4rXFx0XFx0aWYgKCFyc3ApXFxuK1xcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0XFx0cnNwLVxcdTAwM2VoZHIuaWQgPSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk87XFxuK1xcdFxcdHJzcC1cXHUwMDNlaGRyLnNpZyA9IE9UWDJfTUJPWF9SU1BfU0lHO1xcbitcXHRcXHRyc3AtXFx1MDAzZWhkci5wY2lmdW5jID0gcmVxLVxcdTAwM2VwY2lmdW5jO1xcbitcXHRcXHRyc3AtXFx1MDAzZWhkci5yYyA9IDA7XFxuK1xcdFxcdGVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyh2ZixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgKHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICopcmVxLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICByc3ApO1xcbitcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHRvdHgyX3JlcGx5X2ludmFsaWRfbXNnKFxcdTAwMjZ2Zi1cXHUwMDNlbWJveC5tYm94X3VwLCAwLCAwLCByZXEtXFx1MDAzZWlkKTtcXG4gXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA0OjQwOjIxLjkwMDYyNTg3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjcxNDAwODMxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBuZXR3b3JrIGRyaXZlciwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhlcmVmb3JlLCB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM0NTBlMDg0NmZmYjVhZDU5MmU2NWExNWI5YzEyMWM4NjI0YTczOTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNDo0MDoxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxuaW5kZXggNzE0ZTQ3ZjY4ZDkzMi4uOTZlMWI5M2Y4MTIyMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWJveC5oXG5AQCAtNDI3LDcgKzQyNyw4IEBAIE0oTUNTX0NVU1RPTV9UQUdfQ0ZHX0dFVCwgMHhhMDIxLCBtY3NfY3VzdG9tX3RhZ19jZmdfZ2V0LFx0XHRcdFxcXG4gXG4gLyogTWVzc2FnZXMgaW5pdGlhdGVkIGJ5IEFGIChyYW5nZSAweEMwMCAtIDB4RUZGKSAqL1xuICNkZWZpbmUgTUJPWF9VUF9DR1hfTUVTU0FHRVNcdFx0XHRcdFx0XHRcXFxuLU0oQ0dYX0xJTktfRVZFTlQsXHQweEMwMCwgY2d4X2xpbmtfZXZlbnQsIGNneF9saW5rX2luZm9fbXNnLCBtc2dfcnNwKVxuK00oQ0dYX0xJTktfRVZFTlQsXHQweEMwMCwgY2d4X2xpbmtfZXZlbnQsIGNneF9saW5rX2luZm9fbXNnLCBtc2dfcnNwKSBcXFxuK00oQ0dYX1BUUF9SWF9JTkZPLFx0MHhDMDEsIGNneF9wdHBfcnhfaW5mbyxcdGNneF9wdHBfcnhfaW5mb19tc2csIG1zZ19yc3ApXG4gXG4gI2RlZmluZSBNQk9YX1VQX0NQVF9NRVNTQUdFU1x0XHRcdFx0XHRcdFxcXG4gTShDUFRfSU5TVF9MTVRTVCxcdDB4RDAwLCBjcHRfaW5zdF9sbXRzdCwgY3B0X2luc3RfbG10c3RfcmVxLCBtc2dfcnNwKVxuQEAgLTY0Nyw2ICs2NDgsMTEgQEAgc3RydWN0IGNneF9saW5rX2luZm9fbXNnIHtcbiBcdHN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGlua19pbmZvO1xuIH07XG4gXG4rc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cge1xuK1x0c3RydWN0IG1ib3hfbXNnaGRyIGhkcjtcbitcdHU4IHB0cF9lbjtcbit9O1xuK1xuIHN0cnVjdCBjZ3hfcGF1c2VfZnJtX2NmZyB7XG4gXHRzdHJ1Y3QgbWJveF9tc2doZHIgaGRyO1xuIFx0dTggc2V0O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuaW5kZXggODdkMjE4ODlkYzQ5ZS4uY2I5NWYzZmI2MGFlNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG5AQCAtODIwLDYgKzgyMCwyNCBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfcHJvbWlzY19kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBjZ3hfbm90aWZ5X3VwX3B0cF9pbmZvKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBib29sIGVuYWJsZSlcbit7XG4rXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnO1xuK1xuK1x0LyogU2VuZCBtYm94IG1lc3NhZ2UgdG8gUEYgKi9cbitcdG1zZyA9IG90eDJfbWJveF9hbGxvY19tc2dfY2d4X3B0cF9yeF9pbmZvKHJ2dSwgcGYpO1xuK1x0aWYgKCFtc2cpIHtcbitcdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcImZhaWxlZCB0byBhbGxvYyBtZXNzYWdlXFxuXCIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRtc2ctXHUwMDNlcHRwX2VuID0gZW5hYmxlO1xuK1xuK1x0b3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oXHUwMDI2cnZ1LVx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XG4rXG4rXHRvdHgyX21ib3hfbXNnX3NlbmRfdXAoXHUwMDI2cnZ1LVx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxuIHtcbiBcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpO1xuQEAgLTgzNyw2ICs4NTUsOCBAQCBzdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSlcbiBcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFxuK1x0Y2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpO1xuK1xuIFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuIFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmhcbmluZGV4IGVlY2VlNjEyYjdiMmMuLjEzYjU0Mjg3ZmFjZjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmhcbkBAIC0yODYsNiArMjg2LDcgQEAgZW51bSB2ZnBlcm0ge1xuIHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyB7XG4gXHRzdHJ1Y3Qgb3R4Ml9uaWMgKnBmO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29yayBsaW5rX2V2ZW50X3dvcms7XG4rXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHB0cF9pbmZvX3dvcms7XG4gXHRib29sIGludGZfZG93bjsgLyogaW50ZXJmYWNlIHdhcyBlaXRoZXIgY29uZmlndXJlZCBvciBub3QgKi9cbiBcdHU4IG1hY1tFVEhfQUxFTl07XG4gXHR1MTYgdmxhbjtcbkBAIC0zMjQsNiArMzI1LDcgQEAgc3RydWN0IG90eDJfcHRwIHtcbiBcdHU2NCB0aHJlc2g7XG4gXG4gXHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIGV4dHRzX2NvbmZpZztcbitcdGJvb2wgcHRwX2VuO1xuIFx0dTY0ICgqY29udmVydF9yeF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApO1xuIFx0dTY0ICgqY29udmVydF90eF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApO1xuIFx0dTY0ICgqcHRwX3RzdGFtcDJuc2VjKShjb25zdCBzdHJ1Y3QgdGltZWNvdW50ZXIgKnRpbWVfY291bnRlciwgdTY0IHRpbWVzdGFtcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcbmluZGV4IGM5OTVmMjkwMDg1OTAuLjhlMjQ0MzA0MWVlOGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jXG5AQCAtNDQsNiArNDQsNyBAQCBNT0RVTEVfTElDRU5TRShcIkdQTCB2MlwiKTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3R4Ml9wZl9pZF90YWJsZSk7XG4gXG4gc3RhdGljIHZvaWQgb3R4Ml92Zl9saW5rX2V2ZW50X3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbitzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiBlbnVtIHtcbiBcdFRZUEVfUEZBRixcbkBAIC05NjAsNiArOTYxLDMwIEBAIGludCBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfbGlua19ldmVudChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK2ludCBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfcHRwX3J4X2luZm8oc3RydWN0IG90eDJfbmljICpwZixcbitcdFx0XHRcdFx0IHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2csXG4rXHRcdFx0XHRcdCBzdHJ1Y3QgbXNnX3JzcCAqcnNwKVxuK3tcbitcdGludCBpO1xuK1xuK1x0aWYgKCFwZi1cdTAwM2VwdHApXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cGYtXHUwMDNlcHRwLVx1MDAzZXB0cF9lbiA9IG1zZy1cdTAwM2VwdHBfZW47XG4rXG4rXHQvKiBub3RpZnkgVkZzIGFib3V0IHB0cCBldmVudCAqL1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGNpX251bV92ZihwZi1cdTAwM2VwZGV2KTsgaSsrKSB7XG4rXHRcdHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyAqY29uZmlnID0gXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXTtcbitcdFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZHdvcmsgPSBcdTAwMjZjb25maWctXHUwMDNlcHRwX2luZm9fd29yaztcbitcbitcdFx0aWYgKGNvbmZpZy1cdTAwM2VpbnRmX2Rvd24pXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhkd29yaywgbXNlY3NfdG9famlmZmllcygxMDApKTtcbitcdH1cbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgaW50IG90eDJfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBtYm94X21zZ2hkciAqcmVxKVxuIHtcbkBAIC0zMDQxLDYgKzMwNjYsOCBAQCBzdGF0aWMgaW50IG90eDJfc3Jpb3ZfdmZjZmdfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKVxuIFx0XHRwZi1cdTAwM2V2Zl9jb25maWdzW2ldLnRydXN0ZWQgPSBmYWxzZTtcbiBcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5saW5rX2V2ZW50X3dvcmssXG4gXHRcdFx0XHQgIG90eDJfdmZfbGlua19ldmVudF90YXNrKTtcbitcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5wdHBfaW5mb193b3JrLFxuK1x0XHRcdFx0ICBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2spO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMzA1NSw2ICszMDgyLDcgQEAgc3RhdGljIHZvaWQgb3R4Ml9zcmlvdl92ZmNmZ19jbGVhbnVwKHN0cnVjdCBvdHgyX25pYyAqcGYpXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2V0b3RhbF92ZnM7IGkrKykge1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5saW5rX2V2ZW50X3dvcmspO1xuK1x0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5wdHBfaW5mb193b3JrKTtcbiBcdFx0b3R4Ml9zZXRfdmZfcGVybWlzc2lvbnMocGYsIGksIE9UWDJfUkVTRVRfVkZfUEVSTSk7XG4gXHR9XG4gfVxuQEAgLTM0MTcsNiArMzQ0NSwzNyBAQCBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRtdXRleF91bmxvY2soXHUwMDI2cGYtXHUwMDNlbWJveC5sb2NrKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbit7XG4rXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqcmVxO1xuK1x0c3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWc7XG4rXHRzdHJ1Y3QgbWJveF9tc2doZHIgKm1zZ2hkcjtcbitcdHN0cnVjdCBvdHgyX25pYyAqcGY7XG4rXHRpbnQgdmZfaWR4O1xuK1xuK1x0Y29uZmlnID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyxcbitcdFx0XHQgICAgICBwdHBfaW5mb193b3JrLndvcmspO1xuK1x0dmZfaWR4ID0gY29uZmlnIC0gY29uZmlnLVx1MDAzZXBmLVx1MDAzZXZmX2NvbmZpZ3M7XG4rXHRwZiA9IGNvbmZpZy1cdTAwM2VwZjtcbitcbitcdGlmIChjb25maWctXHUwMDNlaW50Zl9kb3duIHx8ICFwZi1cdTAwM2VwdHApXG4rXHRcdHJldHVybjtcbitcbitcdG1zZ2hkciA9IG90eDJfbWJveF9hbGxvY19tc2dfcnNwKFx1MDAyNnBmLVx1MDAzZW1ib3hfcGZ2ZlswXS5tYm94X3VwLCB2Zl9pZHgsXG4rXHRcdFx0XHRcdCBzaXplb2YoKnJlcSksIHNpemVvZihzdHJ1Y3QgbXNnX3JzcCkpO1xuK1x0aWYgKCFtc2doZHIpIHtcbitcdFx0ZGV2X2VycihwZi1cdTAwM2VkZXYsIFwiRmFpbGVkIHRvIGNyZWF0ZSBWRiVkIHB0cCBpbmZvIGV2ZW50XFxuXCIsIHZmX2lkeCk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdHJlcSA9IChzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqKW1zZ2hkcjtcbitcdHJlcS1cdTAwM2VoZHIuaWQgPSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk87XG4rXHRyZXEtXHUwMDNlaGRyLnNpZyA9IE9UWDJfTUJPWF9SRVFfU0lHO1xuK1x0cmVxLVx1MDAzZXB0cF9lbiA9IHBmLVx1MDAzZXB0cC1cdTAwM2VwdHBfZW47XG4rXG4rXHRvdHgyX3N5bmNfbWJveF91cF9tc2coXHUwMDI2cGYtXHUwMDNlbWJveF9wZnZmWzBdLCB2Zl9pZHgpO1xuK31cbitcbiBzdGF0aWMgaW50IG90eDJfc3Jpb3ZfZW5hYmxlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnVtdmZzKVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbmluZGV4IGIwMjJmNTJjNjg0NTAuLjYwZjgxMDYyMDA3YjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jXG5AQCAtMTQxLDYgKzE0MSwyMCBAQCBzdGF0aWMgaW50IG90eDJ2Zl9wcm9jZXNzX21ib3hfbXNnX3VwKHN0cnVjdCBvdHgyX25pYyAqdmYsXG4gXHRcdGVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KFxuIFx0XHRcdFx0dmYsIChzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cgKilyZXEsIHJzcCk7XG4gXHRcdHJldHVybiBlcnI7XG4rXHRjYXNlIE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzpcbitcdFx0cnNwID0gKHN0cnVjdCBtc2dfcnNwICopb3R4Ml9tYm94X2FsbG9jX21zZyhcdTAwMjZ2Zi1cdTAwM2VtYm94Lm1ib3hfdXAsXG4rXHRcdFx0XHRcdFx0MCwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7XG4rXHRcdGlmICghcnNwKVxuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0XHRyc3AtXHUwMDNlaGRyLmlkID0gTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPO1xuK1x0XHRyc3AtXHUwMDNlaGRyLnNpZyA9IE9UWDJfTUJPWF9SU1BfU0lHO1xuK1x0XHRyc3AtXHUwMDNlaGRyLnBjaWZ1bmMgPSByZXEtXHUwMDNlcGNpZnVuYztcbitcdFx0cnNwLVx1MDAzZWhkci5yYyA9IDA7XG4rXHRcdGVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyh2ZixcbitcdFx0XHRcdFx0XHRcdCAgIChzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqKXJlcSxcbitcdFx0XHRcdFx0XHRcdCAgIHJzcCk7XG4rXHRcdHJldHVybiBlcnI7XG4gXHRkZWZhdWx0OlxuIFx0XHRvdHgyX3JlcGx5X2ludmFsaWRfbXNnKFx1MDAyNnZmLVx1MDAzZW1ib3gubWJveF91cCwgMCwgMCwgcmVxLVx1MDAzZWlkKTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNDo0MDoyMS45MDA2MjcxMzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTQwMDU2MzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkndmUgZ290IGEgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgbmV3IG1haWxib3ggbWVzc2FnZSwgYENHWF9QVFBfUlhfSU5GT2AsIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIuIFRoZSBjb2RlJ3Mgc3ByZWFkIGFjcm9zcyBgcnZ1X2NneC5jYCwgYG90eDJfcGYuY2AsIGFuZCBgb3R4Ml92Zi5jYC4gSXQncyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBkZXNpZ25lZCBmb3IgTWFydmVsbCdzIE9jdGVvblRYMiBOSUNzLlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiB0aGUgcGF0Y2gncyBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCAqcGh5c2ljYWwqIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZW4gaXQncyBub3Qgd29ydGggZnV6emluZywgYW5kIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblRoZSBPY3Rlb25UWDIgZGVmaW5pdGVseSBmaXRzIHRoYXQgZGVzY3JpcHRpb24uIEl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyLCBhbmQgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGl0IHJlbGllcyBvbiBzcGVjaWZpYyBNYXJ2ZWxsIGhhcmR3YXJlIG9yLCBhdCBiZXN0LCBhIG5vbi1zdGFuZGFyZCBNYXJ2ZWxsLXNwZWNpZmljIGVtdWxhdGlvbiBlbnZpcm9ubWVudCB0aGF0IGlzbid0IHJlcGxpY2F0ZWQgaW4gc29tZXRoaW5nIGxpa2UgYSBzdGFuZGFyZCBRRU1VIHNldHVwLiBJJ3ZlIGRvdWJsZS1jaGVja2VkLCBhbmQgdGhlcmUncyBubyB3YXkgdG8gcmVsaWFibHkgcnVuIGFuZCB0ZXN0IHRoaXMgY29kZSBpbiB0aGUgdXN1YWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdlIHVzZSBmb3IgZnV6emluZywgbGlrZSBHQ0Ugb3IgdmFuaWxsYSBRRU1VLiBJdCdzIHNpbXBseSB1bnJlYWNoYWJsZS5cblxuVG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLCBJIGNoZWNrZWQgdGhlIHBhdGggYWdhaW46IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9gLiBZZXAsIGl0J3MgYSBzcGVjaWZpYyBFdGhlcm5ldCBkcml2ZXIuIE5vIGdlbmVyaWMgY29kZSBpcyB0b3VjaGVkLiBJIGNvbmZpcm1lZCB0aGlzIGJ5IGNoZWNraW5nIHRoZSBtb2RpZmllZCBmaWxlczogYGFmL21ib3guaGAsIGBhZi9ydnVfY2d4LmNgLCBgbmljL290eDJfY29tbW9uLmhgLCBgbmljL290eDJfcGYuY2AsIGFuZCBgbmljL290eDJfdmYuY2AuIEFsbCB0aG9zZSBmaWxlcyBhcmUgaW4gdGhlIGBtYXJ2ZWxsL29jdGVvbnR4MmAgZGlyZWN0b3J5LlxuXG5UaGVyZWZvcmUsIHRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIG1vZGlmaWVzIE9jdGVvblRYMiBjb2RlIHRoYXQgbmVlZHMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgYXZhaWxhYmxlIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBTbywgdGhlIHJlc3VsdCBpcyBgV29ydGhGdXp6aW5nOiBmYWxzZWAuIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBlbXB0eS4gSSdsbCB1c2UgYHNldC1yZXN1bHRzYCB0byByZWNvcmQgdGhpcyBhc3Nlc3NtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjQ1LCJPdXRwdXRUb2tlbnMiOjcyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDQ6NDA6MjkuMDQwNjg2NTgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNDo0MDoyOS4wNDA3MTA1MTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowk9bm2[1] Phase: Running StartedAt: 2026-08-18 04:40:39 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk9bm2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-18 04:40:39 +0000 UTC FinishedAt: 2026-08-18 04:40:44 +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,}