Name: series-workfloww7rzl Phase: Failed StartedAt: 2026-08-18 10:59:40 +0000 UTC FinishedAt: 2026-08-18 11:20:36 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rzl[0] Phase: Succeeded StartedAt: 2026-08-18 10:59:40 +0000 UTC FinishedAt: 2026-08-18 11:20:25 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rzl[0].run-triage Phase: Succeeded StartedAt: 2026-08-18 10:59:40 +0000 UTC FinishedAt: 2026-08-18 11:20:25 +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+CgkJCTx0ZD4yMDI2LzA4LzE4IDExOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKHR4Z2JlL25nYmUpIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDExOjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2UxMjhkM2JiMTQzNTQwMTliMmRhMWMwNjU4NDI4NzM5M2NjZDM5M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDExOjE5OjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuaW5kZXggMTIyYzQ5NTJkMjAzZi4uMTljZTQ1OGY5Y2M2ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXG5AQCAtMjg3MCw4ICYjNDM7Mjg3MCwxMyBAQCBzdGF0aWMgdm9pZCB3eF91cGRhdGVfeG9mZl9yeF9sZmMoc3RydWN0IHd4ICp3eClcbiBcdGlmICghZGF0YSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspXG4tXHRcdGNsZWFyX2JpdChXWF9IQU5HX0NIRUNLX0FSTUVELCB3eC1cdTAwM2V0eF9yaW5nW2ldLVx1MDAzZXN0YXRlKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXHUwMDNldHhfcmluZ1tpXSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCF0eF9yaW5nKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdGNsZWFyX2JpdChXWF9IQU5HX0NIRUNLX0FSTUVELCB0eF9yaW5nLVx1MDAzZXN0YXRlKTtcbiYjNDM7XHR9XG4gfVxuIFxuIC8qKlxuQEAgLTI4OTMsMTAgJiM0MzsyODk4LDEzIEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXG4gXHRzcGluX2xvY2soXHUwMDI2d3gtXHUwMDNlaHdfc3RhdHNfbG9jayk7XG4gXG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuIFx0LyogZ2F0aGVyIHNvbWUgc3RhdHMgdG8gdGhlIHd4IHN0cnVjdCB0aGF0IGFyZSBwZXIgcXVldWUgKi9cbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtXHUwMDNlcnhfcmluZ1tpXTtcbiYjNDM7XHRcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gUkVBRF9PTkNFKHd4LVx1MDAzZXJ4X3JpbmdbaV0pO1xuIFxuJiM0MztcdFx0aWYgKCFyeF9yaW5nKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiBcdFx0bm9uX2VvcF9kZXNjcyAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5ub25fZW9wX2Rlc2NzO1xuIFx0XHRhbGxvY19yeF9idWZmX2ZhaWxlZCAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5hbGxvY19yeF9idWZmX2ZhaWxlZDtcbiBcdFx0aHdfY3N1bV9yeF9nb29kICYjNDM7PSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLmNzdW1fZ29vZF9jbnQ7XG5AQCAtMjkxMiwxNSAmIzQzOzI5MjAsMjMgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcbiBcdFx0dTY0IHJzY19mbHVzaCA9IDA7XG4gXG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdFx0cnNjX2NvdW50ICYjNDM7PSB3eC1cdTAwM2VyeF9yaW5nW2ldLVx1MDAzZXJ4X3N0YXRzLnJzY19jb3VudDtcbi1cdFx0XHRyc2NfZmx1c2ggJiM0Mzs9IHd4LVx1MDAzZXJ4X3JpbmdbaV0tXHUwMDNlcnhfc3RhdHMucnNjX2ZsdXNoO1xuJiM0MztcdFx0XHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2VyeF9yaW5nW2ldKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmICghcnhfcmluZylcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRcdHJzY19jb3VudCAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5yc2NfY291bnQ7XG4mIzQzO1x0XHRcdHJzY19mbHVzaCAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5yc2NfZmx1c2g7XG4gXHRcdH1cbiBcdFx0d3gtXHUwMDNlcnNjX2NvdW50ID0gcnNjX2NvdW50O1xuIFx0XHR3eC1cdTAwM2Vyc2NfZmx1c2ggPSByc2NfZmx1c2g7XG4gXHR9XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuLVx0XHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IHd4LVx1MDAzZXR4X3JpbmdbaV07XG4mIzQzO1x0XHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2V0eF9yaW5nW2ldKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIXR4X3JpbmcpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRyZXN0YXJ0X3F1ZXVlICYjNDM7PSB0eF9yaW5nLVx1MDAzZXR4X3N0YXRzLnJlc3RhcnRfcXVldWU7XG4gXHRcdHR4X2J1c3kgJiM0Mzs9IHR4X3JpbmctXHUwMDNldHhfc3RhdHMudHhfYnVzeTtcbkBAIC0yOTI5LDYgJiM0MzsyOTQ1LDcgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcbiBcdHd4LVx1MDAzZXR4X2J1c3kgPSB0eF9idXN5O1xuIFxuIFx0d3hfdXBkYXRlX3hvZmZfcnhfbGZjKHd4KTtcbiYjNDM7XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcbiBcdGh3c3RhdHMtXHUwMDNlZ3ByYyAmIzQzOz0gcmQzMih3eCwgV1hfUkRNX1BLVF9DTlQpO1xuIFx0aHdzdGF0cy1cdTAwM2VncHRjICYjNDM7PSByZDMyKHd4LCBXWF9URE1fUEtUX0NOVCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbmluZGV4IGVkNWFhZDc4NTdiZDkuLjQwNDdlNWQyYmNmZjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG5AQCAtMjE5MSw3ICYjNDM7MjE5MSw3IEBAIHN0YXRpYyBpbnQgd3hfYWxsb2NfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCxcbiBcdFx0cmluZy1cdTAwM2VxdWV1ZV9pbmRleCA9IHR4cl9pZHg7XG4gXG4gXHRcdC8qIGFzc2lnbiByaW5nIHRvIHd4ICovXG4tXHRcdHd4LVx1MDAzZXR4X3JpbmdbdHhyX2lkeF0gPSByaW5nO1xuJiM0MztcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHd4LVx1MDAzZXR4X3JpbmdbdHhyX2lkeF0sIHJpbmcpO1xuIFxuIFx0XHQvKiB1cGRhdGUgY291bnQgYW5kIGluZGV4ICovXG4gXHRcdHR4cl9jb3VudC0tO1xuQEAgLTIyMTcsNyAmIzQzOzIyMTcsNyBAQCBzdGF0aWMgaW50IHd4X2FsbG9jX3FfdmVjdG9yKHN0cnVjdCB3eCAqd3gsXG4gXHRcdHJpbmctXHUwMDNlcXVldWVfaW5kZXggPSByeHJfaWR4O1xuIFxuIFx0XHQvKiBhc3NpZ24gcmluZyB0byB3eCAqL1xuLVx0XHR3eC1cdTAwM2VyeF9yaW5nW3J4cl9pZHhdID0gcmluZztcbiYjNDM7XHRcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cdTAwM2VyeF9yaW5nW3J4cl9pZHhdLCByaW5nKTtcbiBcbiBcdFx0LyogdXBkYXRlIGNvdW50IGFuZCBpbmRleCAqL1xuIFx0XHRyeHJfY291bnQtLTtcbkBAIC0yMjQ1LDEwICYjNDM7MjI0NSwxMCBAQCBzdGF0aWMgdm9pZCB3eF9mcmVlX3FfdmVjdG9yKHN0cnVjdCB3eCAqd3gsIGludCB2X2lkeClcbiBcdHN0cnVjdCB3eF9yaW5nICpyaW5nO1xuIFxuIFx0d3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci1cdTAwM2V0eClcbi1cdFx0d3gtXHUwMDNldHhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSA9IE5VTEw7XG4mIzQzO1x0XHRyY3VfYXNzaWduX3BvaW50ZXIod3gtXHUwMDNldHhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSwgTlVMTCk7XG4gXG4gXHR3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLVx1MDAzZXJ4KVxuLVx0XHR3eC1cdTAwM2VyeF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdID0gTlVMTDtcbiYjNDM7XHRcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cdTAwM2VyeF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdLCBOVUxMKTtcbiBcbiBcdHd4LVx1MDAzZXFfdmVjdG9yW3ZfaWR4XSA9IE5VTEw7XG4gXHRuZXRpZl9uYXBpX2RlbChcdTAwMjZxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXG5pbmRleCAyZWJhNWFiNTk5MjUyLi5lYzc1Y2ExMTY5Nzk2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXG5AQCAtMTM1OSw4ICYjNDM7MTM1OSw4IEBAIHN0cnVjdCB3eCB7XG4gXHR1MzIgdHhfcmluZ19jb3VudDtcbiBcdHUzMiByeF9yaW5nX2NvdW50O1xuIFxuLVx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmdbNjRdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG4tXHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZ1s2NF07XG4mIzQzO1x0c3RydWN0IHd4X3JpbmcgX19yY3UgKnR4X3JpbmdbNjRdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG4mIzQzO1x0c3RydWN0IHd4X3JpbmcgX19yY3UgKnJ4X3JpbmdbNjRdO1xuIFx0c3RydWN0IHd4X3FfdmVjdG9yICpxX3ZlY3Rvcls2NF07XG4gXHRpbnQgbnVtX3J4X3Bvb2xzO1xuIFx0aW50IG51bV9yeF9xdWV1ZXNfcGVyX3Bvb2w7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTE6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuICh0eGdiZS9uZ2JlKSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNlMTI4ZDNiYjE0MzU0MDE5YjJkYTFjMDY1ODQyODczOTNjY2QzOTMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAxMToxOTo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYwppbmRleCAxMjJjNDk1MmQyMDNmLi4xOWNlNDU4ZjljYzZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jCkBAIC0yODcwLDggJiM0MzsyODcwLDEzIEBAIHN0YXRpYyB2b2lkIHd4X3VwZGF0ZV94b2ZmX3J4X2xmYyhzdHJ1Y3Qgd3ggKnd4KQogCWlmICghZGF0YSkKIAkJcmV0dXJuOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IHd4LSZndDtudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOykKLQkJY2xlYXJfYml0KFdYX0hBTkdfQ0hFQ0tfQVJNRUQsIHd4LSZndDt0eF9yaW5nW2ldLSZndDtzdGF0ZSk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyB3eC0mZ3Q7bnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXN0cnVjdCB3eF9yaW5nICp0eF9yaW5nID0gUkVBRF9PTkNFKHd4LSZndDt0eF9yaW5nW2ldKTsKJiM0MzsKJiM0MzsJCWlmICghdHhfcmluZykKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCWNsZWFyX2JpdChXWF9IQU5HX0NIRUNLX0FSTUVELCB0eF9yaW5nLSZndDtzdGF0ZSk7CiYjNDM7CX0KIH0KIAogLyoqCkBAIC0yODkzLDEwICYjNDM7Mjg5OCwxMyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KQogCiAJc3Bpbl9sb2NrKCZhbXA7d3gtJmd0O2h3X3N0YXRzX2xvY2spOwogCiYjNDM7CXJjdV9yZWFkX2xvY2soKTsKIAkvKiBnYXRoZXIgc29tZSBzdGF0cyB0byB0aGUgd3ggc3RydWN0IHRoYXQgYXJlIHBlciBxdWV1ZSAqLwogCWZvciAoaSA9IDA7IGkgJmx0OyB3eC0mZ3Q7bnVtX3J4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHsKLQkJc3RydWN0IHd4X3JpbmcgKnJ4X3JpbmcgPSB3eC0mZ3Q7cnhfcmluZ1tpXTsKJiM0MzsJCXN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gUkVBRF9PTkNFKHd4LSZndDtyeF9yaW5nW2ldKTsKIAomIzQzOwkJaWYgKCFyeF9yaW5nKQomIzQzOwkJCWNvbnRpbnVlOwogCQlub25fZW9wX2Rlc2NzICYjNDM7PSByeF9yaW5nLSZndDtyeF9zdGF0cy5ub25fZW9wX2Rlc2NzOwogCQlhbGxvY19yeF9idWZmX2ZhaWxlZCAmIzQzOz0gcnhfcmluZy0mZ3Q7cnhfc3RhdHMuYWxsb2NfcnhfYnVmZl9mYWlsZWQ7CiAJCWh3X2NzdW1fcnhfZ29vZCAmIzQzOz0gcnhfcmluZy0mZ3Q7cnhfc3RhdHMuY3N1bV9nb29kX2NudDsKQEAgLTI5MTIsMTUgJiM0MzsyOTIwLDIzIEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpCiAJCXU2NCByc2NfZmx1c2ggPSAwOwogCiAJCWZvciAoaSA9IDA7IGkgJmx0OyB3eC0mZ3Q7bnVtX3J4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHsKLQkJCXJzY19jb3VudCAmIzQzOz0gd3gtJmd0O3J4X3JpbmdbaV0tJmd0O3J4X3N0YXRzLnJzY19jb3VudDsKLQkJCXJzY19mbHVzaCAmIzQzOz0gd3gtJmd0O3J4X3JpbmdbaV0tJmd0O3J4X3N0YXRzLnJzY19mbHVzaDsKJiM0MzsJCQlzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC0mZ3Q7cnhfcmluZ1tpXSk7CiYjNDM7CiYjNDM7CQkJaWYgKCFyeF9yaW5nKQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCQlyc2NfY291bnQgJiM0Mzs9IHJ4X3JpbmctJmd0O3J4X3N0YXRzLnJzY19jb3VudDsKJiM0MzsJCQlyc2NfZmx1c2ggJiM0Mzs9IHJ4X3JpbmctJmd0O3J4X3N0YXRzLnJzY19mbHVzaDsKIAkJfQogCQl3eC0mZ3Q7cnNjX2NvdW50ID0gcnNjX2NvdW50OwogCQl3eC0mZ3Q7cnNjX2ZsdXNoID0gcnNjX2ZsdXNoOwogCX0KIAogCWZvciAoaSA9IDA7IGkgJmx0OyB3eC0mZ3Q7bnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHsKLQkJc3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSB3eC0mZ3Q7dHhfcmluZ1tpXTsKJiM0MzsJCXN0cnVjdCB3eF9yaW5nICp0eF9yaW5nID0gUkVBRF9PTkNFKHd4LSZndDt0eF9yaW5nW2ldKTsKJiM0MzsKJiM0MzsJCWlmICghdHhfcmluZykKJiM0MzsJCQljb250aW51ZTsKIAogCQlyZXN0YXJ0X3F1ZXVlICYjNDM7PSB0eF9yaW5nLSZndDt0eF9zdGF0cy5yZXN0YXJ0X3F1ZXVlOwogCQl0eF9idXN5ICYjNDM7PSB0eF9yaW5nLSZndDt0eF9zdGF0cy50eF9idXN5OwpAQCAtMjkyOSw2ICYjNDM7Mjk0NSw3IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpCiAJd3gtJmd0O3R4X2J1c3kgPSB0eF9idXN5OwogCiAJd3hfdXBkYXRlX3hvZmZfcnhfbGZjKHd4KTsKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiAKIAlod3N0YXRzLSZndDtncHJjICYjNDM7PSByZDMyKHd4LCBXWF9SRE1fUEtUX0NOVCk7CiAJaHdzdGF0cy0mZ3Q7Z3B0YyAmIzQzOz0gcmQzMih3eCwgV1hfVERNX1BLVF9DTlQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMKaW5kZXggZWQ1YWFkNzg1N2JkOS4uNDA0N2U1ZDJiY2ZmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jCkBAIC0yMTkxLDcgJiM0MzsyMTkxLDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LAogCQlyaW5nLSZndDtxdWV1ZV9pbmRleCA9IHR4cl9pZHg7CiAKIAkJLyogYXNzaWduIHJpbmcgdG8gd3ggKi8KLQkJd3gtJmd0O3R4X3JpbmdbdHhyX2lkeF0gPSByaW5nOwomIzQzOwkJcmN1X2Fzc2lnbl9wb2ludGVyKHd4LSZndDt0eF9yaW5nW3R4cl9pZHhdLCByaW5nKTsKIAogCQkvKiB1cGRhdGUgY291bnQgYW5kIGluZGV4ICovCiAJCXR4cl9jb3VudC0tOwpAQCAtMjIxNyw3ICYjNDM7MjIxNyw3IEBAIHN0YXRpYyBpbnQgd3hfYWxsb2NfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwKIAkJcmluZy0mZ3Q7cXVldWVfaW5kZXggPSByeHJfaWR4OwogCiAJCS8qIGFzc2lnbiByaW5nIHRvIHd4ICovCi0JCXd4LSZndDtyeF9yaW5nW3J4cl9pZHhdID0gcmluZzsKJiM0MzsJCXJjdV9hc3NpZ25fcG9pbnRlcih3eC0mZ3Q7cnhfcmluZ1tyeHJfaWR4XSwgcmluZyk7CiAKIAkJLyogdXBkYXRlIGNvdW50IGFuZCBpbmRleCAqLwogCQlyeHJfY291bnQtLTsKQEAgLTIyNDUsMTAgJiM0MzsyMjQ1LDEwIEBAIHN0YXRpYyB2b2lkIHd4X2ZyZWVfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwgaW50IHZfaWR4KQogCXN0cnVjdCB3eF9yaW5nICpyaW5nOwogCiAJd3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci0mZ3Q7dHgpCi0JCXd4LSZndDt0eF9yaW5nW3JpbmctJmd0O3F1ZXVlX2luZGV4XSA9IE5VTEw7CiYjNDM7CQlyY3VfYXNzaWduX3BvaW50ZXIod3gtJmd0O3R4X3JpbmdbcmluZy0mZ3Q7cXVldWVfaW5kZXhdLCBOVUxMKTsKIAogCXd4X2Zvcl9lYWNoX3JpbmcocmluZywgcV92ZWN0b3ItJmd0O3J4KQotCQl3eC0mZ3Q7cnhfcmluZ1tyaW5nLSZndDtxdWV1ZV9pbmRleF0gPSBOVUxMOwomIzQzOwkJcmN1X2Fzc2lnbl9wb2ludGVyKHd4LSZndDtyeF9yaW5nW3JpbmctJmd0O3F1ZXVlX2luZGV4XSwgTlVMTCk7CiAKIAl3eC0mZ3Q7cV92ZWN0b3Jbdl9pZHhdID0gTlVMTDsKIAluZXRpZl9uYXBpX2RlbCgmYW1wO3FfdmVjdG9yLSZndDtuYXBpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgKaW5kZXggMmViYTVhYjU5OTI1Mi4uZWM3NWNhMTE2OTc5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgKQEAgLTEzNTksOCAmIzQzOzEzNTksOCBAQCBzdHJ1Y3Qgd3ggewogCXUzMiB0eF9yaW5nX2NvdW50OwogCXUzMiByeF9yaW5nX2NvdW50OwogCi0Jc3RydWN0IHd4X3JpbmcgKnR4X3JpbmdbNjRdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7Ci0Jc3RydWN0IHd4X3JpbmcgKnJ4X3JpbmdbNjRdOwomIzQzOwlzdHJ1Y3Qgd3hfcmluZyBfX3JjdSAqdHhfcmluZ1s2NF0gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDsKJiM0MzsJc3RydWN0IHd4X3JpbmcgX19yY3UgKnJ4X3JpbmdbNjRdOwogCXN0cnVjdCB3eF9xX3ZlY3RvciAqcV92ZWN0b3JbNjRdOwogCWludCBudW1fcnhfcG9vbHM7CiAJaW50IG51bV9yeF9xdWV1ZXNfcGVyX3Bvb2w7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDExOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXYW5neHVuIEV0aGVybmV0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgd2FuZ3h1bmAgZXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L2AgYXJlYS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBSQ1UgcHJvdGVjdGlvbiB0byB0aGUgYHR4X3JpbmdgIGFuZCBgcnhfcmluZ2AgYXJyYXlzIHdpdGhpbiB0aGUgYHN0cnVjdCB3eGAgZGF0YSBzdHJ1Y3R1cmUuIEkgc2VlIHRoYXQgYFJFQURfT05DRSgpYCBhbmQgYHJjdV9hc3NpZ25fcG9pbnRlcigpYCBhcmUgYmVpbmcgdXNlZCwgd2hpY2ggaXMgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIGRlYWxpbmcgd2l0aCBSQ1UgcG9pbnRlcnMuIEFuZCwgbG9va2luZyBhdCB0aGUgaW5jbHVzaW9uIG9mIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIHdpdGhpbiBgd3hfdXBkYXRlX3N0YXRzKClgLCB0aGF0IG1ha2VzIHNlbnNlIGZvciByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbnMuCgpXYWl0IGEgc2Vjb25kLCB0aG91Z2guLi4gYHdhbmd4dW5gIGlzIGFuICpldGhlcm5ldCogZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIGRldGVybWluZSBpZiB0aGlzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gd29yayB3aXRoICpwaHlzaWNhbCogUENJZSBoYXJkd2FyZSwgYXMgb3Bwb3NlZCB0byBzb21ldGhpbmcgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gc2V2ZXJhbCBkcml2ZXJzIGluIHRoYXQgY2F0ZWdvcnk6IG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1LCBhbmQgc2ltaWxhciBvbmVzLiBUaGV5IHNheSB0aG9zZSBkcml2ZXJzIHJlcXVpcmUgKnBoeXNpY2FsKiBQQ0llIGNhcmRzLCBhbmQgYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgYHdhbmd4dW5gIGRyaXZlciBpcyBpbiB0aGF0IHNhbWUgY2xhc3MuCgpUaGUgYmVzdCB3YXkgdG8gZmlndXJlIHRoaXMgb3V0IGlzIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgcXVpY2sgY2hlY2sgdXNpbmcgYEtjb25maWdgLCB0byBzZWUgd2hhdCYjMzk7cyBrbm93biBhYm91dCBgd2FuZ3h1bmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2FuZ3h1biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Mjg9Y29uZmlnIE5HQkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMzctXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjM4Olx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL25nYmUucnN0XHUwMDNlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTM5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz00Mz1jb25maWcgVFhHQkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjEtXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjYyOlx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JlLnJzdFx1MDAzZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy02My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Njc9Y29uZmlnIFRYR0JFVkZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNzktXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjgwOlx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYucnN0XHUwMDNlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz04NT1jb25maWcgTkdCRVZGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTk1LVx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzo5NjpcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYucnN0XHUwMDNlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTk3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDExOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3ODEKCQkJCQkJCW91dHB1dDogODMKCQkJCQkJCXRob3VnaHRzOiAyNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgV2FuZ3h1biBEcml2ZXImIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgV2FuZ3h1biBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgb25lIGZvciAmIzM0O0JlaWppbmcgV2FuZ3h1biBUZWNobm9sb2d5IENvLiwgTHRkLiYjMzQ7IDEwR2JFLzFHYkUgUENJZSBFdGhlcm5ldCBhZGFwdGVycy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGVzZSBhcmUgKnBoeXNpY2FsKiBQQ0llIG5ldHdvcmsgY2FyZHMuIFdlJiMzOTtyZSBub3QgdGFsa2luZyBhYm91dCBzb21ldGhpbmcgdGhhdCYjMzk7cyBlbXVsYXRlZCBpbiB5b3VyIHN0YW5kYXJkIFFFTVUgc2V0dXAuCgpUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IGlmIHRoZSBwYXRjaCBpcyBsaW1pdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciB0aGluZ3MgdGhhdCByZXF1aXJlIGFjdHVhbCBQQ0llIGhhcmR3YXJlIOKAkyBsaWtlIHRoZXNlIFdhbmd4dW4gY2FyZHMg4oCTIGFuZCB0aGF0IGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhlbiBpdCYjMzk7cyBhICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgc2NlbmFyaW8uIFRoYXQgbWFrZXMgc2Vuc2UuIFdlIGNhbiYjMzk7dCByZWFsbHkgZ2V0IGF0IHRoZSBjb2RlIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBhIHBsYWluIFFFTVUgaW5zdGFuY2UgYmVjYXVzZSBpdCByZXF1aXJlcyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIHVzdWFsIFFFTVUgZW11bGF0aW9ucy4gV2UgdHlwaWNhbGx5IHNlZSB0aGluZ3MgbGlrZSBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCB2aXJ0aW8tbmV0LCB2bXhuZXQzLCBwY25ldCwgbmUya19wY2ksIGk4MjU1OWVyLCB0dWxpcCwgYW5kIHN1bmdlbSBpbiBRRU1VLiBOb3BlLCBXYW5neHVuICh0eGdiZSwgbmdiZSkgaXNuJiMzOTt0IGFtb25nIHRoZW0uIFRoaXMgY29uZmlybXMgaXQuCgpUaGVyZWZvcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGRyaXZlciBhbmQgaXRzIHJlbGlhbmNlIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDExOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKHR4Z2JlL25nYmUpIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAodHhnYmUvbmdiZSkgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTE6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDExOjE5OjUyLjI0NjkwMTc2MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDMxNTM0MzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKHR4Z2JlL25nYmUpIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMToxOTo1Mi4yNDY5MjE0NDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTA2ODQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGNlMTI4ZDNiYjE0MzU0MDE5YjJkYTFjMDY1ODQyODczOTNjY2QzOTNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTE6MTk6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXFxuaW5kZXggMTIyYzQ5NTJkMjAzZi4uMTljZTQ1OGY5Y2M2ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcXG5AQCAtMjg3MCw4ICsyODcwLDEzIEBAIHN0YXRpYyB2b2lkIHd4X3VwZGF0ZV94b2ZmX3J4X2xmYyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXHRpZiAoIWRhdGEpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB3eC1cXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSsrKVxcbi1cXHRcXHRjbGVhcl9iaXQoV1hfSEFOR19DSEVDS19BUk1FRCwgd3gtXFx1MDAzZXR4X3JpbmdbaV0tXFx1MDAzZXN0YXRlKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHd4LVxcdTAwM2VudW1fdHhfcXVldWVzOyBpKyspIHtcXG4rXFx0XFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXFx1MDAzZXR4X3JpbmdbaV0pO1xcbitcXG4rXFx0XFx0aWYgKCF0eF9yaW5nKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0Y2xlYXJfYml0KFdYX0hBTkdfQ0hFQ0tfQVJNRUQsIHR4X3JpbmctXFx1MDAzZXN0YXRlKTtcXG4rXFx0fVxcbiB9XFxuIFxcbiAvKipcXG5AQCAtMjg5MywxMCArMjg5OCwxMyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZ3eC1cXHUwMDNlaHdfc3RhdHNfbG9jayk7XFxuIFxcbitcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdC8qIGdhdGhlciBzb21lIHN0YXRzIHRvIHRoZSB3eCBzdHJ1Y3QgdGhhdCBhcmUgcGVyIHF1ZXVlICovXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB3eC1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XFxuLVxcdFxcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtXFx1MDAzZXJ4X3JpbmdbaV07XFxuK1xcdFxcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gUkVBRF9PTkNFKHd4LVxcdTAwM2VyeF9yaW5nW2ldKTtcXG4gXFxuK1xcdFxcdGlmICghcnhfcmluZylcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdG5vbl9lb3BfZGVzY3MgKz0gcnhfcmluZy1cXHUwMDNlcnhfc3RhdHMubm9uX2VvcF9kZXNjcztcXG4gXFx0XFx0YWxsb2NfcnhfYnVmZl9mYWlsZWQgKz0gcnhfcmluZy1cXHUwMDNlcnhfc3RhdHMuYWxsb2NfcnhfYnVmZl9mYWlsZWQ7XFxuIFxcdFxcdGh3X2NzdW1fcnhfZ29vZCArPSByeF9yaW5nLVxcdTAwM2VyeF9zdGF0cy5jc3VtX2dvb2RfY250O1xcbkBAIC0yOTEyLDE1ICsyOTIwLDIzIEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXFxuIFxcdFxcdHU2NCByc2NfZmx1c2ggPSAwO1xcbiBcXG4gXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHd4LVxcdTAwM2VudW1fcnhfcXVldWVzOyBpKyspIHtcXG4tXFx0XFx0XFx0cnNjX2NvdW50ICs9IHd4LVxcdTAwM2VyeF9yaW5nW2ldLVxcdTAwM2VyeF9zdGF0cy5yc2NfY291bnQ7XFxuLVxcdFxcdFxcdHJzY19mbHVzaCArPSB3eC1cXHUwMDNlcnhfcmluZ1tpXS1cXHUwMDNlcnhfc3RhdHMucnNjX2ZsdXNoO1xcbitcXHRcXHRcXHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC1cXHUwMDNlcnhfcmluZ1tpXSk7XFxuK1xcbitcXHRcXHRcXHRpZiAoIXJ4X3JpbmcpXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0XFx0cnNjX2NvdW50ICs9IHJ4X3JpbmctXFx1MDAzZXJ4X3N0YXRzLnJzY19jb3VudDtcXG4rXFx0XFx0XFx0cnNjX2ZsdXNoICs9IHJ4X3JpbmctXFx1MDAzZXJ4X3N0YXRzLnJzY19mbHVzaDtcXG4gXFx0XFx0fVxcbiBcXHRcXHR3eC1cXHUwMDNlcnNjX2NvdW50ID0gcnNjX2NvdW50O1xcbiBcXHRcXHR3eC1cXHUwMDNlcnNjX2ZsdXNoID0gcnNjX2ZsdXNoO1xcbiBcXHR9XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xcbi1cXHRcXHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IHd4LVxcdTAwM2V0eF9yaW5nW2ldO1xcbitcXHRcXHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IFJFQURfT05DRSh3eC1cXHUwMDNldHhfcmluZ1tpXSk7XFxuK1xcbitcXHRcXHRpZiAoIXR4X3JpbmcpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0cmVzdGFydF9xdWV1ZSArPSB0eF9yaW5nLVxcdTAwM2V0eF9zdGF0cy5yZXN0YXJ0X3F1ZXVlO1xcbiBcXHRcXHR0eF9idXN5ICs9IHR4X3JpbmctXFx1MDAzZXR4X3N0YXRzLnR4X2J1c3k7XFxuQEAgLTI5MjksNiArMjk0NSw3IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXFxuIFxcdHd4LVxcdTAwM2V0eF9idXN5ID0gdHhfYnVzeTtcXG4gXFxuIFxcdHd4X3VwZGF0ZV94b2ZmX3J4X2xmYyh3eCk7XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXG4gXFx0aHdzdGF0cy1cXHUwMDNlZ3ByYyArPSByZDMyKHd4LCBXWF9SRE1fUEtUX0NOVCk7XFxuIFxcdGh3c3RhdHMtXFx1MDAzZWdwdGMgKz0gcmQzMih3eCwgV1hfVERNX1BLVF9DTlQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xcbmluZGV4IGVkNWFhZDc4NTdiZDkuLjQwNDdlNWQyYmNmZjcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcXG5AQCAtMjE5MSw3ICsyMTkxLDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LFxcbiBcXHRcXHRyaW5nLVxcdTAwM2VxdWV1ZV9pbmRleCA9IHR4cl9pZHg7XFxuIFxcbiBcXHRcXHQvKiBhc3NpZ24gcmluZyB0byB3eCAqL1xcbi1cXHRcXHR3eC1cXHUwMDNldHhfcmluZ1t0eHJfaWR4XSA9IHJpbmc7XFxuK1xcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cXHUwMDNldHhfcmluZ1t0eHJfaWR4XSwgcmluZyk7XFxuIFxcbiBcXHRcXHQvKiB1cGRhdGUgY291bnQgYW5kIGluZGV4ICovXFxuIFxcdFxcdHR4cl9jb3VudC0tO1xcbkBAIC0yMjE3LDcgKzIyMTcsNyBAQCBzdGF0aWMgaW50IHd4X2FsbG9jX3FfdmVjdG9yKHN0cnVjdCB3eCAqd3gsXFxuIFxcdFxcdHJpbmctXFx1MDAzZXF1ZXVlX2luZGV4ID0gcnhyX2lkeDtcXG4gXFxuIFxcdFxcdC8qIGFzc2lnbiByaW5nIHRvIHd4ICovXFxuLVxcdFxcdHd4LVxcdTAwM2VyeF9yaW5nW3J4cl9pZHhdID0gcmluZztcXG4rXFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKHd4LVxcdTAwM2VyeF9yaW5nW3J4cl9pZHhdLCByaW5nKTtcXG4gXFxuIFxcdFxcdC8qIHVwZGF0ZSBjb3VudCBhbmQgaW5kZXggKi9cXG4gXFx0XFx0cnhyX2NvdW50LS07XFxuQEAgLTIyNDUsMTAgKzIyNDUsMTAgQEAgc3RhdGljIHZvaWQgd3hfZnJlZV9xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LCBpbnQgdl9pZHgpXFxuIFxcdHN0cnVjdCB3eF9yaW5nICpyaW5nO1xcbiBcXG4gXFx0d3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci1cXHUwMDNldHgpXFxuLVxcdFxcdHd4LVxcdTAwM2V0eF9yaW5nW3JpbmctXFx1MDAzZXF1ZXVlX2luZGV4XSA9IE5VTEw7XFxuK1xcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cXHUwMDNldHhfcmluZ1tyaW5nLVxcdTAwM2VxdWV1ZV9pbmRleF0sIE5VTEwpO1xcbiBcXG4gXFx0d3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci1cXHUwMDNlcngpXFxuLVxcdFxcdHd4LVxcdTAwM2VyeF9yaW5nW3JpbmctXFx1MDAzZXF1ZXVlX2luZGV4XSA9IE5VTEw7XFxuK1xcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cXHUwMDNlcnhfcmluZ1tyaW5nLVxcdTAwM2VxdWV1ZV9pbmRleF0sIE5VTEwpO1xcbiBcXG4gXFx0d3gtXFx1MDAzZXFfdmVjdG9yW3ZfaWR4XSA9IE5VTEw7XFxuIFxcdG5ldGlmX25hcGlfZGVsKFxcdTAwMjZxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcXG5pbmRleCAyZWJhNWFiNTk5MjUyLi5lYzc1Y2ExMTY5Nzk2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcXG5AQCAtMTM1OSw4ICsxMzU5LDggQEAgc3RydWN0IHd4IHtcXG4gXFx0dTMyIHR4X3JpbmdfY291bnQ7XFxuIFxcdHUzMiByeF9yaW5nX2NvdW50O1xcbiBcXG4tXFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmdbNjRdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XFxuLVxcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nWzY0XTtcXG4rXFx0c3RydWN0IHd4X3JpbmcgX19yY3UgKnR4X3JpbmdbNjRdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XFxuK1xcdHN0cnVjdCB3eF9yaW5nIF9fcmN1ICpyeF9yaW5nWzY0XTtcXG4gXFx0c3RydWN0IHd4X3FfdmVjdG9yICpxX3ZlY3Rvcls2NF07XFxuIFxcdGludCBudW1fcnhfcG9vbHM7XFxuIFxcdGludCBudW1fcnhfcXVldWVzX3Blcl9wb29sO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMToxOTo1Mi43MzY2MDAxNTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTk0MTgxNzczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKHR4Z2JlL25nYmUpIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjZTEyOGQzYmIxNDM1NDAxOWIyZGExYzA2NTg0Mjg3MzkzY2NkMzkzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTE6MTk6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbmluZGV4IDEyMmM0OTUyZDIwM2YuLjE5Y2U0NThmOWNjNmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuQEAgLTI4NzAsOCArMjg3MCwxMyBAQCBzdGF0aWMgdm9pZCB3eF91cGRhdGVfeG9mZl9yeF9sZmMoc3RydWN0IHd4ICp3eClcbiBcdGlmICghZGF0YSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSsrKVxuLVx0XHRjbGVhcl9iaXQoV1hfSEFOR19DSEVDS19BUk1FRCwgd3gtXHUwMDNldHhfcmluZ1tpXS1cdTAwM2VzdGF0ZSk7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpKyspIHtcbitcdFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXHUwMDNldHhfcmluZ1tpXSk7XG4rXG4rXHRcdGlmICghdHhfcmluZylcbitcdFx0XHRjb250aW51ZTtcbitcdFx0Y2xlYXJfYml0KFdYX0hBTkdfQ0hFQ0tfQVJNRUQsIHR4X3JpbmctXHUwMDNlc3RhdGUpO1xuK1x0fVxuIH1cbiBcbiAvKipcbkBAIC0yODkzLDEwICsyODk4LDEzIEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXG4gXHRzcGluX2xvY2soXHUwMDI2d3gtXHUwMDNlaHdfc3RhdHNfbG9jayk7XG4gXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHQvKiBnYXRoZXIgc29tZSBzdGF0cyB0byB0aGUgd3ggc3RydWN0IHRoYXQgYXJlIHBlciBxdWV1ZSAqL1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XG4tXHRcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtXHUwMDNlcnhfcmluZ1tpXTtcbitcdFx0c3RydWN0IHd4X3JpbmcgKnJ4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXHUwMDNlcnhfcmluZ1tpXSk7XG4gXG4rXHRcdGlmICghcnhfcmluZylcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0bm9uX2VvcF9kZXNjcyArPSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLm5vbl9lb3BfZGVzY3M7XG4gXHRcdGFsbG9jX3J4X2J1ZmZfZmFpbGVkICs9IHJ4X3JpbmctXHUwMDNlcnhfc3RhdHMuYWxsb2NfcnhfYnVmZl9mYWlsZWQ7XG4gXHRcdGh3X2NzdW1fcnhfZ29vZCArPSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLmNzdW1fZ29vZF9jbnQ7XG5AQCAtMjkxMiwxNSArMjkyMCwyMyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KVxuIFx0XHR1NjQgcnNjX2ZsdXNoID0gMDtcbiBcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XG4tXHRcdFx0cnNjX2NvdW50ICs9IHd4LVx1MDAzZXJ4X3JpbmdbaV0tXHUwMDNlcnhfc3RhdHMucnNjX2NvdW50O1xuLVx0XHRcdHJzY19mbHVzaCArPSB3eC1cdTAwM2VyeF9yaW5nW2ldLVx1MDAzZXJ4X3N0YXRzLnJzY19mbHVzaDtcbitcdFx0XHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2VyeF9yaW5nW2ldKTtcbitcbitcdFx0XHRpZiAoIXJ4X3JpbmcpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcbitcdFx0XHRyc2NfY291bnQgKz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5yc2NfY291bnQ7XG4rXHRcdFx0cnNjX2ZsdXNoICs9IHJ4X3JpbmctXHUwMDNlcnhfc3RhdHMucnNjX2ZsdXNoO1xuIFx0XHR9XG4gXHRcdHd4LVx1MDAzZXJzY19jb3VudCA9IHJzY19jb3VudDtcbiBcdFx0d3gtXHUwMDNlcnNjX2ZsdXNoID0gcnNjX2ZsdXNoO1xuIFx0fVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSsrKSB7XG4tXHRcdHN0cnVjdCB3eF9yaW5nICp0eF9yaW5nID0gd3gtXHUwMDNldHhfcmluZ1tpXTtcbitcdFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXHUwMDNldHhfcmluZ1tpXSk7XG4rXG4rXHRcdGlmICghdHhfcmluZylcbitcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0cmVzdGFydF9xdWV1ZSArPSB0eF9yaW5nLVx1MDAzZXR4X3N0YXRzLnJlc3RhcnRfcXVldWU7XG4gXHRcdHR4X2J1c3kgKz0gdHhfcmluZy1cdTAwM2V0eF9zdGF0cy50eF9idXN5O1xuQEAgLTI5MjksNiArMjk0NSw3IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXHR3eC1cdTAwM2V0eF9idXN5ID0gdHhfYnVzeTtcbiBcbiBcdHd4X3VwZGF0ZV94b2ZmX3J4X2xmYyh3eCk7XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcbiBcdGh3c3RhdHMtXHUwMDNlZ3ByYyArPSByZDMyKHd4LCBXWF9SRE1fUEtUX0NOVCk7XG4gXHRod3N0YXRzLVx1MDAzZWdwdGMgKz0gcmQzMih3eCwgV1hfVERNX1BLVF9DTlQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG5pbmRleCBlZDVhYWQ3ODU3YmQ5Li40MDQ3ZTVkMmJjZmY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuQEAgLTIxOTEsNyArMjE5MSw3IEBAIHN0YXRpYyBpbnQgd3hfYWxsb2NfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCxcbiBcdFx0cmluZy1cdTAwM2VxdWV1ZV9pbmRleCA9IHR4cl9pZHg7XG4gXG4gXHRcdC8qIGFzc2lnbiByaW5nIHRvIHd4ICovXG4tXHRcdHd4LVx1MDAzZXR4X3JpbmdbdHhyX2lkeF0gPSByaW5nO1xuK1x0XHRyY3VfYXNzaWduX3BvaW50ZXIod3gtXHUwMDNldHhfcmluZ1t0eHJfaWR4XSwgcmluZyk7XG4gXG4gXHRcdC8qIHVwZGF0ZSBjb3VudCBhbmQgaW5kZXggKi9cbiBcdFx0dHhyX2NvdW50LS07XG5AQCAtMjIxNyw3ICsyMjE3LDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LFxuIFx0XHRyaW5nLVx1MDAzZXF1ZXVlX2luZGV4ID0gcnhyX2lkeDtcbiBcbiBcdFx0LyogYXNzaWduIHJpbmcgdG8gd3ggKi9cbi1cdFx0d3gtXHUwMDNlcnhfcmluZ1tyeHJfaWR4XSA9IHJpbmc7XG4rXHRcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cdTAwM2VyeF9yaW5nW3J4cl9pZHhdLCByaW5nKTtcbiBcbiBcdFx0LyogdXBkYXRlIGNvdW50IGFuZCBpbmRleCAqL1xuIFx0XHRyeHJfY291bnQtLTtcbkBAIC0yMjQ1LDEwICsyMjQ1LDEwIEBAIHN0YXRpYyB2b2lkIHd4X2ZyZWVfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwgaW50IHZfaWR4KVxuIFx0c3RydWN0IHd4X3JpbmcgKnJpbmc7XG4gXG4gXHR3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLVx1MDAzZXR4KVxuLVx0XHR3eC1cdTAwM2V0eF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdID0gTlVMTDtcbitcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHd4LVx1MDAzZXR4X3JpbmdbcmluZy1cdTAwM2VxdWV1ZV9pbmRleF0sIE5VTEwpO1xuIFxuIFx0d3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci1cdTAwM2VyeClcbi1cdFx0d3gtXHUwMDNlcnhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSA9IE5VTEw7XG4rXHRcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cdTAwM2VyeF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdLCBOVUxMKTtcbiBcbiBcdHd4LVx1MDAzZXFfdmVjdG9yW3ZfaWR4XSA9IE5VTEw7XG4gXHRuZXRpZl9uYXBpX2RlbChcdTAwMjZxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXG5pbmRleCAyZWJhNWFiNTk5MjUyLi5lYzc1Y2ExMTY5Nzk2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXG5AQCAtMTM1OSw4ICsxMzU5LDggQEAgc3RydWN0IHd4IHtcbiBcdHUzMiB0eF9yaW5nX2NvdW50O1xuIFx0dTMyIHJ4X3JpbmdfY291bnQ7XG4gXG4tXHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZ1s2NF0gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcbi1cdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nWzY0XTtcbitcdHN0cnVjdCB3eF9yaW5nIF9fcmN1ICp0eF9yaW5nWzY0XSBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xuK1x0c3RydWN0IHd4X3JpbmcgX19yY3UgKnJ4X3JpbmdbNjRdO1xuIFx0c3RydWN0IHd4X3FfdmVjdG9yICpxX3ZlY3Rvcls2NF07XG4gXHRpbnQgbnVtX3J4X3Bvb2xzO1xuIFx0aW50IG51bV9yeF9xdWV1ZXNfcGVyX3Bvb2w7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMToxOTo1Mi43MzY2MDcxMDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODUzNjIzNzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2FuZ3h1biBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgd2FuZ3h1bmAgZXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L2AgYXJlYS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBSQ1UgcHJvdGVjdGlvbiB0byB0aGUgYHR4X3JpbmdgIGFuZCBgcnhfcmluZ2AgYXJyYXlzIHdpdGhpbiB0aGUgYHN0cnVjdCB3eGAgZGF0YSBzdHJ1Y3R1cmUuIEkgc2VlIHRoYXQgYFJFQURfT05DRSgpYCBhbmQgYHJjdV9hc3NpZ25fcG9pbnRlcigpYCBhcmUgYmVpbmcgdXNlZCwgd2hpY2ggaXMgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIGRlYWxpbmcgd2l0aCBSQ1UgcG9pbnRlcnMuIEFuZCwgbG9va2luZyBhdCB0aGUgaW5jbHVzaW9uIG9mIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIHdpdGhpbiBgd3hfdXBkYXRlX3N0YXRzKClgLCB0aGF0IG1ha2VzIHNlbnNlIGZvciByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbnMuXG5cbldhaXQgYSBzZWNvbmQsIHRob3VnaC4uLiBgd2FuZ3h1bmAgaXMgYW4gKmV0aGVybmV0KiBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyBkZXRlcm1pbmUgaWYgdGhpcyBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHdvcmsgd2l0aCAqcGh5c2ljYWwqIFBDSWUgaGFyZHdhcmUsIGFzIG9wcG9zZWQgdG8gc29tZXRoaW5nIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHNldmVyYWwgZHJpdmVycyBpbiB0aGF0IGNhdGVnb3J5OiBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSwgYW5kIHNpbWlsYXIgb25lcy4gVGhleSBzYXkgdGhvc2UgZHJpdmVycyByZXF1aXJlICpwaHlzaWNhbCogUENJZSBjYXJkcywgYW5kIGFyZW4ndCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBMZXQncyBzZWUgaWYgdGhpcyBgd2FuZ3h1bmAgZHJpdmVyIGlzIGluIHRoYXQgc2FtZSBjbGFzcy5cblxuVGhlIGJlc3Qgd2F5IHRvIGZpZ3VyZSB0aGlzIG91dCBpcyB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLiBMZXQncyBzdGFydCB3aXRoIGEgcXVpY2sgY2hlY2sgdXNpbmcgYEtjb25maWdgLCB0byBzZWUgd2hhdCdzIGtub3duIGFib3V0IGB3YW5neHVuYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDExOjE5OjU4LjU5MDIzMzY1OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjAxNzM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3YW5neHVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Mjg9Y29uZmlnIE5HQkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0zNy1cXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzozODpcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL25nYmUucnN0XFx1MDAzZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9NDM9Y29uZmlnIFRYR0JFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjEtXFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6NjI6XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS5yc3RcXHUwMDNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy02My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz02Nz1jb25maWcgVFhHQkVWRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTc5LVxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjgwOlxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi5yc3RcXHUwMDNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy04MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz04NT1jb25maWcgTkdCRVZGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctOTUtXFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6OTY6XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYucnN0XFx1MDAzZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctOTctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDExOjE5OjU4LjYzNjI1NTYxOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDIxMTYwMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgV2FuZ3h1biBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgV2FuZ3h1biBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgb25lIGZvciBcIkJlaWppbmcgV2FuZ3h1biBUZWNobm9sb2d5IENvLiwgTHRkLlwiIDEwR2JFLzFHYkUgUENJZSBFdGhlcm5ldCBhZGFwdGVycy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGVzZSBhcmUgKnBoeXNpY2FsKiBQQ0llIG5ldHdvcmsgY2FyZHMuIFdlJ3JlIG5vdCB0YWxraW5nIGFib3V0IHNvbWV0aGluZyB0aGF0J3MgZW11bGF0ZWQgaW4geW91ciBzdGFuZGFyZCBRRU1VIHNldHVwLlxuXG5UaGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IGlmIHRoZSBwYXRjaCBpcyBsaW1pdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciB0aGluZ3MgdGhhdCByZXF1aXJlIGFjdHVhbCBQQ0llIGhhcmR3YXJlIOKAkyBsaWtlIHRoZXNlIFdhbmd4dW4gY2FyZHMg4oCTIGFuZCB0aGF0IGFyZW4ndCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGVuIGl0J3MgYSBcIldvcnRoRnV6emluZz1mYWxzZVwiIHNjZW5hcmlvLiBUaGF0IG1ha2VzIHNlbnNlLiBXZSBjYW4ndCByZWFsbHkgZ2V0IGF0IHRoZSBjb2RlIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBhIHBsYWluIFFFTVUgaW5zdGFuY2UgYmVjYXVzZSBpdCByZXF1aXJlcyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgdXN1YWwgUUVNVSBlbXVsYXRpb25zLiBXZSB0eXBpY2FsbHkgc2VlIHRoaW5ncyBsaWtlIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIHZpcnRpby1uZXQsIHZteG5ldDMsIHBjbmV0LCBuZTJrX3BjaSwgaTgyNTU5ZXIsIHR1bGlwLCBhbmQgc3VuZ2VtIGluIFFFTVUuIE5vcGUsIFdhbmd4dW4gKHR4Z2JlLCBuZ2JlKSBpc24ndCBhbW9uZyB0aGVtLiBUaGlzIGNvbmZpcm1zIGl0LlxuXG5UaGVyZWZvcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGRyaXZlciBhbmQgaXRzIHJlbGlhbmNlIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXNuJ3QgZW11bGF0ZWQsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4MSwiT3V0cHV0VG9rZW5zIjo4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMToyMDowNC42NzgzNzQ2NTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuICh0eGdiZS9uZ2JlKSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKHR4Z2JlL25nYmUpIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMToyMDowNC42Nzg0MjA3MTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7rzl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-18 10:59:40 +0000 UTC FinishedAt: 2026-08-18 11:20:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDExOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKHR4Z2JlL25nYmUpIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDExOjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2UxMjhkM2JiMTQzNTQwMTliMmRhMWMwNjU4NDI4NzM5M2NjZDM5M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDExOjE5OjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuaW5kZXggMTIyYzQ5NTJkMjAzZi4uMTljZTQ1OGY5Y2M2ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXG5AQCAtMjg3MCw4ICYjNDM7Mjg3MCwxMyBAQCBzdGF0aWMgdm9pZCB3eF91cGRhdGVfeG9mZl9yeF9sZmMoc3RydWN0IHd4ICp3eClcbiBcdGlmICghZGF0YSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspXG4tXHRcdGNsZWFyX2JpdChXWF9IQU5HX0NIRUNLX0FSTUVELCB3eC1cdTAwM2V0eF9yaW5nW2ldLVx1MDAzZXN0YXRlKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXHUwMDNldHhfcmluZ1tpXSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCF0eF9yaW5nKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdGNsZWFyX2JpdChXWF9IQU5HX0NIRUNLX0FSTUVELCB0eF9yaW5nLVx1MDAzZXN0YXRlKTtcbiYjNDM7XHR9XG4gfVxuIFxuIC8qKlxuQEAgLTI4OTMsMTAgJiM0MzsyODk4LDEzIEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXG4gXHRzcGluX2xvY2soXHUwMDI2d3gtXHUwMDNlaHdfc3RhdHNfbG9jayk7XG4gXG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuIFx0LyogZ2F0aGVyIHNvbWUgc3RhdHMgdG8gdGhlIHd4IHN0cnVjdCB0aGF0IGFyZSBwZXIgcXVldWUgKi9cbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtXHUwMDNlcnhfcmluZ1tpXTtcbiYjNDM7XHRcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gUkVBRF9PTkNFKHd4LVx1MDAzZXJ4X3JpbmdbaV0pO1xuIFxuJiM0MztcdFx0aWYgKCFyeF9yaW5nKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiBcdFx0bm9uX2VvcF9kZXNjcyAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5ub25fZW9wX2Rlc2NzO1xuIFx0XHRhbGxvY19yeF9idWZmX2ZhaWxlZCAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5hbGxvY19yeF9idWZmX2ZhaWxlZDtcbiBcdFx0aHdfY3N1bV9yeF9nb29kICYjNDM7PSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLmNzdW1fZ29vZF9jbnQ7XG5AQCAtMjkxMiwxNSAmIzQzOzI5MjAsMjMgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcbiBcdFx0dTY0IHJzY19mbHVzaCA9IDA7XG4gXG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdFx0cnNjX2NvdW50ICYjNDM7PSB3eC1cdTAwM2VyeF9yaW5nW2ldLVx1MDAzZXJ4X3N0YXRzLnJzY19jb3VudDtcbi1cdFx0XHRyc2NfZmx1c2ggJiM0Mzs9IHd4LVx1MDAzZXJ4X3JpbmdbaV0tXHUwMDNlcnhfc3RhdHMucnNjX2ZsdXNoO1xuJiM0MztcdFx0XHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2VyeF9yaW5nW2ldKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmICghcnhfcmluZylcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRcdHJzY19jb3VudCAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5yc2NfY291bnQ7XG4mIzQzO1x0XHRcdHJzY19mbHVzaCAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5yc2NfZmx1c2g7XG4gXHRcdH1cbiBcdFx0d3gtXHUwMDNlcnNjX2NvdW50ID0gcnNjX2NvdW50O1xuIFx0XHR3eC1cdTAwM2Vyc2NfZmx1c2ggPSByc2NfZmx1c2g7XG4gXHR9XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuLVx0XHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IHd4LVx1MDAzZXR4X3JpbmdbaV07XG4mIzQzO1x0XHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2V0eF9yaW5nW2ldKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIXR4X3JpbmcpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRyZXN0YXJ0X3F1ZXVlICYjNDM7PSB0eF9yaW5nLVx1MDAzZXR4X3N0YXRzLnJlc3RhcnRfcXVldWU7XG4gXHRcdHR4X2J1c3kgJiM0Mzs9IHR4X3JpbmctXHUwMDNldHhfc3RhdHMudHhfYnVzeTtcbkBAIC0yOTI5LDYgJiM0MzsyOTQ1LDcgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcbiBcdHd4LVx1MDAzZXR4X2J1c3kgPSB0eF9idXN5O1xuIFxuIFx0d3hfdXBkYXRlX3hvZmZfcnhfbGZjKHd4KTtcbiYjNDM7XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcbiBcdGh3c3RhdHMtXHUwMDNlZ3ByYyAmIzQzOz0gcmQzMih3eCwgV1hfUkRNX1BLVF9DTlQpO1xuIFx0aHdzdGF0cy1cdTAwM2VncHRjICYjNDM7PSByZDMyKHd4LCBXWF9URE1fUEtUX0NOVCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbmluZGV4IGVkNWFhZDc4NTdiZDkuLjQwNDdlNWQyYmNmZjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG5AQCAtMjE5MSw3ICYjNDM7MjE5MSw3IEBAIHN0YXRpYyBpbnQgd3hfYWxsb2NfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCxcbiBcdFx0cmluZy1cdTAwM2VxdWV1ZV9pbmRleCA9IHR4cl9pZHg7XG4gXG4gXHRcdC8qIGFzc2lnbiByaW5nIHRvIHd4ICovXG4tXHRcdHd4LVx1MDAzZXR4X3JpbmdbdHhyX2lkeF0gPSByaW5nO1xuJiM0MztcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHd4LVx1MDAzZXR4X3JpbmdbdHhyX2lkeF0sIHJpbmcpO1xuIFxuIFx0XHQvKiB1cGRhdGUgY291bnQgYW5kIGluZGV4ICovXG4gXHRcdHR4cl9jb3VudC0tO1xuQEAgLTIyMTcsNyAmIzQzOzIyMTcsNyBAQCBzdGF0aWMgaW50IHd4X2FsbG9jX3FfdmVjdG9yKHN0cnVjdCB3eCAqd3gsXG4gXHRcdHJpbmctXHUwMDNlcXVldWVfaW5kZXggPSByeHJfaWR4O1xuIFxuIFx0XHQvKiBhc3NpZ24gcmluZyB0byB3eCAqL1xuLVx0XHR3eC1cdTAwM2VyeF9yaW5nW3J4cl9pZHhdID0gcmluZztcbiYjNDM7XHRcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cdTAwM2VyeF9yaW5nW3J4cl9pZHhdLCByaW5nKTtcbiBcbiBcdFx0LyogdXBkYXRlIGNvdW50IGFuZCBpbmRleCAqL1xuIFx0XHRyeHJfY291bnQtLTtcbkBAIC0yMjQ1LDEwICYjNDM7MjI0NSwxMCBAQCBzdGF0aWMgdm9pZCB3eF9mcmVlX3FfdmVjdG9yKHN0cnVjdCB3eCAqd3gsIGludCB2X2lkeClcbiBcdHN0cnVjdCB3eF9yaW5nICpyaW5nO1xuIFxuIFx0d3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci1cdTAwM2V0eClcbi1cdFx0d3gtXHUwMDNldHhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSA9IE5VTEw7XG4mIzQzO1x0XHRyY3VfYXNzaWduX3BvaW50ZXIod3gtXHUwMDNldHhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSwgTlVMTCk7XG4gXG4gXHR3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLVx1MDAzZXJ4KVxuLVx0XHR3eC1cdTAwM2VyeF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdID0gTlVMTDtcbiYjNDM7XHRcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cdTAwM2VyeF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdLCBOVUxMKTtcbiBcbiBcdHd4LVx1MDAzZXFfdmVjdG9yW3ZfaWR4XSA9IE5VTEw7XG4gXHRuZXRpZl9uYXBpX2RlbChcdTAwMjZxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXG5pbmRleCAyZWJhNWFiNTk5MjUyLi5lYzc1Y2ExMTY5Nzk2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXG5AQCAtMTM1OSw4ICYjNDM7MTM1OSw4IEBAIHN0cnVjdCB3eCB7XG4gXHR1MzIgdHhfcmluZ19jb3VudDtcbiBcdHUzMiByeF9yaW5nX2NvdW50O1xuIFxuLVx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmdbNjRdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG4tXHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZ1s2NF07XG4mIzQzO1x0c3RydWN0IHd4X3JpbmcgX19yY3UgKnR4X3JpbmdbNjRdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG4mIzQzO1x0c3RydWN0IHd4X3JpbmcgX19yY3UgKnJ4X3JpbmdbNjRdO1xuIFx0c3RydWN0IHd4X3FfdmVjdG9yICpxX3ZlY3Rvcls2NF07XG4gXHRpbnQgbnVtX3J4X3Bvb2xzO1xuIFx0aW50IG51bV9yeF9xdWV1ZXNfcGVyX3Bvb2w7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTE6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuICh0eGdiZS9uZ2JlKSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNlMTI4ZDNiYjE0MzU0MDE5YjJkYTFjMDY1ODQyODczOTNjY2QzOTMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAxMToxOTo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYwppbmRleCAxMjJjNDk1MmQyMDNmLi4xOWNlNDU4ZjljYzZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jCkBAIC0yODcwLDggJiM0MzsyODcwLDEzIEBAIHN0YXRpYyB2b2lkIHd4X3VwZGF0ZV94b2ZmX3J4X2xmYyhzdHJ1Y3Qgd3ggKnd4KQogCWlmICghZGF0YSkKIAkJcmV0dXJuOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IHd4LSZndDtudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOykKLQkJY2xlYXJfYml0KFdYX0hBTkdfQ0hFQ0tfQVJNRUQsIHd4LSZndDt0eF9yaW5nW2ldLSZndDtzdGF0ZSk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyB3eC0mZ3Q7bnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXN0cnVjdCB3eF9yaW5nICp0eF9yaW5nID0gUkVBRF9PTkNFKHd4LSZndDt0eF9yaW5nW2ldKTsKJiM0MzsKJiM0MzsJCWlmICghdHhfcmluZykKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCWNsZWFyX2JpdChXWF9IQU5HX0NIRUNLX0FSTUVELCB0eF9yaW5nLSZndDtzdGF0ZSk7CiYjNDM7CX0KIH0KIAogLyoqCkBAIC0yODkzLDEwICYjNDM7Mjg5OCwxMyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KQogCiAJc3Bpbl9sb2NrKCZhbXA7d3gtJmd0O2h3X3N0YXRzX2xvY2spOwogCiYjNDM7CXJjdV9yZWFkX2xvY2soKTsKIAkvKiBnYXRoZXIgc29tZSBzdGF0cyB0byB0aGUgd3ggc3RydWN0IHRoYXQgYXJlIHBlciBxdWV1ZSAqLwogCWZvciAoaSA9IDA7IGkgJmx0OyB3eC0mZ3Q7bnVtX3J4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHsKLQkJc3RydWN0IHd4X3JpbmcgKnJ4X3JpbmcgPSB3eC0mZ3Q7cnhfcmluZ1tpXTsKJiM0MzsJCXN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gUkVBRF9PTkNFKHd4LSZndDtyeF9yaW5nW2ldKTsKIAomIzQzOwkJaWYgKCFyeF9yaW5nKQomIzQzOwkJCWNvbnRpbnVlOwogCQlub25fZW9wX2Rlc2NzICYjNDM7PSByeF9yaW5nLSZndDtyeF9zdGF0cy5ub25fZW9wX2Rlc2NzOwogCQlhbGxvY19yeF9idWZmX2ZhaWxlZCAmIzQzOz0gcnhfcmluZy0mZ3Q7cnhfc3RhdHMuYWxsb2NfcnhfYnVmZl9mYWlsZWQ7CiAJCWh3X2NzdW1fcnhfZ29vZCAmIzQzOz0gcnhfcmluZy0mZ3Q7cnhfc3RhdHMuY3N1bV9nb29kX2NudDsKQEAgLTI5MTIsMTUgJiM0MzsyOTIwLDIzIEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpCiAJCXU2NCByc2NfZmx1c2ggPSAwOwogCiAJCWZvciAoaSA9IDA7IGkgJmx0OyB3eC0mZ3Q7bnVtX3J4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHsKLQkJCXJzY19jb3VudCAmIzQzOz0gd3gtJmd0O3J4X3JpbmdbaV0tJmd0O3J4X3N0YXRzLnJzY19jb3VudDsKLQkJCXJzY19mbHVzaCAmIzQzOz0gd3gtJmd0O3J4X3JpbmdbaV0tJmd0O3J4X3N0YXRzLnJzY19mbHVzaDsKJiM0MzsJCQlzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC0mZ3Q7cnhfcmluZ1tpXSk7CiYjNDM7CiYjNDM7CQkJaWYgKCFyeF9yaW5nKQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCQlyc2NfY291bnQgJiM0Mzs9IHJ4X3JpbmctJmd0O3J4X3N0YXRzLnJzY19jb3VudDsKJiM0MzsJCQlyc2NfZmx1c2ggJiM0Mzs9IHJ4X3JpbmctJmd0O3J4X3N0YXRzLnJzY19mbHVzaDsKIAkJfQogCQl3eC0mZ3Q7cnNjX2NvdW50ID0gcnNjX2NvdW50OwogCQl3eC0mZ3Q7cnNjX2ZsdXNoID0gcnNjX2ZsdXNoOwogCX0KIAogCWZvciAoaSA9IDA7IGkgJmx0OyB3eC0mZ3Q7bnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHsKLQkJc3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSB3eC0mZ3Q7dHhfcmluZ1tpXTsKJiM0MzsJCXN0cnVjdCB3eF9yaW5nICp0eF9yaW5nID0gUkVBRF9PTkNFKHd4LSZndDt0eF9yaW5nW2ldKTsKJiM0MzsKJiM0MzsJCWlmICghdHhfcmluZykKJiM0MzsJCQljb250aW51ZTsKIAogCQlyZXN0YXJ0X3F1ZXVlICYjNDM7PSB0eF9yaW5nLSZndDt0eF9zdGF0cy5yZXN0YXJ0X3F1ZXVlOwogCQl0eF9idXN5ICYjNDM7PSB0eF9yaW5nLSZndDt0eF9zdGF0cy50eF9idXN5OwpAQCAtMjkyOSw2ICYjNDM7Mjk0NSw3IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpCiAJd3gtJmd0O3R4X2J1c3kgPSB0eF9idXN5OwogCiAJd3hfdXBkYXRlX3hvZmZfcnhfbGZjKHd4KTsKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiAKIAlod3N0YXRzLSZndDtncHJjICYjNDM7PSByZDMyKHd4LCBXWF9SRE1fUEtUX0NOVCk7CiAJaHdzdGF0cy0mZ3Q7Z3B0YyAmIzQzOz0gcmQzMih3eCwgV1hfVERNX1BLVF9DTlQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMKaW5kZXggZWQ1YWFkNzg1N2JkOS4uNDA0N2U1ZDJiY2ZmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jCkBAIC0yMTkxLDcgJiM0MzsyMTkxLDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LAogCQlyaW5nLSZndDtxdWV1ZV9pbmRleCA9IHR4cl9pZHg7CiAKIAkJLyogYXNzaWduIHJpbmcgdG8gd3ggKi8KLQkJd3gtJmd0O3R4X3JpbmdbdHhyX2lkeF0gPSByaW5nOwomIzQzOwkJcmN1X2Fzc2lnbl9wb2ludGVyKHd4LSZndDt0eF9yaW5nW3R4cl9pZHhdLCByaW5nKTsKIAogCQkvKiB1cGRhdGUgY291bnQgYW5kIGluZGV4ICovCiAJCXR4cl9jb3VudC0tOwpAQCAtMjIxNyw3ICYjNDM7MjIxNyw3IEBAIHN0YXRpYyBpbnQgd3hfYWxsb2NfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwKIAkJcmluZy0mZ3Q7cXVldWVfaW5kZXggPSByeHJfaWR4OwogCiAJCS8qIGFzc2lnbiByaW5nIHRvIHd4ICovCi0JCXd4LSZndDtyeF9yaW5nW3J4cl9pZHhdID0gcmluZzsKJiM0MzsJCXJjdV9hc3NpZ25fcG9pbnRlcih3eC0mZ3Q7cnhfcmluZ1tyeHJfaWR4XSwgcmluZyk7CiAKIAkJLyogdXBkYXRlIGNvdW50IGFuZCBpbmRleCAqLwogCQlyeHJfY291bnQtLTsKQEAgLTIyNDUsMTAgJiM0MzsyMjQ1LDEwIEBAIHN0YXRpYyB2b2lkIHd4X2ZyZWVfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwgaW50IHZfaWR4KQogCXN0cnVjdCB3eF9yaW5nICpyaW5nOwogCiAJd3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci0mZ3Q7dHgpCi0JCXd4LSZndDt0eF9yaW5nW3JpbmctJmd0O3F1ZXVlX2luZGV4XSA9IE5VTEw7CiYjNDM7CQlyY3VfYXNzaWduX3BvaW50ZXIod3gtJmd0O3R4X3JpbmdbcmluZy0mZ3Q7cXVldWVfaW5kZXhdLCBOVUxMKTsKIAogCXd4X2Zvcl9lYWNoX3JpbmcocmluZywgcV92ZWN0b3ItJmd0O3J4KQotCQl3eC0mZ3Q7cnhfcmluZ1tyaW5nLSZndDtxdWV1ZV9pbmRleF0gPSBOVUxMOwomIzQzOwkJcmN1X2Fzc2lnbl9wb2ludGVyKHd4LSZndDtyeF9yaW5nW3JpbmctJmd0O3F1ZXVlX2luZGV4XSwgTlVMTCk7CiAKIAl3eC0mZ3Q7cV92ZWN0b3Jbdl9pZHhdID0gTlVMTDsKIAluZXRpZl9uYXBpX2RlbCgmYW1wO3FfdmVjdG9yLSZndDtuYXBpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgKaW5kZXggMmViYTVhYjU5OTI1Mi4uZWM3NWNhMTE2OTc5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgKQEAgLTEzNTksOCAmIzQzOzEzNTksOCBAQCBzdHJ1Y3Qgd3ggewogCXUzMiB0eF9yaW5nX2NvdW50OwogCXUzMiByeF9yaW5nX2NvdW50OwogCi0Jc3RydWN0IHd4X3JpbmcgKnR4X3JpbmdbNjRdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7Ci0Jc3RydWN0IHd4X3JpbmcgKnJ4X3JpbmdbNjRdOwomIzQzOwlzdHJ1Y3Qgd3hfcmluZyBfX3JjdSAqdHhfcmluZ1s2NF0gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDsKJiM0MzsJc3RydWN0IHd4X3JpbmcgX19yY3UgKnJ4X3JpbmdbNjRdOwogCXN0cnVjdCB3eF9xX3ZlY3RvciAqcV92ZWN0b3JbNjRdOwogCWludCBudW1fcnhfcG9vbHM7CiAJaW50IG51bV9yeF9xdWV1ZXNfcGVyX3Bvb2w7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDExOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXYW5neHVuIEV0aGVybmV0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgd2FuZ3h1bmAgZXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L2AgYXJlYS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBSQ1UgcHJvdGVjdGlvbiB0byB0aGUgYHR4X3JpbmdgIGFuZCBgcnhfcmluZ2AgYXJyYXlzIHdpdGhpbiB0aGUgYHN0cnVjdCB3eGAgZGF0YSBzdHJ1Y3R1cmUuIEkgc2VlIHRoYXQgYFJFQURfT05DRSgpYCBhbmQgYHJjdV9hc3NpZ25fcG9pbnRlcigpYCBhcmUgYmVpbmcgdXNlZCwgd2hpY2ggaXMgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIGRlYWxpbmcgd2l0aCBSQ1UgcG9pbnRlcnMuIEFuZCwgbG9va2luZyBhdCB0aGUgaW5jbHVzaW9uIG9mIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIHdpdGhpbiBgd3hfdXBkYXRlX3N0YXRzKClgLCB0aGF0IG1ha2VzIHNlbnNlIGZvciByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbnMuCgpXYWl0IGEgc2Vjb25kLCB0aG91Z2guLi4gYHdhbmd4dW5gIGlzIGFuICpldGhlcm5ldCogZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIGRldGVybWluZSBpZiB0aGlzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gd29yayB3aXRoICpwaHlzaWNhbCogUENJZSBoYXJkd2FyZSwgYXMgb3Bwb3NlZCB0byBzb21ldGhpbmcgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gc2V2ZXJhbCBkcml2ZXJzIGluIHRoYXQgY2F0ZWdvcnk6IG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1LCBhbmQgc2ltaWxhciBvbmVzLiBUaGV5IHNheSB0aG9zZSBkcml2ZXJzIHJlcXVpcmUgKnBoeXNpY2FsKiBQQ0llIGNhcmRzLCBhbmQgYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgYHdhbmd4dW5gIGRyaXZlciBpcyBpbiB0aGF0IHNhbWUgY2xhc3MuCgpUaGUgYmVzdCB3YXkgdG8gZmlndXJlIHRoaXMgb3V0IGlzIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgcXVpY2sgY2hlY2sgdXNpbmcgYEtjb25maWdgLCB0byBzZWUgd2hhdCYjMzk7cyBrbm93biBhYm91dCBgd2FuZ3h1bmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2FuZ3h1biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Mjg9Y29uZmlnIE5HQkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMzctXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjM4Olx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL25nYmUucnN0XHUwMDNlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTM5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz00Mz1jb25maWcgVFhHQkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjEtXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjYyOlx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JlLnJzdFx1MDAzZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy02My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Njc9Y29uZmlnIFRYR0JFVkZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNzktXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjgwOlx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYucnN0XHUwMDNlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz04NT1jb25maWcgTkdCRVZGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTk1LVx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzo5NjpcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYucnN0XHUwMDNlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTk3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDExOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3ODEKCQkJCQkJCW91dHB1dDogODMKCQkJCQkJCXRob3VnaHRzOiAyNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgV2FuZ3h1biBEcml2ZXImIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgV2FuZ3h1biBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgb25lIGZvciAmIzM0O0JlaWppbmcgV2FuZ3h1biBUZWNobm9sb2d5IENvLiwgTHRkLiYjMzQ7IDEwR2JFLzFHYkUgUENJZSBFdGhlcm5ldCBhZGFwdGVycy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGVzZSBhcmUgKnBoeXNpY2FsKiBQQ0llIG5ldHdvcmsgY2FyZHMuIFdlJiMzOTtyZSBub3QgdGFsa2luZyBhYm91dCBzb21ldGhpbmcgdGhhdCYjMzk7cyBlbXVsYXRlZCBpbiB5b3VyIHN0YW5kYXJkIFFFTVUgc2V0dXAuCgpUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IGlmIHRoZSBwYXRjaCBpcyBsaW1pdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciB0aGluZ3MgdGhhdCByZXF1aXJlIGFjdHVhbCBQQ0llIGhhcmR3YXJlIOKAkyBsaWtlIHRoZXNlIFdhbmd4dW4gY2FyZHMg4oCTIGFuZCB0aGF0IGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhlbiBpdCYjMzk7cyBhICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgc2NlbmFyaW8uIFRoYXQgbWFrZXMgc2Vuc2UuIFdlIGNhbiYjMzk7dCByZWFsbHkgZ2V0IGF0IHRoZSBjb2RlIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBhIHBsYWluIFFFTVUgaW5zdGFuY2UgYmVjYXVzZSBpdCByZXF1aXJlcyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIHVzdWFsIFFFTVUgZW11bGF0aW9ucy4gV2UgdHlwaWNhbGx5IHNlZSB0aGluZ3MgbGlrZSBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCB2aXJ0aW8tbmV0LCB2bXhuZXQzLCBwY25ldCwgbmUya19wY2ksIGk4MjU1OWVyLCB0dWxpcCwgYW5kIHN1bmdlbSBpbiBRRU1VLiBOb3BlLCBXYW5neHVuICh0eGdiZSwgbmdiZSkgaXNuJiMzOTt0IGFtb25nIHRoZW0uIFRoaXMgY29uZmlybXMgaXQuCgpUaGVyZWZvcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGRyaXZlciBhbmQgaXRzIHJlbGlhbmNlIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDExOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKHR4Z2JlL25nYmUpIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAodHhnYmUvbmdiZSkgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTE6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDExOjE5OjUyLjI0NjkwMTc2MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDMxNTM0MzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKHR4Z2JlL25nYmUpIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMToxOTo1Mi4yNDY5MjE0NDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTA2ODQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGNlMTI4ZDNiYjE0MzU0MDE5YjJkYTFjMDY1ODQyODczOTNjY2QzOTNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTE6MTk6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXFxuaW5kZXggMTIyYzQ5NTJkMjAzZi4uMTljZTQ1OGY5Y2M2ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcXG5AQCAtMjg3MCw4ICsyODcwLDEzIEBAIHN0YXRpYyB2b2lkIHd4X3VwZGF0ZV94b2ZmX3J4X2xmYyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXHRpZiAoIWRhdGEpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB3eC1cXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSsrKVxcbi1cXHRcXHRjbGVhcl9iaXQoV1hfSEFOR19DSEVDS19BUk1FRCwgd3gtXFx1MDAzZXR4X3JpbmdbaV0tXFx1MDAzZXN0YXRlKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHd4LVxcdTAwM2VudW1fdHhfcXVldWVzOyBpKyspIHtcXG4rXFx0XFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXFx1MDAzZXR4X3JpbmdbaV0pO1xcbitcXG4rXFx0XFx0aWYgKCF0eF9yaW5nKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0Y2xlYXJfYml0KFdYX0hBTkdfQ0hFQ0tfQVJNRUQsIHR4X3JpbmctXFx1MDAzZXN0YXRlKTtcXG4rXFx0fVxcbiB9XFxuIFxcbiAvKipcXG5AQCAtMjg5MywxMCArMjg5OCwxMyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZ3eC1cXHUwMDNlaHdfc3RhdHNfbG9jayk7XFxuIFxcbitcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdC8qIGdhdGhlciBzb21lIHN0YXRzIHRvIHRoZSB3eCBzdHJ1Y3QgdGhhdCBhcmUgcGVyIHF1ZXVlICovXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB3eC1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XFxuLVxcdFxcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtXFx1MDAzZXJ4X3JpbmdbaV07XFxuK1xcdFxcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gUkVBRF9PTkNFKHd4LVxcdTAwM2VyeF9yaW5nW2ldKTtcXG4gXFxuK1xcdFxcdGlmICghcnhfcmluZylcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdG5vbl9lb3BfZGVzY3MgKz0gcnhfcmluZy1cXHUwMDNlcnhfc3RhdHMubm9uX2VvcF9kZXNjcztcXG4gXFx0XFx0YWxsb2NfcnhfYnVmZl9mYWlsZWQgKz0gcnhfcmluZy1cXHUwMDNlcnhfc3RhdHMuYWxsb2NfcnhfYnVmZl9mYWlsZWQ7XFxuIFxcdFxcdGh3X2NzdW1fcnhfZ29vZCArPSByeF9yaW5nLVxcdTAwM2VyeF9zdGF0cy5jc3VtX2dvb2RfY250O1xcbkBAIC0yOTEyLDE1ICsyOTIwLDIzIEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXFxuIFxcdFxcdHU2NCByc2NfZmx1c2ggPSAwO1xcbiBcXG4gXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHd4LVxcdTAwM2VudW1fcnhfcXVldWVzOyBpKyspIHtcXG4tXFx0XFx0XFx0cnNjX2NvdW50ICs9IHd4LVxcdTAwM2VyeF9yaW5nW2ldLVxcdTAwM2VyeF9zdGF0cy5yc2NfY291bnQ7XFxuLVxcdFxcdFxcdHJzY19mbHVzaCArPSB3eC1cXHUwMDNlcnhfcmluZ1tpXS1cXHUwMDNlcnhfc3RhdHMucnNjX2ZsdXNoO1xcbitcXHRcXHRcXHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC1cXHUwMDNlcnhfcmluZ1tpXSk7XFxuK1xcbitcXHRcXHRcXHRpZiAoIXJ4X3JpbmcpXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0XFx0cnNjX2NvdW50ICs9IHJ4X3JpbmctXFx1MDAzZXJ4X3N0YXRzLnJzY19jb3VudDtcXG4rXFx0XFx0XFx0cnNjX2ZsdXNoICs9IHJ4X3JpbmctXFx1MDAzZXJ4X3N0YXRzLnJzY19mbHVzaDtcXG4gXFx0XFx0fVxcbiBcXHRcXHR3eC1cXHUwMDNlcnNjX2NvdW50ID0gcnNjX2NvdW50O1xcbiBcXHRcXHR3eC1cXHUwMDNlcnNjX2ZsdXNoID0gcnNjX2ZsdXNoO1xcbiBcXHR9XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xcbi1cXHRcXHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IHd4LVxcdTAwM2V0eF9yaW5nW2ldO1xcbitcXHRcXHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IFJFQURfT05DRSh3eC1cXHUwMDNldHhfcmluZ1tpXSk7XFxuK1xcbitcXHRcXHRpZiAoIXR4X3JpbmcpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0cmVzdGFydF9xdWV1ZSArPSB0eF9yaW5nLVxcdTAwM2V0eF9zdGF0cy5yZXN0YXJ0X3F1ZXVlO1xcbiBcXHRcXHR0eF9idXN5ICs9IHR4X3JpbmctXFx1MDAzZXR4X3N0YXRzLnR4X2J1c3k7XFxuQEAgLTI5MjksNiArMjk0NSw3IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXFxuIFxcdHd4LVxcdTAwM2V0eF9idXN5ID0gdHhfYnVzeTtcXG4gXFxuIFxcdHd4X3VwZGF0ZV94b2ZmX3J4X2xmYyh3eCk7XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXG4gXFx0aHdzdGF0cy1cXHUwMDNlZ3ByYyArPSByZDMyKHd4LCBXWF9SRE1fUEtUX0NOVCk7XFxuIFxcdGh3c3RhdHMtXFx1MDAzZWdwdGMgKz0gcmQzMih3eCwgV1hfVERNX1BLVF9DTlQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xcbmluZGV4IGVkNWFhZDc4NTdiZDkuLjQwNDdlNWQyYmNmZjcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcXG5AQCAtMjE5MSw3ICsyMTkxLDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LFxcbiBcXHRcXHRyaW5nLVxcdTAwM2VxdWV1ZV9pbmRleCA9IHR4cl9pZHg7XFxuIFxcbiBcXHRcXHQvKiBhc3NpZ24gcmluZyB0byB3eCAqL1xcbi1cXHRcXHR3eC1cXHUwMDNldHhfcmluZ1t0eHJfaWR4XSA9IHJpbmc7XFxuK1xcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cXHUwMDNldHhfcmluZ1t0eHJfaWR4XSwgcmluZyk7XFxuIFxcbiBcXHRcXHQvKiB1cGRhdGUgY291bnQgYW5kIGluZGV4ICovXFxuIFxcdFxcdHR4cl9jb3VudC0tO1xcbkBAIC0yMjE3LDcgKzIyMTcsNyBAQCBzdGF0aWMgaW50IHd4X2FsbG9jX3FfdmVjdG9yKHN0cnVjdCB3eCAqd3gsXFxuIFxcdFxcdHJpbmctXFx1MDAzZXF1ZXVlX2luZGV4ID0gcnhyX2lkeDtcXG4gXFxuIFxcdFxcdC8qIGFzc2lnbiByaW5nIHRvIHd4ICovXFxuLVxcdFxcdHd4LVxcdTAwM2VyeF9yaW5nW3J4cl9pZHhdID0gcmluZztcXG4rXFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKHd4LVxcdTAwM2VyeF9yaW5nW3J4cl9pZHhdLCByaW5nKTtcXG4gXFxuIFxcdFxcdC8qIHVwZGF0ZSBjb3VudCBhbmQgaW5kZXggKi9cXG4gXFx0XFx0cnhyX2NvdW50LS07XFxuQEAgLTIyNDUsMTAgKzIyNDUsMTAgQEAgc3RhdGljIHZvaWQgd3hfZnJlZV9xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LCBpbnQgdl9pZHgpXFxuIFxcdHN0cnVjdCB3eF9yaW5nICpyaW5nO1xcbiBcXG4gXFx0d3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci1cXHUwMDNldHgpXFxuLVxcdFxcdHd4LVxcdTAwM2V0eF9yaW5nW3JpbmctXFx1MDAzZXF1ZXVlX2luZGV4XSA9IE5VTEw7XFxuK1xcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cXHUwMDNldHhfcmluZ1tyaW5nLVxcdTAwM2VxdWV1ZV9pbmRleF0sIE5VTEwpO1xcbiBcXG4gXFx0d3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci1cXHUwMDNlcngpXFxuLVxcdFxcdHd4LVxcdTAwM2VyeF9yaW5nW3JpbmctXFx1MDAzZXF1ZXVlX2luZGV4XSA9IE5VTEw7XFxuK1xcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cXHUwMDNlcnhfcmluZ1tyaW5nLVxcdTAwM2VxdWV1ZV9pbmRleF0sIE5VTEwpO1xcbiBcXG4gXFx0d3gtXFx1MDAzZXFfdmVjdG9yW3ZfaWR4XSA9IE5VTEw7XFxuIFxcdG5ldGlmX25hcGlfZGVsKFxcdTAwMjZxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcXG5pbmRleCAyZWJhNWFiNTk5MjUyLi5lYzc1Y2ExMTY5Nzk2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcXG5AQCAtMTM1OSw4ICsxMzU5LDggQEAgc3RydWN0IHd4IHtcXG4gXFx0dTMyIHR4X3JpbmdfY291bnQ7XFxuIFxcdHUzMiByeF9yaW5nX2NvdW50O1xcbiBcXG4tXFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmdbNjRdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XFxuLVxcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nWzY0XTtcXG4rXFx0c3RydWN0IHd4X3JpbmcgX19yY3UgKnR4X3JpbmdbNjRdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XFxuK1xcdHN0cnVjdCB3eF9yaW5nIF9fcmN1ICpyeF9yaW5nWzY0XTtcXG4gXFx0c3RydWN0IHd4X3FfdmVjdG9yICpxX3ZlY3Rvcls2NF07XFxuIFxcdGludCBudW1fcnhfcG9vbHM7XFxuIFxcdGludCBudW1fcnhfcXVldWVzX3Blcl9wb29sO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMToxOTo1Mi43MzY2MDAxNTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTk0MTgxNzczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKHR4Z2JlL25nYmUpIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjZTEyOGQzYmIxNDM1NDAxOWIyZGExYzA2NTg0Mjg3MzkzY2NkMzkzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTE6MTk6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbmluZGV4IDEyMmM0OTUyZDIwM2YuLjE5Y2U0NThmOWNjNmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuQEAgLTI4NzAsOCArMjg3MCwxMyBAQCBzdGF0aWMgdm9pZCB3eF91cGRhdGVfeG9mZl9yeF9sZmMoc3RydWN0IHd4ICp3eClcbiBcdGlmICghZGF0YSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSsrKVxuLVx0XHRjbGVhcl9iaXQoV1hfSEFOR19DSEVDS19BUk1FRCwgd3gtXHUwMDNldHhfcmluZ1tpXS1cdTAwM2VzdGF0ZSk7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpKyspIHtcbitcdFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXHUwMDNldHhfcmluZ1tpXSk7XG4rXG4rXHRcdGlmICghdHhfcmluZylcbitcdFx0XHRjb250aW51ZTtcbitcdFx0Y2xlYXJfYml0KFdYX0hBTkdfQ0hFQ0tfQVJNRUQsIHR4X3JpbmctXHUwMDNlc3RhdGUpO1xuK1x0fVxuIH1cbiBcbiAvKipcbkBAIC0yODkzLDEwICsyODk4LDEzIEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXG4gXHRzcGluX2xvY2soXHUwMDI2d3gtXHUwMDNlaHdfc3RhdHNfbG9jayk7XG4gXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHQvKiBnYXRoZXIgc29tZSBzdGF0cyB0byB0aGUgd3ggc3RydWN0IHRoYXQgYXJlIHBlciBxdWV1ZSAqL1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XG4tXHRcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtXHUwMDNlcnhfcmluZ1tpXTtcbitcdFx0c3RydWN0IHd4X3JpbmcgKnJ4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXHUwMDNlcnhfcmluZ1tpXSk7XG4gXG4rXHRcdGlmICghcnhfcmluZylcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0bm9uX2VvcF9kZXNjcyArPSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLm5vbl9lb3BfZGVzY3M7XG4gXHRcdGFsbG9jX3J4X2J1ZmZfZmFpbGVkICs9IHJ4X3JpbmctXHUwMDNlcnhfc3RhdHMuYWxsb2NfcnhfYnVmZl9mYWlsZWQ7XG4gXHRcdGh3X2NzdW1fcnhfZ29vZCArPSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLmNzdW1fZ29vZF9jbnQ7XG5AQCAtMjkxMiwxNSArMjkyMCwyMyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KVxuIFx0XHR1NjQgcnNjX2ZsdXNoID0gMDtcbiBcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XG4tXHRcdFx0cnNjX2NvdW50ICs9IHd4LVx1MDAzZXJ4X3JpbmdbaV0tXHUwMDNlcnhfc3RhdHMucnNjX2NvdW50O1xuLVx0XHRcdHJzY19mbHVzaCArPSB3eC1cdTAwM2VyeF9yaW5nW2ldLVx1MDAzZXJ4X3N0YXRzLnJzY19mbHVzaDtcbitcdFx0XHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2VyeF9yaW5nW2ldKTtcbitcbitcdFx0XHRpZiAoIXJ4X3JpbmcpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcbitcdFx0XHRyc2NfY291bnQgKz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5yc2NfY291bnQ7XG4rXHRcdFx0cnNjX2ZsdXNoICs9IHJ4X3JpbmctXHUwMDNlcnhfc3RhdHMucnNjX2ZsdXNoO1xuIFx0XHR9XG4gXHRcdHd4LVx1MDAzZXJzY19jb3VudCA9IHJzY19jb3VudDtcbiBcdFx0d3gtXHUwMDNlcnNjX2ZsdXNoID0gcnNjX2ZsdXNoO1xuIFx0fVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSsrKSB7XG4tXHRcdHN0cnVjdCB3eF9yaW5nICp0eF9yaW5nID0gd3gtXHUwMDNldHhfcmluZ1tpXTtcbitcdFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXHUwMDNldHhfcmluZ1tpXSk7XG4rXG4rXHRcdGlmICghdHhfcmluZylcbitcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0cmVzdGFydF9xdWV1ZSArPSB0eF9yaW5nLVx1MDAzZXR4X3N0YXRzLnJlc3RhcnRfcXVldWU7XG4gXHRcdHR4X2J1c3kgKz0gdHhfcmluZy1cdTAwM2V0eF9zdGF0cy50eF9idXN5O1xuQEAgLTI5MjksNiArMjk0NSw3IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXHR3eC1cdTAwM2V0eF9idXN5ID0gdHhfYnVzeTtcbiBcbiBcdHd4X3VwZGF0ZV94b2ZmX3J4X2xmYyh3eCk7XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcbiBcdGh3c3RhdHMtXHUwMDNlZ3ByYyArPSByZDMyKHd4LCBXWF9SRE1fUEtUX0NOVCk7XG4gXHRod3N0YXRzLVx1MDAzZWdwdGMgKz0gcmQzMih3eCwgV1hfVERNX1BLVF9DTlQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG5pbmRleCBlZDVhYWQ3ODU3YmQ5Li40MDQ3ZTVkMmJjZmY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuQEAgLTIxOTEsNyArMjE5MSw3IEBAIHN0YXRpYyBpbnQgd3hfYWxsb2NfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCxcbiBcdFx0cmluZy1cdTAwM2VxdWV1ZV9pbmRleCA9IHR4cl9pZHg7XG4gXG4gXHRcdC8qIGFzc2lnbiByaW5nIHRvIHd4ICovXG4tXHRcdHd4LVx1MDAzZXR4X3JpbmdbdHhyX2lkeF0gPSByaW5nO1xuK1x0XHRyY3VfYXNzaWduX3BvaW50ZXIod3gtXHUwMDNldHhfcmluZ1t0eHJfaWR4XSwgcmluZyk7XG4gXG4gXHRcdC8qIHVwZGF0ZSBjb3VudCBhbmQgaW5kZXggKi9cbiBcdFx0dHhyX2NvdW50LS07XG5AQCAtMjIxNyw3ICsyMjE3LDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LFxuIFx0XHRyaW5nLVx1MDAzZXF1ZXVlX2luZGV4ID0gcnhyX2lkeDtcbiBcbiBcdFx0LyogYXNzaWduIHJpbmcgdG8gd3ggKi9cbi1cdFx0d3gtXHUwMDNlcnhfcmluZ1tyeHJfaWR4XSA9IHJpbmc7XG4rXHRcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cdTAwM2VyeF9yaW5nW3J4cl9pZHhdLCByaW5nKTtcbiBcbiBcdFx0LyogdXBkYXRlIGNvdW50IGFuZCBpbmRleCAqL1xuIFx0XHRyeHJfY291bnQtLTtcbkBAIC0yMjQ1LDEwICsyMjQ1LDEwIEBAIHN0YXRpYyB2b2lkIHd4X2ZyZWVfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwgaW50IHZfaWR4KVxuIFx0c3RydWN0IHd4X3JpbmcgKnJpbmc7XG4gXG4gXHR3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLVx1MDAzZXR4KVxuLVx0XHR3eC1cdTAwM2V0eF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdID0gTlVMTDtcbitcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHd4LVx1MDAzZXR4X3JpbmdbcmluZy1cdTAwM2VxdWV1ZV9pbmRleF0sIE5VTEwpO1xuIFxuIFx0d3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci1cdTAwM2VyeClcbi1cdFx0d3gtXHUwMDNlcnhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSA9IE5VTEw7XG4rXHRcdHJjdV9hc3NpZ25fcG9pbnRlcih3eC1cdTAwM2VyeF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdLCBOVUxMKTtcbiBcbiBcdHd4LVx1MDAzZXFfdmVjdG9yW3ZfaWR4XSA9IE5VTEw7XG4gXHRuZXRpZl9uYXBpX2RlbChcdTAwMjZxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXG5pbmRleCAyZWJhNWFiNTk5MjUyLi5lYzc1Y2ExMTY5Nzk2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXG5AQCAtMTM1OSw4ICsxMzU5LDggQEAgc3RydWN0IHd4IHtcbiBcdHUzMiB0eF9yaW5nX2NvdW50O1xuIFx0dTMyIHJ4X3JpbmdfY291bnQ7XG4gXG4tXHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZ1s2NF0gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcbi1cdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nWzY0XTtcbitcdHN0cnVjdCB3eF9yaW5nIF9fcmN1ICp0eF9yaW5nWzY0XSBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xuK1x0c3RydWN0IHd4X3JpbmcgX19yY3UgKnJ4X3JpbmdbNjRdO1xuIFx0c3RydWN0IHd4X3FfdmVjdG9yICpxX3ZlY3Rvcls2NF07XG4gXHRpbnQgbnVtX3J4X3Bvb2xzO1xuIFx0aW50IG51bV9yeF9xdWV1ZXNfcGVyX3Bvb2w7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMToxOTo1Mi43MzY2MDcxMDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODUzNjIzNzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2FuZ3h1biBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgd2FuZ3h1bmAgZXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L2AgYXJlYS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBSQ1UgcHJvdGVjdGlvbiB0byB0aGUgYHR4X3JpbmdgIGFuZCBgcnhfcmluZ2AgYXJyYXlzIHdpdGhpbiB0aGUgYHN0cnVjdCB3eGAgZGF0YSBzdHJ1Y3R1cmUuIEkgc2VlIHRoYXQgYFJFQURfT05DRSgpYCBhbmQgYHJjdV9hc3NpZ25fcG9pbnRlcigpYCBhcmUgYmVpbmcgdXNlZCwgd2hpY2ggaXMgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIGRlYWxpbmcgd2l0aCBSQ1UgcG9pbnRlcnMuIEFuZCwgbG9va2luZyBhdCB0aGUgaW5jbHVzaW9uIG9mIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIHdpdGhpbiBgd3hfdXBkYXRlX3N0YXRzKClgLCB0aGF0IG1ha2VzIHNlbnNlIGZvciByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbnMuXG5cbldhaXQgYSBzZWNvbmQsIHRob3VnaC4uLiBgd2FuZ3h1bmAgaXMgYW4gKmV0aGVybmV0KiBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyBkZXRlcm1pbmUgaWYgdGhpcyBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHdvcmsgd2l0aCAqcGh5c2ljYWwqIFBDSWUgaGFyZHdhcmUsIGFzIG9wcG9zZWQgdG8gc29tZXRoaW5nIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHNldmVyYWwgZHJpdmVycyBpbiB0aGF0IGNhdGVnb3J5OiBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSwgYW5kIHNpbWlsYXIgb25lcy4gVGhleSBzYXkgdGhvc2UgZHJpdmVycyByZXF1aXJlICpwaHlzaWNhbCogUENJZSBjYXJkcywgYW5kIGFyZW4ndCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBMZXQncyBzZWUgaWYgdGhpcyBgd2FuZ3h1bmAgZHJpdmVyIGlzIGluIHRoYXQgc2FtZSBjbGFzcy5cblxuVGhlIGJlc3Qgd2F5IHRvIGZpZ3VyZSB0aGlzIG91dCBpcyB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLiBMZXQncyBzdGFydCB3aXRoIGEgcXVpY2sgY2hlY2sgdXNpbmcgYEtjb25maWdgLCB0byBzZWUgd2hhdCdzIGtub3duIGFib3V0IGB3YW5neHVuYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDExOjE5OjU4LjU5MDIzMzY1OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjAxNzM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3YW5neHVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Mjg9Y29uZmlnIE5HQkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0zNy1cXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzozODpcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL25nYmUucnN0XFx1MDAzZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9NDM9Y29uZmlnIFRYR0JFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjEtXFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6NjI6XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS5yc3RcXHUwMDNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy02My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz02Nz1jb25maWcgVFhHQkVWRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTc5LVxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjgwOlxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi5yc3RcXHUwMDNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy04MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz04NT1jb25maWcgTkdCRVZGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctOTUtXFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6OTY6XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYucnN0XFx1MDAzZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctOTctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDExOjE5OjU4LjYzNjI1NTYxOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDIxMTYwMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgV2FuZ3h1biBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgV2FuZ3h1biBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgb25lIGZvciBcIkJlaWppbmcgV2FuZ3h1biBUZWNobm9sb2d5IENvLiwgTHRkLlwiIDEwR2JFLzFHYkUgUENJZSBFdGhlcm5ldCBhZGFwdGVycy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGVzZSBhcmUgKnBoeXNpY2FsKiBQQ0llIG5ldHdvcmsgY2FyZHMuIFdlJ3JlIG5vdCB0YWxraW5nIGFib3V0IHNvbWV0aGluZyB0aGF0J3MgZW11bGF0ZWQgaW4geW91ciBzdGFuZGFyZCBRRU1VIHNldHVwLlxuXG5UaGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IGlmIHRoZSBwYXRjaCBpcyBsaW1pdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciB0aGluZ3MgdGhhdCByZXF1aXJlIGFjdHVhbCBQQ0llIGhhcmR3YXJlIOKAkyBsaWtlIHRoZXNlIFdhbmd4dW4gY2FyZHMg4oCTIGFuZCB0aGF0IGFyZW4ndCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGVuIGl0J3MgYSBcIldvcnRoRnV6emluZz1mYWxzZVwiIHNjZW5hcmlvLiBUaGF0IG1ha2VzIHNlbnNlLiBXZSBjYW4ndCByZWFsbHkgZ2V0IGF0IHRoZSBjb2RlIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBhIHBsYWluIFFFTVUgaW5zdGFuY2UgYmVjYXVzZSBpdCByZXF1aXJlcyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgdXN1YWwgUUVNVSBlbXVsYXRpb25zLiBXZSB0eXBpY2FsbHkgc2VlIHRoaW5ncyBsaWtlIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIHZpcnRpby1uZXQsIHZteG5ldDMsIHBjbmV0LCBuZTJrX3BjaSwgaTgyNTU5ZXIsIHR1bGlwLCBhbmQgc3VuZ2VtIGluIFFFTVUuIE5vcGUsIFdhbmd4dW4gKHR4Z2JlLCBuZ2JlKSBpc24ndCBhbW9uZyB0aGVtLiBUaGlzIGNvbmZpcm1zIGl0LlxuXG5UaGVyZWZvcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGRyaXZlciBhbmQgaXRzIHJlbGlhbmNlIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXNuJ3QgZW11bGF0ZWQsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4MSwiT3V0cHV0VG9rZW5zIjo4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMToyMDowNC42NzgzNzQ2NTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuICh0eGdiZS9uZ2JlKSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKHR4Z2JlL25nYmUpIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMToyMDowNC42Nzg0MjA3MTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7rzl[1] Phase: Running StartedAt: 2026-08-18 11:20:25 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rzl[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-18 11:20:25 +0000 UTC FinishedAt: 2026-08-18 11:20:32 +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,}