Name: series-workflowmvsvm Phase: Failed StartedAt: 2026-08-20 09:19:21 +0000 UTC FinishedAt: 2026-08-20 09:35:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvsvm[0] Phase: Succeeded StartedAt: 2026-08-20 09:19:21 +0000 UTC FinishedAt: 2026-08-20 09:35:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvsvm[0].run-triage Phase: Succeeded StartedAt: 2026-08-20 09:19:21 +0000 UTC FinishedAt: 2026-08-20 09:35:08 +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+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBkcml2ZXIgKE9DVEVPTlRYMl9QRi9WRiksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgcGh5c2ljYWwgUENJZSBjYXJkcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ1Y2EyMDQ1NjI4YjRhY2Y4ZmEzNGNhYTkyZGMzZmY0OTIwODgwYTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwOTozNDozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jXG5pbmRleCAzZDI1MzEzMmExN2YwLi44YTM2YWI4YWIxOWVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jXG5AQCAtMzMzLDcgJiM0MzszMzMsOCBAQCBpbnQgb3R4Ml9zZXRfcnNzX3RhYmxlKHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgaW50IGN0eF9pZCwgY29uc3QgdTMyICppbmRfdGJsKVxuIFx0LyogR2V0IG1lbW9yeSB0byBwdXQgdGhpcyBtc2cgKi9cbiBcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyByc3MtXHUwMDNlcnNzX3NpemU7IGlkeCYjNDM7JiM0MzspIHtcbiBcdFx0LyogSWdub3JlIHRoZSBxdWV1ZSBpZiBBRl9YRFAgemVybyBjb3B5IGlzIGVuYWJsZWQgKi9cbi1cdFx0aWYgKHRlc3RfYml0KGluZF90YmxbaWR4XSwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4mIzQzO1x0XHRpZiAocGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICB0ZXN0X2JpdChpbmRfdGJsW2lkeF0sIHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHgpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRhcSA9IG90eDJfbWJveF9hbGxvY19tc2dfbml4X2FxX2VucShtYm94KTtcbkBAIC0xNTEwLDcgJiM0MzsxNTExLDggQEAgaW50IG90eDJfcG9vbF9hcV9pbml0KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgdTE2IHBvb2xfaWQsXG4gXHRpZiAodHlwZSAhPSBBVVJBX05JWF9SUSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRpZiAoIXRlc3RfYml0KHBvb2xfaWQsIHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHgpKSB7XG4mIzQzO1x0aWYgKHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHggXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICF0ZXN0X2JpdChwb29sX2lkLCBwZnZmLVx1MDAzZWFmX3hkcF96Y19xaWR4KSkge1xuIFx0XHRwcF9wYXJhbXMub3JkZXIgPSBnZXRfb3JkZXIoYnVmX3NpemUpO1xuIFx0XHRwcF9wYXJhbXMuZmxhZ3MgPSBQUF9GTEFHX0RNQV9NQVA7XG4gXHRcdHBwX3BhcmFtcy5wb29sX3NpemUgPSBtaW4oT1RYMl9QQUdFX1BPT0xfU1osIG51bXB0cnMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuY1xuaW5kZXggYTAzNDBmMzQyMmJmOS4uOWJlZTFiOTFlZWFhNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jXG5AQCAtOTM5LDcgJiM0Mzs5MzksOCBAQCBzdGF0aWMgaW50IG90eDJfZ2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyByc3MtXHUwMDNlcnNzX3NpemU7IGlkeCYjNDM7JiM0MzspIHtcbiBcdFx0LyogSWdub3JlIGlmIHRoZSByeCBxdWV1ZSBpcyBBRl9YRFAgemVybyBjb3B5IGVuYWJsZWQgKi9cbi1cdFx0aWYgKHRlc3RfYml0KHJzcy1cdTAwM2VpbmRfdGJsW2lkeF0sIHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHgpKVxuJiM0MztcdFx0aWYgKHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHggXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgdGVzdF9iaXQocnNzLVx1MDAzZWluZF90YmxbaWR4XSwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGluZGlyW2lkeF0gPSByc3MtXHUwMDNlaW5kX3RibFtpZHhdO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3hzay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmNcbmluZGV4IDdkNjdiNGNiYWY3MTYuLjBlOGE2YTY0ODZjNGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml94c2suY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmNcbkBAIC0xOTMsNyAmIzQzOzE5Myw4IEBAIGludCBvdHgyX3hza193YWtldXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHF1ZXVlX2lkLCB1MzIgZmxhZ3MpXG4gXG4gdm9pZCBvdHgyX2F0dGFjaF94c2tfYnVmZihzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHN0cnVjdCBvdHgyX3NuZF9xdWV1ZSAqc3EsIGludCBxaWR4KVxuIHtcbi1cdGlmICh0ZXN0X2JpdChxaWR4LCBwZnZmLVx1MDAzZWFmX3hkcF96Y19xaWR4KSlcbiYjNDM7XHRpZiAocGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgdGVzdF9iaXQocWlkeCwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4gXHRcdHNxLVx1MDAzZXhza19wb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKHBmdmYtXHUwMDNlbmV0ZGV2LCBxaWR4KTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgZHJpdmVyIChPQ1RFT05UWDJfUEYvVkYpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIHBoeXNpY2FsIFBDSWUgY2FyZHMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIHR5cGljYWwgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkNWNhMjA0NTYyOGI0YWNmOGZhMzRjYWE5MmRjM2ZmNDkyMDg4MGEwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMjAgMDk6MzQ6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jCmluZGV4IDNkMjUzMTMyYTE3ZjAuLjhhMzZhYjhhYjE5ZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jCkBAIC0zMzMsNyAmIzQzOzMzMyw4IEBAIGludCBvdHgyX3NldF9yc3NfdGFibGUoc3RydWN0IG90eDJfbmljICpwZnZmLCBpbnQgY3R4X2lkLCBjb25zdCB1MzIgKmluZF90YmwpCiAJLyogR2V0IG1lbW9yeSB0byBwdXQgdGhpcyBtc2cgKi8KIAlmb3IgKGlkeCA9IDA7IGlkeCAmbHQ7IHJzcy0mZ3Q7cnNzX3NpemU7IGlkeCYjNDM7JiM0MzspIHsKIAkJLyogSWdub3JlIHRoZSBxdWV1ZSBpZiBBRl9YRFAgemVybyBjb3B5IGlzIGVuYWJsZWQgKi8KLQkJaWYgKHRlc3RfYml0KGluZF90YmxbaWR4XSwgcGZ2Zi0mZ3Q7YWZfeGRwX3pjX3FpZHgpKQomIzQzOwkJaWYgKHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4ICZhbXA7JmFtcDsKJiM0MzsJCSAgICB0ZXN0X2JpdChpbmRfdGJsW2lkeF0sIHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4KSkKIAkJCWNvbnRpbnVlOwogCiAJCWFxID0gb3R4Ml9tYm94X2FsbG9jX21zZ19uaXhfYXFfZW5xKG1ib3gpOwpAQCAtMTUxMCw3ICYjNDM7MTUxMSw4IEBAIGludCBvdHgyX3Bvb2xfYXFfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBwb29sX2lkLAogCWlmICh0eXBlICE9IEFVUkFfTklYX1JRKQogCQlyZXR1cm4gMDsKIAotCWlmICghdGVzdF9iaXQocG9vbF9pZCwgcGZ2Zi0mZ3Q7YWZfeGRwX3pjX3FpZHgpKSB7CiYjNDM7CWlmIChwZnZmLSZndDthZl94ZHBfemNfcWlkeCAmYW1wOyZhbXA7CiYjNDM7CSAgICAhdGVzdF9iaXQocG9vbF9pZCwgcGZ2Zi0mZ3Q7YWZfeGRwX3pjX3FpZHgpKSB7CiAJCXBwX3BhcmFtcy5vcmRlciA9IGdldF9vcmRlcihidWZfc2l6ZSk7CiAJCXBwX3BhcmFtcy5mbGFncyA9IFBQX0ZMQUdfRE1BX01BUDsKIAkJcHBfcGFyYW1zLnBvb2xfc2l6ZSA9IG1pbihPVFgyX1BBR0VfUE9PTF9TWiwgbnVtcHRycyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9ldGh0b29sLmMKaW5kZXggYTAzNDBmMzQyMmJmOS4uOWJlZTFiOTFlZWFhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuYwpAQCAtOTM5LDcgJiM0Mzs5MzksOCBAQCBzdGF0aWMgaW50IG90eDJfZ2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAogCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgcnNzLSZndDtyc3Nfc2l6ZTsgaWR4JiM0MzsmIzQzOykgewogCQkvKiBJZ25vcmUgaWYgdGhlIHJ4IHF1ZXVlIGlzIEFGX1hEUCB6ZXJvIGNvcHkgZW5hYmxlZCAqLwotCQlpZiAodGVzdF9iaXQocnNzLSZndDtpbmRfdGJsW2lkeF0sIHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4KSkKJiM0MzsJCWlmIChwZnZmLSZndDthZl94ZHBfemNfcWlkeCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgdGVzdF9iaXQocnNzLSZndDtpbmRfdGJsW2lkeF0sIHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4KSkKIAkJCWNvbnRpbnVlOwogCQlpbmRpcltpZHhdID0gcnNzLSZndDtpbmRfdGJsW2lkeF07CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml94c2suYwppbmRleCA3ZDY3YjRjYmFmNzE2Li4wZThhNmE2NDg2YzRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml94c2suYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml94c2suYwpAQCAtMTkzLDcgJiM0MzsxOTMsOCBAQCBpbnQgb3R4Ml94c2tfd2FrZXVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBxdWV1ZV9pZCwgdTMyIGZsYWdzKQogCiB2b2lkIG90eDJfYXR0YWNoX3hza19idWZmKHN0cnVjdCBvdHgyX25pYyAqcGZ2Ziwgc3RydWN0IG90eDJfc25kX3F1ZXVlICpzcSwgaW50IHFpZHgpCiB7Ci0JaWYgKHRlc3RfYml0KHFpZHgsIHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4KSkKJiM0MzsJaWYgKHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4ICZhbXA7JmFtcDsKJiM0MzsJICAgIHRlc3RfYml0KHFpZHgsIHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4KSkKIAkJc3EtJmd0O3hza19wb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKHBmdmYtJmd0O25ldGRldiwgcWlkeCk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGZpbGVzIGRlZXAgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvYCBkaXJlY3RvcnkuIEl0IGxvb2tzIGxpa2UgYSBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgZml4LCBhZGRpbmcgYSBudWxsIGNoZWNrLCBgcGZ2Zi0mZ3Q7YWZfeGRwX3pjX3FpZHggJmFtcDsmYW1wO2AsIGJlZm9yZSBhIGB0ZXN0X2JpdGAgb3BlcmF0aW9uLiBUaGlzIGlzIGdvb2QgcHJhY3RpY2U7IHRoZXkmIzM5O3JlIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIGV2ZW4gYWNjZXNzIG9mIGFuIHVuaW5pdGlhbGl6ZWQgcG9pbnRlci4gQWx3YXlzIGdvb2QgdG8gYXZvaWQgdGhhdCBraW5kIG9mIHN1YnRsZSBidWcuCgpNeSBpbW1lZGlhdGUgcXVlc3Rpb24sIHRob3VnaCwgaXMgYWJvdXQgdGhlIGVudmlyb25tZW50LiBUaGlzIGlzIGEgaGFyZHdhcmUgTklDLCB0aGUgT2N0ZW9uVFgyLiBJdCYjMzk7cyBhIFBDSWUgZGV2aWNlLCByaWdodD8gR2l2ZW4gdGhlIGhhcmR3YXJlIHNwZWNpZmljaXR5IG9mIE9jdGVvblRYMiwgSSYjMzk7bSB0aGlua2luZywgaXMgdGhpcyBkcml2ZXIgKmFjdHVhbGx5KiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0PyBJcyB0aGlzIHNvbWV0aGluZyB0aGF0JiMzOTtzIG9ubHkgcmVsZXZhbnQgaW4gYmFyZS1tZXRhbCBkZXBsb3ltZW50cz8KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoZSBPY3Rlb25UWDIgaXMgZW11bGF0ZWQgc29tZWhvdywgb3IgaWYgdGhpcyBpcyBzb2xlbHkgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyLiBJIGhhdmVu4oCZdCBjb21lIGFjcm9zcyBzdGFuZGFyZCBRRU1VIGltcGxlbWVudGF0aW9ucyB0aGF0IGVtdWxhdGUgdGhlc2UuIE15IGFzc3VtcHRpb24gaXMgdGhhdCwgZ2VuZXJhbGx5LCBNYXJ2ZWxsIE9jdGVvblRYMiBOSUNzIGFyZSBwaHlzaWNhbCBoYXJkd2FyZS4gQnV0IGxldCYjMzk7cyBjaGVjayB0aGUgS2NvbmZpZyBjb25maWd1cmF0aW9uLCB0aGF0IHNob3VsZCByZXZlYWwgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGNvbmZpcm0gdGhlIGVudmlyb25tZW50IHN1cHBvcnQuIFRoYXQgc2hvdWxkIGNsZWFyIHRoaXMgdXAgcHJldHR5IHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE9DVEVPTlRYMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjY6Y29uZmlnIE9DVEVPTlRYMl9NQk9YXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy04LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo5OmNvbmZpZyBPQ1RFT05UWDJfQUZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTAtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozMTpjb25maWcgT0NURU9OVFgyX1BGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjQ1OmNvbmZpZyBPQ1RFT05UWDJfVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTQ1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHRob3VnaCBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIHRleHQsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIE9DVEVPTlRYMl9QRiBLY29uZmlnIEVudHJ5KioKCk9rYXksIHNvIHRoZSBwcm9tcHQgaXMgZGlyZWN0aW5nIG1lIHRvIGV4YW1pbmUgdGhlIEtjb25maWcgZm9yIGBPQ1RFT05UWDJfUEZgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgbGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGRlZmluaXRpb24gdGVsbHMgdXMgYWJvdXQgdGhlIGBPQ1RFT05UWDJfUEZgIHN5bWJvbC4mIzM0OyBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhpczogSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIHJlbGF0ZXMgdG8gdGhlIE9DVEVPTiBUWDImIzM5O3MgUGh5c2ljYWwgRnVuY3Rpb24uIFdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5PyBXaGF0JiMzOTtzIGVuYWJsaW5nL2Rpc2FibGluZyB0aGlzPyBBbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBpdD8gQXJlIHRoZXJlIGFueSBhc3NvY2lhdGVkIHN5bWJvbHMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IHRoZSBkZWZhdWx0IHN0YXRlLCBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIHN5bWJvbHMgKGxpa2UgY29yZSBmZWF0dXJlcywgcGxhdGZvcm0gdHlwZXMsIG9yIGRyaXZlciBzcGVjaWZpYyBvcHRpb25zKSwgYW55IGFzc29jaWF0ZWQgaGVscCB0ZXh0IHRoYXQgZXhwbGFpbnMgdGhlIGZ1bmN0aW9uIG9mIHRoZSBvcHRpb24uIEkgYW50aWNpcGF0ZSBuZWVkaW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIHRvIHRyYWNlIGhvdyB0aGlzIGZsYWcgdWx0aW1hdGVseSBhZmZlY3RzIHRoZSBidWlsZCBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBPQ1RFT05UWDJfUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozMTpjb25maWcgT0NURU9OVFgyX1BGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNzQKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBPQ1RFT05UWDJfUEYqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0xldCYjMzk7cyBjcmFjayBvcGVuIHRoZSBLY29uZmlnIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBPQ1RFT05UWDJfUEYgY29uZmlndXJhdGlvbi4mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwbGF0Zm9ybSBpcyBjb25maWd1cmVkLCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gVGhpcyBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcsIG1ha2luZyBhbnkgbW9kaWZpY2F0aW9ucywgb3IgZXZlbiBqdXN0IGJ1aWxkaW5nIGEgc29saWQgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGlzIHN5c3RlbSB3b3JrcyBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgYSBsb3Qgb2YgY29uZGl0aW9uYWwgc3RhdGVtZW50cywgYm9vbGVhbiBvcHRpb25zLCBhbmQgcG90ZW50aWFsbHkgc29tZSB0cmlzdGF0ZSBjb25maWd1cmF0aW9ucy4gSSYjMzk7bSBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgaGFyZHdhcmUgZmVhdHVyZXMgdGhhdCBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCBieSBkZWZhdWx0LCBhbmQgaG93IHVzZXJzIGNhbiBmaW5lLXR1bmUgdGhlIGJ1aWxkIHRvIHN1aXQgdGhlaXIgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLiBLbm93aW5nIHRoaXMgaW5mb3JtYXRpb24sIG9yIGFueSBpbmZvcm1hdGlvbiwgd2lsbCBoZWxwIG1lIGdldCBzdGFydGVkIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzE6XHRjb25maWcgT0NURU9OVFgyX1BGXG4gIDMyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG4gIDMzOlx0XHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbiAgMzQ6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAzNTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAzNjpcdFx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xuICAzNzpcdFx0ZGVwZW5kcyBvbiAoNjRCSVQgXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcbiAgMzg6XHRcdHNlbGVjdCBESU1MSUJcbiAgMzk6XHRcdGRlcGVuZHMgb24gUENJXG4gIDQwOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDQxOlx0XHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCAhTUFDU0VDXG4gIDQyOlx0XHRoZWxwXG4gIDQzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIE5JQyBwaHlzaWNhbCBmdW5jdGlvbi5cbiAgNDQ6XHRcbiAgNDU6XHRjb25maWcgT0NURU9OVFgyX1ZGXG4gIDQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiAgNDc6XHRcdGRlcGVuZHMgb24gT0NURU9OVFgyX1BGXG4gIDQ4Olx0XHRoZWxwXG4gIDQ5Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIE5JQyB2aXJ0dWFsIGZ1bmN0aW9uLlxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzAKCQkJCQkJCW91dHB1dDogOTAKCQkJCQkJCXRob3VnaHRzOiAxNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgaW50byB0aGlzICYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlci4mIzM0OyBUaGUgZmlyc3QgdGhpbmcgSSBzZWUgaXMgdGhhdCBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgYSBNYXJ2ZWxsIE9jdGVvblRYMiBQQ0llIGNhcmQuIFRoaXMgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSXQgcmVsaWVzIG9uIFBDSSwgYW5kIHdoaWxlIGl0JiMzOTtzIG9mdGVuIGRlcGxveWVkIG9uIEFSTTY0IHN5c3RlbXMsIG9yIHBvdGVudGlhbGx5IGNvbXBpbGVkIGZvciA2NC1iaXQgdGVzdGluZywgdGhhdCBkb2VzbiYjMzk7dCBjaGFuZ2UgdGhlIGNvcmUgaXNzdWUuCgpUaGlzIGlzbiYjMzk7dCBzb21ldGhpbmcgdGhhdCBjYW4gYmUgZWFzaWx5IGVtdWxhdGVkIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIEl0IG5lZWRzIHRoZSBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUuIEdpdmVuIG15IGtub3dsZWRnZSBvZiBmdXp6aW5nIGFuZCB0aGUgdHlwZXMgb2YgZXhjbHVzaW9ucyB3ZSBnZW5lcmFsbHkgYXBwbHksIHRoaXMgZmFsbHMgc3F1YXJlbHkgaW50byB0aGUgY2F0ZWdvcnkgb2Y6ICYjMzQ7Q29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGlzIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlciBhbmQgaXRzIGhhcmR3YXJlIGRlcGVuZGVuY3ksIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS4gVGhlcmUmIzM5O3Mgbm8gZWZmZWN0aXZlIHdheSB0byBmdXp6IHRoaXMgd2l0aG91dCB0aGUgcGh5c2ljYWwgY2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciAoT0NURU9OVFgyX1BGL1ZGKSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciAoT0NURU9OVFgyX1BGL1ZGKSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6MzQ6MzguODIyNTI5NDk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMTMwNzQ2MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciAoT0NURU9OVFgyX1BGL1ZGKSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTozNDozOC44MjI1MzUwNjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODc4ODUxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ1Y2EyMDQ1NjI4YjRhY2Y4ZmEzNGNhYTkyZGMzZmY0OTIwODgwYTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMjAgMDk6MzQ6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uY1xcbmluZGV4IDNkMjUzMTMyYTE3ZjAuLjhhMzZhYjhhYjE5ZWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uY1xcbkBAIC0zMzMsNyArMzMzLDggQEAgaW50IG90eDJfc2V0X3Jzc190YWJsZShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIGludCBjdHhfaWQsIGNvbnN0IHUzMiAqaW5kX3RibClcXG4gXFx0LyogR2V0IG1lbW9yeSB0byBwdXQgdGhpcyBtc2cgKi9cXG4gXFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyByc3MtXFx1MDAzZXJzc19zaXplOyBpZHgrKykge1xcbiBcXHRcXHQvKiBJZ25vcmUgdGhlIHF1ZXVlIGlmIEFGX1hEUCB6ZXJvIGNvcHkgaXMgZW5hYmxlZCAqL1xcbi1cXHRcXHRpZiAodGVzdF9iaXQoaW5kX3RibFtpZHhdLCBwZnZmLVxcdTAwM2VhZl94ZHBfemNfcWlkeCkpXFxuK1xcdFxcdGlmIChwZnZmLVxcdTAwM2VhZl94ZHBfemNfcWlkeCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgdGVzdF9iaXQoaW5kX3RibFtpZHhdLCBwZnZmLVxcdTAwM2VhZl94ZHBfemNfcWlkeCkpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0YXEgPSBvdHgyX21ib3hfYWxsb2NfbXNnX25peF9hcV9lbnEobWJveCk7XFxuQEAgLTE1MTAsNyArMTUxMSw4IEBAIGludCBvdHgyX3Bvb2xfYXFfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBwb29sX2lkLFxcbiBcXHRpZiAodHlwZSAhPSBBVVJBX05JWF9SUSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRpZiAoIXRlc3RfYml0KHBvb2xfaWQsIHBmdmYtXFx1MDAzZWFmX3hkcF96Y19xaWR4KSkge1xcbitcXHRpZiAocGZ2Zi1cXHUwMDNlYWZfeGRwX3pjX3FpZHggXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF0ZXN0X2JpdChwb29sX2lkLCBwZnZmLVxcdTAwM2VhZl94ZHBfemNfcWlkeCkpIHtcXG4gXFx0XFx0cHBfcGFyYW1zLm9yZGVyID0gZ2V0X29yZGVyKGJ1Zl9zaXplKTtcXG4gXFx0XFx0cHBfcGFyYW1zLmZsYWdzID0gUFBfRkxBR19ETUFfTUFQO1xcbiBcXHRcXHRwcF9wYXJhbXMucG9vbF9zaXplID0gbWluKE9UWDJfUEFHRV9QT09MX1NaLCBudW1wdHJzKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jXFxuaW5kZXggYTAzNDBmMzQyMmJmOS4uOWJlZTFiOTFlZWFhNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9ldGh0b29sLmNcXG5AQCAtOTM5LDcgKzkzOSw4IEBAIHN0YXRpYyBpbnQgb3R4Ml9nZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXG4gXFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyByc3MtXFx1MDAzZXJzc19zaXplOyBpZHgrKykge1xcbiBcXHRcXHQvKiBJZ25vcmUgaWYgdGhlIHJ4IHF1ZXVlIGlzIEFGX1hEUCB6ZXJvIGNvcHkgZW5hYmxlZCAqL1xcbi1cXHRcXHRpZiAodGVzdF9iaXQocnNzLVxcdTAwM2VpbmRfdGJsW2lkeF0sIHBmdmYtXFx1MDAzZWFmX3hkcF96Y19xaWR4KSlcXG4rXFx0XFx0aWYgKHBmdmYtXFx1MDAzZWFmX3hkcF96Y19xaWR4IFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICB0ZXN0X2JpdChyc3MtXFx1MDAzZWluZF90YmxbaWR4XSwgcGZ2Zi1cXHUwMDNlYWZfeGRwX3pjX3FpZHgpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0aW5kaXJbaWR4XSA9IHJzcy1cXHUwMDNlaW5kX3RibFtpZHhdO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3hzay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmNcXG5pbmRleCA3ZDY3YjRjYmFmNzE2Li4wZThhNmE2NDg2YzRhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3hzay5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmNcXG5AQCAtMTkzLDcgKzE5Myw4IEBAIGludCBvdHgyX3hza193YWtldXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHF1ZXVlX2lkLCB1MzIgZmxhZ3MpXFxuIFxcbiB2b2lkIG90eDJfYXR0YWNoX3hza19idWZmKHN0cnVjdCBvdHgyX25pYyAqcGZ2Ziwgc3RydWN0IG90eDJfc25kX3F1ZXVlICpzcSwgaW50IHFpZHgpXFxuIHtcXG4tXFx0aWYgKHRlc3RfYml0KHFpZHgsIHBmdmYtXFx1MDAzZWFmX3hkcF96Y19xaWR4KSlcXG4rXFx0aWYgKHBmdmYtXFx1MDAzZWFmX3hkcF96Y19xaWR4IFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICB0ZXN0X2JpdChxaWR4LCBwZnZmLVxcdTAwM2VhZl94ZHBfemNfcWlkeCkpXFxuIFxcdFxcdHNxLVxcdTAwM2V4c2tfcG9vbCA9IHhza19nZXRfcG9vbF9mcm9tX3FpZChwZnZmLVxcdTAwM2VuZXRkZXYsIHFpZHgpO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTozNDozOS4yNzIwOTQ1ODhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxODU2MzQ5NDIyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBkcml2ZXIgKE9DVEVPTlRYMl9QRi9WRiksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgcGh5c2ljYWwgUENJZSBjYXJkcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDVjYTIwNDU2MjhiNGFjZjhmYTM0Y2FhOTJkYzNmZjQ5MjA4ODBhMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDIwIDA5OjM0OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uY1xuaW5kZXggM2QyNTMxMzJhMTdmMC4uOGEzNmFiOGFiMTllZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uY1xuQEAgLTMzMyw3ICszMzMsOCBAQCBpbnQgb3R4Ml9zZXRfcnNzX3RhYmxlKHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgaW50IGN0eF9pZCwgY29uc3QgdTMyICppbmRfdGJsKVxuIFx0LyogR2V0IG1lbW9yeSB0byBwdXQgdGhpcyBtc2cgKi9cbiBcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyByc3MtXHUwMDNlcnNzX3NpemU7IGlkeCsrKSB7XG4gXHRcdC8qIElnbm9yZSB0aGUgcXVldWUgaWYgQUZfWERQIHplcm8gY29weSBpcyBlbmFibGVkICovXG4tXHRcdGlmICh0ZXN0X2JpdChpbmRfdGJsW2lkeF0sIHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHgpKVxuK1x0XHRpZiAocGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHRlc3RfYml0KGluZF90YmxbaWR4XSwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGFxID0gb3R4Ml9tYm94X2FsbG9jX21zZ19uaXhfYXFfZW5xKG1ib3gpO1xuQEAgLTE1MTAsNyArMTUxMSw4IEBAIGludCBvdHgyX3Bvb2xfYXFfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBwb29sX2lkLFxuIFx0aWYgKHR5cGUgIT0gQVVSQV9OSVhfUlEpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0aWYgKCF0ZXN0X2JpdChwb29sX2lkLCBwZnZmLVx1MDAzZWFmX3hkcF96Y19xaWR4KSkge1xuK1x0aWYgKHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHggXHUwMDI2XHUwMDI2XG4rXHQgICAgIXRlc3RfYml0KHBvb2xfaWQsIHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHgpKSB7XG4gXHRcdHBwX3BhcmFtcy5vcmRlciA9IGdldF9vcmRlcihidWZfc2l6ZSk7XG4gXHRcdHBwX3BhcmFtcy5mbGFncyA9IFBQX0ZMQUdfRE1BX01BUDtcbiBcdFx0cHBfcGFyYW1zLnBvb2xfc2l6ZSA9IG1pbihPVFgyX1BBR0VfUE9PTF9TWiwgbnVtcHRycyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jXG5pbmRleCBhMDM0MGYzNDIyYmY5Li45YmVlMWI5MWVlYWE2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9ldGh0b29sLmNcbkBAIC05MzksNyArOTM5LDggQEAgc3RhdGljIGludCBvdHgyX2dldF9yeGZoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgcnNzLVx1MDAzZXJzc19zaXplOyBpZHgrKykge1xuIFx0XHQvKiBJZ25vcmUgaWYgdGhlIHJ4IHF1ZXVlIGlzIEFGX1hEUCB6ZXJvIGNvcHkgZW5hYmxlZCAqL1xuLVx0XHRpZiAodGVzdF9iaXQocnNzLVx1MDAzZWluZF90YmxbaWR4XSwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4rXHRcdGlmIChwZnZmLVx1MDAzZWFmX3hkcF96Y19xaWR4IFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgdGVzdF9iaXQocnNzLVx1MDAzZWluZF90YmxbaWR4XSwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGluZGlyW2lkeF0gPSByc3MtXHUwMDNlaW5kX3RibFtpZHhdO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3hzay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmNcbmluZGV4IDdkNjdiNGNiYWY3MTYuLjBlOGE2YTY0ODZjNGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml94c2suY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmNcbkBAIC0xOTMsNyArMTkzLDggQEAgaW50IG90eDJfeHNrX3dha2V1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcXVldWVfaWQsIHUzMiBmbGFncylcbiBcbiB2b2lkIG90eDJfYXR0YWNoX3hza19idWZmKHN0cnVjdCBvdHgyX25pYyAqcGZ2Ziwgc3RydWN0IG90eDJfc25kX3F1ZXVlICpzcSwgaW50IHFpZHgpXG4ge1xuLVx0aWYgKHRlc3RfYml0KHFpZHgsIHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHgpKVxuK1x0aWYgKHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHggXHUwMDI2XHUwMDI2XG4rXHQgICAgdGVzdF9iaXQocWlkeCwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4gXHRcdHNxLVx1MDAzZXhza19wb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKHBmdmYtXHUwMDNlbmV0ZGV2LCBxaWR4KTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTozNDozOS4yNzIwOTU5NDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE4Mjg3NTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBmaWxlcyBkZWVwIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2AgZGlyZWN0b3J5LiBJdCBsb29rcyBsaWtlIGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIGZpeCwgYWRkaW5nIGEgbnVsbCBjaGVjaywgYHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHggXHUwMDI2XHUwMDI2YCwgYmVmb3JlIGEgYHRlc3RfYml0YCBvcGVyYXRpb24uIFRoaXMgaXMgZ29vZCBwcmFjdGljZTsgdGhleSdyZSBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBldmVuIGFjY2VzcyBvZiBhbiB1bmluaXRpYWxpemVkIHBvaW50ZXIuIEFsd2F5cyBnb29kIHRvIGF2b2lkIHRoYXQga2luZCBvZiBzdWJ0bGUgYnVnLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24sIHRob3VnaCwgaXMgYWJvdXQgdGhlIGVudmlyb25tZW50LiBUaGlzIGlzIGEgaGFyZHdhcmUgTklDLCB0aGUgT2N0ZW9uVFgyLiBJdCdzIGEgUENJZSBkZXZpY2UsIHJpZ2h0PyBHaXZlbiB0aGUgaGFyZHdhcmUgc3BlY2lmaWNpdHkgb2YgT2N0ZW9uVFgyLCBJJ20gdGhpbmtpbmcsIGlzIHRoaXMgZHJpdmVyICphY3R1YWxseSogcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSXMgdGhpcyBzb21ldGhpbmcgdGhhdCdzIG9ubHkgcmVsZXZhbnQgaW4gYmFyZS1tZXRhbCBkZXBsb3ltZW50cz9cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlIE9jdGVvblRYMiBpcyBlbXVsYXRlZCBzb21laG93LCBvciBpZiB0aGlzIGlzIHNvbGVseSBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIuIEkgaGF2ZW7igJl0IGNvbWUgYWNyb3NzIHN0YW5kYXJkIFFFTVUgaW1wbGVtZW50YXRpb25zIHRoYXQgZW11bGF0ZSB0aGVzZS4gTXkgYXNzdW1wdGlvbiBpcyB0aGF0LCBnZW5lcmFsbHksIE1hcnZlbGwgT2N0ZW9uVFgyIE5JQ3MgYXJlIHBoeXNpY2FsIGhhcmR3YXJlLiBCdXQgbGV0J3MgY2hlY2sgdGhlIEtjb25maWcgY29uZmlndXJhdGlvbiwgdGhhdCBzaG91bGQgcmV2ZWFsIHRoZSBidWlsZCBvcHRpb25zIGFuZCBjb25maXJtIHRoZSBlbnZpcm9ubWVudCBzdXBwb3J0LiBUaGF0IHNob3VsZCBjbGVhciB0aGlzIHVwIHByZXR0eSBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDA1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6MzQ6NDQuMzkwMzg1ODM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NzY0MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBPQ1RFT05UWDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjY6Y29uZmlnIE9DVEVPTlRYMl9NQk9YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy03LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6OTpjb25maWcgT0NURU9OVFgyX0FGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MjI9Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzE6Y29uZmlnIE9DVEVPTlRYMl9QRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6NDU6Y29uZmlnIE9DVEVPTlRYMl9WRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6MzQ6NDQuNDQwMTYwNTk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzOTUwNjQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzLCBhcyB0aG91Z2ggSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBwcm92aWRlZCB0ZXh0LCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgT0NURU9OVFgyX1BGIEtjb25maWcgRW50cnkqKlxuXG5Pa2F5LCBzbyB0aGUgcHJvbXB0IGlzIGRpcmVjdGluZyBtZSB0byBleGFtaW5lIHRoZSBLY29uZmlnIGZvciBgT0NURU9OVFgyX1BGYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIGxldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGRlZmluaXRpb24gdGVsbHMgdXMgYWJvdXQgdGhlIGBPQ1RFT05UWDJfUEZgIHN5bWJvbC5cIiBJJ20gbWVudGFsbHkgcGFyc2luZyB0aGlzOiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gcmVsYXRlcyB0byB0aGUgT0NURU9OIFRYMidzIFBoeXNpY2FsIEZ1bmN0aW9uLiBXaGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxheT8gV2hhdCdzIGVuYWJsaW5nL2Rpc2FibGluZyB0aGlzPyBBbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBpdD8gQXJlIHRoZXJlIGFueSBhc3NvY2lhdGVkIHN5bWJvbHMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogdGhlIGRlZmF1bHQgc3RhdGUsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3ltYm9scyAobGlrZSBjb3JlIGZlYXR1cmVzLCBwbGF0Zm9ybSB0eXBlcywgb3IgZHJpdmVyIHNwZWNpZmljIG9wdGlvbnMpLCBhbnkgYXNzb2NpYXRlZCBoZWxwIHRleHQgdGhhdCBleHBsYWlucyB0aGUgZnVuY3Rpb24gb2YgdGhlIG9wdGlvbi4gSSBhbnRpY2lwYXRlIG5lZWRpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9uYWwgbG9naWMgdG8gdHJhY2UgaG93IHRoaXMgZmxhZyB1bHRpbWF0ZWx5IGFmZmVjdHMgdGhlIGJ1aWxkIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NDUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTozNDo0Ny43Nzk2NjkxMDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzNDYyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE9DVEVPTlRYMl9QRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozMTpjb25maWcgT0NURU9OVFgyX1BGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6MzQ6NDcuODI2MDIyMTgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0MjYyOTA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIEtjb25maWcgZm9yIE9DVEVPTlRYMl9QRioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJMZXQncyBjcmFjayBvcGVuIHRoZSBLY29uZmlnIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBPQ1RFT05UWDJfUEYgY29uZmlndXJhdGlvbi5cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwbGF0Zm9ybSBpcyBjb25maWd1cmVkLCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gVGhpcyBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcsIG1ha2luZyBhbnkgbW9kaWZpY2F0aW9ucywgb3IgZXZlbiBqdXN0IGJ1aWxkaW5nIGEgc29saWQgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGlzIHN5c3RlbSB3b3JrcyBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBhIGxvdCBvZiBjb25kaXRpb25hbCBzdGF0ZW1lbnRzLCBib29sZWFuIG9wdGlvbnMsIGFuZCBwb3RlbnRpYWxseSBzb21lIHRyaXN0YXRlIGNvbmZpZ3VyYXRpb25zLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIGhhcmR3YXJlIGZlYXR1cmVzIHRoYXQgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgZGVmYXVsdCwgYW5kIGhvdyB1c2VycyBjYW4gZmluZS10dW5lIHRoZSBidWlsZCB0byBzdWl0IHRoZWlyIHNwZWNpZmljIHJlcXVpcmVtZW50cy4gS25vd2luZyB0aGlzIGluZm9ybWF0aW9uLCBvciBhbnkgaW5mb3JtYXRpb24sIHdpbGwgaGVscCBtZSBnZXQgc3RhcnRlZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NDM3NCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjM0OjUyLjA2ODY1NDFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDMxOlxcdGNvbmZpZyBPQ1RFT05UWDJfUEZcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbiAgMzM6XFx0XFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuICAzNDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDM1OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDM2OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gKDY0QklUIFxcdTAwMjZcXHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcXG4gIDM4OlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gIDM5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA0MTpcXHRcXHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCAhTUFDU0VDXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwncyBPY3Rlb25UWDIgTklDIHBoeXNpY2FsIGZ1bmN0aW9uLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWcgT0NURU9OVFgyX1ZGXFxuICA0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcXG4gIDQ4OlxcdFxcdGhlbHBcXG4gIDQ5OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCdzIE9jdGVvblRYMiBOSUMgdmlydHVhbCBmdW5jdGlvbi5cXG4gIDUwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTozNDo1Mi4wNjg3MjM3MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NjY4MzI4NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGludG8gdGhpcyBcIk1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXIuXCIgVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoYXQgaXQncyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgYSBNYXJ2ZWxsIE9jdGVvblRYMiBQQ0llIGNhcmQuIFRoaXMgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSXQgcmVsaWVzIG9uIFBDSSwgYW5kIHdoaWxlIGl0J3Mgb2Z0ZW4gZGVwbG95ZWQgb24gQVJNNjQgc3lzdGVtcywgb3IgcG90ZW50aWFsbHkgY29tcGlsZWQgZm9yIDY0LWJpdCB0ZXN0aW5nLCB0aGF0IGRvZXNuJ3QgY2hhbmdlIHRoZSBjb3JlIGlzc3VlLlxuXG5UaGlzIGlzbid0IHNvbWV0aGluZyB0aGF0IGNhbiBiZSBlYXNpbHkgZW11bGF0ZWQgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gSXQgbmVlZHMgdGhlIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gR2l2ZW4gbXkga25vd2xlZGdlIG9mIGZ1enppbmcgYW5kIHRoZSB0eXBlcyBvZiBleGNsdXNpb25zIHdlIGdlbmVyYWxseSBhcHBseSwgdGhpcyBmYWxscyBzcXVhcmVseSBpbnRvIHRoZSBjYXRlZ29yeSBvZjogXCJDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiXG5cblRoZXJlZm9yZSwgYmFzZWQgb24gdGhpcyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkcml2ZXIgYW5kIGl0cyBoYXJkd2FyZSBkZXBlbmRlbmN5LCBJJ20gZ29pbmcgdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS4gVGhlcmUncyBubyBlZmZlY3RpdmUgd2F5IHRvIGZ1enogdGhpcyB3aXRob3V0IHRoZSBwaHlzaWNhbCBjYXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTMwLCJPdXRwdXRUb2tlbnMiOjkwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6MzQ6NTcuODM1NTU5MzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciAoT0NURU9OVFgyX1BGL1ZGKSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciAoT0NURU9OVFgyX1BGL1ZGKSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTozNDo1Ny44MzU1OTA3NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowmvsvm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-20 09:19:21 +0000 UTC FinishedAt: 2026-08-20 09:34:58 +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+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBkcml2ZXIgKE9DVEVPTlRYMl9QRi9WRiksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgcGh5c2ljYWwgUENJZSBjYXJkcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ1Y2EyMDQ1NjI4YjRhY2Y4ZmEzNGNhYTkyZGMzZmY0OTIwODgwYTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwOTozNDozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jXG5pbmRleCAzZDI1MzEzMmExN2YwLi44YTM2YWI4YWIxOWVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jXG5AQCAtMzMzLDcgJiM0MzszMzMsOCBAQCBpbnQgb3R4Ml9zZXRfcnNzX3RhYmxlKHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgaW50IGN0eF9pZCwgY29uc3QgdTMyICppbmRfdGJsKVxuIFx0LyogR2V0IG1lbW9yeSB0byBwdXQgdGhpcyBtc2cgKi9cbiBcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyByc3MtXHUwMDNlcnNzX3NpemU7IGlkeCYjNDM7JiM0MzspIHtcbiBcdFx0LyogSWdub3JlIHRoZSBxdWV1ZSBpZiBBRl9YRFAgemVybyBjb3B5IGlzIGVuYWJsZWQgKi9cbi1cdFx0aWYgKHRlc3RfYml0KGluZF90YmxbaWR4XSwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4mIzQzO1x0XHRpZiAocGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICB0ZXN0X2JpdChpbmRfdGJsW2lkeF0sIHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHgpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRhcSA9IG90eDJfbWJveF9hbGxvY19tc2dfbml4X2FxX2VucShtYm94KTtcbkBAIC0xNTEwLDcgJiM0MzsxNTExLDggQEAgaW50IG90eDJfcG9vbF9hcV9pbml0KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgdTE2IHBvb2xfaWQsXG4gXHRpZiAodHlwZSAhPSBBVVJBX05JWF9SUSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRpZiAoIXRlc3RfYml0KHBvb2xfaWQsIHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHgpKSB7XG4mIzQzO1x0aWYgKHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHggXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICF0ZXN0X2JpdChwb29sX2lkLCBwZnZmLVx1MDAzZWFmX3hkcF96Y19xaWR4KSkge1xuIFx0XHRwcF9wYXJhbXMub3JkZXIgPSBnZXRfb3JkZXIoYnVmX3NpemUpO1xuIFx0XHRwcF9wYXJhbXMuZmxhZ3MgPSBQUF9GTEFHX0RNQV9NQVA7XG4gXHRcdHBwX3BhcmFtcy5wb29sX3NpemUgPSBtaW4oT1RYMl9QQUdFX1BPT0xfU1osIG51bXB0cnMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuY1xuaW5kZXggYTAzNDBmMzQyMmJmOS4uOWJlZTFiOTFlZWFhNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jXG5AQCAtOTM5LDcgJiM0Mzs5MzksOCBAQCBzdGF0aWMgaW50IG90eDJfZ2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyByc3MtXHUwMDNlcnNzX3NpemU7IGlkeCYjNDM7JiM0MzspIHtcbiBcdFx0LyogSWdub3JlIGlmIHRoZSByeCBxdWV1ZSBpcyBBRl9YRFAgemVybyBjb3B5IGVuYWJsZWQgKi9cbi1cdFx0aWYgKHRlc3RfYml0KHJzcy1cdTAwM2VpbmRfdGJsW2lkeF0sIHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHgpKVxuJiM0MztcdFx0aWYgKHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHggXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgdGVzdF9iaXQocnNzLVx1MDAzZWluZF90YmxbaWR4XSwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGluZGlyW2lkeF0gPSByc3MtXHUwMDNlaW5kX3RibFtpZHhdO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3hzay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmNcbmluZGV4IDdkNjdiNGNiYWY3MTYuLjBlOGE2YTY0ODZjNGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml94c2suY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmNcbkBAIC0xOTMsNyAmIzQzOzE5Myw4IEBAIGludCBvdHgyX3hza193YWtldXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHF1ZXVlX2lkLCB1MzIgZmxhZ3MpXG4gXG4gdm9pZCBvdHgyX2F0dGFjaF94c2tfYnVmZihzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHN0cnVjdCBvdHgyX3NuZF9xdWV1ZSAqc3EsIGludCBxaWR4KVxuIHtcbi1cdGlmICh0ZXN0X2JpdChxaWR4LCBwZnZmLVx1MDAzZWFmX3hkcF96Y19xaWR4KSlcbiYjNDM7XHRpZiAocGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgdGVzdF9iaXQocWlkeCwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4gXHRcdHNxLVx1MDAzZXhza19wb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKHBmdmYtXHUwMDNlbmV0ZGV2LCBxaWR4KTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgZHJpdmVyIChPQ1RFT05UWDJfUEYvVkYpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIHBoeXNpY2FsIFBDSWUgY2FyZHMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIHR5cGljYWwgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkNWNhMjA0NTYyOGI0YWNmOGZhMzRjYWE5MmRjM2ZmNDkyMDg4MGEwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMjAgMDk6MzQ6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jCmluZGV4IDNkMjUzMTMyYTE3ZjAuLjhhMzZhYjhhYjE5ZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jCkBAIC0zMzMsNyAmIzQzOzMzMyw4IEBAIGludCBvdHgyX3NldF9yc3NfdGFibGUoc3RydWN0IG90eDJfbmljICpwZnZmLCBpbnQgY3R4X2lkLCBjb25zdCB1MzIgKmluZF90YmwpCiAJLyogR2V0IG1lbW9yeSB0byBwdXQgdGhpcyBtc2cgKi8KIAlmb3IgKGlkeCA9IDA7IGlkeCAmbHQ7IHJzcy0mZ3Q7cnNzX3NpemU7IGlkeCYjNDM7JiM0MzspIHsKIAkJLyogSWdub3JlIHRoZSBxdWV1ZSBpZiBBRl9YRFAgemVybyBjb3B5IGlzIGVuYWJsZWQgKi8KLQkJaWYgKHRlc3RfYml0KGluZF90YmxbaWR4XSwgcGZ2Zi0mZ3Q7YWZfeGRwX3pjX3FpZHgpKQomIzQzOwkJaWYgKHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4ICZhbXA7JmFtcDsKJiM0MzsJCSAgICB0ZXN0X2JpdChpbmRfdGJsW2lkeF0sIHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4KSkKIAkJCWNvbnRpbnVlOwogCiAJCWFxID0gb3R4Ml9tYm94X2FsbG9jX21zZ19uaXhfYXFfZW5xKG1ib3gpOwpAQCAtMTUxMCw3ICYjNDM7MTUxMSw4IEBAIGludCBvdHgyX3Bvb2xfYXFfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBwb29sX2lkLAogCWlmICh0eXBlICE9IEFVUkFfTklYX1JRKQogCQlyZXR1cm4gMDsKIAotCWlmICghdGVzdF9iaXQocG9vbF9pZCwgcGZ2Zi0mZ3Q7YWZfeGRwX3pjX3FpZHgpKSB7CiYjNDM7CWlmIChwZnZmLSZndDthZl94ZHBfemNfcWlkeCAmYW1wOyZhbXA7CiYjNDM7CSAgICAhdGVzdF9iaXQocG9vbF9pZCwgcGZ2Zi0mZ3Q7YWZfeGRwX3pjX3FpZHgpKSB7CiAJCXBwX3BhcmFtcy5vcmRlciA9IGdldF9vcmRlcihidWZfc2l6ZSk7CiAJCXBwX3BhcmFtcy5mbGFncyA9IFBQX0ZMQUdfRE1BX01BUDsKIAkJcHBfcGFyYW1zLnBvb2xfc2l6ZSA9IG1pbihPVFgyX1BBR0VfUE9PTF9TWiwgbnVtcHRycyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9ldGh0b29sLmMKaW5kZXggYTAzNDBmMzQyMmJmOS4uOWJlZTFiOTFlZWFhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuYwpAQCAtOTM5LDcgJiM0Mzs5MzksOCBAQCBzdGF0aWMgaW50IG90eDJfZ2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAogCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgcnNzLSZndDtyc3Nfc2l6ZTsgaWR4JiM0MzsmIzQzOykgewogCQkvKiBJZ25vcmUgaWYgdGhlIHJ4IHF1ZXVlIGlzIEFGX1hEUCB6ZXJvIGNvcHkgZW5hYmxlZCAqLwotCQlpZiAodGVzdF9iaXQocnNzLSZndDtpbmRfdGJsW2lkeF0sIHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4KSkKJiM0MzsJCWlmIChwZnZmLSZndDthZl94ZHBfemNfcWlkeCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgdGVzdF9iaXQocnNzLSZndDtpbmRfdGJsW2lkeF0sIHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4KSkKIAkJCWNvbnRpbnVlOwogCQlpbmRpcltpZHhdID0gcnNzLSZndDtpbmRfdGJsW2lkeF07CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml94c2suYwppbmRleCA3ZDY3YjRjYmFmNzE2Li4wZThhNmE2NDg2YzRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml94c2suYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml94c2suYwpAQCAtMTkzLDcgJiM0MzsxOTMsOCBAQCBpbnQgb3R4Ml94c2tfd2FrZXVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBxdWV1ZV9pZCwgdTMyIGZsYWdzKQogCiB2b2lkIG90eDJfYXR0YWNoX3hza19idWZmKHN0cnVjdCBvdHgyX25pYyAqcGZ2Ziwgc3RydWN0IG90eDJfc25kX3F1ZXVlICpzcSwgaW50IHFpZHgpCiB7Ci0JaWYgKHRlc3RfYml0KHFpZHgsIHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4KSkKJiM0MzsJaWYgKHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4ICZhbXA7JmFtcDsKJiM0MzsJICAgIHRlc3RfYml0KHFpZHgsIHBmdmYtJmd0O2FmX3hkcF96Y19xaWR4KSkKIAkJc3EtJmd0O3hza19wb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKHBmdmYtJmd0O25ldGRldiwgcWlkeCk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGZpbGVzIGRlZXAgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvYCBkaXJlY3RvcnkuIEl0IGxvb2tzIGxpa2UgYSBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgZml4LCBhZGRpbmcgYSBudWxsIGNoZWNrLCBgcGZ2Zi0mZ3Q7YWZfeGRwX3pjX3FpZHggJmFtcDsmYW1wO2AsIGJlZm9yZSBhIGB0ZXN0X2JpdGAgb3BlcmF0aW9uLiBUaGlzIGlzIGdvb2QgcHJhY3RpY2U7IHRoZXkmIzM5O3JlIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIGV2ZW4gYWNjZXNzIG9mIGFuIHVuaW5pdGlhbGl6ZWQgcG9pbnRlci4gQWx3YXlzIGdvb2QgdG8gYXZvaWQgdGhhdCBraW5kIG9mIHN1YnRsZSBidWcuCgpNeSBpbW1lZGlhdGUgcXVlc3Rpb24sIHRob3VnaCwgaXMgYWJvdXQgdGhlIGVudmlyb25tZW50LiBUaGlzIGlzIGEgaGFyZHdhcmUgTklDLCB0aGUgT2N0ZW9uVFgyLiBJdCYjMzk7cyBhIFBDSWUgZGV2aWNlLCByaWdodD8gR2l2ZW4gdGhlIGhhcmR3YXJlIHNwZWNpZmljaXR5IG9mIE9jdGVvblRYMiwgSSYjMzk7bSB0aGlua2luZywgaXMgdGhpcyBkcml2ZXIgKmFjdHVhbGx5KiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0PyBJcyB0aGlzIHNvbWV0aGluZyB0aGF0JiMzOTtzIG9ubHkgcmVsZXZhbnQgaW4gYmFyZS1tZXRhbCBkZXBsb3ltZW50cz8KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoZSBPY3Rlb25UWDIgaXMgZW11bGF0ZWQgc29tZWhvdywgb3IgaWYgdGhpcyBpcyBzb2xlbHkgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyLiBJIGhhdmVu4oCZdCBjb21lIGFjcm9zcyBzdGFuZGFyZCBRRU1VIGltcGxlbWVudGF0aW9ucyB0aGF0IGVtdWxhdGUgdGhlc2UuIE15IGFzc3VtcHRpb24gaXMgdGhhdCwgZ2VuZXJhbGx5LCBNYXJ2ZWxsIE9jdGVvblRYMiBOSUNzIGFyZSBwaHlzaWNhbCBoYXJkd2FyZS4gQnV0IGxldCYjMzk7cyBjaGVjayB0aGUgS2NvbmZpZyBjb25maWd1cmF0aW9uLCB0aGF0IHNob3VsZCByZXZlYWwgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGNvbmZpcm0gdGhlIGVudmlyb25tZW50IHN1cHBvcnQuIFRoYXQgc2hvdWxkIGNsZWFyIHRoaXMgdXAgcHJldHR5IHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE9DVEVPTlRYMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjY6Y29uZmlnIE9DVEVPTlRYMl9NQk9YXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy04LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo5OmNvbmZpZyBPQ1RFT05UWDJfQUZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTAtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozMTpjb25maWcgT0NURU9OVFgyX1BGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjQ1OmNvbmZpZyBPQ1RFT05UWDJfVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTQ1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHRob3VnaCBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIHRleHQsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIE9DVEVPTlRYMl9QRiBLY29uZmlnIEVudHJ5KioKCk9rYXksIHNvIHRoZSBwcm9tcHQgaXMgZGlyZWN0aW5nIG1lIHRvIGV4YW1pbmUgdGhlIEtjb25maWcgZm9yIGBPQ1RFT05UWDJfUEZgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgbGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGRlZmluaXRpb24gdGVsbHMgdXMgYWJvdXQgdGhlIGBPQ1RFT05UWDJfUEZgIHN5bWJvbC4mIzM0OyBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhpczogSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIHJlbGF0ZXMgdG8gdGhlIE9DVEVPTiBUWDImIzM5O3MgUGh5c2ljYWwgRnVuY3Rpb24uIFdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5PyBXaGF0JiMzOTtzIGVuYWJsaW5nL2Rpc2FibGluZyB0aGlzPyBBbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBpdD8gQXJlIHRoZXJlIGFueSBhc3NvY2lhdGVkIHN5bWJvbHMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IHRoZSBkZWZhdWx0IHN0YXRlLCBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIHN5bWJvbHMgKGxpa2UgY29yZSBmZWF0dXJlcywgcGxhdGZvcm0gdHlwZXMsIG9yIGRyaXZlciBzcGVjaWZpYyBvcHRpb25zKSwgYW55IGFzc29jaWF0ZWQgaGVscCB0ZXh0IHRoYXQgZXhwbGFpbnMgdGhlIGZ1bmN0aW9uIG9mIHRoZSBvcHRpb24uIEkgYW50aWNpcGF0ZSBuZWVkaW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIHRvIHRyYWNlIGhvdyB0aGlzIGZsYWcgdWx0aW1hdGVseSBhZmZlY3RzIHRoZSBidWlsZCBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBPQ1RFT05UWDJfUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozMTpjb25maWcgT0NURU9OVFgyX1BGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNzQKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBPQ1RFT05UWDJfUEYqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0xldCYjMzk7cyBjcmFjayBvcGVuIHRoZSBLY29uZmlnIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBPQ1RFT05UWDJfUEYgY29uZmlndXJhdGlvbi4mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwbGF0Zm9ybSBpcyBjb25maWd1cmVkLCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gVGhpcyBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcsIG1ha2luZyBhbnkgbW9kaWZpY2F0aW9ucywgb3IgZXZlbiBqdXN0IGJ1aWxkaW5nIGEgc29saWQgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGlzIHN5c3RlbSB3b3JrcyBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgYSBsb3Qgb2YgY29uZGl0aW9uYWwgc3RhdGVtZW50cywgYm9vbGVhbiBvcHRpb25zLCBhbmQgcG90ZW50aWFsbHkgc29tZSB0cmlzdGF0ZSBjb25maWd1cmF0aW9ucy4gSSYjMzk7bSBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgaGFyZHdhcmUgZmVhdHVyZXMgdGhhdCBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCBieSBkZWZhdWx0LCBhbmQgaG93IHVzZXJzIGNhbiBmaW5lLXR1bmUgdGhlIGJ1aWxkIHRvIHN1aXQgdGhlaXIgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLiBLbm93aW5nIHRoaXMgaW5mb3JtYXRpb24sIG9yIGFueSBpbmZvcm1hdGlvbiwgd2lsbCBoZWxwIG1lIGdldCBzdGFydGVkIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzE6XHRjb25maWcgT0NURU9OVFgyX1BGXG4gIDMyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG4gIDMzOlx0XHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbiAgMzQ6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAzNTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAzNjpcdFx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xuICAzNzpcdFx0ZGVwZW5kcyBvbiAoNjRCSVQgXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcbiAgMzg6XHRcdHNlbGVjdCBESU1MSUJcbiAgMzk6XHRcdGRlcGVuZHMgb24gUENJXG4gIDQwOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDQxOlx0XHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCAhTUFDU0VDXG4gIDQyOlx0XHRoZWxwXG4gIDQzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIE5JQyBwaHlzaWNhbCBmdW5jdGlvbi5cbiAgNDQ6XHRcbiAgNDU6XHRjb25maWcgT0NURU9OVFgyX1ZGXG4gIDQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiAgNDc6XHRcdGRlcGVuZHMgb24gT0NURU9OVFgyX1BGXG4gIDQ4Olx0XHRoZWxwXG4gIDQ5Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIE5JQyB2aXJ0dWFsIGZ1bmN0aW9uLlxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzAKCQkJCQkJCW91dHB1dDogOTAKCQkJCQkJCXRob3VnaHRzOiAxNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgaW50byB0aGlzICYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlci4mIzM0OyBUaGUgZmlyc3QgdGhpbmcgSSBzZWUgaXMgdGhhdCBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgYSBNYXJ2ZWxsIE9jdGVvblRYMiBQQ0llIGNhcmQuIFRoaXMgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSXQgcmVsaWVzIG9uIFBDSSwgYW5kIHdoaWxlIGl0JiMzOTtzIG9mdGVuIGRlcGxveWVkIG9uIEFSTTY0IHN5c3RlbXMsIG9yIHBvdGVudGlhbGx5IGNvbXBpbGVkIGZvciA2NC1iaXQgdGVzdGluZywgdGhhdCBkb2VzbiYjMzk7dCBjaGFuZ2UgdGhlIGNvcmUgaXNzdWUuCgpUaGlzIGlzbiYjMzk7dCBzb21ldGhpbmcgdGhhdCBjYW4gYmUgZWFzaWx5IGVtdWxhdGVkIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIEl0IG5lZWRzIHRoZSBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUuIEdpdmVuIG15IGtub3dsZWRnZSBvZiBmdXp6aW5nIGFuZCB0aGUgdHlwZXMgb2YgZXhjbHVzaW9ucyB3ZSBnZW5lcmFsbHkgYXBwbHksIHRoaXMgZmFsbHMgc3F1YXJlbHkgaW50byB0aGUgY2F0ZWdvcnkgb2Y6ICYjMzQ7Q29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGlzIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlciBhbmQgaXRzIGhhcmR3YXJlIGRlcGVuZGVuY3ksIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS4gVGhlcmUmIzM5O3Mgbm8gZWZmZWN0aXZlIHdheSB0byBmdXp6IHRoaXMgd2l0aG91dCB0aGUgcGh5c2ljYWwgY2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciAoT0NURU9OVFgyX1BGL1ZGKSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciAoT0NURU9OVFgyX1BGL1ZGKSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6MzQ6MzguODIyNTI5NDk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMTMwNzQ2MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciAoT0NURU9OVFgyX1BGL1ZGKSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTozNDozOC44MjI1MzUwNjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODc4ODUxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ1Y2EyMDQ1NjI4YjRhY2Y4ZmEzNGNhYTkyZGMzZmY0OTIwODgwYTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMjAgMDk6MzQ6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uY1xcbmluZGV4IDNkMjUzMTMyYTE3ZjAuLjhhMzZhYjhhYjE5ZWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uY1xcbkBAIC0zMzMsNyArMzMzLDggQEAgaW50IG90eDJfc2V0X3Jzc190YWJsZShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIGludCBjdHhfaWQsIGNvbnN0IHUzMiAqaW5kX3RibClcXG4gXFx0LyogR2V0IG1lbW9yeSB0byBwdXQgdGhpcyBtc2cgKi9cXG4gXFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyByc3MtXFx1MDAzZXJzc19zaXplOyBpZHgrKykge1xcbiBcXHRcXHQvKiBJZ25vcmUgdGhlIHF1ZXVlIGlmIEFGX1hEUCB6ZXJvIGNvcHkgaXMgZW5hYmxlZCAqL1xcbi1cXHRcXHRpZiAodGVzdF9iaXQoaW5kX3RibFtpZHhdLCBwZnZmLVxcdTAwM2VhZl94ZHBfemNfcWlkeCkpXFxuK1xcdFxcdGlmIChwZnZmLVxcdTAwM2VhZl94ZHBfemNfcWlkeCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgdGVzdF9iaXQoaW5kX3RibFtpZHhdLCBwZnZmLVxcdTAwM2VhZl94ZHBfemNfcWlkeCkpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0YXEgPSBvdHgyX21ib3hfYWxsb2NfbXNnX25peF9hcV9lbnEobWJveCk7XFxuQEAgLTE1MTAsNyArMTUxMSw4IEBAIGludCBvdHgyX3Bvb2xfYXFfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBwb29sX2lkLFxcbiBcXHRpZiAodHlwZSAhPSBBVVJBX05JWF9SUSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRpZiAoIXRlc3RfYml0KHBvb2xfaWQsIHBmdmYtXFx1MDAzZWFmX3hkcF96Y19xaWR4KSkge1xcbitcXHRpZiAocGZ2Zi1cXHUwMDNlYWZfeGRwX3pjX3FpZHggXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF0ZXN0X2JpdChwb29sX2lkLCBwZnZmLVxcdTAwM2VhZl94ZHBfemNfcWlkeCkpIHtcXG4gXFx0XFx0cHBfcGFyYW1zLm9yZGVyID0gZ2V0X29yZGVyKGJ1Zl9zaXplKTtcXG4gXFx0XFx0cHBfcGFyYW1zLmZsYWdzID0gUFBfRkxBR19ETUFfTUFQO1xcbiBcXHRcXHRwcF9wYXJhbXMucG9vbF9zaXplID0gbWluKE9UWDJfUEFHRV9QT09MX1NaLCBudW1wdHJzKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jXFxuaW5kZXggYTAzNDBmMzQyMmJmOS4uOWJlZTFiOTFlZWFhNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9ldGh0b29sLmNcXG5AQCAtOTM5LDcgKzkzOSw4IEBAIHN0YXRpYyBpbnQgb3R4Ml9nZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXG4gXFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyByc3MtXFx1MDAzZXJzc19zaXplOyBpZHgrKykge1xcbiBcXHRcXHQvKiBJZ25vcmUgaWYgdGhlIHJ4IHF1ZXVlIGlzIEFGX1hEUCB6ZXJvIGNvcHkgZW5hYmxlZCAqL1xcbi1cXHRcXHRpZiAodGVzdF9iaXQocnNzLVxcdTAwM2VpbmRfdGJsW2lkeF0sIHBmdmYtXFx1MDAzZWFmX3hkcF96Y19xaWR4KSlcXG4rXFx0XFx0aWYgKHBmdmYtXFx1MDAzZWFmX3hkcF96Y19xaWR4IFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICB0ZXN0X2JpdChyc3MtXFx1MDAzZWluZF90YmxbaWR4XSwgcGZ2Zi1cXHUwMDNlYWZfeGRwX3pjX3FpZHgpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0aW5kaXJbaWR4XSA9IHJzcy1cXHUwMDNlaW5kX3RibFtpZHhdO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3hzay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmNcXG5pbmRleCA3ZDY3YjRjYmFmNzE2Li4wZThhNmE2NDg2YzRhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3hzay5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmNcXG5AQCAtMTkzLDcgKzE5Myw4IEBAIGludCBvdHgyX3hza193YWtldXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHF1ZXVlX2lkLCB1MzIgZmxhZ3MpXFxuIFxcbiB2b2lkIG90eDJfYXR0YWNoX3hza19idWZmKHN0cnVjdCBvdHgyX25pYyAqcGZ2Ziwgc3RydWN0IG90eDJfc25kX3F1ZXVlICpzcSwgaW50IHFpZHgpXFxuIHtcXG4tXFx0aWYgKHRlc3RfYml0KHFpZHgsIHBmdmYtXFx1MDAzZWFmX3hkcF96Y19xaWR4KSlcXG4rXFx0aWYgKHBmdmYtXFx1MDAzZWFmX3hkcF96Y19xaWR4IFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICB0ZXN0X2JpdChxaWR4LCBwZnZmLVxcdTAwM2VhZl94ZHBfemNfcWlkeCkpXFxuIFxcdFxcdHNxLVxcdTAwM2V4c2tfcG9vbCA9IHhza19nZXRfcG9vbF9mcm9tX3FpZChwZnZmLVxcdTAwM2VuZXRkZXYsIHFpZHgpO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTozNDozOS4yNzIwOTQ1ODhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxODU2MzQ5NDIyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBkcml2ZXIgKE9DVEVPTlRYMl9QRi9WRiksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgcGh5c2ljYWwgUENJZSBjYXJkcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDVjYTIwNDU2MjhiNGFjZjhmYTM0Y2FhOTJkYzNmZjQ5MjA4ODBhMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDIwIDA5OjM0OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uY1xuaW5kZXggM2QyNTMxMzJhMTdmMC4uOGEzNmFiOGFiMTllZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uY1xuQEAgLTMzMyw3ICszMzMsOCBAQCBpbnQgb3R4Ml9zZXRfcnNzX3RhYmxlKHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgaW50IGN0eF9pZCwgY29uc3QgdTMyICppbmRfdGJsKVxuIFx0LyogR2V0IG1lbW9yeSB0byBwdXQgdGhpcyBtc2cgKi9cbiBcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyByc3MtXHUwMDNlcnNzX3NpemU7IGlkeCsrKSB7XG4gXHRcdC8qIElnbm9yZSB0aGUgcXVldWUgaWYgQUZfWERQIHplcm8gY29weSBpcyBlbmFibGVkICovXG4tXHRcdGlmICh0ZXN0X2JpdChpbmRfdGJsW2lkeF0sIHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHgpKVxuK1x0XHRpZiAocGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHRlc3RfYml0KGluZF90YmxbaWR4XSwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGFxID0gb3R4Ml9tYm94X2FsbG9jX21zZ19uaXhfYXFfZW5xKG1ib3gpO1xuQEAgLTE1MTAsNyArMTUxMSw4IEBAIGludCBvdHgyX3Bvb2xfYXFfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBwb29sX2lkLFxuIFx0aWYgKHR5cGUgIT0gQVVSQV9OSVhfUlEpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0aWYgKCF0ZXN0X2JpdChwb29sX2lkLCBwZnZmLVx1MDAzZWFmX3hkcF96Y19xaWR4KSkge1xuK1x0aWYgKHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHggXHUwMDI2XHUwMDI2XG4rXHQgICAgIXRlc3RfYml0KHBvb2xfaWQsIHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHgpKSB7XG4gXHRcdHBwX3BhcmFtcy5vcmRlciA9IGdldF9vcmRlcihidWZfc2l6ZSk7XG4gXHRcdHBwX3BhcmFtcy5mbGFncyA9IFBQX0ZMQUdfRE1BX01BUDtcbiBcdFx0cHBfcGFyYW1zLnBvb2xfc2l6ZSA9IG1pbihPVFgyX1BBR0VfUE9PTF9TWiwgbnVtcHRycyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jXG5pbmRleCBhMDM0MGYzNDIyYmY5Li45YmVlMWI5MWVlYWE2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9ldGh0b29sLmNcbkBAIC05MzksNyArOTM5LDggQEAgc3RhdGljIGludCBvdHgyX2dldF9yeGZoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgcnNzLVx1MDAzZXJzc19zaXplOyBpZHgrKykge1xuIFx0XHQvKiBJZ25vcmUgaWYgdGhlIHJ4IHF1ZXVlIGlzIEFGX1hEUCB6ZXJvIGNvcHkgZW5hYmxlZCAqL1xuLVx0XHRpZiAodGVzdF9iaXQocnNzLVx1MDAzZWluZF90YmxbaWR4XSwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4rXHRcdGlmIChwZnZmLVx1MDAzZWFmX3hkcF96Y19xaWR4IFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgdGVzdF9iaXQocnNzLVx1MDAzZWluZF90YmxbaWR4XSwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGluZGlyW2lkeF0gPSByc3MtXHUwMDNlaW5kX3RibFtpZHhdO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3hzay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmNcbmluZGV4IDdkNjdiNGNiYWY3MTYuLjBlOGE2YTY0ODZjNGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml94c2suY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfeHNrLmNcbkBAIC0xOTMsNyArMTkzLDggQEAgaW50IG90eDJfeHNrX3dha2V1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcXVldWVfaWQsIHUzMiBmbGFncylcbiBcbiB2b2lkIG90eDJfYXR0YWNoX3hza19idWZmKHN0cnVjdCBvdHgyX25pYyAqcGZ2Ziwgc3RydWN0IG90eDJfc25kX3F1ZXVlICpzcSwgaW50IHFpZHgpXG4ge1xuLVx0aWYgKHRlc3RfYml0KHFpZHgsIHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHgpKVxuK1x0aWYgKHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHggXHUwMDI2XHUwMDI2XG4rXHQgICAgdGVzdF9iaXQocWlkeCwgcGZ2Zi1cdTAwM2VhZl94ZHBfemNfcWlkeCkpXG4gXHRcdHNxLVx1MDAzZXhza19wb29sID0geHNrX2dldF9wb29sX2Zyb21fcWlkKHBmdmYtXHUwMDNlbmV0ZGV2LCBxaWR4KTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTozNDozOS4yNzIwOTU5NDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE4Mjg3NTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBmaWxlcyBkZWVwIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2AgZGlyZWN0b3J5LiBJdCBsb29rcyBsaWtlIGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIGZpeCwgYWRkaW5nIGEgbnVsbCBjaGVjaywgYHBmdmYtXHUwMDNlYWZfeGRwX3pjX3FpZHggXHUwMDI2XHUwMDI2YCwgYmVmb3JlIGEgYHRlc3RfYml0YCBvcGVyYXRpb24uIFRoaXMgaXMgZ29vZCBwcmFjdGljZTsgdGhleSdyZSBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBldmVuIGFjY2VzcyBvZiBhbiB1bmluaXRpYWxpemVkIHBvaW50ZXIuIEFsd2F5cyBnb29kIHRvIGF2b2lkIHRoYXQga2luZCBvZiBzdWJ0bGUgYnVnLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24sIHRob3VnaCwgaXMgYWJvdXQgdGhlIGVudmlyb25tZW50LiBUaGlzIGlzIGEgaGFyZHdhcmUgTklDLCB0aGUgT2N0ZW9uVFgyLiBJdCdzIGEgUENJZSBkZXZpY2UsIHJpZ2h0PyBHaXZlbiB0aGUgaGFyZHdhcmUgc3BlY2lmaWNpdHkgb2YgT2N0ZW9uVFgyLCBJJ20gdGhpbmtpbmcsIGlzIHRoaXMgZHJpdmVyICphY3R1YWxseSogcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSXMgdGhpcyBzb21ldGhpbmcgdGhhdCdzIG9ubHkgcmVsZXZhbnQgaW4gYmFyZS1tZXRhbCBkZXBsb3ltZW50cz9cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlIE9jdGVvblRYMiBpcyBlbXVsYXRlZCBzb21laG93LCBvciBpZiB0aGlzIGlzIHNvbGVseSBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIuIEkgaGF2ZW7igJl0IGNvbWUgYWNyb3NzIHN0YW5kYXJkIFFFTVUgaW1wbGVtZW50YXRpb25zIHRoYXQgZW11bGF0ZSB0aGVzZS4gTXkgYXNzdW1wdGlvbiBpcyB0aGF0LCBnZW5lcmFsbHksIE1hcnZlbGwgT2N0ZW9uVFgyIE5JQ3MgYXJlIHBoeXNpY2FsIGhhcmR3YXJlLiBCdXQgbGV0J3MgY2hlY2sgdGhlIEtjb25maWcgY29uZmlndXJhdGlvbiwgdGhhdCBzaG91bGQgcmV2ZWFsIHRoZSBidWlsZCBvcHRpb25zIGFuZCBjb25maXJtIHRoZSBlbnZpcm9ubWVudCBzdXBwb3J0LiBUaGF0IHNob3VsZCBjbGVhciB0aGlzIHVwIHByZXR0eSBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDA1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6MzQ6NDQuMzkwMzg1ODM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NzY0MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBPQ1RFT05UWDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjY6Y29uZmlnIE9DVEVPTlRYMl9NQk9YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy03LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6OTpjb25maWcgT0NURU9OVFgyX0FGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MjI9Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzE6Y29uZmlnIE9DVEVPTlRYMl9QRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6NDU6Y29uZmlnIE9DVEVPTlRYMl9WRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6MzQ6NDQuNDQwMTYwNTk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzOTUwNjQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzLCBhcyB0aG91Z2ggSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBwcm92aWRlZCB0ZXh0LCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgT0NURU9OVFgyX1BGIEtjb25maWcgRW50cnkqKlxuXG5Pa2F5LCBzbyB0aGUgcHJvbXB0IGlzIGRpcmVjdGluZyBtZSB0byBleGFtaW5lIHRoZSBLY29uZmlnIGZvciBgT0NURU9OVFgyX1BGYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIGxldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGRlZmluaXRpb24gdGVsbHMgdXMgYWJvdXQgdGhlIGBPQ1RFT05UWDJfUEZgIHN5bWJvbC5cIiBJJ20gbWVudGFsbHkgcGFyc2luZyB0aGlzOiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gcmVsYXRlcyB0byB0aGUgT0NURU9OIFRYMidzIFBoeXNpY2FsIEZ1bmN0aW9uLiBXaGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxheT8gV2hhdCdzIGVuYWJsaW5nL2Rpc2FibGluZyB0aGlzPyBBbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBpdD8gQXJlIHRoZXJlIGFueSBhc3NvY2lhdGVkIHN5bWJvbHMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogdGhlIGRlZmF1bHQgc3RhdGUsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3ltYm9scyAobGlrZSBjb3JlIGZlYXR1cmVzLCBwbGF0Zm9ybSB0eXBlcywgb3IgZHJpdmVyIHNwZWNpZmljIG9wdGlvbnMpLCBhbnkgYXNzb2NpYXRlZCBoZWxwIHRleHQgdGhhdCBleHBsYWlucyB0aGUgZnVuY3Rpb24gb2YgdGhlIG9wdGlvbi4gSSBhbnRpY2lwYXRlIG5lZWRpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9uYWwgbG9naWMgdG8gdHJhY2UgaG93IHRoaXMgZmxhZyB1bHRpbWF0ZWx5IGFmZmVjdHMgdGhlIGJ1aWxkIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NDUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTozNDo0Ny43Nzk2NjkxMDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzNDYyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE9DVEVPTlRYMl9QRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozMTpjb25maWcgT0NURU9OVFgyX1BGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6MzQ6NDcuODI2MDIyMTgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0MjYyOTA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIEtjb25maWcgZm9yIE9DVEVPTlRYMl9QRioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJMZXQncyBjcmFjayBvcGVuIHRoZSBLY29uZmlnIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBPQ1RFT05UWDJfUEYgY29uZmlndXJhdGlvbi5cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwbGF0Zm9ybSBpcyBjb25maWd1cmVkLCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gVGhpcyBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcsIG1ha2luZyBhbnkgbW9kaWZpY2F0aW9ucywgb3IgZXZlbiBqdXN0IGJ1aWxkaW5nIGEgc29saWQgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGlzIHN5c3RlbSB3b3JrcyBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBhIGxvdCBvZiBjb25kaXRpb25hbCBzdGF0ZW1lbnRzLCBib29sZWFuIG9wdGlvbnMsIGFuZCBwb3RlbnRpYWxseSBzb21lIHRyaXN0YXRlIGNvbmZpZ3VyYXRpb25zLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIGhhcmR3YXJlIGZlYXR1cmVzIHRoYXQgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgZGVmYXVsdCwgYW5kIGhvdyB1c2VycyBjYW4gZmluZS10dW5lIHRoZSBidWlsZCB0byBzdWl0IHRoZWlyIHNwZWNpZmljIHJlcXVpcmVtZW50cy4gS25vd2luZyB0aGlzIGluZm9ybWF0aW9uLCBvciBhbnkgaW5mb3JtYXRpb24sIHdpbGwgaGVscCBtZSBnZXQgc3RhcnRlZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NDM3NCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjM0OjUyLjA2ODY1NDFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDMxOlxcdGNvbmZpZyBPQ1RFT05UWDJfUEZcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbiAgMzM6XFx0XFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuICAzNDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDM1OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDM2OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gKDY0QklUIFxcdTAwMjZcXHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcXG4gIDM4OlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gIDM5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA0MTpcXHRcXHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCAhTUFDU0VDXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwncyBPY3Rlb25UWDIgTklDIHBoeXNpY2FsIGZ1bmN0aW9uLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWcgT0NURU9OVFgyX1ZGXFxuICA0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcXG4gIDQ4OlxcdFxcdGhlbHBcXG4gIDQ5OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCdzIE9jdGVvblRYMiBOSUMgdmlydHVhbCBmdW5jdGlvbi5cXG4gIDUwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTozNDo1Mi4wNjg3MjM3MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NjY4MzI4NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGludG8gdGhpcyBcIk1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXIuXCIgVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoYXQgaXQncyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgYSBNYXJ2ZWxsIE9jdGVvblRYMiBQQ0llIGNhcmQuIFRoaXMgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSXQgcmVsaWVzIG9uIFBDSSwgYW5kIHdoaWxlIGl0J3Mgb2Z0ZW4gZGVwbG95ZWQgb24gQVJNNjQgc3lzdGVtcywgb3IgcG90ZW50aWFsbHkgY29tcGlsZWQgZm9yIDY0LWJpdCB0ZXN0aW5nLCB0aGF0IGRvZXNuJ3QgY2hhbmdlIHRoZSBjb3JlIGlzc3VlLlxuXG5UaGlzIGlzbid0IHNvbWV0aGluZyB0aGF0IGNhbiBiZSBlYXNpbHkgZW11bGF0ZWQgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gSXQgbmVlZHMgdGhlIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gR2l2ZW4gbXkga25vd2xlZGdlIG9mIGZ1enppbmcgYW5kIHRoZSB0eXBlcyBvZiBleGNsdXNpb25zIHdlIGdlbmVyYWxseSBhcHBseSwgdGhpcyBmYWxscyBzcXVhcmVseSBpbnRvIHRoZSBjYXRlZ29yeSBvZjogXCJDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiXG5cblRoZXJlZm9yZSwgYmFzZWQgb24gdGhpcyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkcml2ZXIgYW5kIGl0cyBoYXJkd2FyZSBkZXBlbmRlbmN5LCBJJ20gZ29pbmcgdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS4gVGhlcmUncyBubyBlZmZlY3RpdmUgd2F5IHRvIGZ1enogdGhpcyB3aXRob3V0IHRoZSBwaHlzaWNhbCBjYXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTMwLCJPdXRwdXRUb2tlbnMiOjkwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6MzQ6NTcuODM1NTU5MzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciAoT0NURU9OVFgyX1BGL1ZGKSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciAoT0NURU9OVFgyX1BGL1ZGKSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTozNDo1Ny44MzU1OTA3NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowmvsvm[1] Phase: Running StartedAt: 2026-08-20 09:35:08 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvsvm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-20 09:35:08 +0000 UTC FinishedAt: 2026-08-20 09:35:13 +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,}