Name: series-workflow5wv8r Phase: Failed StartedAt: 2026-08-11 06:42:16 +0000 UTC FinishedAt: 2026-08-11 07:03:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wv8r[0] Phase: Succeeded StartedAt: 2026-08-11 06:42:16 +0000 UTC FinishedAt: 2026-08-11 07:02:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wv8r[0].run-triage Phase: Succeeded StartedAt: 2026-08-11 06:42:16 +0000 UTC FinishedAt: 2026-08-11 07:02:52 +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+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIGtlcm5lbCBmdW5jdGlvbiBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgYnV0IGl0cyBvbmx5IGNhbGxlcnMgYXJlIHdpdGhpbiB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIuIFNpbmNlIG1seDUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2YwNmI3MDRhMTE3NzhmM2E1M2JiNjg5MGFhNzA2MmEyMWYzMjgwN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA3OjAyOjI5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lcS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmNcbmluZGV4IGQxMWVjMjYzZDUzYzkuLmM4NjA5MGNiNThjNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmNcbkBAIC0xMjQzLDYgJiM0MzsxMjQzLDYgQEAgaW50IG1seDVfZXFfbm90aWZpZXJfdW5yZWdpc3RlcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9uYiAqbmIpXG4ge1xuIFx0c3RydWN0IG1seDVfZXFfdGFibGUgKmVxdCA9IGRldi1cdTAwM2Vwcml2LmVxX3RhYmxlO1xuIFxuLVx0cmV0dXJuIGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKFx1MDAyNmVxdC1cdTAwM2VuaFtuYi1cdTAwM2VldmVudF90eXBlXSwgXHUwMDI2bmItXHUwMDNlbmIpO1xuJiM0MztcdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoXHUwMDI2ZXF0LVx1MDAzZW5oW25iLVx1MDAzZWV2ZW50X3R5cGVdLCBcdTAwMjZuYi1cdTAwM2VuYik7XG4gfVxuIEVYUE9SVF9TWU1CT0wobWx4NV9lcV9ub3RpZmllcl91bnJlZ2lzdGVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmNcbmluZGV4IDRkN2YzNWI5Njg3NjEuLjc1M2NiMTVjZGVlZTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuY1xuQEAgLTQzNiw3ICYjNDM7NDM2LDcgQEAgaW50IG1seDVfbm90aWZpZXJfdW5yZWdpc3RlcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5cbiB7XG4gXHRzdHJ1Y3QgbWx4NV9ldmVudHMgKmV2ZW50cyA9IGRldi1cdTAwM2Vwcml2LmV2ZW50cztcbiBcbi1cdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihcdTAwMjZldmVudHMtXHUwMDNlZndfbmgsIG5iKTtcbiYjNDM7XHRyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFx1MDAyNmV2ZW50cy1cdTAwM2Vmd19uaCwgbmIpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKG1seDVfbm90aWZpZXJfdW5yZWdpc3Rlcik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmNcbmluZGV4IDBmNWI4YmM3ODYxZWIuLmNiMzFlOGM3YTI0NGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jXG5AQCAtMzQzLDcgJiM0MzszNDMsNyBAQCBpbnQgbWx4NV9pcnFfZGV0YWNoX25iKHN0cnVjdCBtbHg1X2lycSAqaXJxLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxuIHtcbiBcdGludCBlcnIgPSAwO1xuIFxuLVx0ZXJyID0gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoXHUwMDI2aXJxLVx1MDAzZW5oLCBuYik7XG4mIzQzO1x0ZXJyID0gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFx1MDAyNmlycS1cdTAwM2VuaCwgbmIpO1xuIFx0bWx4NV9pcnFfcHV0KGlycSk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmhcbmluZGV4IDAxYjZjOWQ5OTU2ZjkuLjE1NmQ5NThmOThmMDUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaFxuQEAgLTE1OSw2ICYjNDM7MTU5LDggQEAgZXh0ZXJuIGludCBibG9ja2luZ19ub3RpZmllcl9jaGFpbl9yZWdpc3Rlcl91bmlxdWVfcHJpbyhcbiBcbiBleHRlcm4gaW50IGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKHN0cnVjdCBhdG9taWNfbm90aWZpZXJfaGVhZCAqbmgsXG4gXHRcdHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xuJiM0MztleHRlcm4gaW50IGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyX2V4cGVkaXRlZChzdHJ1Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgKm5oLFxuJiM0MztcdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG4gZXh0ZXJuIGludCBibG9ja2luZ19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKHN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFkICpuaCxcbiBcdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG4gZXh0ZXJuIGludCByYXdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9ub3RpZmllci5jIGIva2VybmVsL25vdGlmaWVyLmNcbmluZGV4IDJmOWZlN2MzMDI4N2YuLjliMzU4MjJmYzJjMDIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbm90aWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL25vdGlmaWVyLmNcbkBAIC0xOTcsNiAmIzQzOzE5NywzMCBAQCBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIpO1xuIFxuJiM0MzsvKipcbiYjNDM7ICpcdGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyX2V4cGVkaXRlZCAtIFJlbW92ZSBub3RpZmllciBmcm9tIGFuIGF0b21pYyBub3RpZmllciBjaGFpblxuJiM0MzsgKlx0QG5oOiBQb2ludGVyIHRvIGhlYWQgb2YgdGhlIGF0b21pYyBub3RpZmllciBjaGFpblxuJiM0MzsgKlx0QG46IEVudHJ5IHRvIHJlbW92ZSBmcm9tIG5vdGlmaWVyIGNoYWluXG4mIzQzOyAqXG4mIzQzOyAqXHRSZW1vdmVzIGEgbm90aWZpZXIgZnJvbSBhbiBhdG9taWMgbm90aWZpZXIgY2hhaW4gYW5kIGZvcmNlZnVsbHlcbiYjNDM7ICpcdGFjY2VsZXJhdGVzIHRoZSBSQ1UgZ3JhY2UgcGVyaW9kLlxuJiM0MzsgKlxuJiM0MzsgKlx0UmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIC1FTk9FTlQgb24gZmFpbHVyZS5cbiYjNDM7ICovXG4mIzQzO2ludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcbiYjNDM7XHRcdHN0cnVjdCBub3RpZmllcl9ibG9jayAqbilcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2bmgtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdHJldCA9IG5vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoXHUwMDI2bmgtXHUwMDNlaGVhZCwgbik7XG4mIzQzO1x0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZuaC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0c3luY2hyb25pemVfcmN1X2V4cGVkaXRlZCgpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKTtcbiYjNDM7XG4gLyoqXG4gICpcdGF0b21pY19ub3RpZmllcl9jYWxsX2NoYWluIC0gQ2FsbCBmdW5jdGlvbnMgaW4gYW4gYXRvbWljIG5vdGlmaWVyIGNoYWluXG4gICpcdEBuaDogUG9pbnRlciB0byBoZWFkIG9mIHRoZSBhdG9taWMgbm90aWZpZXIgY2hhaW5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIGtlcm5lbCBmdW5jdGlvbiBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgYnV0IGl0cyBvbmx5IGNhbGxlcnMgYXJlIHdpdGhpbiB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIuIFNpbmNlIG1seDUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2YwNmI3MDRhMTE3NzhmM2E1M2JiNjg5MGFhNzA2MmEyMWYzMjgwNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDA3OjAyOjI5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuYwppbmRleCBkMTFlYzI2M2Q1M2M5Li5jODYwOTBjYjU4YzZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuYwpAQCAtMTI0Myw2ICYjNDM7MTI0Myw2IEBAIGludCBtbHg1X2VxX25vdGlmaWVyX3VucmVnaXN0ZXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfbmIgKm5iKQogewogCXN0cnVjdCBtbHg1X2VxX3RhYmxlICplcXQgPSBkZXYtJmd0O3ByaXYuZXFfdGFibGU7CiAKLQlyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoJmFtcDtlcXQtJmd0O25oW25iLSZndDtldmVudF90eXBlXSwgJmFtcDtuYi0mZ3Q7bmIpOwomIzQzOwlyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKCZhbXA7ZXF0LSZndDtuaFtuYi0mZ3Q7ZXZlbnRfdHlwZV0sICZhbXA7bmItJmd0O25iKTsKIH0KIEVYUE9SVF9TWU1CT0wobWx4NV9lcV9ub3RpZmllcl91bnJlZ2lzdGVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuYwppbmRleCA0ZDdmMzViOTY4NzYxLi43NTNjYjE1Y2RlZWUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jCkBAIC00MzYsNyAmIzQzOzQzNiw3IEBAIGludCBtbHg1X25vdGlmaWVyX3VucmVnaXN0ZXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuCiB7CiAJc3RydWN0IG1seDVfZXZlbnRzICpldmVudHMgPSBkZXYtJmd0O3ByaXYuZXZlbnRzOwogCi0JcmV0dXJuIGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKCZhbXA7ZXZlbnRzLSZndDtmd19uaCwgbmIpOwomIzQzOwlyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKCZhbXA7ZXZlbnRzLSZndDtmd19uaCwgbmIpOwogfQogRVhQT1JUX1NZTUJPTChtbHg1X25vdGlmaWVyX3VucmVnaXN0ZXIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYwppbmRleCAwZjViOGJjNzg2MWViLi5jYjMxZThjN2EyNDRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmMKQEAgLTM0Myw3ICYjNDM7MzQzLDcgQEAgaW50IG1seDVfaXJxX2RldGFjaF9uYihzdHJ1Y3QgbWx4NV9pcnEgKmlycSwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKIHsKIAlpbnQgZXJyID0gMDsKIAotCWVyciA9IGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKCZhbXA7aXJxLSZndDtuaCwgbmIpOwomIzQzOwllcnIgPSBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoJmFtcDtpcnEtJmd0O25oLCBuYik7CiAJbWx4NV9pcnFfcHV0KGlycSk7CiAJcmV0dXJuIGVycjsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCBiL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaAppbmRleCAwMWI2YzlkOTk1NmY5Li4xNTZkOTU4Zjk4ZjA1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9ub3RpZmllci5oCkBAIC0xNTksNiAmIzQzOzE1OSw4IEBAIGV4dGVybiBpbnQgYmxvY2tpbmdfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXJfdW5pcXVlX3ByaW8oCiAKIGV4dGVybiBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwKIAkJc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CiYjNDM7ZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwKJiM0MzsJCXN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwogZXh0ZXJuIGludCBibG9ja2luZ19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKHN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFkICpuaCwKIAkJc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CiBleHRlcm4gaW50IHJhd19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKHN0cnVjdCByYXdfbm90aWZpZXJfaGVhZCAqbmgsCmRpZmYgLS1naXQgYS9rZXJuZWwvbm90aWZpZXIuYyBiL2tlcm5lbC9ub3RpZmllci5jCmluZGV4IDJmOWZlN2MzMDI4N2YuLjliMzU4MjJmYzJjMDIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9ub3RpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9ub3RpZmllci5jCkBAIC0xOTcsNiAmIzQzOzE5NywzMCBAQCBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKTsKIAomIzQzOy8qKgomIzQzOyAqCWF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyX2V4cGVkaXRlZCAtIFJlbW92ZSBub3RpZmllciBmcm9tIGFuIGF0b21pYyBub3RpZmllciBjaGFpbgomIzQzOyAqCUBuaDogUG9pbnRlciB0byBoZWFkIG9mIHRoZSBhdG9taWMgbm90aWZpZXIgY2hhaW4KJiM0MzsgKglAbjogRW50cnkgdG8gcmVtb3ZlIGZyb20gbm90aWZpZXIgY2hhaW4KJiM0MzsgKgomIzQzOyAqCVJlbW92ZXMgYSBub3RpZmllciBmcm9tIGFuIGF0b21pYyBub3RpZmllciBjaGFpbiBhbmQgZm9yY2VmdWxseQomIzQzOyAqCWFjY2VsZXJhdGVzIHRoZSBSQ1UgZ3JhY2UgcGVyaW9kLgomIzQzOyAqCiYjNDM7ICoJUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIC1FTk9FTlQgb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0MztpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKHN0cnVjdCBhdG9taWNfbm90aWZpZXJfaGVhZCAqbmgsCiYjNDM7CQlzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm4pCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO25oLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CXJldCA9IG5vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoJmFtcDtuaC0mZ3Q7aGVhZCwgbik7CiYjNDM7CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtuaC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwlzeW5jaHJvbml6ZV9yY3VfZXhwZWRpdGVkKCk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyX2V4cGVkaXRlZCk7CiYjNDM7CiAvKioKICAqCWF0b21pY19ub3RpZmllcl9jYWxsX2NoYWluIC0gQ2FsbCBmdW5jdGlvbnMgaW4gYW4gYXRvbWljIG5vdGlmaWVyIGNoYWluCiAgKglAbmg6IFBvaW50ZXIgdG8gaGVhZCBvZiB0aGUgYXRvbWljIG5vdGlmaWVyIGNoYWluCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMTIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiB0aGlzIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCBpbiBga2VybmVsL25vdGlmaWVyLmNgLiBJbW1lZGlhdGVseSwgbXkgc3BpZGV5LXNlbnNlIHRpbmdsZXMgYmVjYXVzZSBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIGFyZSByYXJlbHkgc3RyYWlnaHRmb3J3YXJkLiBUaGlzIGxvb2tzIGxpa2UgaXQgY291bGQgaGF2ZSBicm9hZGVyIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZS4KClRoZSBwcm9tcHQsIGhvd2V2ZXIsIGJyaW5ncyB1cCBhIHNwZWNpZmljIHBvaW50OiBpZiB0aGUgY2hhbmdlIGlzICpvbmx5KiB3aXRoaW4gY2VydGFpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzLCBlc3BlY2lhbGx5IFNtYXJ0TklDcyB0aGF0IGFyZW4mIzM5O3QgdHlwaWNhbGx5IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cywgdGhlbiBmdXp6aW5nIGlzIG91dC4gSSBzZWUgdGhhdCB0aGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lcS5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuY2AuIEFoLCBgbWx4NWAuIFRoYXQmIzM5O3MgTWVsbGFub3gsIHdoaWNoIG1lYW5zIFNtYXJ0TklDLiBUaGUgQ29ubmVjdFgtNSBzcGVjaWZpY2FsbHksIGlzIHRoYXQgcmlnaHQ/CgpUaGUgY2F0Y2ggaXMsIEkgc2VlIHRoaXMgbmV3IGZ1bmN0aW9uIGluIGBrZXJuZWwvbm90aWZpZXIuY2AhIEl0JiMzOTtzICpub3QqIGp1c3QgaXNvbGF0ZWQgdG8gYG1seDVgLiBTbywgaXQgYWRkcyB0aGlzIGZ1bmN0aW9uLCBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgdG8gdGhlIGtlcm5lbC4gV2hhdCBvdGhlciBjb25zdW1lcnMgYXJlIHRoZXJlPyBJcyB0aGUgbmV3IGZ1bmN0aW9uIGV4cG9ydGVkPyBZZXAsIGl0IGlzISAKCk9rYXksIHNvIHNpbmNlIE1lbGxhbm94IGlzIHNwZWNpZmljYWxseSBtZW50aW9uZWQgYXMgKm5vdCogYmVpbmcgZW11bGF0ZWQsIHRoZSBuZXcgZnVuY3Rpb24gY2Fubm90IGJlIHJlYWNoZWQgaW4gc3RhbmRhcmQgZW11bGF0ZWQgZW52aXJvbm1lbnRzLgoKSG93ZXZlciwgc2luY2UgYGtlcm5lbC9ub3RpZmllci5jYCBpcyBiZWluZyBtb2RpZmllZCwgSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGVsc2V3aGVyZS4gSWYgaXQmIzM5O3MgKm9ubHkqIHVzZWQgYnkgTWVsbGFub3gsIHRoZW4gSSBjYW4mIzM5O3QgcmVhY2ggaXQgZm9yIGZ1enppbmcuIElmIGl0JiMzOTtzIHVzZWQgZWxzZXdoZXJlLCB0aGVuIEkgaGF2ZSB0byBjb25zaWRlciB3aGV0aGVyIHRvIGNoZWNrIG90aGVyIHVzZXJzIHRvIGFzc2VzcyB3aGV0aGVyIHRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgYW5kIGZ1enphYmxlLCBldmVuIGlmIE1lbGxhbm94IGlzIG5vdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmM9MTI0Mj1pbnQgbWx4NV9lcV9ub3RpZmllcl91bnJlZ2lzdGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X25iICpuYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuYy0xMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmM6MTI0NjpcdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoXHUwMDI2ZXF0LVx1MDAzZW5oW25iLVx1MDAzZWV2ZW50X3R5cGVdLCBcdTAwMjZuYi1cdTAwM2VuYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuYy0xMjQ3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmM9NDM1PWludCBtbHg1X25vdGlmaWVyX3VucmVnaXN0ZXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmMtNDM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jOjQzOTpcdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoXHUwMDI2ZXZlbnRzLVx1MDAzZWZ3X25oLCBuYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmMtNDQwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jPTM0Mj1pbnQgbWx4NV9pcnFfZGV0YWNoX25iKHN0cnVjdCBtbHg1X2lycSAqaXJxLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmMtMzQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYzozNDY6XHRlcnIgPSBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoXHUwMDI2aXJxLVx1MDAzZW5oLCBuYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jLTM0Ny1cdG1seDVfaXJxX3B1dChpcnEpO1xuLS1cbmluY2x1ZGUvbGludXgvbm90aWZpZXIuaD0xNjA9ZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgKm5oLFxuaW5jbHVkZS9saW51eC9ub3RpZmllci5oLTE2MS1cdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG5pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmg6MTYyOmV4dGVybiBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKHN0cnVjdCBhdG9taWNfbm90aWZpZXJfaGVhZCAqbmgsXG5pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgtMTYzLVx0XHRzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTtcbi0tXG5rZXJuZWwvbm90aWZpZXIuYz0xOTg9RVhQT1JUX1NZTUJPTF9HUEwoYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIpO1xuLS1cbmtlcm5lbC9ub3RpZmllci5jLTIwMC0vKipcbmtlcm5lbC9ub3RpZmllci5jOjIwMTogKlx0YXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkIC0gUmVtb3ZlIG5vdGlmaWVyIGZyb20gYW4gYXRvbWljIG5vdGlmaWVyIGNoYWluXG5rZXJuZWwvbm90aWZpZXIuYy0yMDItICpcdEBuaDogUG9pbnRlciB0byBoZWFkIG9mIHRoZSBhdG9taWMgbm90aWZpZXIgY2hhaW5cbi0tXG5rZXJuZWwvbm90aWZpZXIuYy0yMDktICovXG5rZXJuZWwvbm90aWZpZXIuYzoyMTA6aW50IGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyX2V4cGVkaXRlZChzdHJ1Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgKm5oLFxua2VybmVsL25vdGlmaWVyLmMtMjExLVx0XHRzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm4pXG4tLVxua2VybmVsL25vdGlmaWVyLmMtMjIxLX1cbmtlcm5lbC9ub3RpZmllci5jOjIyMjpFWFBPUlRfU1lNQk9MX0dQTChhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQpO1xua2VybmVsL25vdGlmaWVyLmMtMjIzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MTkKCQkJCQkJCW91dHB1dDogMTA0CgkJCQkJCQl0aG91Z2h0czogMzUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBbmFseXNpcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBhbmFseXNpcyBzaG93cyB0aGF0IGBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWRgIGlzIGV4Y2x1c2l2ZWx5IHVzZWQgd2l0aGluIHRoZSBNZWxsYW5veCBgbWx4NWAgZHJpdmVycywgc3BlY2lmaWNhbGx5IGluIGBlcS5jYCwgYGV2ZW50cy5jYCwgYW5kIGBwY2lfaXJxLmNgLiBDb25zaWRlcmluZyBteSBleHBlcmllbmNlLCBJIGtub3cgdGhhdCBgbWx4NWAgaXMgYSBTbWFydE5JQyBkcml2ZXIsIGEgc3BlY2lhbGl6ZWQgcGllY2Ugb2YgaGFyZHdhcmUuIEl0ICpyZXF1aXJlcyogcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyDigJMgc29tZXRoaW5nIHRoYXQmIzM5O3Mgc2ltcGx5IG5vdCBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIG5vciBpcyBpdCBlbXVsYXRlZCBhdCBhbGwuIFNvLCByaWdodCBvZmYgdGhlIGJhdCwgSSYjMzk7bSB0aGlua2luZywgdGhpcyBuZXcgZnVuY3Rpb24gaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gbW9zdCwgaWYgbm90IGFsbCwgb2Ygb3VyIHRlc3Qgc2V0dXBzLgoKVGhlIHByb21wdCBpcyBxdWl0ZSBjbGVhciBhYm91dCB0aGlzLiBJJiMzOTt2ZSByZS1yZWFkIGl0LiBJdCBleHBsaWNpdGx5IHN0YXRlcyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgY2hhbmdlcyBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycywgKmVzcGVjaWFsbHkqIHRob3NlIGRlbWFuZGluZyBwaHlzaWNhbCBoYXJkd2FyZS4gQW5kIGl0IGFsc28gc3RhdGVzIHRoYXQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiBvdXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUsIHNob3VsZCB0cmlnZ2VyIHRoZSBzYW1lIHJlc3VsdC4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgY2FsbCBzaXRlcyBhcmUgaW5kZWVkIGV4Y2x1c2l2ZWx5IHdpdGhpbiBgbWx4NWAuIEFuZCwgSSB3aWxsIGRvdWJsZSBjaGVjayB0aGF0IGBtbHg1YCBpcyBpbiBubyB3YXkgZW11bGF0ZWQgaW4gb3VyIHN5c3RlbS4gTm9wZSwgaXQmIzM5O3Mgbm90LiBJJiMzOTt2ZSBjb25zaWRlcmVkIGV2ZXJ5IGFuZ2xlLgoKR2l2ZW4gdGhhdCB0aGUgY29yZSBrZXJuZWwgY2hhbmdlcyBhcmUgd2l0aGluIGEgZHJpdmVyIGRlcGVuZGVudCBvbiBub24tZW11bGF0ZWQgaGFyZHdhcmUsIGFuZCB0aHVzIHVucmVhY2hhYmxlIHdpdGhpbiBvdXIgc3RhbmRhcmQgZnV6emluZyBmcmFtZXdvcmssIEkmIzM5O20gZ29pbmcgdG8gY29uZmlkZW50bHkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIGtlcm5lbCBmdW5jdGlvbiBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgYnV0IGl0cyBvbmx5IGNhbGxlcnMgYXJlIHdpdGhpbiB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIuIFNpbmNlIG1seDUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUga2VybmVsIGZ1bmN0aW9uIGBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWRgLCBidXQgaXRzIG9ubHkgY2FsbGVycyBhcmUgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlci4gU2luY2UgbWx4NSBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjAyOjMwLjI5NTM4OTUwMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzA1NDgxNDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIGtlcm5lbCBmdW5jdGlvbiBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgYnV0IGl0cyBvbmx5IGNhbGxlcnMgYXJlIHdpdGhpbiB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIuIFNpbmNlIG1seDUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzowMjozMC4yOTUzOTUxNzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MTEyMzc5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNmMDZiNzA0YTExNzc4ZjNhNTNiYjY4OTBhYTcwNjJhMjFmMzI4MDdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDc6MDI6MjkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuY1xcbmluZGV4IGQxMWVjMjYzZDUzYzkuLmM4NjA5MGNiNThjNmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuY1xcbkBAIC0xMjQzLDYgKzEyNDMsNiBAQCBpbnQgbWx4NV9lcV9ub3RpZmllcl91bnJlZ2lzdGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X25iICpuYilcXG4ge1xcbiBcXHRzdHJ1Y3QgbWx4NV9lcV90YWJsZSAqZXF0ID0gZGV2LVxcdTAwM2Vwcml2LmVxX3RhYmxlO1xcbiBcXG4tXFx0cmV0dXJuIGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKFxcdTAwMjZlcXQtXFx1MDAzZW5oW25iLVxcdTAwM2VldmVudF90eXBlXSwgXFx1MDAyNm5iLVxcdTAwM2VuYik7XFxuK1xcdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoXFx1MDAyNmVxdC1cXHUwMDNlbmhbbmItXFx1MDAzZWV2ZW50X3R5cGVdLCBcXHUwMDI2bmItXFx1MDAzZW5iKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKG1seDVfZXFfbm90aWZpZXJfdW5yZWdpc3Rlcik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuY1xcbmluZGV4IDRkN2YzNWI5Njg3NjEuLjc1M2NiMTVjZGVlZTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jXFxuQEAgLTQzNiw3ICs0MzYsNyBAQCBpbnQgbWx4NV9ub3RpZmllcl91bnJlZ2lzdGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBub3RpZmllcl9ibG9jayAqblxcbiB7XFxuIFxcdHN0cnVjdCBtbHg1X2V2ZW50cyAqZXZlbnRzID0gZGV2LVxcdTAwM2Vwcml2LmV2ZW50cztcXG4gXFxuLVxcdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihcXHUwMDI2ZXZlbnRzLVxcdTAwM2Vmd19uaCwgbmIpO1xcbitcXHRyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFxcdTAwMjZldmVudHMtXFx1MDAzZWZ3X25oLCBuYik7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChtbHg1X25vdGlmaWVyX3VucmVnaXN0ZXIpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmNcXG5pbmRleCAwZjViOGJjNzg2MWViLi5jYjMxZThjN2EyNDRmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jXFxuQEAgLTM0Myw3ICszNDMsNyBAQCBpbnQgbWx4NV9pcnFfZGV0YWNoX25iKHN0cnVjdCBtbHg1X2lycSAqaXJxLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxcbiB7XFxuIFxcdGludCBlcnIgPSAwO1xcbiBcXG4tXFx0ZXJyID0gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoXFx1MDAyNmlycS1cXHUwMDNlbmgsIG5iKTtcXG4rXFx0ZXJyID0gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFxcdTAwMjZpcnEtXFx1MDAzZW5oLCBuYik7XFxuIFxcdG1seDVfaXJxX3B1dChpcnEpO1xcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCBiL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaFxcbmluZGV4IDAxYjZjOWQ5OTU2ZjkuLjE1NmQ5NThmOThmMDUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9ub3RpZmllci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9ub3RpZmllci5oXFxuQEAgLTE1OSw2ICsxNTksOCBAQCBleHRlcm4gaW50IGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyX3VuaXF1ZV9wcmlvKFxcbiBcXG4gZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgKm5oLFxcbiBcXHRcXHRzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTtcXG4rZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcXG4rXFx0XFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XFxuIGV4dGVybiBpbnQgYmxvY2tpbmdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgYmxvY2tpbmdfbm90aWZpZXJfaGVhZCAqbmgsXFxuIFxcdFxcdHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xcbiBleHRlcm4gaW50IHJhd19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKHN0cnVjdCByYXdfbm90aWZpZXJfaGVhZCAqbmgsXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9ub3RpZmllci5jIGIva2VybmVsL25vdGlmaWVyLmNcXG5pbmRleCAyZjlmZTdjMzAyODdmLi45YjM1ODIyZmMyYzAyIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9ub3RpZmllci5jXFxuKysrIGIva2VybmVsL25vdGlmaWVyLmNcXG5AQCAtMTk3LDYgKzE5NywzMCBAQCBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcik7XFxuIFxcbisvKipcXG4rICpcXHRhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQgLSBSZW1vdmUgbm90aWZpZXIgZnJvbSBhbiBhdG9taWMgbm90aWZpZXIgY2hhaW5cXG4rICpcXHRAbmg6IFBvaW50ZXIgdG8gaGVhZCBvZiB0aGUgYXRvbWljIG5vdGlmaWVyIGNoYWluXFxuKyAqXFx0QG46IEVudHJ5IHRvIHJlbW92ZSBmcm9tIG5vdGlmaWVyIGNoYWluXFxuKyAqXFxuKyAqXFx0UmVtb3ZlcyBhIG5vdGlmaWVyIGZyb20gYW4gYXRvbWljIG5vdGlmaWVyIGNoYWluIGFuZCBmb3JjZWZ1bGx5XFxuKyAqXFx0YWNjZWxlcmF0ZXMgdGhlIFJDVSBncmFjZSBwZXJpb2QuXFxuKyAqXFxuKyAqXFx0UmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIC1FTk9FTlQgb24gZmFpbHVyZS5cXG4rICovXFxuK2ludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcXG4rXFx0XFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuKVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2bmgtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0cmV0ID0gbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihcXHUwMDI2bmgtXFx1MDAzZWhlYWQsIG4pO1xcbitcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZuaC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRzeW5jaHJvbml6ZV9yY3VfZXhwZWRpdGVkKCk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKTtcXG4rXFxuIC8qKlxcbiAgKlxcdGF0b21pY19ub3RpZmllcl9jYWxsX2NoYWluIC0gQ2FsbCBmdW5jdGlvbnMgaW4gYW4gYXRvbWljIG5vdGlmaWVyIGNoYWluXFxuICAqXFx0QG5oOiBQb2ludGVyIHRvIGhlYWQgb2YgdGhlIGF0b21pYyBub3RpZmllciBjaGFpblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzowMjozMC42NzcyNDA3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE0OTIzNjE2ODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUga2VybmVsIGZ1bmN0aW9uIGBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWRgLCBidXQgaXRzIG9ubHkgY2FsbGVycyBhcmUgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlci4gU2luY2UgbWx4NSBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNmMDZiNzA0YTExNzc4ZjNhNTNiYjY4OTBhYTcwNjJhMjFmMzI4MDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAwNzowMjoyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lcS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmNcbmluZGV4IGQxMWVjMjYzZDUzYzkuLmM4NjA5MGNiNThjNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmNcbkBAIC0xMjQzLDYgKzEyNDMsNiBAQCBpbnQgbWx4NV9lcV9ub3RpZmllcl91bnJlZ2lzdGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X25iICpuYilcbiB7XG4gXHRzdHJ1Y3QgbWx4NV9lcV90YWJsZSAqZXF0ID0gZGV2LVx1MDAzZXByaXYuZXFfdGFibGU7XG4gXG4tXHRyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoXHUwMDI2ZXF0LVx1MDAzZW5oW25iLVx1MDAzZWV2ZW50X3R5cGVdLCBcdTAwMjZuYi1cdTAwM2VuYik7XG4rXHRyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFx1MDAyNmVxdC1cdTAwM2VuaFtuYi1cdTAwM2VldmVudF90eXBlXSwgXHUwMDI2bmItXHUwMDNlbmIpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKG1seDVfZXFfbm90aWZpZXJfdW5yZWdpc3Rlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jXG5pbmRleCA0ZDdmMzViOTY4NzYxLi43NTNjYjE1Y2RlZWUxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmNcbkBAIC00MzYsNyArNDM2LDcgQEAgaW50IG1seDVfbm90aWZpZXJfdW5yZWdpc3RlcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5cbiB7XG4gXHRzdHJ1Y3QgbWx4NV9ldmVudHMgKmV2ZW50cyA9IGRldi1cdTAwM2Vwcml2LmV2ZW50cztcbiBcbi1cdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihcdTAwMjZldmVudHMtXHUwMDNlZndfbmgsIG5iKTtcbitcdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoXHUwMDI2ZXZlbnRzLVx1MDAzZWZ3X25oLCBuYik7XG4gfVxuIEVYUE9SVF9TWU1CT0wobWx4NV9ub3RpZmllcl91bnJlZ2lzdGVyKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuY1xuaW5kZXggMGY1YjhiYzc4NjFlYi4uY2IzMWU4YzdhMjQ0ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmNcbkBAIC0zNDMsNyArMzQzLDcgQEAgaW50IG1seDVfaXJxX2RldGFjaF9uYihzdHJ1Y3QgbWx4NV9pcnEgKmlycSwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbiB7XG4gXHRpbnQgZXJyID0gMDtcbiBcbi1cdGVyciA9IGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKFx1MDAyNmlycS1cdTAwM2VuaCwgbmIpO1xuK1x0ZXJyID0gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFx1MDAyNmlycS1cdTAwM2VuaCwgbmIpO1xuIFx0bWx4NV9pcnFfcHV0KGlycSk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmhcbmluZGV4IDAxYjZjOWQ5OTU2ZjkuLjE1NmQ5NThmOThmMDUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaFxuQEAgLTE1OSw2ICsxNTksOCBAQCBleHRlcm4gaW50IGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyX3VuaXF1ZV9wcmlvKFxuIFxuIGV4dGVybiBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcbiBcdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG4rZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcbitcdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG4gZXh0ZXJuIGludCBibG9ja2luZ19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKHN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFkICpuaCxcbiBcdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG4gZXh0ZXJuIGludCByYXdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9ub3RpZmllci5jIGIva2VybmVsL25vdGlmaWVyLmNcbmluZGV4IDJmOWZlN2MzMDI4N2YuLjliMzU4MjJmYzJjMDIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbm90aWZpZXIuY1xuKysrIGIva2VybmVsL25vdGlmaWVyLmNcbkBAIC0xOTcsNiArMTk3LDMwIEBAIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgKm5oLFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcik7XG4gXG4rLyoqXG4rICpcdGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyX2V4cGVkaXRlZCAtIFJlbW92ZSBub3RpZmllciBmcm9tIGFuIGF0b21pYyBub3RpZmllciBjaGFpblxuKyAqXHRAbmg6IFBvaW50ZXIgdG8gaGVhZCBvZiB0aGUgYXRvbWljIG5vdGlmaWVyIGNoYWluXG4rICpcdEBuOiBFbnRyeSB0byByZW1vdmUgZnJvbSBub3RpZmllciBjaGFpblxuKyAqXG4rICpcdFJlbW92ZXMgYSBub3RpZmllciBmcm9tIGFuIGF0b21pYyBub3RpZmllciBjaGFpbiBhbmQgZm9yY2VmdWxseVxuKyAqXHRhY2NlbGVyYXRlcyB0aGUgUkNVIGdyYWNlIHBlcmlvZC5cbisgKlxuKyAqXHRSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgLUVOT0VOVCBvbiBmYWlsdXJlLlxuKyAqL1xuK2ludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcbitcdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuKVxuK3tcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHRpbnQgcmV0O1xuK1xuK1x0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2bmgtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0cmV0ID0gbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihcdTAwMjZuaC1cdTAwM2VoZWFkLCBuKTtcbitcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2bmgtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0c3luY2hyb25pemVfcmN1X2V4cGVkaXRlZCgpO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKTtcbitcbiAvKipcbiAgKlx0YXRvbWljX25vdGlmaWVyX2NhbGxfY2hhaW4gLSBDYWxsIGZ1bmN0aW9ucyBpbiBhbiBhdG9taWMgbm90aWZpZXIgY2hhaW5cbiAgKlx0QG5oOiBQb2ludGVyIHRvIGhlYWQgb2YgdGhlIGF0b21pYyBub3RpZmllciBjaGFpblxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6MDI6MzAuNjc3MjQzNDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Nzg0Nzk1NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgdGhpcyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCBpbiBga2VybmVsL25vdGlmaWVyLmNgLiBJbW1lZGlhdGVseSwgbXkgc3BpZGV5LXNlbnNlIHRpbmdsZXMgYmVjYXVzZSBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIGFyZSByYXJlbHkgc3RyYWlnaHRmb3J3YXJkLiBUaGlzIGxvb2tzIGxpa2UgaXQgY291bGQgaGF2ZSBicm9hZGVyIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyByZWFjaGFibGUgYW5kIGZ1enphYmxlLlxuXG5UaGUgcHJvbXB0LCBob3dldmVyLCBicmluZ3MgdXAgYSBzcGVjaWZpYyBwb2ludDogaWYgdGhlIGNoYW5nZSBpcyAqb25seSogd2l0aGluIGNlcnRhaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycywgZXNwZWNpYWxseSBTbWFydE5JQ3MgdGhhdCBhcmVuJ3QgdHlwaWNhbGx5IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cywgdGhlbiBmdXp6aW5nIGlzIG91dC4gSSBzZWUgdGhhdCB0aGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lcS5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuY2AuIEFoLCBgbWx4NWAuIFRoYXQncyBNZWxsYW5veCwgd2hpY2ggbWVhbnMgU21hcnROSUMuIFRoZSBDb25uZWN0WC01IHNwZWNpZmljYWxseSwgaXMgdGhhdCByaWdodD9cblxuVGhlIGNhdGNoIGlzLCBJIHNlZSB0aGlzIG5ldyBmdW5jdGlvbiBpbiBga2VybmVsL25vdGlmaWVyLmNgISBJdCdzICpub3QqIGp1c3QgaXNvbGF0ZWQgdG8gYG1seDVgLiBTbywgaXQgYWRkcyB0aGlzIGZ1bmN0aW9uLCBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgdG8gdGhlIGtlcm5lbC4gV2hhdCBvdGhlciBjb25zdW1lcnMgYXJlIHRoZXJlPyBJcyB0aGUgbmV3IGZ1bmN0aW9uIGV4cG9ydGVkPyBZZXAsIGl0IGlzISBcblxuT2theSwgc28gc2luY2UgTWVsbGFub3ggaXMgc3BlY2lmaWNhbGx5IG1lbnRpb25lZCBhcyAqbm90KiBiZWluZyBlbXVsYXRlZCwgdGhlIG5ldyBmdW5jdGlvbiBjYW5ub3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCBlbXVsYXRlZCBlbnZpcm9ubWVudHMuXG5cbkhvd2V2ZXIsIHNpbmNlIGBrZXJuZWwvbm90aWZpZXIuY2AgaXMgYmVpbmcgbW9kaWZpZWQsIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUuIElmIGl0J3MgKm9ubHkqIHVzZWQgYnkgTWVsbGFub3gsIHRoZW4gSSBjYW4ndCByZWFjaCBpdCBmb3IgZnV6emluZy4gSWYgaXQncyB1c2VkIGVsc2V3aGVyZSwgdGhlbiBJIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciB0byBjaGVjayBvdGhlciB1c2VycyB0byBhc3Nlc3Mgd2hldGhlciB0aGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSwgZXZlbiBpZiBNZWxsYW5veCBpcyBub3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTIsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzowMjozNy40NjIwNDE1NjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMTk5NjA5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmM9MTI0Mj1pbnQgbWx4NV9lcV9ub3RpZmllcl91bnJlZ2lzdGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X25iICpuYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lcS5jLTEyNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmM6MTI0NjpcXHRyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFxcdTAwMjZlcXQtXFx1MDAzZW5oW25iLVxcdTAwM2VldmVudF90eXBlXSwgXFx1MDAyNm5iLVxcdTAwM2VuYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmMtMTI0Ny19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmM9NDM1PWludCBtbHg1X25vdGlmaWVyX3VucmVnaXN0ZXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuYy00MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jOjQzOTpcXHRyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFxcdTAwMjZldmVudHMtXFx1MDAzZWZ3X25oLCBuYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jLTQ0MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jPTM0Mj1pbnQgbWx4NV9pcnFfZGV0YWNoX25iKHN0cnVjdCBtbHg1X2lycSAqaXJxLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYy0zNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYzozNDY6XFx0ZXJyID0gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFxcdTAwMjZpcnEtXFx1MDAzZW5oLCBuYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYy0zNDctXFx0bWx4NV9pcnFfcHV0KGlycSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmg9MTYwPWV4dGVybiBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcXG5pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgtMTYxLVxcdFxcdHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xcbmluY2x1ZGUvbGludXgvbm90aWZpZXIuaDoxNjI6ZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcXG5pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgtMTYzLVxcdFxcdHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xcbi0tXFxua2VybmVsL25vdGlmaWVyLmM9MTk4PUVYUE9SVF9TWU1CT0xfR1BMKGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKTtcXG4tLVxcbmtlcm5lbC9ub3RpZmllci5jLTIwMC0vKipcXG5rZXJuZWwvbm90aWZpZXIuYzoyMDE6ICpcXHRhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQgLSBSZW1vdmUgbm90aWZpZXIgZnJvbSBhbiBhdG9taWMgbm90aWZpZXIgY2hhaW5cXG5rZXJuZWwvbm90aWZpZXIuYy0yMDItICpcXHRAbmg6IFBvaW50ZXIgdG8gaGVhZCBvZiB0aGUgYXRvbWljIG5vdGlmaWVyIGNoYWluXFxuLS1cXG5rZXJuZWwvbm90aWZpZXIuYy0yMDktICovXFxua2VybmVsL25vdGlmaWVyLmM6MjEwOmludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcXG5rZXJuZWwvbm90aWZpZXIuYy0yMTEtXFx0XFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuKVxcbi0tXFxua2VybmVsL25vdGlmaWVyLmMtMjIxLX1cXG5rZXJuZWwvbm90aWZpZXIuYzoyMjI6RVhQT1JUX1NZTUJPTF9HUEwoYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKTtcXG5rZXJuZWwvbm90aWZpZXIuYy0yMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjAyOjM5LjA5NDA0MjU2MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MDY3ODkxNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBhbmFseXNpcyBzaG93cyB0aGF0IGBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWRgIGlzIGV4Y2x1c2l2ZWx5IHVzZWQgd2l0aGluIHRoZSBNZWxsYW5veCBgbWx4NWAgZHJpdmVycywgc3BlY2lmaWNhbGx5IGluIGBlcS5jYCwgYGV2ZW50cy5jYCwgYW5kIGBwY2lfaXJxLmNgLiBDb25zaWRlcmluZyBteSBleHBlcmllbmNlLCBJIGtub3cgdGhhdCBgbWx4NWAgaXMgYSBTbWFydE5JQyBkcml2ZXIsIGEgc3BlY2lhbGl6ZWQgcGllY2Ugb2YgaGFyZHdhcmUuIEl0ICpyZXF1aXJlcyogcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyDigJMgc29tZXRoaW5nIHRoYXQncyBzaW1wbHkgbm90IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgbm9yIGlzIGl0IGVtdWxhdGVkIGF0IGFsbC4gU28sIHJpZ2h0IG9mZiB0aGUgYmF0LCBJJ20gdGhpbmtpbmcsIHRoaXMgbmV3IGZ1bmN0aW9uIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIG1vc3QsIGlmIG5vdCBhbGwsIG9mIG91ciB0ZXN0IHNldHVwcy5cblxuVGhlIHByb21wdCBpcyBxdWl0ZSBjbGVhciBhYm91dCB0aGlzLiBJJ3ZlIHJlLXJlYWQgaXQuIEl0IGV4cGxpY2l0bHkgc3RhdGVzIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBjaGFuZ2VzIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCAqZXNwZWNpYWxseSogdGhvc2UgZGVtYW5kaW5nIHBoeXNpY2FsIGhhcmR3YXJlLiBBbmQgaXQgYWxzbyBzdGF0ZXMgdGhhdCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIG91ciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSwgc2hvdWxkIHRyaWdnZXIgdGhlIHNhbWUgcmVzdWx0LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgY2FsbCBzaXRlcyBhcmUgaW5kZWVkIGV4Y2x1c2l2ZWx5IHdpdGhpbiBgbWx4NWAuIEFuZCwgSSB3aWxsIGRvdWJsZSBjaGVjayB0aGF0IGBtbHg1YCBpcyBpbiBubyB3YXkgZW11bGF0ZWQgaW4gb3VyIHN5c3RlbS4gTm9wZSwgaXQncyBub3QuIEkndmUgY29uc2lkZXJlZCBldmVyeSBhbmdsZS5cblxuR2l2ZW4gdGhhdCB0aGUgY29yZSBrZXJuZWwgY2hhbmdlcyBhcmUgd2l0aGluIGEgZHJpdmVyIGRlcGVuZGVudCBvbiBub24tZW11bGF0ZWQgaGFyZHdhcmUsIGFuZCB0aHVzIHVucmVhY2hhYmxlIHdpdGhpbiBvdXIgc3RhbmRhcmQgZnV6emluZyBmcmFtZXdvcmssIEknbSBnb2luZyB0byBjb25maWRlbnRseSByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MTksIk91dHB1dFRva2VucyI6MTA0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjAyOjQ1LjYwMDgzNDI4OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIGtlcm5lbCBmdW5jdGlvbiBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgYnV0IGl0cyBvbmx5IGNhbGxlcnMgYXJlIHdpdGhpbiB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIuIFNpbmNlIG1seDUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUga2VybmVsIGZ1bmN0aW9uIGBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWRgLCBidXQgaXRzIG9ubHkgY2FsbGVycyBhcmUgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlci4gU2luY2UgbWx4NSBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjAyOjQ1LjYwMDg1OTgxN1oiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow5wv8r[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-11 06:42:16 +0000 UTC FinishedAt: 2026-08-11 07:02:46 +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+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIGtlcm5lbCBmdW5jdGlvbiBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgYnV0IGl0cyBvbmx5IGNhbGxlcnMgYXJlIHdpdGhpbiB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIuIFNpbmNlIG1seDUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2YwNmI3MDRhMTE3NzhmM2E1M2JiNjg5MGFhNzA2MmEyMWYzMjgwN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA3OjAyOjI5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lcS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmNcbmluZGV4IGQxMWVjMjYzZDUzYzkuLmM4NjA5MGNiNThjNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmNcbkBAIC0xMjQzLDYgJiM0MzsxMjQzLDYgQEAgaW50IG1seDVfZXFfbm90aWZpZXJfdW5yZWdpc3RlcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9uYiAqbmIpXG4ge1xuIFx0c3RydWN0IG1seDVfZXFfdGFibGUgKmVxdCA9IGRldi1cdTAwM2Vwcml2LmVxX3RhYmxlO1xuIFxuLVx0cmV0dXJuIGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKFx1MDAyNmVxdC1cdTAwM2VuaFtuYi1cdTAwM2VldmVudF90eXBlXSwgXHUwMDI2bmItXHUwMDNlbmIpO1xuJiM0MztcdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoXHUwMDI2ZXF0LVx1MDAzZW5oW25iLVx1MDAzZWV2ZW50X3R5cGVdLCBcdTAwMjZuYi1cdTAwM2VuYik7XG4gfVxuIEVYUE9SVF9TWU1CT0wobWx4NV9lcV9ub3RpZmllcl91bnJlZ2lzdGVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmNcbmluZGV4IDRkN2YzNWI5Njg3NjEuLjc1M2NiMTVjZGVlZTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuY1xuQEAgLTQzNiw3ICYjNDM7NDM2LDcgQEAgaW50IG1seDVfbm90aWZpZXJfdW5yZWdpc3RlcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5cbiB7XG4gXHRzdHJ1Y3QgbWx4NV9ldmVudHMgKmV2ZW50cyA9IGRldi1cdTAwM2Vwcml2LmV2ZW50cztcbiBcbi1cdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihcdTAwMjZldmVudHMtXHUwMDNlZndfbmgsIG5iKTtcbiYjNDM7XHRyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFx1MDAyNmV2ZW50cy1cdTAwM2Vmd19uaCwgbmIpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKG1seDVfbm90aWZpZXJfdW5yZWdpc3Rlcik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmNcbmluZGV4IDBmNWI4YmM3ODYxZWIuLmNiMzFlOGM3YTI0NGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jXG5AQCAtMzQzLDcgJiM0MzszNDMsNyBAQCBpbnQgbWx4NV9pcnFfZGV0YWNoX25iKHN0cnVjdCBtbHg1X2lycSAqaXJxLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxuIHtcbiBcdGludCBlcnIgPSAwO1xuIFxuLVx0ZXJyID0gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoXHUwMDI2aXJxLVx1MDAzZW5oLCBuYik7XG4mIzQzO1x0ZXJyID0gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFx1MDAyNmlycS1cdTAwM2VuaCwgbmIpO1xuIFx0bWx4NV9pcnFfcHV0KGlycSk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmhcbmluZGV4IDAxYjZjOWQ5OTU2ZjkuLjE1NmQ5NThmOThmMDUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaFxuQEAgLTE1OSw2ICYjNDM7MTU5LDggQEAgZXh0ZXJuIGludCBibG9ja2luZ19ub3RpZmllcl9jaGFpbl9yZWdpc3Rlcl91bmlxdWVfcHJpbyhcbiBcbiBleHRlcm4gaW50IGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKHN0cnVjdCBhdG9taWNfbm90aWZpZXJfaGVhZCAqbmgsXG4gXHRcdHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xuJiM0MztleHRlcm4gaW50IGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyX2V4cGVkaXRlZChzdHJ1Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgKm5oLFxuJiM0MztcdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG4gZXh0ZXJuIGludCBibG9ja2luZ19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKHN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFkICpuaCxcbiBcdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG4gZXh0ZXJuIGludCByYXdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9ub3RpZmllci5jIGIva2VybmVsL25vdGlmaWVyLmNcbmluZGV4IDJmOWZlN2MzMDI4N2YuLjliMzU4MjJmYzJjMDIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbm90aWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL25vdGlmaWVyLmNcbkBAIC0xOTcsNiAmIzQzOzE5NywzMCBAQCBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIpO1xuIFxuJiM0MzsvKipcbiYjNDM7ICpcdGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyX2V4cGVkaXRlZCAtIFJlbW92ZSBub3RpZmllciBmcm9tIGFuIGF0b21pYyBub3RpZmllciBjaGFpblxuJiM0MzsgKlx0QG5oOiBQb2ludGVyIHRvIGhlYWQgb2YgdGhlIGF0b21pYyBub3RpZmllciBjaGFpblxuJiM0MzsgKlx0QG46IEVudHJ5IHRvIHJlbW92ZSBmcm9tIG5vdGlmaWVyIGNoYWluXG4mIzQzOyAqXG4mIzQzOyAqXHRSZW1vdmVzIGEgbm90aWZpZXIgZnJvbSBhbiBhdG9taWMgbm90aWZpZXIgY2hhaW4gYW5kIGZvcmNlZnVsbHlcbiYjNDM7ICpcdGFjY2VsZXJhdGVzIHRoZSBSQ1UgZ3JhY2UgcGVyaW9kLlxuJiM0MzsgKlxuJiM0MzsgKlx0UmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIC1FTk9FTlQgb24gZmFpbHVyZS5cbiYjNDM7ICovXG4mIzQzO2ludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcbiYjNDM7XHRcdHN0cnVjdCBub3RpZmllcl9ibG9jayAqbilcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2bmgtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdHJldCA9IG5vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoXHUwMDI2bmgtXHUwMDNlaGVhZCwgbik7XG4mIzQzO1x0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZuaC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0c3luY2hyb25pemVfcmN1X2V4cGVkaXRlZCgpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKTtcbiYjNDM7XG4gLyoqXG4gICpcdGF0b21pY19ub3RpZmllcl9jYWxsX2NoYWluIC0gQ2FsbCBmdW5jdGlvbnMgaW4gYW4gYXRvbWljIG5vdGlmaWVyIGNoYWluXG4gICpcdEBuaDogUG9pbnRlciB0byBoZWFkIG9mIHRoZSBhdG9taWMgbm90aWZpZXIgY2hhaW5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIGtlcm5lbCBmdW5jdGlvbiBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgYnV0IGl0cyBvbmx5IGNhbGxlcnMgYXJlIHdpdGhpbiB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIuIFNpbmNlIG1seDUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2YwNmI3MDRhMTE3NzhmM2E1M2JiNjg5MGFhNzA2MmEyMWYzMjgwNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDA3OjAyOjI5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuYwppbmRleCBkMTFlYzI2M2Q1M2M5Li5jODYwOTBjYjU4YzZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuYwpAQCAtMTI0Myw2ICYjNDM7MTI0Myw2IEBAIGludCBtbHg1X2VxX25vdGlmaWVyX3VucmVnaXN0ZXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfbmIgKm5iKQogewogCXN0cnVjdCBtbHg1X2VxX3RhYmxlICplcXQgPSBkZXYtJmd0O3ByaXYuZXFfdGFibGU7CiAKLQlyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoJmFtcDtlcXQtJmd0O25oW25iLSZndDtldmVudF90eXBlXSwgJmFtcDtuYi0mZ3Q7bmIpOwomIzQzOwlyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKCZhbXA7ZXF0LSZndDtuaFtuYi0mZ3Q7ZXZlbnRfdHlwZV0sICZhbXA7bmItJmd0O25iKTsKIH0KIEVYUE9SVF9TWU1CT0wobWx4NV9lcV9ub3RpZmllcl91bnJlZ2lzdGVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuYwppbmRleCA0ZDdmMzViOTY4NzYxLi43NTNjYjE1Y2RlZWUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jCkBAIC00MzYsNyAmIzQzOzQzNiw3IEBAIGludCBtbHg1X25vdGlmaWVyX3VucmVnaXN0ZXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuCiB7CiAJc3RydWN0IG1seDVfZXZlbnRzICpldmVudHMgPSBkZXYtJmd0O3ByaXYuZXZlbnRzOwogCi0JcmV0dXJuIGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKCZhbXA7ZXZlbnRzLSZndDtmd19uaCwgbmIpOwomIzQzOwlyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKCZhbXA7ZXZlbnRzLSZndDtmd19uaCwgbmIpOwogfQogRVhQT1JUX1NZTUJPTChtbHg1X25vdGlmaWVyX3VucmVnaXN0ZXIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYwppbmRleCAwZjViOGJjNzg2MWViLi5jYjMxZThjN2EyNDRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmMKQEAgLTM0Myw3ICYjNDM7MzQzLDcgQEAgaW50IG1seDVfaXJxX2RldGFjaF9uYihzdHJ1Y3QgbWx4NV9pcnEgKmlycSwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKIHsKIAlpbnQgZXJyID0gMDsKIAotCWVyciA9IGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKCZhbXA7aXJxLSZndDtuaCwgbmIpOwomIzQzOwllcnIgPSBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoJmFtcDtpcnEtJmd0O25oLCBuYik7CiAJbWx4NV9pcnFfcHV0KGlycSk7CiAJcmV0dXJuIGVycjsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCBiL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaAppbmRleCAwMWI2YzlkOTk1NmY5Li4xNTZkOTU4Zjk4ZjA1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9ub3RpZmllci5oCkBAIC0xNTksNiAmIzQzOzE1OSw4IEBAIGV4dGVybiBpbnQgYmxvY2tpbmdfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXJfdW5pcXVlX3ByaW8oCiAKIGV4dGVybiBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwKIAkJc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CiYjNDM7ZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwKJiM0MzsJCXN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwogZXh0ZXJuIGludCBibG9ja2luZ19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKHN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFkICpuaCwKIAkJc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CiBleHRlcm4gaW50IHJhd19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKHN0cnVjdCByYXdfbm90aWZpZXJfaGVhZCAqbmgsCmRpZmYgLS1naXQgYS9rZXJuZWwvbm90aWZpZXIuYyBiL2tlcm5lbC9ub3RpZmllci5jCmluZGV4IDJmOWZlN2MzMDI4N2YuLjliMzU4MjJmYzJjMDIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9ub3RpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9ub3RpZmllci5jCkBAIC0xOTcsNiAmIzQzOzE5NywzMCBAQCBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKTsKIAomIzQzOy8qKgomIzQzOyAqCWF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyX2V4cGVkaXRlZCAtIFJlbW92ZSBub3RpZmllciBmcm9tIGFuIGF0b21pYyBub3RpZmllciBjaGFpbgomIzQzOyAqCUBuaDogUG9pbnRlciB0byBoZWFkIG9mIHRoZSBhdG9taWMgbm90aWZpZXIgY2hhaW4KJiM0MzsgKglAbjogRW50cnkgdG8gcmVtb3ZlIGZyb20gbm90aWZpZXIgY2hhaW4KJiM0MzsgKgomIzQzOyAqCVJlbW92ZXMgYSBub3RpZmllciBmcm9tIGFuIGF0b21pYyBub3RpZmllciBjaGFpbiBhbmQgZm9yY2VmdWxseQomIzQzOyAqCWFjY2VsZXJhdGVzIHRoZSBSQ1UgZ3JhY2UgcGVyaW9kLgomIzQzOyAqCiYjNDM7ICoJUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIC1FTk9FTlQgb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0MztpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKHN0cnVjdCBhdG9taWNfbm90aWZpZXJfaGVhZCAqbmgsCiYjNDM7CQlzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm4pCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO25oLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CXJldCA9IG5vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoJmFtcDtuaC0mZ3Q7aGVhZCwgbik7CiYjNDM7CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtuaC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwlzeW5jaHJvbml6ZV9yY3VfZXhwZWRpdGVkKCk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyX2V4cGVkaXRlZCk7CiYjNDM7CiAvKioKICAqCWF0b21pY19ub3RpZmllcl9jYWxsX2NoYWluIC0gQ2FsbCBmdW5jdGlvbnMgaW4gYW4gYXRvbWljIG5vdGlmaWVyIGNoYWluCiAgKglAbmg6IFBvaW50ZXIgdG8gaGVhZCBvZiB0aGUgYXRvbWljIG5vdGlmaWVyIGNoYWluCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMTIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiB0aGlzIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCBpbiBga2VybmVsL25vdGlmaWVyLmNgLiBJbW1lZGlhdGVseSwgbXkgc3BpZGV5LXNlbnNlIHRpbmdsZXMgYmVjYXVzZSBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIGFyZSByYXJlbHkgc3RyYWlnaHRmb3J3YXJkLiBUaGlzIGxvb2tzIGxpa2UgaXQgY291bGQgaGF2ZSBicm9hZGVyIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZS4KClRoZSBwcm9tcHQsIGhvd2V2ZXIsIGJyaW5ncyB1cCBhIHNwZWNpZmljIHBvaW50OiBpZiB0aGUgY2hhbmdlIGlzICpvbmx5KiB3aXRoaW4gY2VydGFpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzLCBlc3BlY2lhbGx5IFNtYXJ0TklDcyB0aGF0IGFyZW4mIzM5O3QgdHlwaWNhbGx5IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cywgdGhlbiBmdXp6aW5nIGlzIG91dC4gSSBzZWUgdGhhdCB0aGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lcS5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuY2AuIEFoLCBgbWx4NWAuIFRoYXQmIzM5O3MgTWVsbGFub3gsIHdoaWNoIG1lYW5zIFNtYXJ0TklDLiBUaGUgQ29ubmVjdFgtNSBzcGVjaWZpY2FsbHksIGlzIHRoYXQgcmlnaHQ/CgpUaGUgY2F0Y2ggaXMsIEkgc2VlIHRoaXMgbmV3IGZ1bmN0aW9uIGluIGBrZXJuZWwvbm90aWZpZXIuY2AhIEl0JiMzOTtzICpub3QqIGp1c3QgaXNvbGF0ZWQgdG8gYG1seDVgLiBTbywgaXQgYWRkcyB0aGlzIGZ1bmN0aW9uLCBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgdG8gdGhlIGtlcm5lbC4gV2hhdCBvdGhlciBjb25zdW1lcnMgYXJlIHRoZXJlPyBJcyB0aGUgbmV3IGZ1bmN0aW9uIGV4cG9ydGVkPyBZZXAsIGl0IGlzISAKCk9rYXksIHNvIHNpbmNlIE1lbGxhbm94IGlzIHNwZWNpZmljYWxseSBtZW50aW9uZWQgYXMgKm5vdCogYmVpbmcgZW11bGF0ZWQsIHRoZSBuZXcgZnVuY3Rpb24gY2Fubm90IGJlIHJlYWNoZWQgaW4gc3RhbmRhcmQgZW11bGF0ZWQgZW52aXJvbm1lbnRzLgoKSG93ZXZlciwgc2luY2UgYGtlcm5lbC9ub3RpZmllci5jYCBpcyBiZWluZyBtb2RpZmllZCwgSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGVsc2V3aGVyZS4gSWYgaXQmIzM5O3MgKm9ubHkqIHVzZWQgYnkgTWVsbGFub3gsIHRoZW4gSSBjYW4mIzM5O3QgcmVhY2ggaXQgZm9yIGZ1enppbmcuIElmIGl0JiMzOTtzIHVzZWQgZWxzZXdoZXJlLCB0aGVuIEkgaGF2ZSB0byBjb25zaWRlciB3aGV0aGVyIHRvIGNoZWNrIG90aGVyIHVzZXJzIHRvIGFzc2VzcyB3aGV0aGVyIHRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgYW5kIGZ1enphYmxlLCBldmVuIGlmIE1lbGxhbm94IGlzIG5vdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmM9MTI0Mj1pbnQgbWx4NV9lcV9ub3RpZmllcl91bnJlZ2lzdGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X25iICpuYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuYy0xMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmM6MTI0NjpcdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoXHUwMDI2ZXF0LVx1MDAzZW5oW25iLVx1MDAzZWV2ZW50X3R5cGVdLCBcdTAwMjZuYi1cdTAwM2VuYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuYy0xMjQ3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmM9NDM1PWludCBtbHg1X25vdGlmaWVyX3VucmVnaXN0ZXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmMtNDM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jOjQzOTpcdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoXHUwMDI2ZXZlbnRzLVx1MDAzZWZ3X25oLCBuYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmMtNDQwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jPTM0Mj1pbnQgbWx4NV9pcnFfZGV0YWNoX25iKHN0cnVjdCBtbHg1X2lycSAqaXJxLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmMtMzQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYzozNDY6XHRlcnIgPSBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoXHUwMDI2aXJxLVx1MDAzZW5oLCBuYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jLTM0Ny1cdG1seDVfaXJxX3B1dChpcnEpO1xuLS1cbmluY2x1ZGUvbGludXgvbm90aWZpZXIuaD0xNjA9ZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgKm5oLFxuaW5jbHVkZS9saW51eC9ub3RpZmllci5oLTE2MS1cdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG5pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmg6MTYyOmV4dGVybiBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKHN0cnVjdCBhdG9taWNfbm90aWZpZXJfaGVhZCAqbmgsXG5pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgtMTYzLVx0XHRzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTtcbi0tXG5rZXJuZWwvbm90aWZpZXIuYz0xOTg9RVhQT1JUX1NZTUJPTF9HUEwoYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIpO1xuLS1cbmtlcm5lbC9ub3RpZmllci5jLTIwMC0vKipcbmtlcm5lbC9ub3RpZmllci5jOjIwMTogKlx0YXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkIC0gUmVtb3ZlIG5vdGlmaWVyIGZyb20gYW4gYXRvbWljIG5vdGlmaWVyIGNoYWluXG5rZXJuZWwvbm90aWZpZXIuYy0yMDItICpcdEBuaDogUG9pbnRlciB0byBoZWFkIG9mIHRoZSBhdG9taWMgbm90aWZpZXIgY2hhaW5cbi0tXG5rZXJuZWwvbm90aWZpZXIuYy0yMDktICovXG5rZXJuZWwvbm90aWZpZXIuYzoyMTA6aW50IGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyX2V4cGVkaXRlZChzdHJ1Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgKm5oLFxua2VybmVsL25vdGlmaWVyLmMtMjExLVx0XHRzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm4pXG4tLVxua2VybmVsL25vdGlmaWVyLmMtMjIxLX1cbmtlcm5lbC9ub3RpZmllci5jOjIyMjpFWFBPUlRfU1lNQk9MX0dQTChhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQpO1xua2VybmVsL25vdGlmaWVyLmMtMjIzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MTkKCQkJCQkJCW91dHB1dDogMTA0CgkJCQkJCQl0aG91Z2h0czogMzUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBbmFseXNpcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBhbmFseXNpcyBzaG93cyB0aGF0IGBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWRgIGlzIGV4Y2x1c2l2ZWx5IHVzZWQgd2l0aGluIHRoZSBNZWxsYW5veCBgbWx4NWAgZHJpdmVycywgc3BlY2lmaWNhbGx5IGluIGBlcS5jYCwgYGV2ZW50cy5jYCwgYW5kIGBwY2lfaXJxLmNgLiBDb25zaWRlcmluZyBteSBleHBlcmllbmNlLCBJIGtub3cgdGhhdCBgbWx4NWAgaXMgYSBTbWFydE5JQyBkcml2ZXIsIGEgc3BlY2lhbGl6ZWQgcGllY2Ugb2YgaGFyZHdhcmUuIEl0ICpyZXF1aXJlcyogcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyDigJMgc29tZXRoaW5nIHRoYXQmIzM5O3Mgc2ltcGx5IG5vdCBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIG5vciBpcyBpdCBlbXVsYXRlZCBhdCBhbGwuIFNvLCByaWdodCBvZmYgdGhlIGJhdCwgSSYjMzk7bSB0aGlua2luZywgdGhpcyBuZXcgZnVuY3Rpb24gaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gbW9zdCwgaWYgbm90IGFsbCwgb2Ygb3VyIHRlc3Qgc2V0dXBzLgoKVGhlIHByb21wdCBpcyBxdWl0ZSBjbGVhciBhYm91dCB0aGlzLiBJJiMzOTt2ZSByZS1yZWFkIGl0LiBJdCBleHBsaWNpdGx5IHN0YXRlcyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgY2hhbmdlcyBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycywgKmVzcGVjaWFsbHkqIHRob3NlIGRlbWFuZGluZyBwaHlzaWNhbCBoYXJkd2FyZS4gQW5kIGl0IGFsc28gc3RhdGVzIHRoYXQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiBvdXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUsIHNob3VsZCB0cmlnZ2VyIHRoZSBzYW1lIHJlc3VsdC4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgY2FsbCBzaXRlcyBhcmUgaW5kZWVkIGV4Y2x1c2l2ZWx5IHdpdGhpbiBgbWx4NWAuIEFuZCwgSSB3aWxsIGRvdWJsZSBjaGVjayB0aGF0IGBtbHg1YCBpcyBpbiBubyB3YXkgZW11bGF0ZWQgaW4gb3VyIHN5c3RlbS4gTm9wZSwgaXQmIzM5O3Mgbm90LiBJJiMzOTt2ZSBjb25zaWRlcmVkIGV2ZXJ5IGFuZ2xlLgoKR2l2ZW4gdGhhdCB0aGUgY29yZSBrZXJuZWwgY2hhbmdlcyBhcmUgd2l0aGluIGEgZHJpdmVyIGRlcGVuZGVudCBvbiBub24tZW11bGF0ZWQgaGFyZHdhcmUsIGFuZCB0aHVzIHVucmVhY2hhYmxlIHdpdGhpbiBvdXIgc3RhbmRhcmQgZnV6emluZyBmcmFtZXdvcmssIEkmIzM5O20gZ29pbmcgdG8gY29uZmlkZW50bHkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIGtlcm5lbCBmdW5jdGlvbiBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgYnV0IGl0cyBvbmx5IGNhbGxlcnMgYXJlIHdpdGhpbiB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIuIFNpbmNlIG1seDUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUga2VybmVsIGZ1bmN0aW9uIGBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWRgLCBidXQgaXRzIG9ubHkgY2FsbGVycyBhcmUgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlci4gU2luY2UgbWx4NSBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjAyOjMwLjI5NTM4OTUwMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzA1NDgxNDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIGtlcm5lbCBmdW5jdGlvbiBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgYnV0IGl0cyBvbmx5IGNhbGxlcnMgYXJlIHdpdGhpbiB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIuIFNpbmNlIG1seDUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzowMjozMC4yOTUzOTUxNzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MTEyMzc5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNmMDZiNzA0YTExNzc4ZjNhNTNiYjY4OTBhYTcwNjJhMjFmMzI4MDdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDc6MDI6MjkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuY1xcbmluZGV4IGQxMWVjMjYzZDUzYzkuLmM4NjA5MGNiNThjNmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuY1xcbkBAIC0xMjQzLDYgKzEyNDMsNiBAQCBpbnQgbWx4NV9lcV9ub3RpZmllcl91bnJlZ2lzdGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X25iICpuYilcXG4ge1xcbiBcXHRzdHJ1Y3QgbWx4NV9lcV90YWJsZSAqZXF0ID0gZGV2LVxcdTAwM2Vwcml2LmVxX3RhYmxlO1xcbiBcXG4tXFx0cmV0dXJuIGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKFxcdTAwMjZlcXQtXFx1MDAzZW5oW25iLVxcdTAwM2VldmVudF90eXBlXSwgXFx1MDAyNm5iLVxcdTAwM2VuYik7XFxuK1xcdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoXFx1MDAyNmVxdC1cXHUwMDNlbmhbbmItXFx1MDAzZWV2ZW50X3R5cGVdLCBcXHUwMDI2bmItXFx1MDAzZW5iKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKG1seDVfZXFfbm90aWZpZXJfdW5yZWdpc3Rlcik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuY1xcbmluZGV4IDRkN2YzNWI5Njg3NjEuLjc1M2NiMTVjZGVlZTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jXFxuQEAgLTQzNiw3ICs0MzYsNyBAQCBpbnQgbWx4NV9ub3RpZmllcl91bnJlZ2lzdGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBub3RpZmllcl9ibG9jayAqblxcbiB7XFxuIFxcdHN0cnVjdCBtbHg1X2V2ZW50cyAqZXZlbnRzID0gZGV2LVxcdTAwM2Vwcml2LmV2ZW50cztcXG4gXFxuLVxcdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihcXHUwMDI2ZXZlbnRzLVxcdTAwM2Vmd19uaCwgbmIpO1xcbitcXHRyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFxcdTAwMjZldmVudHMtXFx1MDAzZWZ3X25oLCBuYik7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChtbHg1X25vdGlmaWVyX3VucmVnaXN0ZXIpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmNcXG5pbmRleCAwZjViOGJjNzg2MWViLi5jYjMxZThjN2EyNDRmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jXFxuQEAgLTM0Myw3ICszNDMsNyBAQCBpbnQgbWx4NV9pcnFfZGV0YWNoX25iKHN0cnVjdCBtbHg1X2lycSAqaXJxLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxcbiB7XFxuIFxcdGludCBlcnIgPSAwO1xcbiBcXG4tXFx0ZXJyID0gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoXFx1MDAyNmlycS1cXHUwMDNlbmgsIG5iKTtcXG4rXFx0ZXJyID0gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFxcdTAwMjZpcnEtXFx1MDAzZW5oLCBuYik7XFxuIFxcdG1seDVfaXJxX3B1dChpcnEpO1xcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCBiL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaFxcbmluZGV4IDAxYjZjOWQ5OTU2ZjkuLjE1NmQ5NThmOThmMDUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9ub3RpZmllci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9ub3RpZmllci5oXFxuQEAgLTE1OSw2ICsxNTksOCBAQCBleHRlcm4gaW50IGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyX3VuaXF1ZV9wcmlvKFxcbiBcXG4gZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgKm5oLFxcbiBcXHRcXHRzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTtcXG4rZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcXG4rXFx0XFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XFxuIGV4dGVybiBpbnQgYmxvY2tpbmdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgYmxvY2tpbmdfbm90aWZpZXJfaGVhZCAqbmgsXFxuIFxcdFxcdHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xcbiBleHRlcm4gaW50IHJhd19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKHN0cnVjdCByYXdfbm90aWZpZXJfaGVhZCAqbmgsXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9ub3RpZmllci5jIGIva2VybmVsL25vdGlmaWVyLmNcXG5pbmRleCAyZjlmZTdjMzAyODdmLi45YjM1ODIyZmMyYzAyIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9ub3RpZmllci5jXFxuKysrIGIva2VybmVsL25vdGlmaWVyLmNcXG5AQCAtMTk3LDYgKzE5NywzMCBAQCBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcik7XFxuIFxcbisvKipcXG4rICpcXHRhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQgLSBSZW1vdmUgbm90aWZpZXIgZnJvbSBhbiBhdG9taWMgbm90aWZpZXIgY2hhaW5cXG4rICpcXHRAbmg6IFBvaW50ZXIgdG8gaGVhZCBvZiB0aGUgYXRvbWljIG5vdGlmaWVyIGNoYWluXFxuKyAqXFx0QG46IEVudHJ5IHRvIHJlbW92ZSBmcm9tIG5vdGlmaWVyIGNoYWluXFxuKyAqXFxuKyAqXFx0UmVtb3ZlcyBhIG5vdGlmaWVyIGZyb20gYW4gYXRvbWljIG5vdGlmaWVyIGNoYWluIGFuZCBmb3JjZWZ1bGx5XFxuKyAqXFx0YWNjZWxlcmF0ZXMgdGhlIFJDVSBncmFjZSBwZXJpb2QuXFxuKyAqXFxuKyAqXFx0UmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIC1FTk9FTlQgb24gZmFpbHVyZS5cXG4rICovXFxuK2ludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcXG4rXFx0XFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuKVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2bmgtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0cmV0ID0gbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihcXHUwMDI2bmgtXFx1MDAzZWhlYWQsIG4pO1xcbitcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZuaC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRzeW5jaHJvbml6ZV9yY3VfZXhwZWRpdGVkKCk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKTtcXG4rXFxuIC8qKlxcbiAgKlxcdGF0b21pY19ub3RpZmllcl9jYWxsX2NoYWluIC0gQ2FsbCBmdW5jdGlvbnMgaW4gYW4gYXRvbWljIG5vdGlmaWVyIGNoYWluXFxuICAqXFx0QG5oOiBQb2ludGVyIHRvIGhlYWQgb2YgdGhlIGF0b21pYyBub3RpZmllciBjaGFpblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzowMjozMC42NzcyNDA3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE0OTIzNjE2ODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUga2VybmVsIGZ1bmN0aW9uIGBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWRgLCBidXQgaXRzIG9ubHkgY2FsbGVycyBhcmUgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlci4gU2luY2UgbWx4NSBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNmMDZiNzA0YTExNzc4ZjNhNTNiYjY4OTBhYTcwNjJhMjFmMzI4MDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAwNzowMjoyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lcS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmNcbmluZGV4IGQxMWVjMjYzZDUzYzkuLmM4NjA5MGNiNThjNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmNcbkBAIC0xMjQzLDYgKzEyNDMsNiBAQCBpbnQgbWx4NV9lcV9ub3RpZmllcl91bnJlZ2lzdGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X25iICpuYilcbiB7XG4gXHRzdHJ1Y3QgbWx4NV9lcV90YWJsZSAqZXF0ID0gZGV2LVx1MDAzZXByaXYuZXFfdGFibGU7XG4gXG4tXHRyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoXHUwMDI2ZXF0LVx1MDAzZW5oW25iLVx1MDAzZWV2ZW50X3R5cGVdLCBcdTAwMjZuYi1cdTAwM2VuYik7XG4rXHRyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFx1MDAyNmVxdC1cdTAwM2VuaFtuYi1cdTAwM2VldmVudF90eXBlXSwgXHUwMDI2bmItXHUwMDNlbmIpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKG1seDVfZXFfbm90aWZpZXJfdW5yZWdpc3Rlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jXG5pbmRleCA0ZDdmMzViOTY4NzYxLi43NTNjYjE1Y2RlZWUxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmNcbkBAIC00MzYsNyArNDM2LDcgQEAgaW50IG1seDVfbm90aWZpZXJfdW5yZWdpc3RlcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5cbiB7XG4gXHRzdHJ1Y3QgbWx4NV9ldmVudHMgKmV2ZW50cyA9IGRldi1cdTAwM2Vwcml2LmV2ZW50cztcbiBcbi1cdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihcdTAwMjZldmVudHMtXHUwMDNlZndfbmgsIG5iKTtcbitcdHJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoXHUwMDI2ZXZlbnRzLVx1MDAzZWZ3X25oLCBuYik7XG4gfVxuIEVYUE9SVF9TWU1CT0wobWx4NV9ub3RpZmllcl91bnJlZ2lzdGVyKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuY1xuaW5kZXggMGY1YjhiYzc4NjFlYi4uY2IzMWU4YzdhMjQ0ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmNcbkBAIC0zNDMsNyArMzQzLDcgQEAgaW50IG1seDVfaXJxX2RldGFjaF9uYihzdHJ1Y3QgbWx4NV9pcnEgKmlycSwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbiB7XG4gXHRpbnQgZXJyID0gMDtcbiBcbi1cdGVyciA9IGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKFx1MDAyNmlycS1cdTAwM2VuaCwgbmIpO1xuK1x0ZXJyID0gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFx1MDAyNmlycS1cdTAwM2VuaCwgbmIpO1xuIFx0bWx4NV9pcnFfcHV0KGlycSk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmhcbmluZGV4IDAxYjZjOWQ5OTU2ZjkuLjE1NmQ5NThmOThmMDUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaFxuQEAgLTE1OSw2ICsxNTksOCBAQCBleHRlcm4gaW50IGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyX3VuaXF1ZV9wcmlvKFxuIFxuIGV4dGVybiBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcbiBcdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG4rZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcbitcdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG4gZXh0ZXJuIGludCBibG9ja2luZ19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKHN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFkICpuaCxcbiBcdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7XG4gZXh0ZXJuIGludCByYXdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9ub3RpZmllci5jIGIva2VybmVsL25vdGlmaWVyLmNcbmluZGV4IDJmOWZlN2MzMDI4N2YuLjliMzU4MjJmYzJjMDIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbm90aWZpZXIuY1xuKysrIGIva2VybmVsL25vdGlmaWVyLmNcbkBAIC0xOTcsNiArMTk3LDMwIEBAIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgKm5oLFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcik7XG4gXG4rLyoqXG4rICpcdGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyX2V4cGVkaXRlZCAtIFJlbW92ZSBub3RpZmllciBmcm9tIGFuIGF0b21pYyBub3RpZmllciBjaGFpblxuKyAqXHRAbmg6IFBvaW50ZXIgdG8gaGVhZCBvZiB0aGUgYXRvbWljIG5vdGlmaWVyIGNoYWluXG4rICpcdEBuOiBFbnRyeSB0byByZW1vdmUgZnJvbSBub3RpZmllciBjaGFpblxuKyAqXG4rICpcdFJlbW92ZXMgYSBub3RpZmllciBmcm9tIGFuIGF0b21pYyBub3RpZmllciBjaGFpbiBhbmQgZm9yY2VmdWxseVxuKyAqXHRhY2NlbGVyYXRlcyB0aGUgUkNVIGdyYWNlIHBlcmlvZC5cbisgKlxuKyAqXHRSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgLUVOT0VOVCBvbiBmYWlsdXJlLlxuKyAqL1xuK2ludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcbitcdFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuKVxuK3tcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHRpbnQgcmV0O1xuK1xuK1x0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2bmgtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0cmV0ID0gbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihcdTAwMjZuaC1cdTAwM2VoZWFkLCBuKTtcbitcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2bmgtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0c3luY2hyb25pemVfcmN1X2V4cGVkaXRlZCgpO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKTtcbitcbiAvKipcbiAgKlx0YXRvbWljX25vdGlmaWVyX2NhbGxfY2hhaW4gLSBDYWxsIGZ1bmN0aW9ucyBpbiBhbiBhdG9taWMgbm90aWZpZXIgY2hhaW5cbiAgKlx0QG5oOiBQb2ludGVyIHRvIGhlYWQgb2YgdGhlIGF0b21pYyBub3RpZmllciBjaGFpblxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6MDI6MzAuNjc3MjQzNDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Nzg0Nzk1NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgdGhpcyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCBpbiBga2VybmVsL25vdGlmaWVyLmNgLiBJbW1lZGlhdGVseSwgbXkgc3BpZGV5LXNlbnNlIHRpbmdsZXMgYmVjYXVzZSBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIGFyZSByYXJlbHkgc3RyYWlnaHRmb3J3YXJkLiBUaGlzIGxvb2tzIGxpa2UgaXQgY291bGQgaGF2ZSBicm9hZGVyIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyByZWFjaGFibGUgYW5kIGZ1enphYmxlLlxuXG5UaGUgcHJvbXB0LCBob3dldmVyLCBicmluZ3MgdXAgYSBzcGVjaWZpYyBwb2ludDogaWYgdGhlIGNoYW5nZSBpcyAqb25seSogd2l0aGluIGNlcnRhaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycywgZXNwZWNpYWxseSBTbWFydE5JQ3MgdGhhdCBhcmVuJ3QgdHlwaWNhbGx5IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cywgdGhlbiBmdXp6aW5nIGlzIG91dC4gSSBzZWUgdGhhdCB0aGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lcS5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuY2AuIEFoLCBgbWx4NWAuIFRoYXQncyBNZWxsYW5veCwgd2hpY2ggbWVhbnMgU21hcnROSUMuIFRoZSBDb25uZWN0WC01IHNwZWNpZmljYWxseSwgaXMgdGhhdCByaWdodD9cblxuVGhlIGNhdGNoIGlzLCBJIHNlZSB0aGlzIG5ldyBmdW5jdGlvbiBpbiBga2VybmVsL25vdGlmaWVyLmNgISBJdCdzICpub3QqIGp1c3QgaXNvbGF0ZWQgdG8gYG1seDVgLiBTbywgaXQgYWRkcyB0aGlzIGZ1bmN0aW9uLCBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgdG8gdGhlIGtlcm5lbC4gV2hhdCBvdGhlciBjb25zdW1lcnMgYXJlIHRoZXJlPyBJcyB0aGUgbmV3IGZ1bmN0aW9uIGV4cG9ydGVkPyBZZXAsIGl0IGlzISBcblxuT2theSwgc28gc2luY2UgTWVsbGFub3ggaXMgc3BlY2lmaWNhbGx5IG1lbnRpb25lZCBhcyAqbm90KiBiZWluZyBlbXVsYXRlZCwgdGhlIG5ldyBmdW5jdGlvbiBjYW5ub3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCBlbXVsYXRlZCBlbnZpcm9ubWVudHMuXG5cbkhvd2V2ZXIsIHNpbmNlIGBrZXJuZWwvbm90aWZpZXIuY2AgaXMgYmVpbmcgbW9kaWZpZWQsIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUuIElmIGl0J3MgKm9ubHkqIHVzZWQgYnkgTWVsbGFub3gsIHRoZW4gSSBjYW4ndCByZWFjaCBpdCBmb3IgZnV6emluZy4gSWYgaXQncyB1c2VkIGVsc2V3aGVyZSwgdGhlbiBJIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciB0byBjaGVjayBvdGhlciB1c2VycyB0byBhc3Nlc3Mgd2hldGhlciB0aGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSwgZXZlbiBpZiBNZWxsYW5veCBpcyBub3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTIsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzowMjozNy40NjIwNDE1NjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMTk5NjA5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmM9MTI0Mj1pbnQgbWx4NV9lcV9ub3RpZmllcl91bnJlZ2lzdGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X25iICpuYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lcS5jLTEyNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmM6MTI0NjpcXHRyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFxcdTAwMjZlcXQtXFx1MDAzZW5oW25iLVxcdTAwM2VldmVudF90eXBlXSwgXFx1MDAyNm5iLVxcdTAwM2VuYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmMtMTI0Ny19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXZlbnRzLmM9NDM1PWludCBtbHg1X25vdGlmaWVyX3VucmVnaXN0ZXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9ldmVudHMuYy00MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jOjQzOTpcXHRyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFxcdTAwMjZldmVudHMtXFx1MDAzZWZ3X25oLCBuYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2V2ZW50cy5jLTQ0MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jPTM0Mj1pbnQgbWx4NV9pcnFfZGV0YWNoX25iKHN0cnVjdCBtbHg1X2lycSAqaXJxLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYy0zNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYzozNDY6XFx0ZXJyID0gYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKFxcdTAwMjZpcnEtXFx1MDAzZW5oLCBuYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYy0zNDctXFx0bWx4NV9pcnFfcHV0KGlycSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmg9MTYwPWV4dGVybiBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcXG5pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgtMTYxLVxcdFxcdHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xcbmluY2x1ZGUvbGludXgvbm90aWZpZXIuaDoxNjI6ZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcXG5pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgtMTYzLVxcdFxcdHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpO1xcbi0tXFxua2VybmVsL25vdGlmaWVyLmM9MTk4PUVYUE9SVF9TWU1CT0xfR1BMKGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKTtcXG4tLVxcbmtlcm5lbC9ub3RpZmllci5jLTIwMC0vKipcXG5rZXJuZWwvbm90aWZpZXIuYzoyMDE6ICpcXHRhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQgLSBSZW1vdmUgbm90aWZpZXIgZnJvbSBhbiBhdG9taWMgbm90aWZpZXIgY2hhaW5cXG5rZXJuZWwvbm90aWZpZXIuYy0yMDItICpcXHRAbmg6IFBvaW50ZXIgdG8gaGVhZCBvZiB0aGUgYXRvbWljIG5vdGlmaWVyIGNoYWluXFxuLS1cXG5rZXJuZWwvbm90aWZpZXIuYy0yMDktICovXFxua2VybmVsL25vdGlmaWVyLmM6MjEwOmludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWQoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCxcXG5rZXJuZWwvbm90aWZpZXIuYy0yMTEtXFx0XFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuKVxcbi0tXFxua2VybmVsL25vdGlmaWVyLmMtMjIxLX1cXG5rZXJuZWwvbm90aWZpZXIuYzoyMjI6RVhQT1JUX1NZTUJPTF9HUEwoYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkKTtcXG5rZXJuZWwvbm90aWZpZXIuYy0yMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjAyOjM5LjA5NDA0MjU2MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MDY3ODkxNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBhbmFseXNpcyBzaG93cyB0aGF0IGBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWRgIGlzIGV4Y2x1c2l2ZWx5IHVzZWQgd2l0aGluIHRoZSBNZWxsYW5veCBgbWx4NWAgZHJpdmVycywgc3BlY2lmaWNhbGx5IGluIGBlcS5jYCwgYGV2ZW50cy5jYCwgYW5kIGBwY2lfaXJxLmNgLiBDb25zaWRlcmluZyBteSBleHBlcmllbmNlLCBJIGtub3cgdGhhdCBgbWx4NWAgaXMgYSBTbWFydE5JQyBkcml2ZXIsIGEgc3BlY2lhbGl6ZWQgcGllY2Ugb2YgaGFyZHdhcmUuIEl0ICpyZXF1aXJlcyogcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyDigJMgc29tZXRoaW5nIHRoYXQncyBzaW1wbHkgbm90IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgbm9yIGlzIGl0IGVtdWxhdGVkIGF0IGFsbC4gU28sIHJpZ2h0IG9mZiB0aGUgYmF0LCBJJ20gdGhpbmtpbmcsIHRoaXMgbmV3IGZ1bmN0aW9uIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIG1vc3QsIGlmIG5vdCBhbGwsIG9mIG91ciB0ZXN0IHNldHVwcy5cblxuVGhlIHByb21wdCBpcyBxdWl0ZSBjbGVhciBhYm91dCB0aGlzLiBJJ3ZlIHJlLXJlYWQgaXQuIEl0IGV4cGxpY2l0bHkgc3RhdGVzIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBjaGFuZ2VzIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCAqZXNwZWNpYWxseSogdGhvc2UgZGVtYW5kaW5nIHBoeXNpY2FsIGhhcmR3YXJlLiBBbmQgaXQgYWxzbyBzdGF0ZXMgdGhhdCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIG91ciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSwgc2hvdWxkIHRyaWdnZXIgdGhlIHNhbWUgcmVzdWx0LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgY2FsbCBzaXRlcyBhcmUgaW5kZWVkIGV4Y2x1c2l2ZWx5IHdpdGhpbiBgbWx4NWAuIEFuZCwgSSB3aWxsIGRvdWJsZSBjaGVjayB0aGF0IGBtbHg1YCBpcyBpbiBubyB3YXkgZW11bGF0ZWQgaW4gb3VyIHN5c3RlbS4gTm9wZSwgaXQncyBub3QuIEkndmUgY29uc2lkZXJlZCBldmVyeSBhbmdsZS5cblxuR2l2ZW4gdGhhdCB0aGUgY29yZSBrZXJuZWwgY2hhbmdlcyBhcmUgd2l0aGluIGEgZHJpdmVyIGRlcGVuZGVudCBvbiBub24tZW11bGF0ZWQgaGFyZHdhcmUsIGFuZCB0aHVzIHVucmVhY2hhYmxlIHdpdGhpbiBvdXIgc3RhbmRhcmQgZnV6emluZyBmcmFtZXdvcmssIEknbSBnb2luZyB0byBjb25maWRlbnRseSByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MTksIk91dHB1dFRva2VucyI6MTA0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjAyOjQ1LjYwMDgzNDI4OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIGtlcm5lbCBmdW5jdGlvbiBgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfZXhwZWRpdGVkYCwgYnV0IGl0cyBvbmx5IGNhbGxlcnMgYXJlIHdpdGhpbiB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIuIFNpbmNlIG1seDUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUga2VybmVsIGZ1bmN0aW9uIGBhdG9taWNfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9leHBlZGl0ZWRgLCBidXQgaXRzIG9ubHkgY2FsbGVycyBhcmUgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlci4gU2luY2UgbWx4NSBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjAyOjQ1LjYwMDg1OTgxN1oiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow5wv8r[1] Phase: Running StartedAt: 2026-08-11 07:02:52 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wv8r[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-11 07:02:52 +0000 UTC FinishedAt: 2026-08-11 07:02:56 +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,}