Name: series-workflowp8w76 Phase: Failed StartedAt: 2026-08-25 00:32:30 +0000 UTC FinishedAt: 2026-08-25 00:47:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8w76[0] Phase: Succeeded StartedAt: 2026-08-25 00:32:30 +0000 UTC FinishedAt: 2026-08-25 00:47:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8w76[0].run-triage Phase: Succeeded StartedAt: 2026-08-25 00:32:30 +0000 UTC FinishedAt: 2026-08-25 00:47:10 +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+CgkJCTx0ZD4yMDI2LzA4LzI1IDAwOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDA6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5ZGM3YWNlNGE3NDg4NDQ3OGM1MGM2YTc2ZGUxMjMwMTkyZjQ0ZDBmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDA6NDY6NDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xuaW5kZXggOWMyY2M1MDI3NmE1OS4uYmE3MTA3MDRiMTkyMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xuQEAgLTE1MTcsMTQgJiM0MzsxNTE3LDE2IEBAIHN0YXRpYyBpbnQgYm54dF9kaXNjYXJkX3J4KHN0cnVjdCBibnh0ICpicCwgc3RydWN0IGJueHRfY3BfcmluZ19pbmZvICpjcHIsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHUxNiBibnh0X2FsbG9jX2FnZ19pZHgoc3RydWN0IGJueHRfcnhfcmluZ19pbmZvICpyeHIsIHUxNiBhZ2dfaWQpXG4mIzQzO3N0YXRpYyB1MTYgYm54dF9hbGxvY19hZ2dfaWR4KHN0cnVjdCBibnh0ICpicCwgc3RydWN0IGJueHRfcnhfcmluZ19pbmZvICpyeHIsXG4mIzQzO1x0XHRcdCAgICAgIHUxNiBhZ2dfaWQpXG4ge1xuIFx0c3RydWN0IGJueHRfdHBhX2lkeF9tYXAgKm1hcCA9IHJ4ci1cdTAwM2VyeF90cGFfaWR4X21hcDtcbi1cdHUxNiBpZHggPSBhZ2dfaWQgXHUwMDI2IE1BWF9UUEFfUDVfTUFTSztcbiYjNDM7XHR1MTYgaWR4ID0gYWdnX2lkIFx1MDAyNiAoYnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUgLSAxKTtcbiBcbiBcdGlmICh0ZXN0X2JpdChpZHgsIG1hcC1cdTAwM2VhZ2dfaWR4X2JtYXApKSB7XG4tXHRcdGlkeCA9IGZpbmRfZmlyc3RfemVyb19iaXQobWFwLVx1MDAzZWFnZ19pZHhfYm1hcCwgTUFYX1RQQV9QNSk7XG4tXHRcdGlmIChpZHggXHUwMDNlPSBNQVhfVFBBX1A1KVxuJiM0MztcdFx0aWR4ID0gZmluZF9maXJzdF96ZXJvX2JpdChtYXAtXHUwMDNlYWdnX2lkeF9ibWFwLFxuJiM0MztcdFx0XHRcdFx0ICBicC1cdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZSk7XG4mIzQzO1x0XHRpZiAoaWR4IFx1MDAzZT0gYnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUpXG4gXHRcdFx0cmV0dXJuIElOVkFMSURfSFdfUklOR19JRDtcbiBcdH1cbiBcdF9fc2V0X2JpdChpZHgsIG1hcC1cdTAwM2VhZ2dfaWR4X2JtYXApO1xuQEAgLTE1ODksNyAmIzQzOzE1OTEsNyBAQCBzdGF0aWMgdm9pZCBibnh0X3RwYV9zdGFydChzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBibnh0X3J4X3JpbmdfaW5mbyAqcnhyLFxuIFxuIFx0aWYgKGJwLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNV9QTFVTKSB7XG4gXHRcdGFnZ19pZCA9IFRQQV9TVEFSVF9BR0dfSURfUDUodHBhX3N0YXJ0KTtcbi1cdFx0YWdnX2lkID0gYm54dF9hbGxvY19hZ2dfaWR4KHJ4ciwgYWdnX2lkKTtcbiYjNDM7XHRcdGFnZ19pZCA9IGJueHRfYWxsb2NfYWdnX2lkeChicCwgcnhyLCBhZ2dfaWQpO1xuIFx0XHRpZiAodW5saWtlbHkoYWdnX2lkID09IElOVkFMSURfSFdfUklOR19JRCkpIHtcbiBcdFx0XHRuZXRkZXZfd2FybihicC1cdTAwM2VkZXYsIFwmIzM0O1VuYWJsZSB0byBhbGxvY2F0ZSBhZ2cgSUQgZm9yIHJpbmcgJWQsIGFnZyAweCV4XFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgIHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleCxcbkBAIC0zNTg3LDcgJiM0MzszNTg5LDcgQEAgc3RhdGljIHZvaWQgYm54dF9mcmVlX29uZV90cGFfaW5mb19kYXRhKHN0cnVjdCBibnh0ICpicCxcbiB7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZW1heF90cGE7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemU7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHN0cnVjdCBibnh0X3RwYV9pbmZvICp0cGFfaW5mbyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF90cGFbaV07XG4gXHRcdHU4ICpkYXRhID0gdHBhX2luZm8tXHUwMDNlZGF0YTtcbiBcbkBAIC0zNzg0LDcgJiM0MzszNzg2LDcgQEAgc3RhdGljIHZvaWQgYm54dF9mcmVlX29uZV90cGFfaW5mbyhzdHJ1Y3QgYm54dCAqYnAsXG4gXHRrZnJlZShyeHItXHUwMDNlcnhfdHBhX2lkeF9tYXApO1xuIFx0cnhyLVx1MDAzZXJ4X3RwYV9pZHhfbWFwID0gTlVMTDtcbiBcdGlmIChyeHItXHUwMDNlcnhfdHBhKSB7XG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZW1heF90cGE7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0XHRrZnJlZShyeHItXHUwMDNlcnhfdHBhW2ldLmFnZ19hcnIpO1xuIFx0XHRcdHJ4ci1cdTAwM2VyeF90cGFbaV0uYWdnX2FyciA9IE5VTEw7XG4gXHRcdH1cbkBAIC0zODEwLDEzICYjNDM7MzgxMiwxNCBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2Nfb25lX3RwYV9pbmZvKHN0cnVjdCBibnh0ICpicCxcbiBcdHN0cnVjdCByeF9hZ2dfY21wICphZ2c7XG4gXHRpbnQgaTtcbiBcbi1cdHJ4ci1cdTAwM2VyeF90cGEgPSBremFsbG9jX29ianMoc3RydWN0IGJueHRfdHBhX2luZm8sIGJwLVx1MDAzZW1heF90cGEpO1xuJiM0MztcdHJ4ci1cdTAwM2VyeF90cGEgPSBremFsbG9jX29ianMoc3RydWN0IGJueHRfdHBhX2luZm8sXG4mIzQzO1x0XHRcdFx0ICAgYnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUpO1xuIFx0aWYgKCFyeHItXHUwMDNlcnhfdHBhKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGlmICghKGJwLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNV9QTFVTKSlcbiBcdFx0cmV0dXJuIDA7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VtYXhfdHBhOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplOyBpJiM0MzsmIzQzOykge1xuIFx0XHRhZ2cgPSBremFsbG9jX29ianMoKmFnZywgTUFYX1NLQl9GUkFHUyk7XG4gXHRcdGlmICghYWdnKVxuIFx0XHRcdHJldHVybiAtRU5PTUVNO1xuQEAgLTM4NDMsNiAmIzQzOzM4NDYsOCBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2NfdHBhX2luZm8oc3RydWN0IGJueHQgKmJwKVxuIFx0XHRcdGJwLVx1MDAzZW1heF90cGEgPSBNQVhfVFBBX1A1O1xuIFx0fVxuIFxuJiM0MztcdGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplID0gcm91bmR1cF9wb3dfb2ZfdHdvKGJwLVx1MDAzZW1heF90cGEpO1xuJiM0MztcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZXJ4X25yX3JpbmdzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8gKnJ4ciA9IFx1MDAyNmJwLVx1MDAzZXJ4X3JpbmdbaV07XG4gXG5AQCAtNDU1NCw3ICYjNDM7NDU1OSw3IEBAIHN0YXRpYyBpbnQgYm54dF9hbGxvY19vbmVfdHBhX2luZm9fZGF0YShzdHJ1Y3QgYm54dCAqYnAsXG4gXHR1OCAqZGF0YTtcbiBcdGludCBpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnAtXHUwMDNlbWF4X3RwYTsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0ZGF0YSA9IF9fYm54dF9hbGxvY19yeF9mcmFnKGJwLCBcdTAwMjZtYXBwaW5nLCByeHIsXG4gXHRcdFx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbiBcdFx0aWYgKCFkYXRhKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbmluZGV4IGFiODk0ZjhhZGRlZjUuLmRlNDZiNDJkN2M5OGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbkBAIC03ODksNyAmIzQzOzc4OSw2IEBAIHN0cnVjdCBucWVfY24ge1xuIFxuICNkZWZpbmUgTUFYX1RQQVx0XHQ2NFxuICNkZWZpbmUgTUFYX1RQQV9QNVx0MjU2XG4tI2RlZmluZSBNQVhfVFBBX1A1X01BU0tcdChNQVhfVFBBX1A1IC0gMSlcbiAjZGVmaW5lIE1BWF9UUEFfU0VHU19QNVx0MHgzZlxuIFxuICNpZiAoQk5YVF9QQUdFX1NISUZUID09IDE2KVxuQEAgLTIzODAsNiAmIzQzOzIzNzksNyBAQCBzdHJ1Y3QgYm54dCB7XG4gXG4gXHR1MTZcdFx0XHRtYXhfdHBhX3YyO1xuIFx0dTE2XHRcdFx0bWF4X3RwYTtcbiYjNDM7XHR1MTZcdFx0XHRtYXhfdHBhX3JvdW5kdXBfc2l6ZTtcbiBcdHUzMlx0XHRcdHJ4X2J1Zl9zaXplO1xuIFx0dTMyXHRcdFx0cnhfYnVmX3VzZV9zaXplO1x0LyogdXNlYWJsZSBzaXplICovXG4gXHR1MTZcdFx0XHRyeF9vZmZzZXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDA6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWRjN2FjZTRhNzQ4ODQ0NzhjNTBjNmE3NmRlMTIzMDE5MmY0NGQwZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDAwOjQ2OjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYwppbmRleCA5YzJjYzUwMjc2YTU5Li5iYTcxMDcwNGIxOTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYwpAQCAtMTUxNywxNCAmIzQzOzE1MTcsMTYgQEAgc3RhdGljIGludCBibnh0X2Rpc2NhcmRfcngoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgYm54dF9jcF9yaW5nX2luZm8gKmNwciwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHUxNiBibnh0X2FsbG9jX2FnZ19pZHgoc3RydWN0IGJueHRfcnhfcmluZ19pbmZvICpyeHIsIHUxNiBhZ2dfaWQpCiYjNDM7c3RhdGljIHUxNiBibnh0X2FsbG9jX2FnZ19pZHgoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8gKnJ4ciwKJiM0MzsJCQkgICAgICB1MTYgYWdnX2lkKQogewogCXN0cnVjdCBibnh0X3RwYV9pZHhfbWFwICptYXAgPSByeHItJmd0O3J4X3RwYV9pZHhfbWFwOwotCXUxNiBpZHggPSBhZ2dfaWQgJmFtcDsgTUFYX1RQQV9QNV9NQVNLOwomIzQzOwl1MTYgaWR4ID0gYWdnX2lkICZhbXA7IChicC0mZ3Q7bWF4X3RwYV9yb3VuZHVwX3NpemUgLSAxKTsKIAogCWlmICh0ZXN0X2JpdChpZHgsIG1hcC0mZ3Q7YWdnX2lkeF9ibWFwKSkgewotCQlpZHggPSBmaW5kX2ZpcnN0X3plcm9fYml0KG1hcC0mZ3Q7YWdnX2lkeF9ibWFwLCBNQVhfVFBBX1A1KTsKLQkJaWYgKGlkeCAmZ3Q7PSBNQVhfVFBBX1A1KQomIzQzOwkJaWR4ID0gZmluZF9maXJzdF96ZXJvX2JpdChtYXAtJmd0O2FnZ19pZHhfYm1hcCwKJiM0MzsJCQkJCSAgYnAtJmd0O21heF90cGFfcm91bmR1cF9zaXplKTsKJiM0MzsJCWlmIChpZHggJmd0Oz0gYnAtJmd0O21heF90cGFfcm91bmR1cF9zaXplKQogCQkJcmV0dXJuIElOVkFMSURfSFdfUklOR19JRDsKIAl9CiAJX19zZXRfYml0KGlkeCwgbWFwLSZndDthZ2dfaWR4X2JtYXApOwpAQCAtMTU4OSw3ICYjNDM7MTU5MSw3IEBAIHN0YXRpYyB2b2lkIGJueHRfdHBhX3N0YXJ0KHN0cnVjdCBibnh0ICpicCwgc3RydWN0IGJueHRfcnhfcmluZ19pbmZvICpyeHIsCiAKIAlpZiAoYnAtJmd0O2ZsYWdzICZhbXA7IEJOWFRfRkxBR19DSElQX1A1X1BMVVMpIHsKIAkJYWdnX2lkID0gVFBBX1NUQVJUX0FHR19JRF9QNSh0cGFfc3RhcnQpOwotCQlhZ2dfaWQgPSBibnh0X2FsbG9jX2FnZ19pZHgocnhyLCBhZ2dfaWQpOwomIzQzOwkJYWdnX2lkID0gYm54dF9hbGxvY19hZ2dfaWR4KGJwLCByeHIsIGFnZ19pZCk7CiAJCWlmICh1bmxpa2VseShhZ2dfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKSkgewogCQkJbmV0ZGV2X3dhcm4oYnAtJmd0O2RldiwgJiMzNDtVbmFibGUgdG8gYWxsb2NhdGUgYWdnIElEIGZvciByaW5nICVkLCBhZ2cgMHgleFxuJiMzNDssCiAJCQkJICAgIHJ4ci0mZ3Q7Ym5hcGktJmd0O2luZGV4LApAQCAtMzU4Nyw3ICYjNDM7MzU4OSw3IEBAIHN0YXRpYyB2b2lkIGJueHRfZnJlZV9vbmVfdHBhX2luZm9fZGF0YShzdHJ1Y3QgYm54dCAqYnAsCiB7CiAJaW50IGk7CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgYnAtJmd0O21heF90cGE7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBicC0mZ3Q7bWF4X3RwYV9yb3VuZHVwX3NpemU7IGkmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBibnh0X3RwYV9pbmZvICp0cGFfaW5mbyA9ICZhbXA7cnhyLSZndDtyeF90cGFbaV07CiAJCXU4ICpkYXRhID0gdHBhX2luZm8tJmd0O2RhdGE7CiAKQEAgLTM3ODQsNyAmIzQzOzM3ODYsNyBAQCBzdGF0aWMgdm9pZCBibnh0X2ZyZWVfb25lX3RwYV9pbmZvKHN0cnVjdCBibnh0ICpicCwKIAlrZnJlZShyeHItJmd0O3J4X3RwYV9pZHhfbWFwKTsKIAlyeHItJmd0O3J4X3RwYV9pZHhfbWFwID0gTlVMTDsKIAlpZiAocnhyLSZndDtyeF90cGEpIHsKLQkJZm9yIChpID0gMDsgaSAmbHQ7IGJwLSZndDttYXhfdHBhOyBpJiM0MzsmIzQzOykgewomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IGJwLSZndDttYXhfdHBhX3JvdW5kdXBfc2l6ZTsgaSYjNDM7JiM0MzspIHsKIAkJCWtmcmVlKHJ4ci0mZ3Q7cnhfdHBhW2ldLmFnZ19hcnIpOwogCQkJcnhyLSZndDtyeF90cGFbaV0uYWdnX2FyciA9IE5VTEw7CiAJCX0KQEAgLTM4MTAsMTMgJiM0MzszODEyLDE0IEBAIHN0YXRpYyBpbnQgYm54dF9hbGxvY19vbmVfdHBhX2luZm8oc3RydWN0IGJueHQgKmJwLAogCXN0cnVjdCByeF9hZ2dfY21wICphZ2c7CiAJaW50IGk7CiAKLQlyeHItJmd0O3J4X3RwYSA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgYm54dF90cGFfaW5mbywgYnAtJmd0O21heF90cGEpOwomIzQzOwlyeHItJmd0O3J4X3RwYSA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgYm54dF90cGFfaW5mbywKJiM0MzsJCQkJICAgYnAtJmd0O21heF90cGFfcm91bmR1cF9zaXplKTsKIAlpZiAoIXJ4ci0mZ3Q7cnhfdHBhKQogCQlyZXR1cm4gLUVOT01FTTsKIAogCWlmICghKGJwLSZndDtmbGFncyAmYW1wOyBCTlhUX0ZMQUdfQ0hJUF9QNV9QTFVTKSkKIAkJcmV0dXJuIDA7Ci0JZm9yIChpID0gMDsgaSAmbHQ7IGJwLSZndDttYXhfdHBhOyBpJiM0MzsmIzQzOykgewomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgYnAtJmd0O21heF90cGFfcm91bmR1cF9zaXplOyBpJiM0MzsmIzQzOykgewogCQlhZ2cgPSBremFsbG9jX29ianMoKmFnZywgTUFYX1NLQl9GUkFHUyk7CiAJCWlmICghYWdnKQogCQkJcmV0dXJuIC1FTk9NRU07CkBAIC0zODQzLDYgJiM0MzszODQ2LDggQEAgc3RhdGljIGludCBibnh0X2FsbG9jX3RwYV9pbmZvKHN0cnVjdCBibnh0ICpicCkKIAkJCWJwLSZndDttYXhfdHBhID0gTUFYX1RQQV9QNTsKIAl9CiAKJiM0MzsJYnAtJmd0O21heF90cGFfcm91bmR1cF9zaXplID0gcm91bmR1cF9wb3dfb2ZfdHdvKGJwLSZndDttYXhfdHBhKTsKJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgYnAtJmd0O3J4X25yX3JpbmdzOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8gKnJ4ciA9ICZhbXA7YnAtJmd0O3J4X3JpbmdbaV07CiAKQEAgLTQ1NTQsNyAmIzQzOzQ1NTksNyBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2Nfb25lX3RwYV9pbmZvX2RhdGEoc3RydWN0IGJueHQgKmJwLAogCXU4ICpkYXRhOwogCWludCBpOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IGJwLSZndDttYXhfdHBhOyBpJiM0MzsmIzQzOykgewomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgYnAtJmd0O21heF90cGFfcm91bmR1cF9zaXplOyBpJiM0MzsmIzQzOykgewogCQlkYXRhID0gX19ibnh0X2FsbG9jX3J4X2ZyYWcoYnAsICZhbXA7bWFwcGluZywgcnhyLAogCQkJCQkgICAgR0ZQX0tFUk5FTCk7CiAJCWlmICghZGF0YSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmgKaW5kZXggYWI4OTRmOGFkZGVmNS4uZGU0NmI0MmQ3Yzk4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmgKQEAgLTc4OSw3ICYjNDM7Nzg5LDYgQEAgc3RydWN0IG5xZV9jbiB7CiAKICNkZWZpbmUgTUFYX1RQQQkJNjQKICNkZWZpbmUgTUFYX1RQQV9QNQkyNTYKLSNkZWZpbmUgTUFYX1RQQV9QNV9NQVNLCShNQVhfVFBBX1A1IC0gMSkKICNkZWZpbmUgTUFYX1RQQV9TRUdTX1A1CTB4M2YKIAogI2lmIChCTlhUX1BBR0VfU0hJRlQgPT0gMTYpCkBAIC0yMzgwLDYgJiM0MzsyMzc5LDcgQEAgc3RydWN0IGJueHQgewogCiAJdTE2CQkJbWF4X3RwYV92MjsKIAl1MTYJCQltYXhfdHBhOwomIzQzOwl1MTYJCQltYXhfdHBhX3JvdW5kdXBfc2l6ZTsKIAl1MzIJCQlyeF9idWZfc2l6ZTsKIAl1MzIJCQlyeF9idWZfdXNlX3NpemU7CS8qIHVzZWFibGUgc2l6ZSAqLwogCXUxNgkJCXJ4X29mZnNldDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY5NAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgQnJvYWRjb20gTmV0WHRyZW1lIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNgIGFuZCBgYm54dC5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7RG9lcyB0aGlzIGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgbmVlZCBmdXp6aW5nPyYjMzQ7IFRpbWUgdG8gZ28gdGhyb3VnaCB0aGUgY2hlY2tsaXN0LgoKVGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgZm9yIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIDEwLzI1LzQwLzUwIGdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGJueHRgLiBSaWdodCwgYW5kIHRoZSBydWxlYm9vayBzYXlzIHRvIHNraXAgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgdGhhdCBuZWVkIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCgpBbHJpZ2h0LCBpcyBgYm54dGAgdmVuZG9yLXNwZWNpZmljPyBBYnNvbHV0ZWx5LiBJdOKAmXMgYSBkcml2ZXIgZm9yICpCcm9hZGNvbSogaGFyZHdhcmUuIERvZXMgaXQgcmVxdWlyZSBhIHBoeXNpY2FsIGNhcmQ/IERlZmluaXRlbHksIHNpbmNlIGl0JiMzOTtzIGRlc2lnbmVkIGZvciBCcm9hZGNvbSYjMzk7cyBOZXRYdHJlbWUtQy9FIEV0aGVybmV0IGNhcmRzLiBBbmQgaXMgaXQgZW11bGF0ZWQgaW4gUUVNVT8gTm8sIFFFTVUgaXMgdXN1YWxseSBlbXVsYXRpbmcgdGhpbmdzIGxpa2UgZTEwMDAgYW5kIHZpcnRpby1uZXQsIG5vdCBCcm9hZGNvbSYjMzk7cyBOZXRYdHJlbWUgZmFtaWx5LgoKU28sIGFjY29yZGluZyB0byB0aGUgcnVsZXMsIHRoaXMgcGF0Y2ggZmFsbHMgaW50byB0aGUgJiMzNDtub3Qgd29ydGggZnV6emluZyYjMzQ7IGNhdGVnb3J5LiBJdCByZXF1aXJlcyBhIHNwZWNpZmljIGhhcmR3YXJlIGNhcmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhpcyBieSBnbGFuY2luZyBhdCB0aGUgYEtjb25maWdgIGZvciBgYm54dGAgdG8gZW5zdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGdsYXJpbmcgZXhjZXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTlhUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDA3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRGlnZ2luZyBpbnRvIHRoZSBLY29uZmlnIC0gQk5YVCBIdW50KioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdC4gQmVmb3JlIEkgZ28gdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IG9idmlvdXMgc3RhcnRpbmcgcG9pbnQgaXMgdG8gc2VhcmNoIHRoZSBgS2NvbmZpZ2AgZmlsZXMgZGlyZWN0bHkuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGlmICYjMzQ7Qk5YVCYjMzQ7IGlzIGV2ZW4gZGVmaW5lZCB0aGVyZS4gSXMgaXQgYSBjb3JlIG1vZHVsZSwgYSBkcml2ZXIsIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBLbm93aW5nIHRoaXMgd2lsbCBzaWduaWZpY2FudGx5IGFmZmVjdCBob3cgSSBwcm9jZWVkLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgdXNlIHRoZSBzZWFyY2guIFRoaXMgd2lsbCBnaXZlIG1lIGFuIGltbWVkaWF0ZSBzZW5zZSBvZiB0aGUgbGFuZHNjYXBlIEkmIzM5O20gZGVhbGluZyB3aXRoLiBMZXQmIzM5O3Mgc2VlIHdoYXQgcG9wcyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQk5YVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0xOTU9Y29uZmlnIFNZU1RFTVBPUlRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjA3OmNvbmZpZyBCTlhUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIwOC1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIE5ldFh0cmVtZS1DL0Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMjI6Y29uZmlnIEJOWFRfU1JJT1ZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjIzLVx0Ym9vbCBcJiMzNDtCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIFNSLUlPViBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIzMTpjb25maWcgQk5YVF9GTE9XRVJfT0ZGTE9BRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMzItXHRib29sIFwmIzM0O1RDIEZsb3dlciBvZmZsb2FkIHN1cHBvcnQgZm9yIE5ldFh0cmVtZS1DL0VcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjQwOmNvbmZpZyBCTlhUX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNDEtXHRib29sIFwmIzM0O0RhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjUwOmNvbmZpZyBCTlhUX0hXTU9OXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI1MS1cdGJvb2wgXCYjMzQ7QnJvYWRjb20gTmV0WHRyZW1lLUMvRSBIV01PTiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAyOAoJCQkJCQkJb3V0cHV0OiA4NQoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgRHJpdmVyKioKCk9rYXksIHNvIGl0JiMzOTtzIHRoZSAmIzM0O0Jyb2FkY29tIE5ldFh0cmVtZS1DL0Ugc3VwcG9ydCYjMzQ7IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhlcmUuIFJpZ2h0LCB0aGF0JiMzOTtzIGEgKnBoeXNpY2FsKiBQQ0llIGNhcmQgZHJpdmVyLiBOb3Qgc29tZSBzb2Z0d2FyZS1kZWZpbmVkIG5ldHdvcmsgaW50ZXJmYWNlLiBUaGlzIGNoYW5nZXMgdGhpbmdzIGRyYW1hdGljYWxseS4gU2luY2UgaXQmIzM5O3MgYSBkaXJlY3QgaGFyZHdhcmUgaW50ZXJmYWNlLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgZW11bGF0ZWQgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVS4gVHJ5aW5nIHRvIGZ1enogaXQgdGhlcmUgd291bGQgYmUgYSB0b3RhbCB3YXN0ZSBvZiB0aW1lIGFuZCByZXNvdXJjZXMuIEkgbWVhbiwgdGhlIGRyaXZlciB3b3VsZG4mIzM5O3QgZXZlbiBiZSBhYmxlIHRvIHRhbGsgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgZWZmZWN0aXZlbHkuIFRoZXJlZm9yZSwgZnV6emluZyB0aGlzIHBhcnRpY3VsYXIgdGFyZ2V0IHdpdGhpbiBhIFZNIGp1c3QgaXNuJiMzOTt0IHdvcnRoIHRoZSBlZmZvcnQuIE15IHJldHVybiB2YWx1ZSBoZXJlIHdpbGwgYmUgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRpbWUgdG8gbW92ZSBvbiB0byBhIHRhcmdldCB0aGF0JiMzOTtzIGFjdHVhbGx5IHN1c2NlcHRpYmxlIHRvIHRoaXMgdHlwZSBvZiB0ZXN0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDAwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDAwOjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwMDo0Njo0NC40MjQ3MzU2OThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkyNzc5MTk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwMDo0Njo0NC40MjQ3NDEyMjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNTA5ODU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDlkYzdhY2U0YTc0ODg0NDc4YzUwYzZhNzZkZTEyMzAxOTJmNDRkMGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDA6NDY6NDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xcbmluZGV4IDljMmNjNTAyNzZhNTkuLmJhNzEwNzA0YjE5MjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xcbkBAIC0xNTE3LDE0ICsxNTE3LDE2IEBAIHN0YXRpYyBpbnQgYm54dF9kaXNjYXJkX3J4KHN0cnVjdCBibnh0ICpicCwgc3RydWN0IGJueHRfY3BfcmluZ19pbmZvICpjcHIsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgdTE2IGJueHRfYWxsb2NfYWdnX2lkeChzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8gKnJ4ciwgdTE2IGFnZ19pZClcXG4rc3RhdGljIHUxNiBibnh0X2FsbG9jX2FnZ19pZHgoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8gKnJ4cixcXG4rXFx0XFx0XFx0ICAgICAgdTE2IGFnZ19pZClcXG4ge1xcbiBcXHRzdHJ1Y3QgYm54dF90cGFfaWR4X21hcCAqbWFwID0gcnhyLVxcdTAwM2VyeF90cGFfaWR4X21hcDtcXG4tXFx0dTE2IGlkeCA9IGFnZ19pZCBcXHUwMDI2IE1BWF9UUEFfUDVfTUFTSztcXG4rXFx0dTE2IGlkeCA9IGFnZ19pZCBcXHUwMDI2IChicC1cXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUgLSAxKTtcXG4gXFxuIFxcdGlmICh0ZXN0X2JpdChpZHgsIG1hcC1cXHUwMDNlYWdnX2lkeF9ibWFwKSkge1xcbi1cXHRcXHRpZHggPSBmaW5kX2ZpcnN0X3plcm9fYml0KG1hcC1cXHUwMDNlYWdnX2lkeF9ibWFwLCBNQVhfVFBBX1A1KTtcXG4tXFx0XFx0aWYgKGlkeCBcXHUwMDNlPSBNQVhfVFBBX1A1KVxcbitcXHRcXHRpZHggPSBmaW5kX2ZpcnN0X3plcm9fYml0KG1hcC1cXHUwMDNlYWdnX2lkeF9ibWFwLFxcbitcXHRcXHRcXHRcXHRcXHQgIGJwLVxcdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZSk7XFxuK1xcdFxcdGlmIChpZHggXFx1MDAzZT0gYnAtXFx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplKVxcbiBcXHRcXHRcXHRyZXR1cm4gSU5WQUxJRF9IV19SSU5HX0lEO1xcbiBcXHR9XFxuIFxcdF9fc2V0X2JpdChpZHgsIG1hcC1cXHUwMDNlYWdnX2lkeF9ibWFwKTtcXG5AQCAtMTU4OSw3ICsxNTkxLDcgQEAgc3RhdGljIHZvaWQgYm54dF90cGFfc3RhcnQoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8gKnJ4cixcXG4gXFxuIFxcdGlmIChicC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNV9QTFVTKSB7XFxuIFxcdFxcdGFnZ19pZCA9IFRQQV9TVEFSVF9BR0dfSURfUDUodHBhX3N0YXJ0KTtcXG4tXFx0XFx0YWdnX2lkID0gYm54dF9hbGxvY19hZ2dfaWR4KHJ4ciwgYWdnX2lkKTtcXG4rXFx0XFx0YWdnX2lkID0gYm54dF9hbGxvY19hZ2dfaWR4KGJwLCByeHIsIGFnZ19pZCk7XFxuIFxcdFxcdGlmICh1bmxpa2VseShhZ2dfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKSkge1xcbiBcXHRcXHRcXHRuZXRkZXZfd2FybihicC1cXHUwMDNlZGV2LCBcXFwiVW5hYmxlIHRvIGFsbG9jYXRlIGFnZyBJRCBmb3IgcmluZyAlZCwgYWdnIDB4JXhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICByeHItXFx1MDAzZWJuYXBpLVxcdTAwM2VpbmRleCxcXG5AQCAtMzU4Nyw3ICszNTg5LDcgQEAgc3RhdGljIHZvaWQgYm54dF9mcmVlX29uZV90cGFfaW5mb19kYXRhKHN0cnVjdCBibnh0ICpicCxcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBicC1cXHUwMDNlbWF4X3RwYTsgaSsrKSB7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBicC1cXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemU7IGkrKykge1xcbiBcXHRcXHRzdHJ1Y3QgYm54dF90cGFfaW5mbyAqdHBhX2luZm8gPSBcXHUwMDI2cnhyLVxcdTAwM2VyeF90cGFbaV07XFxuIFxcdFxcdHU4ICpkYXRhID0gdHBhX2luZm8tXFx1MDAzZWRhdGE7XFxuIFxcbkBAIC0zNzg0LDcgKzM3ODYsNyBAQCBzdGF0aWMgdm9pZCBibnh0X2ZyZWVfb25lX3RwYV9pbmZvKHN0cnVjdCBibnh0ICpicCxcXG4gXFx0a2ZyZWUocnhyLVxcdTAwM2VyeF90cGFfaWR4X21hcCk7XFxuIFxcdHJ4ci1cXHUwMDNlcnhfdHBhX2lkeF9tYXAgPSBOVUxMO1xcbiBcXHRpZiAocnhyLVxcdTAwM2VyeF90cGEpIHtcXG4tXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJwLVxcdTAwM2VtYXhfdHBhOyBpKyspIHtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJwLVxcdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZTsgaSsrKSB7XFxuIFxcdFxcdFxcdGtmcmVlKHJ4ci1cXHUwMDNlcnhfdHBhW2ldLmFnZ19hcnIpO1xcbiBcXHRcXHRcXHRyeHItXFx1MDAzZXJ4X3RwYVtpXS5hZ2dfYXJyID0gTlVMTDtcXG4gXFx0XFx0fVxcbkBAIC0zODEwLDEzICszODEyLDE0IEBAIHN0YXRpYyBpbnQgYm54dF9hbGxvY19vbmVfdHBhX2luZm8oc3RydWN0IGJueHQgKmJwLFxcbiBcXHRzdHJ1Y3QgcnhfYWdnX2NtcCAqYWdnO1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdHJ4ci1cXHUwMDNlcnhfdHBhID0ga3phbGxvY19vYmpzKHN0cnVjdCBibnh0X3RwYV9pbmZvLCBicC1cXHUwMDNlbWF4X3RwYSk7XFxuK1xcdHJ4ci1cXHUwMDNlcnhfdHBhID0ga3phbGxvY19vYmpzKHN0cnVjdCBibnh0X3RwYV9pbmZvLFxcbitcXHRcXHRcXHRcXHQgICBicC1cXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUpO1xcbiBcXHRpZiAoIXJ4ci1cXHUwMDNlcnhfdHBhKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuIFxcdGlmICghKGJwLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJOWFRfRkxBR19DSElQX1A1X1BMVVMpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJwLVxcdTAwM2VtYXhfdHBhOyBpKyspIHtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJwLVxcdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZTsgaSsrKSB7XFxuIFxcdFxcdGFnZyA9IGt6YWxsb2Nfb2JqcygqYWdnLCBNQVhfU0tCX0ZSQUdTKTtcXG4gXFx0XFx0aWYgKCFhZ2cpXFxuIFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbkBAIC0zODQzLDYgKzM4NDYsOCBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2NfdHBhX2luZm8oc3RydWN0IGJueHQgKmJwKVxcbiBcXHRcXHRcXHRicC1cXHUwMDNlbWF4X3RwYSA9IE1BWF9UUEFfUDU7XFxuIFxcdH1cXG4gXFxuK1xcdGJwLVxcdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZSA9IHJvdW5kdXBfcG93X29mX3R3byhicC1cXHUwMDNlbWF4X3RwYSk7XFxuK1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnAtXFx1MDAzZXJ4X25yX3JpbmdzOyBpKyspIHtcXG4gXFx0XFx0c3RydWN0IGJueHRfcnhfcmluZ19pbmZvICpyeHIgPSBcXHUwMDI2YnAtXFx1MDAzZXJ4X3JpbmdbaV07XFxuIFxcbkBAIC00NTU0LDcgKzQ1NTksNyBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2Nfb25lX3RwYV9pbmZvX2RhdGEoc3RydWN0IGJueHQgKmJwLFxcbiBcXHR1OCAqZGF0YTtcXG4gXFx0aW50IGk7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnAtXFx1MDAzZW1heF90cGE7IGkrKykge1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnAtXFx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplOyBpKyspIHtcXG4gXFx0XFx0ZGF0YSA9IF9fYm54dF9hbGxvY19yeF9mcmFnKGJwLCBcXHUwMDI2bWFwcGluZywgcnhyLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgR0ZQX0tFUk5FTCk7XFxuIFxcdFxcdGlmICghZGF0YSlcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxcbmluZGV4IGFiODk0ZjhhZGRlZjUuLmRlNDZiNDJkN2M5OGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxcbkBAIC03ODksNyArNzg5LDYgQEAgc3RydWN0IG5xZV9jbiB7XFxuIFxcbiAjZGVmaW5lIE1BWF9UUEFcXHRcXHQ2NFxcbiAjZGVmaW5lIE1BWF9UUEFfUDVcXHQyNTZcXG4tI2RlZmluZSBNQVhfVFBBX1A1X01BU0tcXHQoTUFYX1RQQV9QNSAtIDEpXFxuICNkZWZpbmUgTUFYX1RQQV9TRUdTX1A1XFx0MHgzZlxcbiBcXG4gI2lmIChCTlhUX1BBR0VfU0hJRlQgPT0gMTYpXFxuQEAgLTIzODAsNiArMjM3OSw3IEBAIHN0cnVjdCBibnh0IHtcXG4gXFxuIFxcdHUxNlxcdFxcdFxcdG1heF90cGFfdjI7XFxuIFxcdHUxNlxcdFxcdFxcdG1heF90cGE7XFxuK1xcdHUxNlxcdFxcdFxcdG1heF90cGFfcm91bmR1cF9zaXplO1xcbiBcXHR1MzJcXHRcXHRcXHRyeF9idWZfc2l6ZTtcXG4gXFx0dTMyXFx0XFx0XFx0cnhfYnVmX3VzZV9zaXplO1xcdC8qIHVzZWFibGUgc2l6ZSAqL1xcbiBcXHR1MTZcXHRcXHRcXHRyeF9vZmZzZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDAwOjQ2OjQ0Ljg2MDYxNzQ3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQ0OTE4OTcxMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ZGM3YWNlNGE3NDg4NDQ3OGM1MGM2YTc2ZGUxMjMwMTkyZjQ0ZDBmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDA6NDY6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG5pbmRleCA5YzJjYzUwMjc2YTU5Li5iYTcxMDcwNGIxOTIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG5AQCAtMTUxNywxNCArMTUxNywxNiBAQCBzdGF0aWMgaW50IGJueHRfZGlzY2FyZF9yeChzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBibnh0X2NwX3JpbmdfaW5mbyAqY3ByLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB1MTYgYm54dF9hbGxvY19hZ2dfaWR4KHN0cnVjdCBibnh0X3J4X3JpbmdfaW5mbyAqcnhyLCB1MTYgYWdnX2lkKVxuK3N0YXRpYyB1MTYgYm54dF9hbGxvY19hZ2dfaWR4KHN0cnVjdCBibnh0ICpicCwgc3RydWN0IGJueHRfcnhfcmluZ19pbmZvICpyeHIsXG4rXHRcdFx0ICAgICAgdTE2IGFnZ19pZClcbiB7XG4gXHRzdHJ1Y3QgYm54dF90cGFfaWR4X21hcCAqbWFwID0gcnhyLVx1MDAzZXJ4X3RwYV9pZHhfbWFwO1xuLVx0dTE2IGlkeCA9IGFnZ19pZCBcdTAwMjYgTUFYX1RQQV9QNV9NQVNLO1xuK1x0dTE2IGlkeCA9IGFnZ19pZCBcdTAwMjYgKGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplIC0gMSk7XG4gXG4gXHRpZiAodGVzdF9iaXQoaWR4LCBtYXAtXHUwMDNlYWdnX2lkeF9ibWFwKSkge1xuLVx0XHRpZHggPSBmaW5kX2ZpcnN0X3plcm9fYml0KG1hcC1cdTAwM2VhZ2dfaWR4X2JtYXAsIE1BWF9UUEFfUDUpO1xuLVx0XHRpZiAoaWR4IFx1MDAzZT0gTUFYX1RQQV9QNSlcbitcdFx0aWR4ID0gZmluZF9maXJzdF96ZXJvX2JpdChtYXAtXHUwMDNlYWdnX2lkeF9ibWFwLFxuK1x0XHRcdFx0XHQgIGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplKTtcbitcdFx0aWYgKGlkeCBcdTAwM2U9IGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplKVxuIFx0XHRcdHJldHVybiBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gXHR9XG4gXHRfX3NldF9iaXQoaWR4LCBtYXAtXHUwMDNlYWdnX2lkeF9ibWFwKTtcbkBAIC0xNTg5LDcgKzE1OTEsNyBAQCBzdGF0aWMgdm9pZCBibnh0X3RwYV9zdGFydChzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBibnh0X3J4X3JpbmdfaW5mbyAqcnhyLFxuIFxuIFx0aWYgKGJwLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNV9QTFVTKSB7XG4gXHRcdGFnZ19pZCA9IFRQQV9TVEFSVF9BR0dfSURfUDUodHBhX3N0YXJ0KTtcbi1cdFx0YWdnX2lkID0gYm54dF9hbGxvY19hZ2dfaWR4KHJ4ciwgYWdnX2lkKTtcbitcdFx0YWdnX2lkID0gYm54dF9hbGxvY19hZ2dfaWR4KGJwLCByeHIsIGFnZ19pZCk7XG4gXHRcdGlmICh1bmxpa2VseShhZ2dfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKSkge1xuIFx0XHRcdG5ldGRldl93YXJuKGJwLVx1MDAzZWRldiwgXCJVbmFibGUgdG8gYWxsb2NhdGUgYWdnIElEIGZvciByaW5nICVkLCBhZ2cgMHgleFxcblwiLFxuIFx0XHRcdFx0ICAgIHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleCxcbkBAIC0zNTg3LDcgKzM1ODksNyBAQCBzdGF0aWMgdm9pZCBibnh0X2ZyZWVfb25lX3RwYV9pbmZvX2RhdGEoc3RydWN0IGJueHQgKmJwLFxuIHtcbiBcdGludCBpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnAtXHUwMDNlbWF4X3RwYTsgaSsrKSB7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZTsgaSsrKSB7XG4gXHRcdHN0cnVjdCBibnh0X3RwYV9pbmZvICp0cGFfaW5mbyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF90cGFbaV07XG4gXHRcdHU4ICpkYXRhID0gdHBhX2luZm8tXHUwMDNlZGF0YTtcbiBcbkBAIC0zNzg0LDcgKzM3ODYsNyBAQCBzdGF0aWMgdm9pZCBibnh0X2ZyZWVfb25lX3RwYV9pbmZvKHN0cnVjdCBibnh0ICpicCxcbiBcdGtmcmVlKHJ4ci1cdTAwM2VyeF90cGFfaWR4X21hcCk7XG4gXHRyeHItXHUwMDNlcnhfdHBhX2lkeF9tYXAgPSBOVUxMO1xuIFx0aWYgKHJ4ci1cdTAwM2VyeF90cGEpIHtcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnAtXHUwMDNlbWF4X3RwYTsgaSsrKSB7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplOyBpKyspIHtcbiBcdFx0XHRrZnJlZShyeHItXHUwMDNlcnhfdHBhW2ldLmFnZ19hcnIpO1xuIFx0XHRcdHJ4ci1cdTAwM2VyeF90cGFbaV0uYWdnX2FyciA9IE5VTEw7XG4gXHRcdH1cbkBAIC0zODEwLDEzICszODEyLDE0IEBAIHN0YXRpYyBpbnQgYm54dF9hbGxvY19vbmVfdHBhX2luZm8oc3RydWN0IGJueHQgKmJwLFxuIFx0c3RydWN0IHJ4X2FnZ19jbXAgKmFnZztcbiBcdGludCBpO1xuIFxuLVx0cnhyLVx1MDAzZXJ4X3RwYSA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgYm54dF90cGFfaW5mbywgYnAtXHUwMDNlbWF4X3RwYSk7XG4rXHRyeHItXHUwMDNlcnhfdHBhID0ga3phbGxvY19vYmpzKHN0cnVjdCBibnh0X3RwYV9pbmZvLFxuK1x0XHRcdFx0ICAgYnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUpO1xuIFx0aWYgKCFyeHItXHUwMDNlcnhfdHBhKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGlmICghKGJwLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNV9QTFVTKSlcbiBcdFx0cmV0dXJuIDA7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VtYXhfdHBhOyBpKyspIHtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplOyBpKyspIHtcbiBcdFx0YWdnID0ga3phbGxvY19vYmpzKCphZ2csIE1BWF9TS0JfRlJBR1MpO1xuIFx0XHRpZiAoIWFnZylcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC0zODQzLDYgKzM4NDYsOCBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2NfdHBhX2luZm8oc3RydWN0IGJueHQgKmJwKVxuIFx0XHRcdGJwLVx1MDAzZW1heF90cGEgPSBNQVhfVFBBX1A1O1xuIFx0fVxuIFxuK1x0YnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUgPSByb3VuZHVwX3Bvd19vZl90d28oYnAtXHUwMDNlbWF4X3RwYSk7XG4rXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VyeF9ucl9yaW5nczsgaSsrKSB7XG4gXHRcdHN0cnVjdCBibnh0X3J4X3JpbmdfaW5mbyAqcnhyID0gXHUwMDI2YnAtXHUwMDNlcnhfcmluZ1tpXTtcbiBcbkBAIC00NTU0LDcgKzQ1NTksNyBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2Nfb25lX3RwYV9pbmZvX2RhdGEoc3RydWN0IGJueHQgKmJwLFxuIFx0dTggKmRhdGE7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZW1heF90cGE7IGkrKykge1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemU7IGkrKykge1xuIFx0XHRkYXRhID0gX19ibnh0X2FsbG9jX3J4X2ZyYWcoYnAsIFx1MDAyNm1hcHBpbmcsIHJ4cixcbiBcdFx0XHRcdFx0ICAgIEdGUF9LRVJORUwpO1xuIFx0XHRpZiAoIWRhdGEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxuaW5kZXggYWI4OTRmOGFkZGVmNS4uZGU0NmI0MmQ3Yzk4YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxuQEAgLTc4OSw3ICs3ODksNiBAQCBzdHJ1Y3QgbnFlX2NuIHtcbiBcbiAjZGVmaW5lIE1BWF9UUEFcdFx0NjRcbiAjZGVmaW5lIE1BWF9UUEFfUDVcdDI1NlxuLSNkZWZpbmUgTUFYX1RQQV9QNV9NQVNLXHQoTUFYX1RQQV9QNSAtIDEpXG4gI2RlZmluZSBNQVhfVFBBX1NFR1NfUDVcdDB4M2ZcbiBcbiAjaWYgKEJOWFRfUEFHRV9TSElGVCA9PSAxNilcbkBAIC0yMzgwLDYgKzIzNzksNyBAQCBzdHJ1Y3QgYm54dCB7XG4gXG4gXHR1MTZcdFx0XHRtYXhfdHBhX3YyO1xuIFx0dTE2XHRcdFx0bWF4X3RwYTtcbitcdHUxNlx0XHRcdG1heF90cGFfcm91bmR1cF9zaXplO1xuIFx0dTMyXHRcdFx0cnhfYnVmX3NpemU7XG4gXHR1MzJcdFx0XHRyeF9idWZfdXNlX3NpemU7XHQvKiB1c2VhYmxlIHNpemUgKi9cbiBcdHUxNlx0XHRcdHJ4X29mZnNldDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDAwOjQ2OjQ0Ljg2MDYxODVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDk4NjY5NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRGVjaXNpb24gZm9yIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNgIGFuZCBgYm54dC5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiRG9lcyB0aGlzIGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgbmVlZCBmdXp6aW5nP1wiIFRpbWUgdG8gZ28gdGhyb3VnaCB0aGUgY2hlY2tsaXN0LlxuXG5UaGUgY29kZSBpbiBxdWVzdGlvbiBpcyBmb3IgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgMTAvMjUvNDAvNTAgZ2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBgYm54dGAuIFJpZ2h0LCBhbmQgdGhlIHJ1bGVib29rIHNheXMgdG8gc2tpcCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuQWxyaWdodCwgaXMgYGJueHRgIHZlbmRvci1zcGVjaWZpYz8gQWJzb2x1dGVseS4gSXTigJlzIGEgZHJpdmVyIGZvciAqQnJvYWRjb20qIGhhcmR3YXJlLiBEb2VzIGl0IHJlcXVpcmUgYSBwaHlzaWNhbCBjYXJkPyBEZWZpbml0ZWx5LCBzaW5jZSBpdCdzIGRlc2lnbmVkIGZvciBCcm9hZGNvbSdzIE5ldFh0cmVtZS1DL0UgRXRoZXJuZXQgY2FyZHMuIEFuZCBpcyBpdCBlbXVsYXRlZCBpbiBRRU1VPyBObywgUUVNVSBpcyB1c3VhbGx5IGVtdWxhdGluZyB0aGluZ3MgbGlrZSBlMTAwMCBhbmQgdmlydGlvLW5ldCwgbm90IEJyb2FkY29tJ3MgTmV0WHRyZW1lIGZhbWlseS5cblxuU28sIGFjY29yZGluZyB0byB0aGUgcnVsZXMsIHRoaXMgcGF0Y2ggZmFsbHMgaW50byB0aGUgXCJub3Qgd29ydGggZnV6emluZ1wiIGNhdGVnb3J5LiBJdCByZXF1aXJlcyBhIHNwZWNpZmljIGhhcmR3YXJlIGNhcmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhpcyBieSBnbGFuY2luZyBhdCB0aGUgYEtjb25maWdgIGZvciBgYm54dGAgdG8gZW5zdXJlIHRoZXJlIGFyZW4ndCBhbnkgZ2xhcmluZyBleGNlcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjk0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDA6NDY6NTEuMzU5MjkxMzg0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNTk2OTk4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk5YVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDAwOjQ2OjUxLjQxMjg5ODk3MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MjAxNDIyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgS2NvbmZpZyAtIEJOWFQgSHVudCoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdC4gQmVmb3JlIEkgZ28gdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBMZXQncyBzZWUuLi4gdGhlIG1vc3Qgb2J2aW91cyBzdGFydGluZyBwb2ludCBpcyB0byBzZWFyY2ggdGhlIGBLY29uZmlnYCBmaWxlcyBkaXJlY3RseS4gSSdsbCBuZWVkIHRvIHNlZSBpZiBcIkJOWFRcIiBpcyBldmVuIGRlZmluZWQgdGhlcmUuIElzIGl0IGEgY29yZSBtb2R1bGUsIGEgZHJpdmVyLCBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gS25vd2luZyB0aGlzIHdpbGwgc2lnbmlmaWNhbnRseSBhZmZlY3QgaG93IEkgcHJvY2VlZC4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHVzZSB0aGUgc2VhcmNoLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhbiBpbW1lZGlhdGUgc2Vuc2Ugb2YgdGhlIGxhbmRzY2FwZSBJJ20gZGVhbGluZyB3aXRoLiBMZXQncyBzZWUgd2hhdCBwb3BzIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDA3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDA6NDY6NTUuMTMzMDQzNjk0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODUwMjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTlhUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0xOTU9Y29uZmlnIFNZU1RFTVBPUlRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjA3OmNvbmZpZyBCTlhUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMDgtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIE5ldFh0cmVtZS1DL0Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjIyOmNvbmZpZyBCTlhUX1NSSU9WXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiQnJvYWRjb20gTmV0WHRyZW1lLUMvRSBTUi1JT1Ygc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjMxOmNvbmZpZyBCTlhUX0ZMT1dFUl9PRkZMT0FEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMzItXFx0Ym9vbCBcXFwiVEMgRmxvd2VyIG9mZmxvYWQgc3VwcG9ydCBmb3IgTmV0WHRyZW1lLUMvRVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjQwOmNvbmZpZyBCTlhUX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjQxLVxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI1MDpjb25maWcgQk5YVF9IV01PTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjUxLVxcdGJvb2wgXFxcIkJyb2FkY29tIE5ldFh0cmVtZS1DL0UgSFdNT04gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDA6NDY6NTUuMTgxODk4OTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3MDU5MDQ0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIERyaXZlcioqXG5cbk9rYXksIHNvIGl0J3MgdGhlIFwiQnJvYWRjb20gTmV0WHRyZW1lLUMvRSBzdXBwb3J0XCIgd2UncmUgdGFsa2luZyBhYm91dCBoZXJlLiBSaWdodCwgdGhhdCdzIGEgKnBoeXNpY2FsKiBQQ0llIGNhcmQgZHJpdmVyLiBOb3Qgc29tZSBzb2Z0d2FyZS1kZWZpbmVkIG5ldHdvcmsgaW50ZXJmYWNlLiBUaGlzIGNoYW5nZXMgdGhpbmdzIGRyYW1hdGljYWxseS4gU2luY2UgaXQncyBhIGRpcmVjdCBoYXJkd2FyZSBpbnRlcmZhY2UsIGl0J3Mgbm90IGdvaW5nIHRvIGJlIGVtdWxhdGVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUuIFRyeWluZyB0byBmdXp6IGl0IHRoZXJlIHdvdWxkIGJlIGEgdG90YWwgd2FzdGUgb2YgdGltZSBhbmQgcmVzb3VyY2VzLiBJIG1lYW4sIHRoZSBkcml2ZXIgd291bGRuJ3QgZXZlbiBiZSBhYmxlIHRvIHRhbGsgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgZWZmZWN0aXZlbHkuIFRoZXJlZm9yZSwgZnV6emluZyB0aGlzIHBhcnRpY3VsYXIgdGFyZ2V0IHdpdGhpbiBhIFZNIGp1c3QgaXNuJ3Qgd29ydGggdGhlIGVmZm9ydC4gTXkgcmV0dXJuIHZhbHVlIGhlcmUgd2lsbCBiZSBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGltZSB0byBtb3ZlIG9uIHRvIGEgdGFyZ2V0IHRoYXQncyBhY3R1YWxseSBzdXNjZXB0aWJsZSB0byB0aGlzIHR5cGUgb2YgdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyOCwiT3V0cHV0VG9rZW5zIjo4NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDAwOjQ2OjU5LjM1MjQ5MTcyNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwMDo0Njo1OS4zNTI1MTYyMTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowp8w76[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-25 00:32:30 +0000 UTC FinishedAt: 2026-08-25 00:47:00 +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+CgkJCTx0ZD4yMDI2LzA4LzI1IDAwOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDA6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5ZGM3YWNlNGE3NDg4NDQ3OGM1MGM2YTc2ZGUxMjMwMTkyZjQ0ZDBmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDA6NDY6NDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xuaW5kZXggOWMyY2M1MDI3NmE1OS4uYmE3MTA3MDRiMTkyMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xuQEAgLTE1MTcsMTQgJiM0MzsxNTE3LDE2IEBAIHN0YXRpYyBpbnQgYm54dF9kaXNjYXJkX3J4KHN0cnVjdCBibnh0ICpicCwgc3RydWN0IGJueHRfY3BfcmluZ19pbmZvICpjcHIsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHUxNiBibnh0X2FsbG9jX2FnZ19pZHgoc3RydWN0IGJueHRfcnhfcmluZ19pbmZvICpyeHIsIHUxNiBhZ2dfaWQpXG4mIzQzO3N0YXRpYyB1MTYgYm54dF9hbGxvY19hZ2dfaWR4KHN0cnVjdCBibnh0ICpicCwgc3RydWN0IGJueHRfcnhfcmluZ19pbmZvICpyeHIsXG4mIzQzO1x0XHRcdCAgICAgIHUxNiBhZ2dfaWQpXG4ge1xuIFx0c3RydWN0IGJueHRfdHBhX2lkeF9tYXAgKm1hcCA9IHJ4ci1cdTAwM2VyeF90cGFfaWR4X21hcDtcbi1cdHUxNiBpZHggPSBhZ2dfaWQgXHUwMDI2IE1BWF9UUEFfUDVfTUFTSztcbiYjNDM7XHR1MTYgaWR4ID0gYWdnX2lkIFx1MDAyNiAoYnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUgLSAxKTtcbiBcbiBcdGlmICh0ZXN0X2JpdChpZHgsIG1hcC1cdTAwM2VhZ2dfaWR4X2JtYXApKSB7XG4tXHRcdGlkeCA9IGZpbmRfZmlyc3RfemVyb19iaXQobWFwLVx1MDAzZWFnZ19pZHhfYm1hcCwgTUFYX1RQQV9QNSk7XG4tXHRcdGlmIChpZHggXHUwMDNlPSBNQVhfVFBBX1A1KVxuJiM0MztcdFx0aWR4ID0gZmluZF9maXJzdF96ZXJvX2JpdChtYXAtXHUwMDNlYWdnX2lkeF9ibWFwLFxuJiM0MztcdFx0XHRcdFx0ICBicC1cdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZSk7XG4mIzQzO1x0XHRpZiAoaWR4IFx1MDAzZT0gYnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUpXG4gXHRcdFx0cmV0dXJuIElOVkFMSURfSFdfUklOR19JRDtcbiBcdH1cbiBcdF9fc2V0X2JpdChpZHgsIG1hcC1cdTAwM2VhZ2dfaWR4X2JtYXApO1xuQEAgLTE1ODksNyAmIzQzOzE1OTEsNyBAQCBzdGF0aWMgdm9pZCBibnh0X3RwYV9zdGFydChzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBibnh0X3J4X3JpbmdfaW5mbyAqcnhyLFxuIFxuIFx0aWYgKGJwLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNV9QTFVTKSB7XG4gXHRcdGFnZ19pZCA9IFRQQV9TVEFSVF9BR0dfSURfUDUodHBhX3N0YXJ0KTtcbi1cdFx0YWdnX2lkID0gYm54dF9hbGxvY19hZ2dfaWR4KHJ4ciwgYWdnX2lkKTtcbiYjNDM7XHRcdGFnZ19pZCA9IGJueHRfYWxsb2NfYWdnX2lkeChicCwgcnhyLCBhZ2dfaWQpO1xuIFx0XHRpZiAodW5saWtlbHkoYWdnX2lkID09IElOVkFMSURfSFdfUklOR19JRCkpIHtcbiBcdFx0XHRuZXRkZXZfd2FybihicC1cdTAwM2VkZXYsIFwmIzM0O1VuYWJsZSB0byBhbGxvY2F0ZSBhZ2cgSUQgZm9yIHJpbmcgJWQsIGFnZyAweCV4XFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgIHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleCxcbkBAIC0zNTg3LDcgJiM0MzszNTg5LDcgQEAgc3RhdGljIHZvaWQgYm54dF9mcmVlX29uZV90cGFfaW5mb19kYXRhKHN0cnVjdCBibnh0ICpicCxcbiB7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZW1heF90cGE7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemU7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHN0cnVjdCBibnh0X3RwYV9pbmZvICp0cGFfaW5mbyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF90cGFbaV07XG4gXHRcdHU4ICpkYXRhID0gdHBhX2luZm8tXHUwMDNlZGF0YTtcbiBcbkBAIC0zNzg0LDcgJiM0MzszNzg2LDcgQEAgc3RhdGljIHZvaWQgYm54dF9mcmVlX29uZV90cGFfaW5mbyhzdHJ1Y3QgYm54dCAqYnAsXG4gXHRrZnJlZShyeHItXHUwMDNlcnhfdHBhX2lkeF9tYXApO1xuIFx0cnhyLVx1MDAzZXJ4X3RwYV9pZHhfbWFwID0gTlVMTDtcbiBcdGlmIChyeHItXHUwMDNlcnhfdHBhKSB7XG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZW1heF90cGE7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0XHRrZnJlZShyeHItXHUwMDNlcnhfdHBhW2ldLmFnZ19hcnIpO1xuIFx0XHRcdHJ4ci1cdTAwM2VyeF90cGFbaV0uYWdnX2FyciA9IE5VTEw7XG4gXHRcdH1cbkBAIC0zODEwLDEzICYjNDM7MzgxMiwxNCBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2Nfb25lX3RwYV9pbmZvKHN0cnVjdCBibnh0ICpicCxcbiBcdHN0cnVjdCByeF9hZ2dfY21wICphZ2c7XG4gXHRpbnQgaTtcbiBcbi1cdHJ4ci1cdTAwM2VyeF90cGEgPSBremFsbG9jX29ianMoc3RydWN0IGJueHRfdHBhX2luZm8sIGJwLVx1MDAzZW1heF90cGEpO1xuJiM0MztcdHJ4ci1cdTAwM2VyeF90cGEgPSBremFsbG9jX29ianMoc3RydWN0IGJueHRfdHBhX2luZm8sXG4mIzQzO1x0XHRcdFx0ICAgYnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUpO1xuIFx0aWYgKCFyeHItXHUwMDNlcnhfdHBhKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGlmICghKGJwLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNV9QTFVTKSlcbiBcdFx0cmV0dXJuIDA7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VtYXhfdHBhOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplOyBpJiM0MzsmIzQzOykge1xuIFx0XHRhZ2cgPSBremFsbG9jX29ianMoKmFnZywgTUFYX1NLQl9GUkFHUyk7XG4gXHRcdGlmICghYWdnKVxuIFx0XHRcdHJldHVybiAtRU5PTUVNO1xuQEAgLTM4NDMsNiAmIzQzOzM4NDYsOCBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2NfdHBhX2luZm8oc3RydWN0IGJueHQgKmJwKVxuIFx0XHRcdGJwLVx1MDAzZW1heF90cGEgPSBNQVhfVFBBX1A1O1xuIFx0fVxuIFxuJiM0MztcdGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplID0gcm91bmR1cF9wb3dfb2ZfdHdvKGJwLVx1MDAzZW1heF90cGEpO1xuJiM0MztcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZXJ4X25yX3JpbmdzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8gKnJ4ciA9IFx1MDAyNmJwLVx1MDAzZXJ4X3JpbmdbaV07XG4gXG5AQCAtNDU1NCw3ICYjNDM7NDU1OSw3IEBAIHN0YXRpYyBpbnQgYm54dF9hbGxvY19vbmVfdHBhX2luZm9fZGF0YShzdHJ1Y3QgYm54dCAqYnAsXG4gXHR1OCAqZGF0YTtcbiBcdGludCBpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnAtXHUwMDNlbWF4X3RwYTsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0ZGF0YSA9IF9fYm54dF9hbGxvY19yeF9mcmFnKGJwLCBcdTAwMjZtYXBwaW5nLCByeHIsXG4gXHRcdFx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbiBcdFx0aWYgKCFkYXRhKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbmluZGV4IGFiODk0ZjhhZGRlZjUuLmRlNDZiNDJkN2M5OGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbkBAIC03ODksNyAmIzQzOzc4OSw2IEBAIHN0cnVjdCBucWVfY24ge1xuIFxuICNkZWZpbmUgTUFYX1RQQVx0XHQ2NFxuICNkZWZpbmUgTUFYX1RQQV9QNVx0MjU2XG4tI2RlZmluZSBNQVhfVFBBX1A1X01BU0tcdChNQVhfVFBBX1A1IC0gMSlcbiAjZGVmaW5lIE1BWF9UUEFfU0VHU19QNVx0MHgzZlxuIFxuICNpZiAoQk5YVF9QQUdFX1NISUZUID09IDE2KVxuQEAgLTIzODAsNiAmIzQzOzIzNzksNyBAQCBzdHJ1Y3QgYm54dCB7XG4gXG4gXHR1MTZcdFx0XHRtYXhfdHBhX3YyO1xuIFx0dTE2XHRcdFx0bWF4X3RwYTtcbiYjNDM7XHR1MTZcdFx0XHRtYXhfdHBhX3JvdW5kdXBfc2l6ZTtcbiBcdHUzMlx0XHRcdHJ4X2J1Zl9zaXplO1xuIFx0dTMyXHRcdFx0cnhfYnVmX3VzZV9zaXplO1x0LyogdXNlYWJsZSBzaXplICovXG4gXHR1MTZcdFx0XHRyeF9vZmZzZXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDA6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWRjN2FjZTRhNzQ4ODQ0NzhjNTBjNmE3NmRlMTIzMDE5MmY0NGQwZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDAwOjQ2OjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYwppbmRleCA5YzJjYzUwMjc2YTU5Li5iYTcxMDcwNGIxOTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYwpAQCAtMTUxNywxNCAmIzQzOzE1MTcsMTYgQEAgc3RhdGljIGludCBibnh0X2Rpc2NhcmRfcngoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgYm54dF9jcF9yaW5nX2luZm8gKmNwciwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHUxNiBibnh0X2FsbG9jX2FnZ19pZHgoc3RydWN0IGJueHRfcnhfcmluZ19pbmZvICpyeHIsIHUxNiBhZ2dfaWQpCiYjNDM7c3RhdGljIHUxNiBibnh0X2FsbG9jX2FnZ19pZHgoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8gKnJ4ciwKJiM0MzsJCQkgICAgICB1MTYgYWdnX2lkKQogewogCXN0cnVjdCBibnh0X3RwYV9pZHhfbWFwICptYXAgPSByeHItJmd0O3J4X3RwYV9pZHhfbWFwOwotCXUxNiBpZHggPSBhZ2dfaWQgJmFtcDsgTUFYX1RQQV9QNV9NQVNLOwomIzQzOwl1MTYgaWR4ID0gYWdnX2lkICZhbXA7IChicC0mZ3Q7bWF4X3RwYV9yb3VuZHVwX3NpemUgLSAxKTsKIAogCWlmICh0ZXN0X2JpdChpZHgsIG1hcC0mZ3Q7YWdnX2lkeF9ibWFwKSkgewotCQlpZHggPSBmaW5kX2ZpcnN0X3plcm9fYml0KG1hcC0mZ3Q7YWdnX2lkeF9ibWFwLCBNQVhfVFBBX1A1KTsKLQkJaWYgKGlkeCAmZ3Q7PSBNQVhfVFBBX1A1KQomIzQzOwkJaWR4ID0gZmluZF9maXJzdF96ZXJvX2JpdChtYXAtJmd0O2FnZ19pZHhfYm1hcCwKJiM0MzsJCQkJCSAgYnAtJmd0O21heF90cGFfcm91bmR1cF9zaXplKTsKJiM0MzsJCWlmIChpZHggJmd0Oz0gYnAtJmd0O21heF90cGFfcm91bmR1cF9zaXplKQogCQkJcmV0dXJuIElOVkFMSURfSFdfUklOR19JRDsKIAl9CiAJX19zZXRfYml0KGlkeCwgbWFwLSZndDthZ2dfaWR4X2JtYXApOwpAQCAtMTU4OSw3ICYjNDM7MTU5MSw3IEBAIHN0YXRpYyB2b2lkIGJueHRfdHBhX3N0YXJ0KHN0cnVjdCBibnh0ICpicCwgc3RydWN0IGJueHRfcnhfcmluZ19pbmZvICpyeHIsCiAKIAlpZiAoYnAtJmd0O2ZsYWdzICZhbXA7IEJOWFRfRkxBR19DSElQX1A1X1BMVVMpIHsKIAkJYWdnX2lkID0gVFBBX1NUQVJUX0FHR19JRF9QNSh0cGFfc3RhcnQpOwotCQlhZ2dfaWQgPSBibnh0X2FsbG9jX2FnZ19pZHgocnhyLCBhZ2dfaWQpOwomIzQzOwkJYWdnX2lkID0gYm54dF9hbGxvY19hZ2dfaWR4KGJwLCByeHIsIGFnZ19pZCk7CiAJCWlmICh1bmxpa2VseShhZ2dfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKSkgewogCQkJbmV0ZGV2X3dhcm4oYnAtJmd0O2RldiwgJiMzNDtVbmFibGUgdG8gYWxsb2NhdGUgYWdnIElEIGZvciByaW5nICVkLCBhZ2cgMHgleFxuJiMzNDssCiAJCQkJICAgIHJ4ci0mZ3Q7Ym5hcGktJmd0O2luZGV4LApAQCAtMzU4Nyw3ICYjNDM7MzU4OSw3IEBAIHN0YXRpYyB2b2lkIGJueHRfZnJlZV9vbmVfdHBhX2luZm9fZGF0YShzdHJ1Y3QgYm54dCAqYnAsCiB7CiAJaW50IGk7CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgYnAtJmd0O21heF90cGE7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBicC0mZ3Q7bWF4X3RwYV9yb3VuZHVwX3NpemU7IGkmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBibnh0X3RwYV9pbmZvICp0cGFfaW5mbyA9ICZhbXA7cnhyLSZndDtyeF90cGFbaV07CiAJCXU4ICpkYXRhID0gdHBhX2luZm8tJmd0O2RhdGE7CiAKQEAgLTM3ODQsNyAmIzQzOzM3ODYsNyBAQCBzdGF0aWMgdm9pZCBibnh0X2ZyZWVfb25lX3RwYV9pbmZvKHN0cnVjdCBibnh0ICpicCwKIAlrZnJlZShyeHItJmd0O3J4X3RwYV9pZHhfbWFwKTsKIAlyeHItJmd0O3J4X3RwYV9pZHhfbWFwID0gTlVMTDsKIAlpZiAocnhyLSZndDtyeF90cGEpIHsKLQkJZm9yIChpID0gMDsgaSAmbHQ7IGJwLSZndDttYXhfdHBhOyBpJiM0MzsmIzQzOykgewomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IGJwLSZndDttYXhfdHBhX3JvdW5kdXBfc2l6ZTsgaSYjNDM7JiM0MzspIHsKIAkJCWtmcmVlKHJ4ci0mZ3Q7cnhfdHBhW2ldLmFnZ19hcnIpOwogCQkJcnhyLSZndDtyeF90cGFbaV0uYWdnX2FyciA9IE5VTEw7CiAJCX0KQEAgLTM4MTAsMTMgJiM0MzszODEyLDE0IEBAIHN0YXRpYyBpbnQgYm54dF9hbGxvY19vbmVfdHBhX2luZm8oc3RydWN0IGJueHQgKmJwLAogCXN0cnVjdCByeF9hZ2dfY21wICphZ2c7CiAJaW50IGk7CiAKLQlyeHItJmd0O3J4X3RwYSA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgYm54dF90cGFfaW5mbywgYnAtJmd0O21heF90cGEpOwomIzQzOwlyeHItJmd0O3J4X3RwYSA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgYm54dF90cGFfaW5mbywKJiM0MzsJCQkJICAgYnAtJmd0O21heF90cGFfcm91bmR1cF9zaXplKTsKIAlpZiAoIXJ4ci0mZ3Q7cnhfdHBhKQogCQlyZXR1cm4gLUVOT01FTTsKIAogCWlmICghKGJwLSZndDtmbGFncyAmYW1wOyBCTlhUX0ZMQUdfQ0hJUF9QNV9QTFVTKSkKIAkJcmV0dXJuIDA7Ci0JZm9yIChpID0gMDsgaSAmbHQ7IGJwLSZndDttYXhfdHBhOyBpJiM0MzsmIzQzOykgewomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgYnAtJmd0O21heF90cGFfcm91bmR1cF9zaXplOyBpJiM0MzsmIzQzOykgewogCQlhZ2cgPSBremFsbG9jX29ianMoKmFnZywgTUFYX1NLQl9GUkFHUyk7CiAJCWlmICghYWdnKQogCQkJcmV0dXJuIC1FTk9NRU07CkBAIC0zODQzLDYgJiM0MzszODQ2LDggQEAgc3RhdGljIGludCBibnh0X2FsbG9jX3RwYV9pbmZvKHN0cnVjdCBibnh0ICpicCkKIAkJCWJwLSZndDttYXhfdHBhID0gTUFYX1RQQV9QNTsKIAl9CiAKJiM0MzsJYnAtJmd0O21heF90cGFfcm91bmR1cF9zaXplID0gcm91bmR1cF9wb3dfb2ZfdHdvKGJwLSZndDttYXhfdHBhKTsKJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgYnAtJmd0O3J4X25yX3JpbmdzOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8gKnJ4ciA9ICZhbXA7YnAtJmd0O3J4X3JpbmdbaV07CiAKQEAgLTQ1NTQsNyAmIzQzOzQ1NTksNyBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2Nfb25lX3RwYV9pbmZvX2RhdGEoc3RydWN0IGJueHQgKmJwLAogCXU4ICpkYXRhOwogCWludCBpOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IGJwLSZndDttYXhfdHBhOyBpJiM0MzsmIzQzOykgewomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgYnAtJmd0O21heF90cGFfcm91bmR1cF9zaXplOyBpJiM0MzsmIzQzOykgewogCQlkYXRhID0gX19ibnh0X2FsbG9jX3J4X2ZyYWcoYnAsICZhbXA7bWFwcGluZywgcnhyLAogCQkJCQkgICAgR0ZQX0tFUk5FTCk7CiAJCWlmICghZGF0YSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmgKaW5kZXggYWI4OTRmOGFkZGVmNS4uZGU0NmI0MmQ3Yzk4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmgKQEAgLTc4OSw3ICYjNDM7Nzg5LDYgQEAgc3RydWN0IG5xZV9jbiB7CiAKICNkZWZpbmUgTUFYX1RQQQkJNjQKICNkZWZpbmUgTUFYX1RQQV9QNQkyNTYKLSNkZWZpbmUgTUFYX1RQQV9QNV9NQVNLCShNQVhfVFBBX1A1IC0gMSkKICNkZWZpbmUgTUFYX1RQQV9TRUdTX1A1CTB4M2YKIAogI2lmIChCTlhUX1BBR0VfU0hJRlQgPT0gMTYpCkBAIC0yMzgwLDYgJiM0MzsyMzc5LDcgQEAgc3RydWN0IGJueHQgewogCiAJdTE2CQkJbWF4X3RwYV92MjsKIAl1MTYJCQltYXhfdHBhOwomIzQzOwl1MTYJCQltYXhfdHBhX3JvdW5kdXBfc2l6ZTsKIAl1MzIJCQlyeF9idWZfc2l6ZTsKIAl1MzIJCQlyeF9idWZfdXNlX3NpemU7CS8qIHVzZWFibGUgc2l6ZSAqLwogCXUxNgkJCXJ4X29mZnNldDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY5NAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgQnJvYWRjb20gTmV0WHRyZW1lIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNgIGFuZCBgYm54dC5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7RG9lcyB0aGlzIGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgbmVlZCBmdXp6aW5nPyYjMzQ7IFRpbWUgdG8gZ28gdGhyb3VnaCB0aGUgY2hlY2tsaXN0LgoKVGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgZm9yIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIDEwLzI1LzQwLzUwIGdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGJueHRgLiBSaWdodCwgYW5kIHRoZSBydWxlYm9vayBzYXlzIHRvIHNraXAgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgdGhhdCBuZWVkIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCgpBbHJpZ2h0LCBpcyBgYm54dGAgdmVuZG9yLXNwZWNpZmljPyBBYnNvbHV0ZWx5LiBJdOKAmXMgYSBkcml2ZXIgZm9yICpCcm9hZGNvbSogaGFyZHdhcmUuIERvZXMgaXQgcmVxdWlyZSBhIHBoeXNpY2FsIGNhcmQ/IERlZmluaXRlbHksIHNpbmNlIGl0JiMzOTtzIGRlc2lnbmVkIGZvciBCcm9hZGNvbSYjMzk7cyBOZXRYdHJlbWUtQy9FIEV0aGVybmV0IGNhcmRzLiBBbmQgaXMgaXQgZW11bGF0ZWQgaW4gUUVNVT8gTm8sIFFFTVUgaXMgdXN1YWxseSBlbXVsYXRpbmcgdGhpbmdzIGxpa2UgZTEwMDAgYW5kIHZpcnRpby1uZXQsIG5vdCBCcm9hZGNvbSYjMzk7cyBOZXRYdHJlbWUgZmFtaWx5LgoKU28sIGFjY29yZGluZyB0byB0aGUgcnVsZXMsIHRoaXMgcGF0Y2ggZmFsbHMgaW50byB0aGUgJiMzNDtub3Qgd29ydGggZnV6emluZyYjMzQ7IGNhdGVnb3J5LiBJdCByZXF1aXJlcyBhIHNwZWNpZmljIGhhcmR3YXJlIGNhcmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhpcyBieSBnbGFuY2luZyBhdCB0aGUgYEtjb25maWdgIGZvciBgYm54dGAgdG8gZW5zdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGdsYXJpbmcgZXhjZXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTlhUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDA3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRGlnZ2luZyBpbnRvIHRoZSBLY29uZmlnIC0gQk5YVCBIdW50KioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdC4gQmVmb3JlIEkgZ28gdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IG9idmlvdXMgc3RhcnRpbmcgcG9pbnQgaXMgdG8gc2VhcmNoIHRoZSBgS2NvbmZpZ2AgZmlsZXMgZGlyZWN0bHkuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGlmICYjMzQ7Qk5YVCYjMzQ7IGlzIGV2ZW4gZGVmaW5lZCB0aGVyZS4gSXMgaXQgYSBjb3JlIG1vZHVsZSwgYSBkcml2ZXIsIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBLbm93aW5nIHRoaXMgd2lsbCBzaWduaWZpY2FudGx5IGFmZmVjdCBob3cgSSBwcm9jZWVkLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgdXNlIHRoZSBzZWFyY2guIFRoaXMgd2lsbCBnaXZlIG1lIGFuIGltbWVkaWF0ZSBzZW5zZSBvZiB0aGUgbGFuZHNjYXBlIEkmIzM5O20gZGVhbGluZyB3aXRoLiBMZXQmIzM5O3Mgc2VlIHdoYXQgcG9wcyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQk5YVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0xOTU9Y29uZmlnIFNZU1RFTVBPUlRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjA3OmNvbmZpZyBCTlhUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIwOC1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIE5ldFh0cmVtZS1DL0Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMjI6Y29uZmlnIEJOWFRfU1JJT1ZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjIzLVx0Ym9vbCBcJiMzNDtCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIFNSLUlPViBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIzMTpjb25maWcgQk5YVF9GTE9XRVJfT0ZGTE9BRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMzItXHRib29sIFwmIzM0O1RDIEZsb3dlciBvZmZsb2FkIHN1cHBvcnQgZm9yIE5ldFh0cmVtZS1DL0VcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjQwOmNvbmZpZyBCTlhUX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNDEtXHRib29sIFwmIzM0O0RhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjUwOmNvbmZpZyBCTlhUX0hXTU9OXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI1MS1cdGJvb2wgXCYjMzQ7QnJvYWRjb20gTmV0WHRyZW1lLUMvRSBIV01PTiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAyOAoJCQkJCQkJb3V0cHV0OiA4NQoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgRHJpdmVyKioKCk9rYXksIHNvIGl0JiMzOTtzIHRoZSAmIzM0O0Jyb2FkY29tIE5ldFh0cmVtZS1DL0Ugc3VwcG9ydCYjMzQ7IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhlcmUuIFJpZ2h0LCB0aGF0JiMzOTtzIGEgKnBoeXNpY2FsKiBQQ0llIGNhcmQgZHJpdmVyLiBOb3Qgc29tZSBzb2Z0d2FyZS1kZWZpbmVkIG5ldHdvcmsgaW50ZXJmYWNlLiBUaGlzIGNoYW5nZXMgdGhpbmdzIGRyYW1hdGljYWxseS4gU2luY2UgaXQmIzM5O3MgYSBkaXJlY3QgaGFyZHdhcmUgaW50ZXJmYWNlLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgZW11bGF0ZWQgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVS4gVHJ5aW5nIHRvIGZ1enogaXQgdGhlcmUgd291bGQgYmUgYSB0b3RhbCB3YXN0ZSBvZiB0aW1lIGFuZCByZXNvdXJjZXMuIEkgbWVhbiwgdGhlIGRyaXZlciB3b3VsZG4mIzM5O3QgZXZlbiBiZSBhYmxlIHRvIHRhbGsgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgZWZmZWN0aXZlbHkuIFRoZXJlZm9yZSwgZnV6emluZyB0aGlzIHBhcnRpY3VsYXIgdGFyZ2V0IHdpdGhpbiBhIFZNIGp1c3QgaXNuJiMzOTt0IHdvcnRoIHRoZSBlZmZvcnQuIE15IHJldHVybiB2YWx1ZSBoZXJlIHdpbGwgYmUgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRpbWUgdG8gbW92ZSBvbiB0byBhIHRhcmdldCB0aGF0JiMzOTtzIGFjdHVhbGx5IHN1c2NlcHRpYmxlIHRvIHRoaXMgdHlwZSBvZiB0ZXN0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDAwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDAwOjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwMDo0Njo0NC40MjQ3MzU2OThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkyNzc5MTk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwMDo0Njo0NC40MjQ3NDEyMjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNTA5ODU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDlkYzdhY2U0YTc0ODg0NDc4YzUwYzZhNzZkZTEyMzAxOTJmNDRkMGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDA6NDY6NDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xcbmluZGV4IDljMmNjNTAyNzZhNTkuLmJhNzEwNzA0YjE5MjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xcbkBAIC0xNTE3LDE0ICsxNTE3LDE2IEBAIHN0YXRpYyBpbnQgYm54dF9kaXNjYXJkX3J4KHN0cnVjdCBibnh0ICpicCwgc3RydWN0IGJueHRfY3BfcmluZ19pbmZvICpjcHIsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgdTE2IGJueHRfYWxsb2NfYWdnX2lkeChzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8gKnJ4ciwgdTE2IGFnZ19pZClcXG4rc3RhdGljIHUxNiBibnh0X2FsbG9jX2FnZ19pZHgoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8gKnJ4cixcXG4rXFx0XFx0XFx0ICAgICAgdTE2IGFnZ19pZClcXG4ge1xcbiBcXHRzdHJ1Y3QgYm54dF90cGFfaWR4X21hcCAqbWFwID0gcnhyLVxcdTAwM2VyeF90cGFfaWR4X21hcDtcXG4tXFx0dTE2IGlkeCA9IGFnZ19pZCBcXHUwMDI2IE1BWF9UUEFfUDVfTUFTSztcXG4rXFx0dTE2IGlkeCA9IGFnZ19pZCBcXHUwMDI2IChicC1cXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUgLSAxKTtcXG4gXFxuIFxcdGlmICh0ZXN0X2JpdChpZHgsIG1hcC1cXHUwMDNlYWdnX2lkeF9ibWFwKSkge1xcbi1cXHRcXHRpZHggPSBmaW5kX2ZpcnN0X3plcm9fYml0KG1hcC1cXHUwMDNlYWdnX2lkeF9ibWFwLCBNQVhfVFBBX1A1KTtcXG4tXFx0XFx0aWYgKGlkeCBcXHUwMDNlPSBNQVhfVFBBX1A1KVxcbitcXHRcXHRpZHggPSBmaW5kX2ZpcnN0X3plcm9fYml0KG1hcC1cXHUwMDNlYWdnX2lkeF9ibWFwLFxcbitcXHRcXHRcXHRcXHRcXHQgIGJwLVxcdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZSk7XFxuK1xcdFxcdGlmIChpZHggXFx1MDAzZT0gYnAtXFx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplKVxcbiBcXHRcXHRcXHRyZXR1cm4gSU5WQUxJRF9IV19SSU5HX0lEO1xcbiBcXHR9XFxuIFxcdF9fc2V0X2JpdChpZHgsIG1hcC1cXHUwMDNlYWdnX2lkeF9ibWFwKTtcXG5AQCAtMTU4OSw3ICsxNTkxLDcgQEAgc3RhdGljIHZvaWQgYm54dF90cGFfc3RhcnQoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8gKnJ4cixcXG4gXFxuIFxcdGlmIChicC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNV9QTFVTKSB7XFxuIFxcdFxcdGFnZ19pZCA9IFRQQV9TVEFSVF9BR0dfSURfUDUodHBhX3N0YXJ0KTtcXG4tXFx0XFx0YWdnX2lkID0gYm54dF9hbGxvY19hZ2dfaWR4KHJ4ciwgYWdnX2lkKTtcXG4rXFx0XFx0YWdnX2lkID0gYm54dF9hbGxvY19hZ2dfaWR4KGJwLCByeHIsIGFnZ19pZCk7XFxuIFxcdFxcdGlmICh1bmxpa2VseShhZ2dfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKSkge1xcbiBcXHRcXHRcXHRuZXRkZXZfd2FybihicC1cXHUwMDNlZGV2LCBcXFwiVW5hYmxlIHRvIGFsbG9jYXRlIGFnZyBJRCBmb3IgcmluZyAlZCwgYWdnIDB4JXhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICByeHItXFx1MDAzZWJuYXBpLVxcdTAwM2VpbmRleCxcXG5AQCAtMzU4Nyw3ICszNTg5LDcgQEAgc3RhdGljIHZvaWQgYm54dF9mcmVlX29uZV90cGFfaW5mb19kYXRhKHN0cnVjdCBibnh0ICpicCxcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBicC1cXHUwMDNlbWF4X3RwYTsgaSsrKSB7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBicC1cXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemU7IGkrKykge1xcbiBcXHRcXHRzdHJ1Y3QgYm54dF90cGFfaW5mbyAqdHBhX2luZm8gPSBcXHUwMDI2cnhyLVxcdTAwM2VyeF90cGFbaV07XFxuIFxcdFxcdHU4ICpkYXRhID0gdHBhX2luZm8tXFx1MDAzZWRhdGE7XFxuIFxcbkBAIC0zNzg0LDcgKzM3ODYsNyBAQCBzdGF0aWMgdm9pZCBibnh0X2ZyZWVfb25lX3RwYV9pbmZvKHN0cnVjdCBibnh0ICpicCxcXG4gXFx0a2ZyZWUocnhyLVxcdTAwM2VyeF90cGFfaWR4X21hcCk7XFxuIFxcdHJ4ci1cXHUwMDNlcnhfdHBhX2lkeF9tYXAgPSBOVUxMO1xcbiBcXHRpZiAocnhyLVxcdTAwM2VyeF90cGEpIHtcXG4tXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJwLVxcdTAwM2VtYXhfdHBhOyBpKyspIHtcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJwLVxcdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZTsgaSsrKSB7XFxuIFxcdFxcdFxcdGtmcmVlKHJ4ci1cXHUwMDNlcnhfdHBhW2ldLmFnZ19hcnIpO1xcbiBcXHRcXHRcXHRyeHItXFx1MDAzZXJ4X3RwYVtpXS5hZ2dfYXJyID0gTlVMTDtcXG4gXFx0XFx0fVxcbkBAIC0zODEwLDEzICszODEyLDE0IEBAIHN0YXRpYyBpbnQgYm54dF9hbGxvY19vbmVfdHBhX2luZm8oc3RydWN0IGJueHQgKmJwLFxcbiBcXHRzdHJ1Y3QgcnhfYWdnX2NtcCAqYWdnO1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdHJ4ci1cXHUwMDNlcnhfdHBhID0ga3phbGxvY19vYmpzKHN0cnVjdCBibnh0X3RwYV9pbmZvLCBicC1cXHUwMDNlbWF4X3RwYSk7XFxuK1xcdHJ4ci1cXHUwMDNlcnhfdHBhID0ga3phbGxvY19vYmpzKHN0cnVjdCBibnh0X3RwYV9pbmZvLFxcbitcXHRcXHRcXHRcXHQgICBicC1cXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUpO1xcbiBcXHRpZiAoIXJ4ci1cXHUwMDNlcnhfdHBhKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuIFxcdGlmICghKGJwLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJOWFRfRkxBR19DSElQX1A1X1BMVVMpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJwLVxcdTAwM2VtYXhfdHBhOyBpKyspIHtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJwLVxcdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZTsgaSsrKSB7XFxuIFxcdFxcdGFnZyA9IGt6YWxsb2Nfb2JqcygqYWdnLCBNQVhfU0tCX0ZSQUdTKTtcXG4gXFx0XFx0aWYgKCFhZ2cpXFxuIFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbkBAIC0zODQzLDYgKzM4NDYsOCBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2NfdHBhX2luZm8oc3RydWN0IGJueHQgKmJwKVxcbiBcXHRcXHRcXHRicC1cXHUwMDNlbWF4X3RwYSA9IE1BWF9UUEFfUDU7XFxuIFxcdH1cXG4gXFxuK1xcdGJwLVxcdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZSA9IHJvdW5kdXBfcG93X29mX3R3byhicC1cXHUwMDNlbWF4X3RwYSk7XFxuK1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnAtXFx1MDAzZXJ4X25yX3JpbmdzOyBpKyspIHtcXG4gXFx0XFx0c3RydWN0IGJueHRfcnhfcmluZ19pbmZvICpyeHIgPSBcXHUwMDI2YnAtXFx1MDAzZXJ4X3JpbmdbaV07XFxuIFxcbkBAIC00NTU0LDcgKzQ1NTksNyBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2Nfb25lX3RwYV9pbmZvX2RhdGEoc3RydWN0IGJueHQgKmJwLFxcbiBcXHR1OCAqZGF0YTtcXG4gXFx0aW50IGk7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnAtXFx1MDAzZW1heF90cGE7IGkrKykge1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnAtXFx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplOyBpKyspIHtcXG4gXFx0XFx0ZGF0YSA9IF9fYm54dF9hbGxvY19yeF9mcmFnKGJwLCBcXHUwMDI2bWFwcGluZywgcnhyLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgR0ZQX0tFUk5FTCk7XFxuIFxcdFxcdGlmICghZGF0YSlcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxcbmluZGV4IGFiODk0ZjhhZGRlZjUuLmRlNDZiNDJkN2M5OGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxcbkBAIC03ODksNyArNzg5LDYgQEAgc3RydWN0IG5xZV9jbiB7XFxuIFxcbiAjZGVmaW5lIE1BWF9UUEFcXHRcXHQ2NFxcbiAjZGVmaW5lIE1BWF9UUEFfUDVcXHQyNTZcXG4tI2RlZmluZSBNQVhfVFBBX1A1X01BU0tcXHQoTUFYX1RQQV9QNSAtIDEpXFxuICNkZWZpbmUgTUFYX1RQQV9TRUdTX1A1XFx0MHgzZlxcbiBcXG4gI2lmIChCTlhUX1BBR0VfU0hJRlQgPT0gMTYpXFxuQEAgLTIzODAsNiArMjM3OSw3IEBAIHN0cnVjdCBibnh0IHtcXG4gXFxuIFxcdHUxNlxcdFxcdFxcdG1heF90cGFfdjI7XFxuIFxcdHUxNlxcdFxcdFxcdG1heF90cGE7XFxuK1xcdHUxNlxcdFxcdFxcdG1heF90cGFfcm91bmR1cF9zaXplO1xcbiBcXHR1MzJcXHRcXHRcXHRyeF9idWZfc2l6ZTtcXG4gXFx0dTMyXFx0XFx0XFx0cnhfYnVmX3VzZV9zaXplO1xcdC8qIHVzZWFibGUgc2l6ZSAqL1xcbiBcXHR1MTZcXHRcXHRcXHRyeF9vZmZzZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDAwOjQ2OjQ0Ljg2MDYxNzQ3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQ0OTE4OTcxMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ZGM3YWNlNGE3NDg4NDQ3OGM1MGM2YTc2ZGUxMjMwMTkyZjQ0ZDBmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDA6NDY6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG5pbmRleCA5YzJjYzUwMjc2YTU5Li5iYTcxMDcwNGIxOTIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG5AQCAtMTUxNywxNCArMTUxNywxNiBAQCBzdGF0aWMgaW50IGJueHRfZGlzY2FyZF9yeChzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBibnh0X2NwX3JpbmdfaW5mbyAqY3ByLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB1MTYgYm54dF9hbGxvY19hZ2dfaWR4KHN0cnVjdCBibnh0X3J4X3JpbmdfaW5mbyAqcnhyLCB1MTYgYWdnX2lkKVxuK3N0YXRpYyB1MTYgYm54dF9hbGxvY19hZ2dfaWR4KHN0cnVjdCBibnh0ICpicCwgc3RydWN0IGJueHRfcnhfcmluZ19pbmZvICpyeHIsXG4rXHRcdFx0ICAgICAgdTE2IGFnZ19pZClcbiB7XG4gXHRzdHJ1Y3QgYm54dF90cGFfaWR4X21hcCAqbWFwID0gcnhyLVx1MDAzZXJ4X3RwYV9pZHhfbWFwO1xuLVx0dTE2IGlkeCA9IGFnZ19pZCBcdTAwMjYgTUFYX1RQQV9QNV9NQVNLO1xuK1x0dTE2IGlkeCA9IGFnZ19pZCBcdTAwMjYgKGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplIC0gMSk7XG4gXG4gXHRpZiAodGVzdF9iaXQoaWR4LCBtYXAtXHUwMDNlYWdnX2lkeF9ibWFwKSkge1xuLVx0XHRpZHggPSBmaW5kX2ZpcnN0X3plcm9fYml0KG1hcC1cdTAwM2VhZ2dfaWR4X2JtYXAsIE1BWF9UUEFfUDUpO1xuLVx0XHRpZiAoaWR4IFx1MDAzZT0gTUFYX1RQQV9QNSlcbitcdFx0aWR4ID0gZmluZF9maXJzdF96ZXJvX2JpdChtYXAtXHUwMDNlYWdnX2lkeF9ibWFwLFxuK1x0XHRcdFx0XHQgIGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplKTtcbitcdFx0aWYgKGlkeCBcdTAwM2U9IGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplKVxuIFx0XHRcdHJldHVybiBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gXHR9XG4gXHRfX3NldF9iaXQoaWR4LCBtYXAtXHUwMDNlYWdnX2lkeF9ibWFwKTtcbkBAIC0xNTg5LDcgKzE1OTEsNyBAQCBzdGF0aWMgdm9pZCBibnh0X3RwYV9zdGFydChzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBibnh0X3J4X3JpbmdfaW5mbyAqcnhyLFxuIFxuIFx0aWYgKGJwLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNV9QTFVTKSB7XG4gXHRcdGFnZ19pZCA9IFRQQV9TVEFSVF9BR0dfSURfUDUodHBhX3N0YXJ0KTtcbi1cdFx0YWdnX2lkID0gYm54dF9hbGxvY19hZ2dfaWR4KHJ4ciwgYWdnX2lkKTtcbitcdFx0YWdnX2lkID0gYm54dF9hbGxvY19hZ2dfaWR4KGJwLCByeHIsIGFnZ19pZCk7XG4gXHRcdGlmICh1bmxpa2VseShhZ2dfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKSkge1xuIFx0XHRcdG5ldGRldl93YXJuKGJwLVx1MDAzZWRldiwgXCJVbmFibGUgdG8gYWxsb2NhdGUgYWdnIElEIGZvciByaW5nICVkLCBhZ2cgMHgleFxcblwiLFxuIFx0XHRcdFx0ICAgIHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleCxcbkBAIC0zNTg3LDcgKzM1ODksNyBAQCBzdGF0aWMgdm9pZCBibnh0X2ZyZWVfb25lX3RwYV9pbmZvX2RhdGEoc3RydWN0IGJueHQgKmJwLFxuIHtcbiBcdGludCBpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnAtXHUwMDNlbWF4X3RwYTsgaSsrKSB7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VtYXhfdHBhX3JvdW5kdXBfc2l6ZTsgaSsrKSB7XG4gXHRcdHN0cnVjdCBibnh0X3RwYV9pbmZvICp0cGFfaW5mbyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF90cGFbaV07XG4gXHRcdHU4ICpkYXRhID0gdHBhX2luZm8tXHUwMDNlZGF0YTtcbiBcbkBAIC0zNzg0LDcgKzM3ODYsNyBAQCBzdGF0aWMgdm9pZCBibnh0X2ZyZWVfb25lX3RwYV9pbmZvKHN0cnVjdCBibnh0ICpicCxcbiBcdGtmcmVlKHJ4ci1cdTAwM2VyeF90cGFfaWR4X21hcCk7XG4gXHRyeHItXHUwMDNlcnhfdHBhX2lkeF9tYXAgPSBOVUxMO1xuIFx0aWYgKHJ4ci1cdTAwM2VyeF90cGEpIHtcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnAtXHUwMDNlbWF4X3RwYTsgaSsrKSB7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplOyBpKyspIHtcbiBcdFx0XHRrZnJlZShyeHItXHUwMDNlcnhfdHBhW2ldLmFnZ19hcnIpO1xuIFx0XHRcdHJ4ci1cdTAwM2VyeF90cGFbaV0uYWdnX2FyciA9IE5VTEw7XG4gXHRcdH1cbkBAIC0zODEwLDEzICszODEyLDE0IEBAIHN0YXRpYyBpbnQgYm54dF9hbGxvY19vbmVfdHBhX2luZm8oc3RydWN0IGJueHQgKmJwLFxuIFx0c3RydWN0IHJ4X2FnZ19jbXAgKmFnZztcbiBcdGludCBpO1xuIFxuLVx0cnhyLVx1MDAzZXJ4X3RwYSA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgYm54dF90cGFfaW5mbywgYnAtXHUwMDNlbWF4X3RwYSk7XG4rXHRyeHItXHUwMDNlcnhfdHBhID0ga3phbGxvY19vYmpzKHN0cnVjdCBibnh0X3RwYV9pbmZvLFxuK1x0XHRcdFx0ICAgYnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUpO1xuIFx0aWYgKCFyeHItXHUwMDNlcnhfdHBhKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGlmICghKGJwLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNV9QTFVTKSlcbiBcdFx0cmV0dXJuIDA7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VtYXhfdHBhOyBpKyspIHtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZW1heF90cGFfcm91bmR1cF9zaXplOyBpKyspIHtcbiBcdFx0YWdnID0ga3phbGxvY19vYmpzKCphZ2csIE1BWF9TS0JfRlJBR1MpO1xuIFx0XHRpZiAoIWFnZylcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC0zODQzLDYgKzM4NDYsOCBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2NfdHBhX2luZm8oc3RydWN0IGJueHQgKmJwKVxuIFx0XHRcdGJwLVx1MDAzZW1heF90cGEgPSBNQVhfVFBBX1A1O1xuIFx0fVxuIFxuK1x0YnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemUgPSByb3VuZHVwX3Bvd19vZl90d28oYnAtXHUwMDNlbWF4X3RwYSk7XG4rXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VyeF9ucl9yaW5nczsgaSsrKSB7XG4gXHRcdHN0cnVjdCBibnh0X3J4X3JpbmdfaW5mbyAqcnhyID0gXHUwMDI2YnAtXHUwMDNlcnhfcmluZ1tpXTtcbiBcbkBAIC00NTU0LDcgKzQ1NTksNyBAQCBzdGF0aWMgaW50IGJueHRfYWxsb2Nfb25lX3RwYV9pbmZvX2RhdGEoc3RydWN0IGJueHQgKmJwLFxuIFx0dTggKmRhdGE7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZW1heF90cGE7IGkrKykge1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnAtXHUwMDNlbWF4X3RwYV9yb3VuZHVwX3NpemU7IGkrKykge1xuIFx0XHRkYXRhID0gX19ibnh0X2FsbG9jX3J4X2ZyYWcoYnAsIFx1MDAyNm1hcHBpbmcsIHJ4cixcbiBcdFx0XHRcdFx0ICAgIEdGUF9LRVJORUwpO1xuIFx0XHRpZiAoIWRhdGEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxuaW5kZXggYWI4OTRmOGFkZGVmNS4uZGU0NmI0MmQ3Yzk4YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxuQEAgLTc4OSw3ICs3ODksNiBAQCBzdHJ1Y3QgbnFlX2NuIHtcbiBcbiAjZGVmaW5lIE1BWF9UUEFcdFx0NjRcbiAjZGVmaW5lIE1BWF9UUEFfUDVcdDI1NlxuLSNkZWZpbmUgTUFYX1RQQV9QNV9NQVNLXHQoTUFYX1RQQV9QNSAtIDEpXG4gI2RlZmluZSBNQVhfVFBBX1NFR1NfUDVcdDB4M2ZcbiBcbiAjaWYgKEJOWFRfUEFHRV9TSElGVCA9PSAxNilcbkBAIC0yMzgwLDYgKzIzNzksNyBAQCBzdHJ1Y3QgYm54dCB7XG4gXG4gXHR1MTZcdFx0XHRtYXhfdHBhX3YyO1xuIFx0dTE2XHRcdFx0bWF4X3RwYTtcbitcdHUxNlx0XHRcdG1heF90cGFfcm91bmR1cF9zaXplO1xuIFx0dTMyXHRcdFx0cnhfYnVmX3NpemU7XG4gXHR1MzJcdFx0XHRyeF9idWZfdXNlX3NpemU7XHQvKiB1c2VhYmxlIHNpemUgKi9cbiBcdHUxNlx0XHRcdHJ4X29mZnNldDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDAwOjQ2OjQ0Ljg2MDYxODVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDk4NjY5NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRGVjaXNpb24gZm9yIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNgIGFuZCBgYm54dC5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiRG9lcyB0aGlzIGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgbmVlZCBmdXp6aW5nP1wiIFRpbWUgdG8gZ28gdGhyb3VnaCB0aGUgY2hlY2tsaXN0LlxuXG5UaGUgY29kZSBpbiBxdWVzdGlvbiBpcyBmb3IgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgMTAvMjUvNDAvNTAgZ2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBgYm54dGAuIFJpZ2h0LCBhbmQgdGhlIHJ1bGVib29rIHNheXMgdG8gc2tpcCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuQWxyaWdodCwgaXMgYGJueHRgIHZlbmRvci1zcGVjaWZpYz8gQWJzb2x1dGVseS4gSXTigJlzIGEgZHJpdmVyIGZvciAqQnJvYWRjb20qIGhhcmR3YXJlLiBEb2VzIGl0IHJlcXVpcmUgYSBwaHlzaWNhbCBjYXJkPyBEZWZpbml0ZWx5LCBzaW5jZSBpdCdzIGRlc2lnbmVkIGZvciBCcm9hZGNvbSdzIE5ldFh0cmVtZS1DL0UgRXRoZXJuZXQgY2FyZHMuIEFuZCBpcyBpdCBlbXVsYXRlZCBpbiBRRU1VPyBObywgUUVNVSBpcyB1c3VhbGx5IGVtdWxhdGluZyB0aGluZ3MgbGlrZSBlMTAwMCBhbmQgdmlydGlvLW5ldCwgbm90IEJyb2FkY29tJ3MgTmV0WHRyZW1lIGZhbWlseS5cblxuU28sIGFjY29yZGluZyB0byB0aGUgcnVsZXMsIHRoaXMgcGF0Y2ggZmFsbHMgaW50byB0aGUgXCJub3Qgd29ydGggZnV6emluZ1wiIGNhdGVnb3J5LiBJdCByZXF1aXJlcyBhIHNwZWNpZmljIGhhcmR3YXJlIGNhcmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhpcyBieSBnbGFuY2luZyBhdCB0aGUgYEtjb25maWdgIGZvciBgYm54dGAgdG8gZW5zdXJlIHRoZXJlIGFyZW4ndCBhbnkgZ2xhcmluZyBleGNlcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjk0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDA6NDY6NTEuMzU5MjkxMzg0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNTk2OTk4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk5YVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDAwOjQ2OjUxLjQxMjg5ODk3MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MjAxNDIyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgS2NvbmZpZyAtIEJOWFQgSHVudCoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdC4gQmVmb3JlIEkgZ28gdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBMZXQncyBzZWUuLi4gdGhlIG1vc3Qgb2J2aW91cyBzdGFydGluZyBwb2ludCBpcyB0byBzZWFyY2ggdGhlIGBLY29uZmlnYCBmaWxlcyBkaXJlY3RseS4gSSdsbCBuZWVkIHRvIHNlZSBpZiBcIkJOWFRcIiBpcyBldmVuIGRlZmluZWQgdGhlcmUuIElzIGl0IGEgY29yZSBtb2R1bGUsIGEgZHJpdmVyLCBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gS25vd2luZyB0aGlzIHdpbGwgc2lnbmlmaWNhbnRseSBhZmZlY3QgaG93IEkgcHJvY2VlZC4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHVzZSB0aGUgc2VhcmNoLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhbiBpbW1lZGlhdGUgc2Vuc2Ugb2YgdGhlIGxhbmRzY2FwZSBJJ20gZGVhbGluZyB3aXRoLiBMZXQncyBzZWUgd2hhdCBwb3BzIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDA3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDA6NDY6NTUuMTMzMDQzNjk0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODUwMjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTlhUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0xOTU9Y29uZmlnIFNZU1RFTVBPUlRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjA3OmNvbmZpZyBCTlhUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMDgtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIE5ldFh0cmVtZS1DL0Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjIyOmNvbmZpZyBCTlhUX1NSSU9WXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiQnJvYWRjb20gTmV0WHRyZW1lLUMvRSBTUi1JT1Ygc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjMxOmNvbmZpZyBCTlhUX0ZMT1dFUl9PRkZMT0FEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMzItXFx0Ym9vbCBcXFwiVEMgRmxvd2VyIG9mZmxvYWQgc3VwcG9ydCBmb3IgTmV0WHRyZW1lLUMvRVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjQwOmNvbmZpZyBCTlhUX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjQxLVxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI1MDpjb25maWcgQk5YVF9IV01PTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjUxLVxcdGJvb2wgXFxcIkJyb2FkY29tIE5ldFh0cmVtZS1DL0UgSFdNT04gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDA6NDY6NTUuMTgxODk4OTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3MDU5MDQ0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIERyaXZlcioqXG5cbk9rYXksIHNvIGl0J3MgdGhlIFwiQnJvYWRjb20gTmV0WHRyZW1lLUMvRSBzdXBwb3J0XCIgd2UncmUgdGFsa2luZyBhYm91dCBoZXJlLiBSaWdodCwgdGhhdCdzIGEgKnBoeXNpY2FsKiBQQ0llIGNhcmQgZHJpdmVyLiBOb3Qgc29tZSBzb2Z0d2FyZS1kZWZpbmVkIG5ldHdvcmsgaW50ZXJmYWNlLiBUaGlzIGNoYW5nZXMgdGhpbmdzIGRyYW1hdGljYWxseS4gU2luY2UgaXQncyBhIGRpcmVjdCBoYXJkd2FyZSBpbnRlcmZhY2UsIGl0J3Mgbm90IGdvaW5nIHRvIGJlIGVtdWxhdGVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUuIFRyeWluZyB0byBmdXp6IGl0IHRoZXJlIHdvdWxkIGJlIGEgdG90YWwgd2FzdGUgb2YgdGltZSBhbmQgcmVzb3VyY2VzLiBJIG1lYW4sIHRoZSBkcml2ZXIgd291bGRuJ3QgZXZlbiBiZSBhYmxlIHRvIHRhbGsgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgZWZmZWN0aXZlbHkuIFRoZXJlZm9yZSwgZnV6emluZyB0aGlzIHBhcnRpY3VsYXIgdGFyZ2V0IHdpdGhpbiBhIFZNIGp1c3QgaXNuJ3Qgd29ydGggdGhlIGVmZm9ydC4gTXkgcmV0dXJuIHZhbHVlIGhlcmUgd2lsbCBiZSBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGltZSB0byBtb3ZlIG9uIHRvIGEgdGFyZ2V0IHRoYXQncyBhY3R1YWxseSBzdXNjZXB0aWJsZSB0byB0aGlzIHR5cGUgb2YgdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyOCwiT3V0cHV0VG9rZW5zIjo4NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDAwOjQ2OjU5LjM1MjQ5MTcyNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwMDo0Njo1OS4zNTI1MTYyMTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowp8w76[1] Phase: Running StartedAt: 2026-08-25 00:47:10 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8w76[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-25 00:47:10 +0000 UTC FinishedAt: 2026-08-25 00:47:14 +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,}