Name: series-workflow7gv8m Phase: Failed StartedAt: 2026-08-02 09:16:01 +0000 UTC FinishedAt: 2026-08-02 09:38:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7gv8m[0] Phase: Succeeded StartedAt: 2026-08-02 09:16:01 +0000 UTC FinishedAt: 2026-08-02 09:38:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7gv8m[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 09:16:01 +0000 UTC FinishedAt: 2026-08-02 09:38:26 +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+CgkJCTx0ZD4yMDI2LzA4LzAyIDA5OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgVkNBUCBBUEksIHdoaWNoIGlzIHVzZWQgZXhjbHVzaXZlbHkgYnkgTWljcm9jaGlwIGhhcmR3YXJlIHN3aXRjaCBkcml2ZXJzIGxpa2Ugc3Bhcng1IGFuZCBsYW45NjZ4LiBUaGVzZSBhcmUgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwOTozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAxZTM2NDIzNTM3ZGEzYTgwMzc4N2I5NmMxNDM0ZWE5NWVhYmE0NDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDA5OjM3OjUyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jXG5pbmRleCBmZjg2Y2RlMTFhMzJjLi43ODhjMDcyOGQ3NjM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuQEAgLTI0MjcsMTggJiM0MzsyNDI3LDIxIEBAIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZGVjb2RlX3J1bGUoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqZWxlbSlcbiBcbiBcdGVyciA9IHZjYXBfcmVhZF9ydWxlKHJpKTtcbiBcdGlmIChlcnIpXG4tXHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4mIzQzO1x0XHRnb3RvIGVycl9mcmVlX3J1bGU7XG4gXG4gXHRlcnIgPSB2Y2FwX2RlY29kZV9rZXlzZXQocmkpO1xuIFx0aWYgKGVycilcbi1cdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiYjNDM7XHRcdGdvdG8gZXJyX2ZyZWVfcnVsZTtcbiBcbiBcdGVyciA9IHZjYXBfZGVjb2RlX2FjdGlvbnNldChyaSk7XG4gXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuJiM0MztcdFx0Z290byBlcnJfZnJlZV9ydWxlO1xuIFxuIG91dDpcbiBcdHJldHVybiBcdTAwMjZyaS1cdTAwM2VkYXRhO1xuJiM0MztlcnJfZnJlZV9ydWxlOlxuJiM0MztcdHZjYXBfZnJlZV9ydWxlKFx1MDAyNnJpLVx1MDAzZWRhdGEpO1xuJiM0MztcdHJldHVybiBFUlJfUFRSKGVycik7XG4gfVxuIFxuIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZ2V0X3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwOTozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBWQ0FQIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBNaWNyb2NoaXAgaGFyZHdhcmUgc3dpdGNoIGRyaXZlcnMgbGlrZSBzcGFyeDUgYW5kIGxhbjk2NnguIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDFlMzY0MjM1MzdkYTNhODAzNzg3Yjk2YzE0MzRlYTk1ZWFiYTQ0OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIgMDk6Mzc6NTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYwppbmRleCBmZjg2Y2RlMTFhMzJjLi43ODhjMDcyOGQ3NjM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMKQEAgLTI0MjcsMTggJiM0MzsyNDI3LDIxIEBAIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZGVjb2RlX3J1bGUoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqZWxlbSkKIAogCWVyciA9IHZjYXBfcmVhZF9ydWxlKHJpKTsKIAlpZiAoZXJyKQotCQlyZXR1cm4gRVJSX1BUUihlcnIpOwomIzQzOwkJZ290byBlcnJfZnJlZV9ydWxlOwogCiAJZXJyID0gdmNhcF9kZWNvZGVfa2V5c2V0KHJpKTsKIAlpZiAoZXJyKQotCQlyZXR1cm4gRVJSX1BUUihlcnIpOwomIzQzOwkJZ290byBlcnJfZnJlZV9ydWxlOwogCiAJZXJyID0gdmNhcF9kZWNvZGVfYWN0aW9uc2V0KHJpKTsKIAlpZiAoZXJyKQotCQlyZXR1cm4gRVJSX1BUUihlcnIpOwomIzQzOwkJZ290byBlcnJfZnJlZV9ydWxlOwogCiBvdXQ6CiAJcmV0dXJuICZhbXA7cmktJmd0O2RhdGE7CiYjNDM7ZXJyX2ZyZWVfcnVsZToKJiM0MzsJdmNhcF9mcmVlX3J1bGUoJmFtcDtyaS0mZ3Q7ZGF0YSk7CiYjNDM7CXJldHVybiBFUlJfUFRSKGVycik7CiB9CiAKIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZ2V0X3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIyMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGVkIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTt2ZSBtb2RpZmllZCB0aGUgYHZjYXBfZGVjb2RlX3J1bGVgIGZ1bmN0aW9uLiBJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNhbGwgdG8gYHZjYXBfZnJlZV9ydWxlYCB3aGVuIGFuIGVycm9yIGhhcHBlbnMsIGluc3RlYWQgb2YganVzdCByZXR1cm5pbmcgYW4gZXJyb3IgcG9pbnRlci4gVGhhdCYjMzk7cyBhIGdvb2QgY2hhbmdlLCBwb3RlbnRpYWxseSBjbGVhbmluZyB1cCByZXNvdXJjZSBsZWFrcy4KCk5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyBldmVuICpyZWxldmFudCogaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0LiBJIGtub3cgdGhpcyBpcyBwYXJ0IG9mIHRoZSBNaWNyb2NoaXAgVkNBUCBBUEkuIFZDQVAsIHJpZ2h0LCB0aGF0IHVzdWFsbHkgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIE1pY3JvY2hpcCBTcGFyeDUgb3IgYSBzaW1pbGFyIHN3aXRjaCBkcml2ZXIuIFRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHJlcXVpcmUgc3BlY2lmaWMgaGFyZHdhcmUgdG8gYmUgcHJlc2VudD8gSXMgdGhpcyBjb2RlIHBhdGggZXZlbiAqcmVhY2hhYmxlKiBpZiB3ZSYjMzk7cmUgcnVubmluZyBpbiBhIFZNIG9yIG9uIGFuIGVtdWxhdGVkIHN5c3RlbT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgb3IgaWYgaXQgaGFzIHNvbWUgcG90ZW50aWFsIGZvciBiZWluZyByZWxldmFudCBpbiBhIG1vcmUgZ2VuZXJhbCwgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhpcyB3aWxsIGFmZmVjdCBob3cgSSBhc3Nlc3MgdGhlIGltcGFjdCBhbmQgY3JpdGljYWxpdHkgb2YgdGhlIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA5OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjYXBfZGVjb2RlX3J1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNDEzPUVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZnJlZV9ydWxlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI0MTUtLyogRGVjb2RlIGEgcnVsZSBmcm9tIHRoZSBWQ0FQIGNhY2hlIGFuZCByZXR1cm4gYSBjb3B5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI0MTY6c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9kZWNvZGVfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICplbGVtKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDE3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI0NDc9c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9nZXRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjQ2MTpcdHJ1bGUgPSB2Y2FwX2RlY29kZV9ydWxlKGVsZW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDYyLVx0dmNhcF91bmxvY2soZWxlbS1cdTAwM2VhZG1pbik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jPTI5Mj1zdGF0aWMgaW50IHZjYXBfc2hvd19hZG1pbihzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmMtMzAxLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShlbGVtLCBcdTAwMjZhZG1pbi1cdTAwM2VydWxlcywgbGlzdCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jOjMwMjpcdFx0dnJ1bGUgPSB2Y2FwX2RlY29kZV9ydWxlKGVsZW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jLTMwMy1cdFx0aWYgKElTX0VSUih2cnVsZSkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmg9MTIyPWludCB2Y2FwX3J1bGVfZ2V0X2tleXNldHMoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqcmksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oLTEyNC0vKiBEZWNvZGUgYSBydWxlIGZyb20gdGhlIFZDQVAgY2FjaGUgYW5kIHJldHVybiBhIGNvcHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaDoxMjU6c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9kZWNvZGVfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICplbGVtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaC0xMjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBVc2FnZSBvZiBgdmNhcF9nZXRfcnVsZWAqKgoKUmlnaHQsIHNvIGB2Y2FwX2dldF9ydWxlYCBhbmQgYHZjYXBfc2hvd19hZG1pbmAgYXJlIHRoZSBpbW1lZGlhdGUgY29udGV4dHMgSSYjMzk7bSBzZWVpbmcuIEludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGB2Y2FwX2dldF9ydWxlYCBhIGxpdHRsZSBiZXR0ZXIuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZG93bnN0cmVhbSBpbXBhY3QuIFdoYXQgb3RoZXIgZnVuY3Rpb25zLCBtb2R1bGVzLCBvciBzeXN0ZW1zIHJlbHkgb24gdGhlIG91dHB1dCBvciBiZWhhdmlvciBvZiBgdmNhcF9nZXRfcnVsZWA/IEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNhbGwgZ3JhcGguIExldCYjMzk7cyB0cmFjZSBhbGwgaW5zdGFuY2VzIHRvIGZpbmQgb3V0IHdoYXQgZGVwZW5kcyBvbiBgdmNhcF9nZXRfcnVsZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBvZiBpdHMgaW5mbHVlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjYXBfZ2V0X3J1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmM9NTQ9c3RhdGljIGludCBsYW45NjZ4X3B0cF9hZGRfdHJhcChzdHJ1Y3QgbGFuOTY2eF9wb3J0ICpwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmMtNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jOjY0Olx0dnJ1bGUgPSB2Y2FwX2dldF9ydWxlKGxhbjk2NngtXHUwMDNldmNhcF9jdHJsLCBydWxlX2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmMtNjUtXHRpZiAoIUlTX0VSUih2cnVsZSkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jPTEwMz1zdGF0aWMgaW50IGxhbjk2NnhfcHRwX2RlbF90cmFwKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYy0xMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jOjExMTpcdHZydWxlID0gdmNhcF9nZXRfcnVsZShsYW45NjZ4LVx1MDAzZXZjYXBfY3RybCwgcnVsZV9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jLTExMi1cdGlmIChJU19FUlIodnJ1bGUpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM9NTgzPXN0YXRpYyBpbnQgbGFuOTY2eF90Y19mbG93ZXJfc3RhdHMoc3RydWN0IGxhbjk2NnhfcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM6NTkwOlx0ZXJyID0gdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUocG9ydC1cdTAwM2VsYW45NjZ4LVx1MDAzZXZjYXBfY3RybCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmMtNTkxLVx0XHRcdFx0XHQgICAgXHUwMDI2Y291bnQsIGYtXHUwMDNlY29va2llKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYz0xMzc1PXN0YXRpYyBpbnQgc3Bhcng1X3RjX2ZyZWVfcnVsZV9yZXNvdXJjZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTM4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjEzODQ6XHR2cnVsZSA9IHZjYXBfZ2V0X3J1bGUodmN0cmwsIHJ1bGVfaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTM4NS1cdGlmIChJU19FUlIodnJ1bGUpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jPTE0Mjg9c3RhdGljIGludCBzcGFyeDVfdGNfZmxvd2VyX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jLTE0MzgtXHR2Y3RybCA9IHBvcnQtXHUwMDNlc3Bhcng1LVx1MDAzZXZjYXBfY3RybDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjE0Mzk6XHRlcnIgPSB2Y2FwX2dldF9ydWxlX2NvdW50X2J5X2Nvb2tpZSh2Y3RybCwgXHUwMDI2Y3RyLCBmY28tXHUwMDNlY29va2llKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jLTE0NDAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjQxNj1zdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2RlY29kZV9ydWxlKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKmVsZW0pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNDQ3OnN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZ2V0X3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ0OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDY0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjQ2NTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2dldF9ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTMzNTM9aW50IHZjYXBfcnVsZV9nZXRfa2V5c2V0cyhzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICpyaSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMzOTYtLyogQ29sbGVjdCBwYWNrZXQgY291bnRzIGZyb20gYWxsIHJ1bGVzIHdpdGggdGhlIHNhbWUgY29va2llICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjMzOTc6aW50IHZjYXBfZ2V0X3J1bGVfY291bnRfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMzk4LVx0XHRcdFx0ICBzdHJ1Y3QgdmNhcF9jb3VudGVyICpjdHIsIHU2NCBjb29raWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDM1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzQzNjpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2dldF9ydWxlX2NvdW50X2J5X2Nvb2tpZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM0MzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50Lmg9MTczPXN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfY29weV9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50LmgtMTc0LS8qIEdldCBydWxlIGZyb20gYSBWQ0FQIGluc3RhbmNlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaDoxNzU6c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9nZXRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oLTE3Ni0vKiBVcGRhdGUgZXhpc3RpbmcgcnVsZSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oPTIwNz1pbnQgdmNhcF9hZG1pbl9ydWxlX2NvdW50KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgaW50IGNpZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50LmgtMjA5LS8qIFZDQVAgcnVsZSBjb3VudGVyIG9wZXJhdGlvbnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oOjIxMDppbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaC0yMTEtXHRcdFx0XHQgIHN0cnVjdCB2Y2FwX2NvdW50ZXIgKmN0ciwgdTY0IGNvb2tpZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM5MAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIExBTjk2NnggYW5kIFNwYXJ4NSBEcml2ZXJzKioKCk9rYXksIHNvIEkgc2VlIHRoZXNlIGRyaXZlcnMsIGBsYW45NjZ4YCBhbmQgYHNwYXJ4NWAsIHBvcHBpbmcgdXAgaW4gdGhlIGNvZGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBsYW45NjZ4YCBhbmQgYHNwYXJ4NWAgZHJpdmVycyB0aGVtc2VsdmVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGFyZSB0aGVzZSBkcml2ZXJzIGV2ZW4gKnJlYWNoYWJsZSogd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD8KCkxldCYjMzk7cyBjbGFyaWZ5IHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBgbGFuOTY2eGAgcG9pbnRzIHRvIHRoZSBNaWNyb2NoaXAgTEFOOTY2eCBzd2l0Y2ggZHJpdmVyLCBhbmQgYHNwYXJ4NWAgaXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoIGRyaXZlci4gTm93LCB0aGVzZSBhcmUgKnBoeXNpY2FsKiBzd2l0Y2ggY2hpcHMsIHJpZ2h0PyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgdHlwZXMgb2YgY29tcG9uZW50cyBhcmUgZ2VuZXJhbGx5ICpub3QqIGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBUaGF0JiMzOTtzIGEga2V5IGRpc3RpbmN0aW9uLgoKVGhlIG5leHQgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVyZSYjMzk7cyBzb21lIGtpbmQgb2Ygc29mdHdhcmUgZW11bGF0aW9uIGxheWVyIGZvciB0aGVtLCBvciBpZiB0aGV5IGFic29sdXRlbHkgcmVxdWlyZSB0aGUgcHJlc2VuY2Ugb2YgcGh5c2ljYWwgaGFyZHdhcmUgdG8gZnVuY3Rpb24uIE1vcmUgb2Z0ZW4gdGhhbiBub3QsIHN3aXRjaCBkcml2ZXJzIOKAkyBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHNwYXJ4NWAsIGBwcmVzdGVyYWAsIGBvY2Vsb3RgLCBhbmQgb3RoZXJzIHRoYXQgSSYjMzk7dmUgd29ya2VkIHdpdGggaW4gdGhlIHBhc3Qg4oCTIGRvIGhhdmUgdGhhdCBoYXJkd2FyZSBkZXBlbmRlbmN5LgoKSSBuZWVkIHRvIGRpZyBkZWVwZXIuIE15IG5leHQgbW92ZSBpcyB0byBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZ2AuIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgaGludHMgYWJvdXQgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQuIEhvcGVmdWxseSwgdGhpcyBLY29uZmlnIGZpbGUgd2lsbCBnaXZlIHRoZSBjbHVlcyBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdGNvbmZpZyBMQU45NjZYX1NXSVRDSFxuICAgMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TGFuOTY2eCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBPRlxuICAgNjpcdFx0ZGVwZW5kcyBvbiBORVRfU1dJVENIREVWXG4gICA3Olx0XHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuICAgODpcdFx0c2VsZWN0IFBIWUxJTktcbiAgIDk6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMTA6XHRcdHNlbGVjdCBWQ0FQXG4gIDExOlx0XHRzZWxlY3QgRkRNQVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgTGFuOTY2eCBuZXR3b3JrIHN3aXRjaCBkZXZpY2UuXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIExBTjk2NlhfRENCXG4gIDE2Olx0XHRib29sIFwmIzM0O0RhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gTEFOOTY2WF9TV0lUQ0ggXHUwMDI2XHUwMDI2IERDQlxuICAxODpcdFx0ZGVmYXVsdCB5XG4gIDE5Olx0XHRoZWxwXG4gIDIwOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIERhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIGluIHRoZVxuICAyMTpcdFx0ICBkcml2ZXIuIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXNzaWduIHByaW9yaXR5IHRvIHRyYWZmaWMsIGJhc2VkIG9uXG4gIDIyOlx0XHQgIERTQ1AgYW5kIFBDUC5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgSWYgdW5zdXJlLCBzZXQgdG8gWS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwOTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjI4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTeXN0ZW0gQXJjaGl0ZWN0dXJlKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHNvbWV0aGluZyBwbGF0Zm9ybS1zcGVjaWZpYywgbGlrZWx5IGEgZHJpdmVyLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBkZXBlbmQgb24gdGhlIHByZXNlbmNlIG9mIE9wZW4gRmlybXdhcmUgb3IgRGV2aWNlIFRyZWUsIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBgSEFTX0lPTUVNYCBtYWNyby4gVGhpcyBzY3JlYW1zIGhhcmR3YXJlIGludGVyYWN0aW9uIGFuZCBtZW1vcnktbWFwcGVkIEkvTywgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciBwbGF0Zm9ybSBkcml2ZXJzLiBUbyBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoaXMsIEkgc2hvdWxkIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZvciB0aGUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZ2AuIFRoYXQgZmlsZSBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMsIGFuZCBjbGFyaWZ5IGV4YWN0bHkgaG93IHRoZXNlIHRoaW5ncyByZWxhdGUgdG8gdGhpcyBzcGVjaWZpYyBkcml2ZXImIzM5O3MgZnVuY3Rpb25hbGl0eS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBhbmQgaG93IHRvIGFwcHJvYWNoIHJlc29sdmluZyB0aGUgcHJvYmxlbSBJIGFtIHdvcmtpbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdGNvbmZpZyBTUEFSWDVfU1dJVENIXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTcGFyeDUgc3dpdGNoIGRyaXZlclwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBORVRfU1dJVENIREVWXG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBPRlxuICAgNjpcdFx0ZGVwZW5kcyBvbiBBUkNIX1NQQVJYNSB8fCBBUkNIX0xBTjk2OVggfHwgQ09NUElMRV9URVNUXG4gICA3Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA4Olx0XHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuICAgOTpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTA6XHRcdHNlbGVjdCBQSFlfU1BBUlg1X1NFUkRFU1xuICAxMTpcdFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcbiAgMTI6XHRcdHNlbGVjdCBWQ0FQXG4gIDEzOlx0XHRzZWxlY3QgRkRNQVxuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgU3Bhcng1IG5ldHdvcmsgc3dpdGNoIGRldmljZS5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgU1BBUlg1X0RDQlxuICAxODpcdFx0Ym9vbCBcJiMzNDtEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBzdXBwb3J0XCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0ggXHUwMDI2XHUwMDI2IERDQlxuICAyMDpcdFx0ZGVmYXVsdCB5XG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIERhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIGluIHRoZVxuICAyMzpcdFx0ICBkcml2ZXIuIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXNzaWduIHByaW9yaXR5IHRvIHRyYWZmaWMsIGJhc2VkIG9uXG4gIDI0Olx0XHQgIERTQ1AgYW5kIFBDUC5cbiAgMjU6XHRcbiAgMjY6XHRcdCAgSWYgdW5zdXJlLCBzZXQgdG8gWS5cbiAgMjc6XHRcbiAgMjg6XHRjb25maWcgTEFOOTY5WF9TV0lUQ0hcbiAgMjk6XHRcdGJvb2wgXCYjMzQ7TGFuOTY5eCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDMwOlx0XHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0hcbiAgMzE6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMzI6XHRcdGhlbHBcbiAgMzM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIGxhbjk2OXggZmFtaWx5IG9mIG5ldHdvcmsgc3dpdGNoIGRldmljZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MjMKCQkJCQkJCW91dHB1dDogOTQKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gYSBmZXcga2V5IGZhY3RvcnM6IGBBUkNIX1NQQVJYNWAsIGBBUkNIX0xBTjk2OVhgLCBvciBgQ09NUElMRV9URVNUYC4gVGhlc2UgZmxhZ3MgYXJlIHRoZSB0ZWxsLiBUaGV5IHBvaW50IGRpcmVjdGx5IHRvIGRyaXZlcnMgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIHN3aXRjaGVzIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBNaWNyb2NoaXAgU3Bhcng1IGFuZCBMQU45NjZ4LiBUaGVzZSBhcmVuJiMzOTt0IGp1c3QgYW55IGRyaXZlcnM7IHRoZXkmIzM5O3JlICp2ZW5kb3Itc3BlY2lmaWMqLCBhbmQgY3JpdGljYWxseSwgdGhleSAqcmVxdWlyZSogYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLiBTdGFuZGFyZCBRRU1VLCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCB3ZSB0eXBpY2FsbHkgdXNlLCBjYW4mIzM5O3QgZW11bGF0ZSB0aGlzIGtpbmQgb2Ygc2V0dXAuCgpOb3csIEkmIzM5O20gcmVjYWxsaW5nIHRoZSBleHBsaWNpdCBpbnN0cnVjdGlvbjogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKCkl0JiMzOTtzIGNsZWFyLiBUaGlzIGRyaXZlciwgYmVjYXVzZSBpdCYjMzk7cyB0aWVkIHRvIHRoaXMgdmVyeSBzcGVjaWZpYywgdW4tZW11bGF0YWJsZSBoYXJkd2FyZSwgZmFsbHMgc3F1YXJlbHkgaW50byB0aGF0IGNhdGVnb3J5LiBUaGVyZWZvcmUsIGJhc2VkIG9uIHRoZSBkb2N1bWVudGVkIGNyaXRlcmlhIGFuZCB0aGUgcGh5c2ljYWwgcmVxdWlyZW1lbnRzLCBmdXp6aW5nIHRoaXMgcGF0Y2ggaW4gb3VyIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGlzbiYjMzk7dCBnb2luZyB0byBiZSBwcm9kdWN0aXZlLiBJdCYjMzk7cyBub3Qgd29ydGggdGhlIGVmZm9ydC4gVGhlIGFuc3dlciBpcyBkZWZpbml0aXZlbHkgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBWQ0FQIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBNaWNyb2NoaXAgaGFyZHdhcmUgc3dpdGNoIGRyaXZlcnMgbGlrZSBzcGFyeDUgYW5kIGxhbjk2NnguIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFZDQVAgQVBJLCB3aGljaCBpcyB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IE1pY3JvY2hpcCBoYXJkd2FyZSBzd2l0Y2ggZHJpdmVycyBsaWtlIHNwYXJ4NSBhbmQgbGFuOTY2eC4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozNzo1NC4wNjM1MTA5NzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk5ODk4ODE5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBWQ0FQIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBNaWNyb2NoaXAgaGFyZHdhcmUgc3dpdGNoIGRyaXZlcnMgbGlrZSBzcGFyeDUgYW5kIGxhbjk2NnguIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozNzo1NC4wNjM1MTc5MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTI0ODUyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDAxZTM2NDIzNTM3ZGEzYTgwMzc4N2I5NmMxNDM0ZWE5NWVhYmE0NDlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBBdWcgMiAwOTozNzo1MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xcbmluZGV4IGZmODZjZGUxMWEzMmMuLjc4OGMwNzI4ZDc2MzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmNcXG5AQCAtMjQyNywxOCArMjQyNywyMSBAQCBzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2RlY29kZV9ydWxlKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKmVsZW0pXFxuIFxcbiBcXHRlcnIgPSB2Y2FwX3JlYWRfcnVsZShyaSk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuK1xcdFxcdGdvdG8gZXJyX2ZyZWVfcnVsZTtcXG4gXFxuIFxcdGVyciA9IHZjYXBfZGVjb2RlX2tleXNldChyaSk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuK1xcdFxcdGdvdG8gZXJyX2ZyZWVfcnVsZTtcXG4gXFxuIFxcdGVyciA9IHZjYXBfZGVjb2RlX2FjdGlvbnNldChyaSk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuK1xcdFxcdGdvdG8gZXJyX2ZyZWVfcnVsZTtcXG4gXFxuIG91dDpcXG4gXFx0cmV0dXJuIFxcdTAwMjZyaS1cXHUwMDNlZGF0YTtcXG4rZXJyX2ZyZWVfcnVsZTpcXG4rXFx0dmNhcF9mcmVlX3J1bGUoXFx1MDAyNnJpLVxcdTAwM2VkYXRhKTtcXG4rXFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4gfVxcbiBcXG4gc3RydWN0IHZjYXBfcnVsZSAqdmNhcF9nZXRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozNzo1NC42NTU5MDgwMjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMDQwNjU4Mjg4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBWQ0FQIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBNaWNyb2NoaXAgaGFyZHdhcmUgc3dpdGNoIGRyaXZlcnMgbGlrZSBzcGFyeDUgYW5kIGxhbjk2NnguIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMWUzNjQyMzUzN2RhM2E4MDM3ODdiOTZjMTQzNGVhOTVlYWJhNDQ5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwOTozNzo1MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jXG5pbmRleCBmZjg2Y2RlMTFhMzJjLi43ODhjMDcyOGQ3NjM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuQEAgLTI0MjcsMTggKzI0MjcsMjEgQEAgc3RydWN0IHZjYXBfcnVsZSAqdmNhcF9kZWNvZGVfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICplbGVtKVxuIFxuIFx0ZXJyID0gdmNhcF9yZWFkX3J1bGUocmkpO1xuIFx0aWYgKGVycilcbi1cdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbitcdFx0Z290byBlcnJfZnJlZV9ydWxlO1xuIFxuIFx0ZXJyID0gdmNhcF9kZWNvZGVfa2V5c2V0KHJpKTtcbiBcdGlmIChlcnIpXG4tXHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4rXHRcdGdvdG8gZXJyX2ZyZWVfcnVsZTtcbiBcbiBcdGVyciA9IHZjYXBfZGVjb2RlX2FjdGlvbnNldChyaSk7XG4gXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuK1x0XHRnb3RvIGVycl9mcmVlX3J1bGU7XG4gXG4gb3V0OlxuIFx0cmV0dXJuIFx1MDAyNnJpLVx1MDAzZWRhdGE7XG4rZXJyX2ZyZWVfcnVsZTpcbitcdHZjYXBfZnJlZV9ydWxlKFx1MDAyNnJpLVx1MDAzZWRhdGEpO1xuK1x0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiB9XG4gXG4gc3RydWN0IHZjYXBfcnVsZSAqdmNhcF9nZXRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDk6Mzc6NTQuNjU1OTEwMDkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5NDY0NDE1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGVkIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5J3ZlIG1vZGlmaWVkIHRoZSBgdmNhcF9kZWNvZGVfcnVsZWAgZnVuY3Rpb24uIEkgc2VlIHRoZXkndmUgYWRkZWQgYSBjYWxsIHRvIGB2Y2FwX2ZyZWVfcnVsZWAgd2hlbiBhbiBlcnJvciBoYXBwZW5zLCBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGFuIGVycm9yIHBvaW50ZXIuIFRoYXQncyBhIGdvb2QgY2hhbmdlLCBwb3RlbnRpYWxseSBjbGVhbmluZyB1cCByZXNvdXJjZSBsZWFrcy5cblxuTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBjb2RlIGlzIGV2ZW4gKnJlbGV2YW50KiBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuIEkga25vdyB0aGlzIGlzIHBhcnQgb2YgdGhlIE1pY3JvY2hpcCBWQ0FQIEFQSS4gVkNBUCwgcmlnaHQsIHRoYXQgdXN1YWxseSBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBNaWNyb2NoaXAgU3Bhcng1IG9yIGEgc2ltaWxhciBzd2l0Y2ggZHJpdmVyLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQ/IElzIHRoaXMgY29kZSBwYXRoIGV2ZW4gKnJlYWNoYWJsZSogaWYgd2UncmUgcnVubmluZyBpbiBhIFZNIG9yIG9uIGFuIGVtdWxhdGVkIHN5c3RlbT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgb3IgaWYgaXQgaGFzIHNvbWUgcG90ZW50aWFsIGZvciBiZWluZyByZWxldmFudCBpbiBhIG1vcmUgZ2VuZXJhbCwgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhpcyB3aWxsIGFmZmVjdCBob3cgSSBhc3Nlc3MgdGhlIGltcGFjdCBhbmQgY3JpdGljYWxpdHkgb2YgdGhlIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjIyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDk6Mzc6NTguNTUwNTU4ODU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MjIzODQxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2Y2FwX2RlY29kZV9ydWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI0MTM9RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9mcmVlX3J1bGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDE1LS8qIERlY29kZSBhIHJ1bGUgZnJvbSB0aGUgVkNBUCBjYWNoZSBhbmQgcmV0dXJuIGEgY29weSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjQxNjpzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2RlY29kZV9ydWxlKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKmVsZW0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjQ0Nz1zdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2dldF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI0NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNDYxOlxcdHJ1bGUgPSB2Y2FwX2RlY29kZV9ydWxlKGVsZW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2Mi1cXHR2Y2FwX3VubG9jayhlbGVtLVxcdTAwM2VhZG1pbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmM9MjkyPXN0YXRpYyBpbnQgdmNhcF9zaG93X2FkbWluKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jLTMwMS1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGVsZW0sIFxcdTAwMjZhZG1pbi1cXHUwMDNlcnVsZXMsIGxpc3QpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmM6MzAyOlxcdFxcdHZydWxlID0gdmNhcF9kZWNvZGVfcnVsZShlbGVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmMtMzAzLVxcdFxcdGlmIChJU19FUlIodnJ1bGUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmg9MTIyPWludCB2Y2FwX3J1bGVfZ2V0X2tleXNldHMoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqcmksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmgtMTI0LS8qIERlY29kZSBhIHJ1bGUgZnJvbSB0aGUgVkNBUCBjYWNoZSBhbmQgcmV0dXJuIGEgY29weSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaDoxMjU6c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9kZWNvZGVfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICplbGVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmgtMTI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozNzo1OC43MjI4MDM2NDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTY4MjI4NDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBVc2FnZSBvZiBgdmNhcF9nZXRfcnVsZWAqKlxuXG5SaWdodCwgc28gYHZjYXBfZ2V0X3J1bGVgIGFuZCBgdmNhcF9zaG93X2FkbWluYCBhcmUgdGhlIGltbWVkaWF0ZSBjb250ZXh0cyBJJ20gc2VlaW5nLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBgdmNhcF9nZXRfcnVsZWAgYSBsaXR0bGUgYmV0dGVyLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgZG93bnN0cmVhbSBpbXBhY3QuIFdoYXQgb3RoZXIgZnVuY3Rpb25zLCBtb2R1bGVzLCBvciBzeXN0ZW1zIHJlbHkgb24gdGhlIG91dHB1dCBvciBiZWhhdmlvciBvZiBgdmNhcF9nZXRfcnVsZWA/IEl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgY2FsbCBncmFwaC4gTGV0J3MgdHJhY2UgYWxsIGluc3RhbmNlcyB0byBmaW5kIG91dCB3aGF0IGRlcGVuZHMgb24gYHZjYXBfZ2V0X3J1bGVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgaXRzIGluZmx1ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA5OjM4OjAxLjY5MTAzNzE1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDUzNzExMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmNhcF9nZXRfcnVsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmM9NTQ9c3RhdGljIGludCBsYW45NjZ4X3B0cF9hZGRfdHJhcChzdHJ1Y3QgbGFuOTY2eF9wb3J0ICpwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYy02My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jOjY0OlxcdHZydWxlID0gdmNhcF9nZXRfcnVsZShsYW45NjZ4LVxcdTAwM2V2Y2FwX2N0cmwsIHJ1bGVfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmMtNjUtXFx0aWYgKCFJU19FUlIodnJ1bGUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jPTEwMz1zdGF0aWMgaW50IGxhbjk2NnhfcHRwX2RlbF90cmFwKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jLTExMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jOjExMTpcXHR2cnVsZSA9IHZjYXBfZ2V0X3J1bGUobGFuOTY2eC1cXHUwMDNldmNhcF9jdHJsLCBydWxlX2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jLTExMi1cXHRpZiAoSVNfRVJSKHZydWxlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM9NTgzPXN0YXRpYyBpbnQgbGFuOTY2eF90Y19mbG93ZXJfc3RhdHMoc3RydWN0IGxhbjk2NnhfcG9ydCAqcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmMtNTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM6NTkwOlxcdGVyciA9IHZjYXBfZ2V0X3J1bGVfY291bnRfYnlfY29va2llKHBvcnQtXFx1MDAzZWxhbjk2NngtXFx1MDAzZXZjYXBfY3RybCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU5MS1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmNvdW50LCBmLVxcdTAwM2Vjb29raWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9MTM3NT1zdGF0aWMgaW50IHNwYXJ4NV90Y19mcmVlX3J1bGVfcmVzb3VyY2VzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTM4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYzoxMzg0OlxcdHZydWxlID0gdmNhcF9nZXRfcnVsZSh2Y3RybCwgcnVsZV9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTM4NS1cXHRpZiAoSVNfRVJSKHZydWxlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jPTE0Mjg9c3RhdGljIGludCBzcGFyeDVfdGNfZmxvd2VyX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTQzOC1cXHR2Y3RybCA9IHBvcnQtXFx1MDAzZXNwYXJ4NS1cXHUwMDNldmNhcF9jdHJsO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjE0Mzk6XFx0ZXJyID0gdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUodmN0cmwsIFxcdTAwMjZjdHIsIGZjby1cXHUwMDNlY29va2llKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy0xNDQwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI0MTY9c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9kZWNvZGVfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICplbGVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjQ0NzpzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2dldF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2NC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNDY1OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZ2V0X3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzM1Mz1pbnQgdmNhcF9ydWxlX2dldF9rZXlzZXRzKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKnJpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMzk2LS8qIENvbGxlY3QgcGFja2V0IGNvdW50cyBmcm9tIGFsbCBydWxlcyB3aXRoIHRoZSBzYW1lIGNvb2tpZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzM5NzppbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMzk4LVxcdFxcdFxcdFxcdCAgc3RydWN0IHZjYXBfY291bnRlciAqY3RyLCB1NjQgY29va2llKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDM1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM0MzY6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzQzNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oPTE3Mz1zdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2NvcHlfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaC0xNzQtLyogR2V0IHJ1bGUgZnJvbSBhIFZDQVAgaW5zdGFuY2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaDoxNzU6c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9nZXRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaC0xNzYtLyogVXBkYXRlIGV4aXN0aW5nIHJ1bGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oPTIwNz1pbnQgdmNhcF9hZG1pbl9ydWxlX2NvdW50KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgaW50IGNpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaC0yMDktLyogVkNBUCBydWxlIGNvdW50ZXIgb3BlcmF0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oOjIxMDppbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50LmgtMjExLVxcdFxcdFxcdFxcdCAgc3RydWN0IHZjYXBfY291bnRlciAqY3RyLCB1NjQgY29va2llKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDk6Mzg6MDEuODk2NDI3MTIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3MTk4NzEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIExBTjk2NnggYW5kIFNwYXJ4NSBEcml2ZXJzKipcblxuT2theSwgc28gSSBzZWUgdGhlc2UgZHJpdmVycywgYGxhbjk2NnhgIGFuZCBgc3Bhcng1YCwgcG9wcGluZyB1cCBpbiB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGxhbjk2NnhgIGFuZCBgc3Bhcng1YCBkcml2ZXJzIHRoZW1zZWx2ZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgYXJlIHRoZXNlIGRyaXZlcnMgZXZlbiAqcmVhY2hhYmxlKiB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50P1xuXG5MZXQncyBjbGFyaWZ5IHdoYXQgd2UncmUgZGVhbGluZyB3aXRoIGhlcmUuIGBsYW45NjZ4YCBwb2ludHMgdG8gdGhlIE1pY3JvY2hpcCBMQU45NjZ4IHN3aXRjaCBkcml2ZXIsIGFuZCBgc3Bhcng1YCBpcyB0aGUgTWljcm9jaGlwIFNwYXJ4NSBzd2l0Y2ggZHJpdmVyLiBOb3csIHRoZXNlIGFyZSAqcGh5c2ljYWwqIHN3aXRjaCBjaGlwcywgcmlnaHQ/IE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCB0aGVzZSB0eXBlcyBvZiBjb21wb25lbnRzIGFyZSBnZW5lcmFsbHkgKm5vdCogZW11bGF0ZWQgd2l0aGluIFFFTVUuIFRoYXQncyBhIGtleSBkaXN0aW5jdGlvbi5cblxuVGhlIG5leHQgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVyZSdzIHNvbWUga2luZCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gbGF5ZXIgZm9yIHRoZW0sIG9yIGlmIHRoZXkgYWJzb2x1dGVseSByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZiBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi4gTW9yZSBvZnRlbiB0aGFuIG5vdCwgc3dpdGNoIGRyaXZlcnMg4oCTIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgc3Bhcng1YCwgYHByZXN0ZXJhYCwgYG9jZWxvdGAsIGFuZCBvdGhlcnMgdGhhdCBJJ3ZlIHdvcmtlZCB3aXRoIGluIHRoZSBwYXN0IOKAkyBkbyBoYXZlIHRoYXQgaGFyZHdhcmUgZGVwZW5kZW5jeS5cblxuSSBuZWVkIHRvIGRpZyBkZWVwZXIuIE15IG5leHQgbW92ZSBpcyB0byBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZ2AuIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgaGludHMgYWJvdXQgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQuIEhvcGVmdWxseSwgdGhpcyBLY29uZmlnIGZpbGUgd2lsbCBnaXZlIHRoZSBjbHVlcyBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzOTAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDk6Mzg6MDYuNjY4NDE4NDExWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIExBTjk2NlhfU1dJVENIXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTGFuOTY2eCBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgIDM6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gT0ZcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gTkVUX1NXSVRDSERFVlxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG4gICA4OlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgVkNBUFxcbiAgMTE6XFx0XFx0c2VsZWN0IEZETUFcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIExhbjk2NnggbmV0d29yayBzd2l0Y2ggZGV2aWNlLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgTEFOOTY2WF9EQ0JcXG4gIDE2OlxcdFxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIExBTjk2NlhfU1dJVENIIFxcdTAwMjZcXHUwMDI2IERDQlxcbiAgMTg6XFx0XFx0ZGVmYXVsdCB5XFxuICAxOTpcXHRcXHRoZWxwXFxuICAyMDpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIERhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIGluIHRoZVxcbiAgMjE6XFx0XFx0ICBkcml2ZXIuIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXNzaWduIHByaW9yaXR5IHRvIHRyYWZmaWMsIGJhc2VkIG9uXFxuICAyMjpcXHRcXHQgIERTQ1AgYW5kIFBDUC5cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNldCB0byBZLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozODowNi42Njg1MzA4ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI0NzU5MDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU3lzdGVtIEFyY2hpdGVjdHVyZSoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHBsYXRmb3JtLXNwZWNpZmljLCBsaWtlbHkgYSBkcml2ZXIuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGRlcGVuZCBvbiB0aGUgcHJlc2VuY2Ugb2YgT3BlbiBGaXJtd2FyZSBvciBEZXZpY2UgVHJlZSwgYW5kIHNwZWNpZmljYWxseSwgdGhlIGBIQVNfSU9NRU1gIG1hY3JvLiBUaGlzIHNjcmVhbXMgaGFyZHdhcmUgaW50ZXJhY3Rpb24gYW5kIG1lbW9yeS1tYXBwZWQgSS9PLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIHBsYXRmb3JtIGRyaXZlcnMuIFRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhpcywgSSBzaG91bGQgZGlnIGludG8gdGhlIEtjb25maWcgZm9yIHRoZSBkcml2ZXIsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnYC4gVGhhdCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcywgYW5kIGNsYXJpZnkgZXhhY3RseSBob3cgdGhlc2UgdGhpbmdzIHJlbGF0ZSB0byB0aGlzIHNwZWNpZmljIGRyaXZlcidzIGZ1bmN0aW9uYWxpdHkuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjb2RlIGlzIHN0cnVjdHVyZWQgYW5kIGhvdyB0byBhcHByb2FjaCByZXNvbHZpbmcgdGhlIHByb2JsZW0gSSBhbSB3b3JraW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjI4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozODowOS44OTMyOTUwNDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRjb25maWcgU1BBUlg1X1NXSVRDSFxcbiAgIDI6XFx0XFx0dHJpc3RhdGUgXFxcIlNwYXJ4NSBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgIDM6XFx0XFx0ZGVwZW5kcyBvbiBORVRfU1dJVENIREVWXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBPRlxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX1NQQVJYNSB8fCBBUkNIX0xBTjk2OVggfHwgQ09NUElMRV9URVNUXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxcbiAgIDk6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDEwOlxcdFxcdHNlbGVjdCBQSFlfU1BBUlg1X1NFUkRFU1xcbiAgMTE6XFx0XFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG4gIDEyOlxcdFxcdHNlbGVjdCBWQ0FQXFxuICAxMzpcXHRcXHRzZWxlY3QgRkRNQVxcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgU3Bhcng1IG5ldHdvcmsgc3dpdGNoIGRldmljZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFNQQVJYNV9EQ0JcXG4gIDE4OlxcdFxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0ggXFx1MDAyNlxcdTAwMjYgRENCXFxuICAyMDpcXHRcXHRkZWZhdWx0IHlcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgRGF0YSBDZW50ZXIgQnJpZGdpbmcgKERDQikgaW4gdGhlXFxuICAyMzpcXHRcXHQgIGRyaXZlci4gVGhpcyBjYW4gYmUgdXNlZCB0byBhc3NpZ24gcHJpb3JpdHkgdG8gdHJhZmZpYywgYmFzZWQgb25cXG4gIDI0OlxcdFxcdCAgRFNDUCBhbmQgUENQLlxcbiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIElmIHVuc3VyZSwgc2V0IHRvIFkuXFxuICAyNzpcXHRcXG4gIDI4OlxcdGNvbmZpZyBMQU45NjlYX1NXSVRDSFxcbiAgMjk6XFx0XFx0Ym9vbCBcXFwiTGFuOTY5eCBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgMzA6XFx0XFx0ZGVwZW5kcyBvbiBTUEFSWDVfU1dJVENIXFxuICAzMTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBsYW45Njl4IGZhbWlseSBvZiBuZXR3b3JrIHN3aXRjaCBkZXZpY2VzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozODowOS44OTM0NjExMzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE2ODk4NzUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gYSBmZXcga2V5IGZhY3RvcnM6IGBBUkNIX1NQQVJYNWAsIGBBUkNIX0xBTjk2OVhgLCBvciBgQ09NUElMRV9URVNUYC4gVGhlc2UgZmxhZ3MgYXJlIHRoZSB0ZWxsLiBUaGV5IHBvaW50IGRpcmVjdGx5IHRvIGRyaXZlcnMgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIHN3aXRjaGVzIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBNaWNyb2NoaXAgU3Bhcng1IGFuZCBMQU45NjZ4LiBUaGVzZSBhcmVuJ3QganVzdCBhbnkgZHJpdmVyczsgdGhleSdyZSAqdmVuZG9yLXNwZWNpZmljKiwgYW5kIGNyaXRpY2FsbHksIHRoZXkgKnJlcXVpcmUqIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gU3RhbmRhcmQgUUVNVSwgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgd2UgdHlwaWNhbGx5IHVzZSwgY2FuJ3QgZW11bGF0ZSB0aGlzIGtpbmQgb2Ygc2V0dXAuXG5cbk5vdywgSSdtIHJlY2FsbGluZyB0aGUgZXhwbGljaXQgaW5zdHJ1Y3Rpb246IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiXG5cbkl0J3MgY2xlYXIuIFRoaXMgZHJpdmVyLCBiZWNhdXNlIGl0J3MgdGllZCB0byB0aGlzIHZlcnkgc3BlY2lmaWMsIHVuLWVtdWxhdGFibGUgaGFyZHdhcmUsIGZhbGxzIHNxdWFyZWx5IGludG8gdGhhdCBjYXRlZ29yeS4gVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGUgZG9jdW1lbnRlZCBjcml0ZXJpYSBhbmQgdGhlIHBoeXNpY2FsIHJlcXVpcmVtZW50cywgZnV6emluZyB0aGlzIHBhdGNoIGluIG91ciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBpc24ndCBnb2luZyB0byBiZSBwcm9kdWN0aXZlLiBJdCdzIG5vdCB3b3J0aCB0aGUgZWZmb3J0LiBUaGUgYW5zd2VyIGlzIGRlZmluaXRpdmVseSBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkyMywiT3V0cHV0VG9rZW5zIjo5NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA5OjM4OjE1LjA2MjQ1MjcyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBWQ0FQIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBNaWNyb2NoaXAgaGFyZHdhcmUgc3dpdGNoIGRyaXZlcnMgbGlrZSBzcGFyeDUgYW5kIGxhbjk2NnguIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFZDQVAgQVBJLCB3aGljaCBpcyB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IE1pY3JvY2hpcCBoYXJkd2FyZSBzd2l0Y2ggZHJpdmVycyBsaWtlIHNwYXJ4NSBhbmQgbGFuOTY2eC4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7gv8m[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 09:16:01 +0000 UTC FinishedAt: 2026-08-02 09:38:16 +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+CgkJCTx0ZD4yMDI2LzA4LzAyIDA5OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgVkNBUCBBUEksIHdoaWNoIGlzIHVzZWQgZXhjbHVzaXZlbHkgYnkgTWljcm9jaGlwIGhhcmR3YXJlIHN3aXRjaCBkcml2ZXJzIGxpa2Ugc3Bhcng1IGFuZCBsYW45NjZ4LiBUaGVzZSBhcmUgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwOTozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAxZTM2NDIzNTM3ZGEzYTgwMzc4N2I5NmMxNDM0ZWE5NWVhYmE0NDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDA5OjM3OjUyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jXG5pbmRleCBmZjg2Y2RlMTFhMzJjLi43ODhjMDcyOGQ3NjM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuQEAgLTI0MjcsMTggJiM0MzsyNDI3LDIxIEBAIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZGVjb2RlX3J1bGUoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqZWxlbSlcbiBcbiBcdGVyciA9IHZjYXBfcmVhZF9ydWxlKHJpKTtcbiBcdGlmIChlcnIpXG4tXHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4mIzQzO1x0XHRnb3RvIGVycl9mcmVlX3J1bGU7XG4gXG4gXHRlcnIgPSB2Y2FwX2RlY29kZV9rZXlzZXQocmkpO1xuIFx0aWYgKGVycilcbi1cdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiYjNDM7XHRcdGdvdG8gZXJyX2ZyZWVfcnVsZTtcbiBcbiBcdGVyciA9IHZjYXBfZGVjb2RlX2FjdGlvbnNldChyaSk7XG4gXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuJiM0MztcdFx0Z290byBlcnJfZnJlZV9ydWxlO1xuIFxuIG91dDpcbiBcdHJldHVybiBcdTAwMjZyaS1cdTAwM2VkYXRhO1xuJiM0MztlcnJfZnJlZV9ydWxlOlxuJiM0MztcdHZjYXBfZnJlZV9ydWxlKFx1MDAyNnJpLVx1MDAzZWRhdGEpO1xuJiM0MztcdHJldHVybiBFUlJfUFRSKGVycik7XG4gfVxuIFxuIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZ2V0X3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwOTozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBWQ0FQIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBNaWNyb2NoaXAgaGFyZHdhcmUgc3dpdGNoIGRyaXZlcnMgbGlrZSBzcGFyeDUgYW5kIGxhbjk2NnguIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDFlMzY0MjM1MzdkYTNhODAzNzg3Yjk2YzE0MzRlYTk1ZWFiYTQ0OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIgMDk6Mzc6NTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYwppbmRleCBmZjg2Y2RlMTFhMzJjLi43ODhjMDcyOGQ3NjM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMKQEAgLTI0MjcsMTggJiM0MzsyNDI3LDIxIEBAIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZGVjb2RlX3J1bGUoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqZWxlbSkKIAogCWVyciA9IHZjYXBfcmVhZF9ydWxlKHJpKTsKIAlpZiAoZXJyKQotCQlyZXR1cm4gRVJSX1BUUihlcnIpOwomIzQzOwkJZ290byBlcnJfZnJlZV9ydWxlOwogCiAJZXJyID0gdmNhcF9kZWNvZGVfa2V5c2V0KHJpKTsKIAlpZiAoZXJyKQotCQlyZXR1cm4gRVJSX1BUUihlcnIpOwomIzQzOwkJZ290byBlcnJfZnJlZV9ydWxlOwogCiAJZXJyID0gdmNhcF9kZWNvZGVfYWN0aW9uc2V0KHJpKTsKIAlpZiAoZXJyKQotCQlyZXR1cm4gRVJSX1BUUihlcnIpOwomIzQzOwkJZ290byBlcnJfZnJlZV9ydWxlOwogCiBvdXQ6CiAJcmV0dXJuICZhbXA7cmktJmd0O2RhdGE7CiYjNDM7ZXJyX2ZyZWVfcnVsZToKJiM0MzsJdmNhcF9mcmVlX3J1bGUoJmFtcDtyaS0mZ3Q7ZGF0YSk7CiYjNDM7CXJldHVybiBFUlJfUFRSKGVycik7CiB9CiAKIHN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZ2V0X3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIyMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGVkIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTt2ZSBtb2RpZmllZCB0aGUgYHZjYXBfZGVjb2RlX3J1bGVgIGZ1bmN0aW9uLiBJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNhbGwgdG8gYHZjYXBfZnJlZV9ydWxlYCB3aGVuIGFuIGVycm9yIGhhcHBlbnMsIGluc3RlYWQgb2YganVzdCByZXR1cm5pbmcgYW4gZXJyb3IgcG9pbnRlci4gVGhhdCYjMzk7cyBhIGdvb2QgY2hhbmdlLCBwb3RlbnRpYWxseSBjbGVhbmluZyB1cCByZXNvdXJjZSBsZWFrcy4KCk5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyBldmVuICpyZWxldmFudCogaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0LiBJIGtub3cgdGhpcyBpcyBwYXJ0IG9mIHRoZSBNaWNyb2NoaXAgVkNBUCBBUEkuIFZDQVAsIHJpZ2h0LCB0aGF0IHVzdWFsbHkgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIE1pY3JvY2hpcCBTcGFyeDUgb3IgYSBzaW1pbGFyIHN3aXRjaCBkcml2ZXIuIFRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHJlcXVpcmUgc3BlY2lmaWMgaGFyZHdhcmUgdG8gYmUgcHJlc2VudD8gSXMgdGhpcyBjb2RlIHBhdGggZXZlbiAqcmVhY2hhYmxlKiBpZiB3ZSYjMzk7cmUgcnVubmluZyBpbiBhIFZNIG9yIG9uIGFuIGVtdWxhdGVkIHN5c3RlbT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgb3IgaWYgaXQgaGFzIHNvbWUgcG90ZW50aWFsIGZvciBiZWluZyByZWxldmFudCBpbiBhIG1vcmUgZ2VuZXJhbCwgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhpcyB3aWxsIGFmZmVjdCBob3cgSSBhc3Nlc3MgdGhlIGltcGFjdCBhbmQgY3JpdGljYWxpdHkgb2YgdGhlIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA5OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjYXBfZGVjb2RlX3J1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYz0yNDEzPUVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZnJlZV9ydWxlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI0MTUtLyogRGVjb2RlIGEgcnVsZSBmcm9tIHRoZSBWQ0FQIGNhY2hlIGFuZCByZXR1cm4gYSBjb3B5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjI0MTY6c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9kZWNvZGVfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICplbGVtKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDE3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI0NDc9c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9nZXRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjQ2MTpcdHJ1bGUgPSB2Y2FwX2RlY29kZV9ydWxlKGVsZW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDYyLVx0dmNhcF91bmxvY2soZWxlbS1cdTAwM2VhZG1pbik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jPTI5Mj1zdGF0aWMgaW50IHZjYXBfc2hvd19hZG1pbihzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmMtMzAxLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShlbGVtLCBcdTAwMjZhZG1pbi1cdTAwM2VydWxlcywgbGlzdCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jOjMwMjpcdFx0dnJ1bGUgPSB2Y2FwX2RlY29kZV9ydWxlKGVsZW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jLTMwMy1cdFx0aWYgKElTX0VSUih2cnVsZSkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmg9MTIyPWludCB2Y2FwX3J1bGVfZ2V0X2tleXNldHMoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqcmksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfcHJpdmF0ZS5oLTEyNC0vKiBEZWNvZGUgYSBydWxlIGZyb20gdGhlIFZDQVAgY2FjaGUgYW5kIHJldHVybiBhIGNvcHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaDoxMjU6c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9kZWNvZGVfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICplbGVtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaC0xMjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBVc2FnZSBvZiBgdmNhcF9nZXRfcnVsZWAqKgoKUmlnaHQsIHNvIGB2Y2FwX2dldF9ydWxlYCBhbmQgYHZjYXBfc2hvd19hZG1pbmAgYXJlIHRoZSBpbW1lZGlhdGUgY29udGV4dHMgSSYjMzk7bSBzZWVpbmcuIEludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGB2Y2FwX2dldF9ydWxlYCBhIGxpdHRsZSBiZXR0ZXIuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZG93bnN0cmVhbSBpbXBhY3QuIFdoYXQgb3RoZXIgZnVuY3Rpb25zLCBtb2R1bGVzLCBvciBzeXN0ZW1zIHJlbHkgb24gdGhlIG91dHB1dCBvciBiZWhhdmlvciBvZiBgdmNhcF9nZXRfcnVsZWA/IEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNhbGwgZ3JhcGguIExldCYjMzk7cyB0cmFjZSBhbGwgaW5zdGFuY2VzIHRvIGZpbmQgb3V0IHdoYXQgZGVwZW5kcyBvbiBgdmNhcF9nZXRfcnVsZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBvZiBpdHMgaW5mbHVlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjYXBfZ2V0X3J1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmM9NTQ9c3RhdGljIGludCBsYW45NjZ4X3B0cF9hZGRfdHJhcChzdHJ1Y3QgbGFuOTY2eF9wb3J0ICpwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmMtNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jOjY0Olx0dnJ1bGUgPSB2Y2FwX2dldF9ydWxlKGxhbjk2NngtXHUwMDNldmNhcF9jdHJsLCBydWxlX2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmMtNjUtXHRpZiAoIUlTX0VSUih2cnVsZSkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jPTEwMz1zdGF0aWMgaW50IGxhbjk2NnhfcHRwX2RlbF90cmFwKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYy0xMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jOjExMTpcdHZydWxlID0gdmNhcF9nZXRfcnVsZShsYW45NjZ4LVx1MDAzZXZjYXBfY3RybCwgcnVsZV9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jLTExMi1cdGlmIChJU19FUlIodnJ1bGUpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM9NTgzPXN0YXRpYyBpbnQgbGFuOTY2eF90Y19mbG93ZXJfc3RhdHMoc3RydWN0IGxhbjk2NnhfcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM6NTkwOlx0ZXJyID0gdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUocG9ydC1cdTAwM2VsYW45NjZ4LVx1MDAzZXZjYXBfY3RybCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmMtNTkxLVx0XHRcdFx0XHQgICAgXHUwMDI2Y291bnQsIGYtXHUwMDNlY29va2llKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYz0xMzc1PXN0YXRpYyBpbnQgc3Bhcng1X3RjX2ZyZWVfcnVsZV9yZXNvdXJjZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTM4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjEzODQ6XHR2cnVsZSA9IHZjYXBfZ2V0X3J1bGUodmN0cmwsIHJ1bGVfaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTM4NS1cdGlmIChJU19FUlIodnJ1bGUpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jPTE0Mjg9c3RhdGljIGludCBzcGFyeDVfdGNfZmxvd2VyX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jLTE0MzgtXHR2Y3RybCA9IHBvcnQtXHUwMDNlc3Bhcng1LVx1MDAzZXZjYXBfY3RybDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjE0Mzk6XHRlcnIgPSB2Y2FwX2dldF9ydWxlX2NvdW50X2J5X2Nvb2tpZSh2Y3RybCwgXHUwMDI2Y3RyLCBmY28tXHUwMDNlY29va2llKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jLTE0NDAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjQxNj1zdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2RlY29kZV9ydWxlKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKmVsZW0pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNDQ3OnN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfZ2V0X3J1bGUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsIHUzMiBpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ0OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDY0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjQ2NTpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2dldF9ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTMzNTM9aW50IHZjYXBfcnVsZV9nZXRfa2V5c2V0cyhzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICpyaSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTMzOTYtLyogQ29sbGVjdCBwYWNrZXQgY291bnRzIGZyb20gYWxsIHJ1bGVzIHdpdGggdGhlIHNhbWUgY29va2llICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjMzOTc6aW50IHZjYXBfZ2V0X3J1bGVfY291bnRfYnlfY29va2llKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMzk4LVx0XHRcdFx0ICBzdHJ1Y3QgdmNhcF9jb3VudGVyICpjdHIsIHU2NCBjb29raWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDM1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzQzNjpFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX2dldF9ydWxlX2NvdW50X2J5X2Nvb2tpZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTM0MzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50Lmg9MTczPXN0cnVjdCB2Y2FwX3J1bGUgKnZjYXBfY29weV9ydWxlKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50LmgtMTc0LS8qIEdldCBydWxlIGZyb20gYSBWQ0FQIGluc3RhbmNlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaDoxNzU6c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9nZXRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oLTE3Ni0vKiBVcGRhdGUgZXhpc3RpbmcgcnVsZSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oPTIwNz1pbnQgdmNhcF9hZG1pbl9ydWxlX2NvdW50KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgaW50IGNpZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50LmgtMjA5LS8qIFZDQVAgcnVsZSBjb3VudGVyIG9wZXJhdGlvbnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oOjIxMDppbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaC0yMTEtXHRcdFx0XHQgIHN0cnVjdCB2Y2FwX2NvdW50ZXIgKmN0ciwgdTY0IGNvb2tpZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM5MAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIExBTjk2NnggYW5kIFNwYXJ4NSBEcml2ZXJzKioKCk9rYXksIHNvIEkgc2VlIHRoZXNlIGRyaXZlcnMsIGBsYW45NjZ4YCBhbmQgYHNwYXJ4NWAsIHBvcHBpbmcgdXAgaW4gdGhlIGNvZGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBsYW45NjZ4YCBhbmQgYHNwYXJ4NWAgZHJpdmVycyB0aGVtc2VsdmVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGFyZSB0aGVzZSBkcml2ZXJzIGV2ZW4gKnJlYWNoYWJsZSogd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD8KCkxldCYjMzk7cyBjbGFyaWZ5IHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBgbGFuOTY2eGAgcG9pbnRzIHRvIHRoZSBNaWNyb2NoaXAgTEFOOTY2eCBzd2l0Y2ggZHJpdmVyLCBhbmQgYHNwYXJ4NWAgaXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoIGRyaXZlci4gTm93LCB0aGVzZSBhcmUgKnBoeXNpY2FsKiBzd2l0Y2ggY2hpcHMsIHJpZ2h0PyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgdHlwZXMgb2YgY29tcG9uZW50cyBhcmUgZ2VuZXJhbGx5ICpub3QqIGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBUaGF0JiMzOTtzIGEga2V5IGRpc3RpbmN0aW9uLgoKVGhlIG5leHQgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVyZSYjMzk7cyBzb21lIGtpbmQgb2Ygc29mdHdhcmUgZW11bGF0aW9uIGxheWVyIGZvciB0aGVtLCBvciBpZiB0aGV5IGFic29sdXRlbHkgcmVxdWlyZSB0aGUgcHJlc2VuY2Ugb2YgcGh5c2ljYWwgaGFyZHdhcmUgdG8gZnVuY3Rpb24uIE1vcmUgb2Z0ZW4gdGhhbiBub3QsIHN3aXRjaCBkcml2ZXJzIOKAkyBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHNwYXJ4NWAsIGBwcmVzdGVyYWAsIGBvY2Vsb3RgLCBhbmQgb3RoZXJzIHRoYXQgSSYjMzk7dmUgd29ya2VkIHdpdGggaW4gdGhlIHBhc3Qg4oCTIGRvIGhhdmUgdGhhdCBoYXJkd2FyZSBkZXBlbmRlbmN5LgoKSSBuZWVkIHRvIGRpZyBkZWVwZXIuIE15IG5leHQgbW92ZSBpcyB0byBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZ2AuIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgaGludHMgYWJvdXQgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQuIEhvcGVmdWxseSwgdGhpcyBLY29uZmlnIGZpbGUgd2lsbCBnaXZlIHRoZSBjbHVlcyBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdGNvbmZpZyBMQU45NjZYX1NXSVRDSFxuICAgMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TGFuOTY2eCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBPRlxuICAgNjpcdFx0ZGVwZW5kcyBvbiBORVRfU1dJVENIREVWXG4gICA3Olx0XHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuICAgODpcdFx0c2VsZWN0IFBIWUxJTktcbiAgIDk6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMTA6XHRcdHNlbGVjdCBWQ0FQXG4gIDExOlx0XHRzZWxlY3QgRkRNQVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgTGFuOTY2eCBuZXR3b3JrIHN3aXRjaCBkZXZpY2UuXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIExBTjk2NlhfRENCXG4gIDE2Olx0XHRib29sIFwmIzM0O0RhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gTEFOOTY2WF9TV0lUQ0ggXHUwMDI2XHUwMDI2IERDQlxuICAxODpcdFx0ZGVmYXVsdCB5XG4gIDE5Olx0XHRoZWxwXG4gIDIwOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIERhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIGluIHRoZVxuICAyMTpcdFx0ICBkcml2ZXIuIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXNzaWduIHByaW9yaXR5IHRvIHRyYWZmaWMsIGJhc2VkIG9uXG4gIDIyOlx0XHQgIERTQ1AgYW5kIFBDUC5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgSWYgdW5zdXJlLCBzZXQgdG8gWS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwOTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjI4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTeXN0ZW0gQXJjaGl0ZWN0dXJlKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHNvbWV0aGluZyBwbGF0Zm9ybS1zcGVjaWZpYywgbGlrZWx5IGEgZHJpdmVyLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBkZXBlbmQgb24gdGhlIHByZXNlbmNlIG9mIE9wZW4gRmlybXdhcmUgb3IgRGV2aWNlIFRyZWUsIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBgSEFTX0lPTUVNYCBtYWNyby4gVGhpcyBzY3JlYW1zIGhhcmR3YXJlIGludGVyYWN0aW9uIGFuZCBtZW1vcnktbWFwcGVkIEkvTywgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciBwbGF0Zm9ybSBkcml2ZXJzLiBUbyBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoaXMsIEkgc2hvdWxkIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZvciB0aGUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZ2AuIFRoYXQgZmlsZSBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMsIGFuZCBjbGFyaWZ5IGV4YWN0bHkgaG93IHRoZXNlIHRoaW5ncyByZWxhdGUgdG8gdGhpcyBzcGVjaWZpYyBkcml2ZXImIzM5O3MgZnVuY3Rpb25hbGl0eS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBhbmQgaG93IHRvIGFwcHJvYWNoIHJlc29sdmluZyB0aGUgcHJvYmxlbSBJIGFtIHdvcmtpbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdGNvbmZpZyBTUEFSWDVfU1dJVENIXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTcGFyeDUgc3dpdGNoIGRyaXZlclwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBORVRfU1dJVENIREVWXG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBPRlxuICAgNjpcdFx0ZGVwZW5kcyBvbiBBUkNIX1NQQVJYNSB8fCBBUkNIX0xBTjk2OVggfHwgQ09NUElMRV9URVNUXG4gICA3Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA4Olx0XHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuICAgOTpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTA6XHRcdHNlbGVjdCBQSFlfU1BBUlg1X1NFUkRFU1xuICAxMTpcdFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcbiAgMTI6XHRcdHNlbGVjdCBWQ0FQXG4gIDEzOlx0XHRzZWxlY3QgRkRNQVxuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgU3Bhcng1IG5ldHdvcmsgc3dpdGNoIGRldmljZS5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgU1BBUlg1X0RDQlxuICAxODpcdFx0Ym9vbCBcJiMzNDtEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBzdXBwb3J0XCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0ggXHUwMDI2XHUwMDI2IERDQlxuICAyMDpcdFx0ZGVmYXVsdCB5XG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIERhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIGluIHRoZVxuICAyMzpcdFx0ICBkcml2ZXIuIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXNzaWduIHByaW9yaXR5IHRvIHRyYWZmaWMsIGJhc2VkIG9uXG4gIDI0Olx0XHQgIERTQ1AgYW5kIFBDUC5cbiAgMjU6XHRcbiAgMjY6XHRcdCAgSWYgdW5zdXJlLCBzZXQgdG8gWS5cbiAgMjc6XHRcbiAgMjg6XHRjb25maWcgTEFOOTY5WF9TV0lUQ0hcbiAgMjk6XHRcdGJvb2wgXCYjMzQ7TGFuOTY5eCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDMwOlx0XHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0hcbiAgMzE6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMzI6XHRcdGhlbHBcbiAgMzM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIGxhbjk2OXggZmFtaWx5IG9mIG5ldHdvcmsgc3dpdGNoIGRldmljZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MjMKCQkJCQkJCW91dHB1dDogOTQKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gYSBmZXcga2V5IGZhY3RvcnM6IGBBUkNIX1NQQVJYNWAsIGBBUkNIX0xBTjk2OVhgLCBvciBgQ09NUElMRV9URVNUYC4gVGhlc2UgZmxhZ3MgYXJlIHRoZSB0ZWxsLiBUaGV5IHBvaW50IGRpcmVjdGx5IHRvIGRyaXZlcnMgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIHN3aXRjaGVzIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBNaWNyb2NoaXAgU3Bhcng1IGFuZCBMQU45NjZ4LiBUaGVzZSBhcmVuJiMzOTt0IGp1c3QgYW55IGRyaXZlcnM7IHRoZXkmIzM5O3JlICp2ZW5kb3Itc3BlY2lmaWMqLCBhbmQgY3JpdGljYWxseSwgdGhleSAqcmVxdWlyZSogYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLiBTdGFuZGFyZCBRRU1VLCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCB3ZSB0eXBpY2FsbHkgdXNlLCBjYW4mIzM5O3QgZW11bGF0ZSB0aGlzIGtpbmQgb2Ygc2V0dXAuCgpOb3csIEkmIzM5O20gcmVjYWxsaW5nIHRoZSBleHBsaWNpdCBpbnN0cnVjdGlvbjogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKCkl0JiMzOTtzIGNsZWFyLiBUaGlzIGRyaXZlciwgYmVjYXVzZSBpdCYjMzk7cyB0aWVkIHRvIHRoaXMgdmVyeSBzcGVjaWZpYywgdW4tZW11bGF0YWJsZSBoYXJkd2FyZSwgZmFsbHMgc3F1YXJlbHkgaW50byB0aGF0IGNhdGVnb3J5LiBUaGVyZWZvcmUsIGJhc2VkIG9uIHRoZSBkb2N1bWVudGVkIGNyaXRlcmlhIGFuZCB0aGUgcGh5c2ljYWwgcmVxdWlyZW1lbnRzLCBmdXp6aW5nIHRoaXMgcGF0Y2ggaW4gb3VyIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGlzbiYjMzk7dCBnb2luZyB0byBiZSBwcm9kdWN0aXZlLiBJdCYjMzk7cyBub3Qgd29ydGggdGhlIGVmZm9ydC4gVGhlIGFuc3dlciBpcyBkZWZpbml0aXZlbHkgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBWQ0FQIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBNaWNyb2NoaXAgaGFyZHdhcmUgc3dpdGNoIGRyaXZlcnMgbGlrZSBzcGFyeDUgYW5kIGxhbjk2NnguIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFZDQVAgQVBJLCB3aGljaCBpcyB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IE1pY3JvY2hpcCBoYXJkd2FyZSBzd2l0Y2ggZHJpdmVycyBsaWtlIHNwYXJ4NSBhbmQgbGFuOTY2eC4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozNzo1NC4wNjM1MTA5NzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk5ODk4ODE5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBWQ0FQIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBNaWNyb2NoaXAgaGFyZHdhcmUgc3dpdGNoIGRyaXZlcnMgbGlrZSBzcGFyeDUgYW5kIGxhbjk2NnguIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozNzo1NC4wNjM1MTc5MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTI0ODUyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDAxZTM2NDIzNTM3ZGEzYTgwMzc4N2I5NmMxNDM0ZWE5NWVhYmE0NDlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBBdWcgMiAwOTozNzo1MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xcbmluZGV4IGZmODZjZGUxMWEzMmMuLjc4OGMwNzI4ZDc2MzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmNcXG5AQCAtMjQyNywxOCArMjQyNywyMSBAQCBzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2RlY29kZV9ydWxlKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKmVsZW0pXFxuIFxcbiBcXHRlcnIgPSB2Y2FwX3JlYWRfcnVsZShyaSk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuK1xcdFxcdGdvdG8gZXJyX2ZyZWVfcnVsZTtcXG4gXFxuIFxcdGVyciA9IHZjYXBfZGVjb2RlX2tleXNldChyaSk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuK1xcdFxcdGdvdG8gZXJyX2ZyZWVfcnVsZTtcXG4gXFxuIFxcdGVyciA9IHZjYXBfZGVjb2RlX2FjdGlvbnNldChyaSk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuK1xcdFxcdGdvdG8gZXJyX2ZyZWVfcnVsZTtcXG4gXFxuIG91dDpcXG4gXFx0cmV0dXJuIFxcdTAwMjZyaS1cXHUwMDNlZGF0YTtcXG4rZXJyX2ZyZWVfcnVsZTpcXG4rXFx0dmNhcF9mcmVlX3J1bGUoXFx1MDAyNnJpLVxcdTAwM2VkYXRhKTtcXG4rXFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4gfVxcbiBcXG4gc3RydWN0IHZjYXBfcnVsZSAqdmNhcF9nZXRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozNzo1NC42NTU5MDgwMjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMDQwNjU4Mjg4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBWQ0FQIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBNaWNyb2NoaXAgaGFyZHdhcmUgc3dpdGNoIGRyaXZlcnMgbGlrZSBzcGFyeDUgYW5kIGxhbjk2NnguIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMWUzNjQyMzUzN2RhM2E4MDM3ODdiOTZjMTQzNGVhOTVlYWJhNDQ5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwOTozNzo1MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jXG5pbmRleCBmZjg2Y2RlMTFhMzJjLi43ODhjMDcyOGQ3NjM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuY1xuQEAgLTI0MjcsMTggKzI0MjcsMjEgQEAgc3RydWN0IHZjYXBfcnVsZSAqdmNhcF9kZWNvZGVfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICplbGVtKVxuIFxuIFx0ZXJyID0gdmNhcF9yZWFkX3J1bGUocmkpO1xuIFx0aWYgKGVycilcbi1cdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbitcdFx0Z290byBlcnJfZnJlZV9ydWxlO1xuIFxuIFx0ZXJyID0gdmNhcF9kZWNvZGVfa2V5c2V0KHJpKTtcbiBcdGlmIChlcnIpXG4tXHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4rXHRcdGdvdG8gZXJyX2ZyZWVfcnVsZTtcbiBcbiBcdGVyciA9IHZjYXBfZGVjb2RlX2FjdGlvbnNldChyaSk7XG4gXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuK1x0XHRnb3RvIGVycl9mcmVlX3J1bGU7XG4gXG4gb3V0OlxuIFx0cmV0dXJuIFx1MDAyNnJpLVx1MDAzZWRhdGE7XG4rZXJyX2ZyZWVfcnVsZTpcbitcdHZjYXBfZnJlZV9ydWxlKFx1MDAyNnJpLVx1MDAzZWRhdGEpO1xuK1x0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiB9XG4gXG4gc3RydWN0IHZjYXBfcnVsZSAqdmNhcF9nZXRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDk6Mzc6NTQuNjU1OTEwMDkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5NDY0NDE1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGVkIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5J3ZlIG1vZGlmaWVkIHRoZSBgdmNhcF9kZWNvZGVfcnVsZWAgZnVuY3Rpb24uIEkgc2VlIHRoZXkndmUgYWRkZWQgYSBjYWxsIHRvIGB2Y2FwX2ZyZWVfcnVsZWAgd2hlbiBhbiBlcnJvciBoYXBwZW5zLCBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGFuIGVycm9yIHBvaW50ZXIuIFRoYXQncyBhIGdvb2QgY2hhbmdlLCBwb3RlbnRpYWxseSBjbGVhbmluZyB1cCByZXNvdXJjZSBsZWFrcy5cblxuTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBjb2RlIGlzIGV2ZW4gKnJlbGV2YW50KiBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuIEkga25vdyB0aGlzIGlzIHBhcnQgb2YgdGhlIE1pY3JvY2hpcCBWQ0FQIEFQSS4gVkNBUCwgcmlnaHQsIHRoYXQgdXN1YWxseSBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBNaWNyb2NoaXAgU3Bhcng1IG9yIGEgc2ltaWxhciBzd2l0Y2ggZHJpdmVyLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQ/IElzIHRoaXMgY29kZSBwYXRoIGV2ZW4gKnJlYWNoYWJsZSogaWYgd2UncmUgcnVubmluZyBpbiBhIFZNIG9yIG9uIGFuIGVtdWxhdGVkIHN5c3RlbT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgb3IgaWYgaXQgaGFzIHNvbWUgcG90ZW50aWFsIGZvciBiZWluZyByZWxldmFudCBpbiBhIG1vcmUgZ2VuZXJhbCwgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhpcyB3aWxsIGFmZmVjdCBob3cgSSBhc3Nlc3MgdGhlIGltcGFjdCBhbmQgY3JpdGljYWxpdHkgb2YgdGhlIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjIyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDk6Mzc6NTguNTUwNTU4ODU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MjIzODQxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2Y2FwX2RlY29kZV9ydWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI0MTM9RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9mcmVlX3J1bGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDE1LS8qIERlY29kZSBhIHJ1bGUgZnJvbSB0aGUgVkNBUCBjYWNoZSBhbmQgcmV0dXJuIGEgY29weSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjQxNjpzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2RlY29kZV9ydWxlKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKmVsZW0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MjQ0Nz1zdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2dldF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jLTI0NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNDYxOlxcdHJ1bGUgPSB2Y2FwX2RlY29kZV9ydWxlKGVsZW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2Mi1cXHR2Y2FwX3VubG9jayhlbGVtLVxcdTAwM2VhZG1pbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmM9MjkyPXN0YXRpYyBpbnQgdmNhcF9zaG93X2FkbWluKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jLTMwMS1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGVsZW0sIFxcdTAwMjZhZG1pbi1cXHUwMDNlcnVsZXMsIGxpc3QpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmM6MzAyOlxcdFxcdHZydWxlID0gdmNhcF9kZWNvZGVfcnVsZShlbGVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmMtMzAzLVxcdFxcdGlmIChJU19FUlIodnJ1bGUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmg9MTIyPWludCB2Y2FwX3J1bGVfZ2V0X2tleXNldHMoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqcmksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmgtMTI0LS8qIERlY29kZSBhIHJ1bGUgZnJvbSB0aGUgVkNBUCBjYWNoZSBhbmQgcmV0dXJuIGEgY29weSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX3ByaXZhdGUuaDoxMjU6c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9kZWNvZGVfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICplbGVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9wcml2YXRlLmgtMTI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozNzo1OC43MjI4MDM2NDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTY4MjI4NDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBVc2FnZSBvZiBgdmNhcF9nZXRfcnVsZWAqKlxuXG5SaWdodCwgc28gYHZjYXBfZ2V0X3J1bGVgIGFuZCBgdmNhcF9zaG93X2FkbWluYCBhcmUgdGhlIGltbWVkaWF0ZSBjb250ZXh0cyBJJ20gc2VlaW5nLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBgdmNhcF9nZXRfcnVsZWAgYSBsaXR0bGUgYmV0dGVyLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgZG93bnN0cmVhbSBpbXBhY3QuIFdoYXQgb3RoZXIgZnVuY3Rpb25zLCBtb2R1bGVzLCBvciBzeXN0ZW1zIHJlbHkgb24gdGhlIG91dHB1dCBvciBiZWhhdmlvciBvZiBgdmNhcF9nZXRfcnVsZWA/IEl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgY2FsbCBncmFwaC4gTGV0J3MgdHJhY2UgYWxsIGluc3RhbmNlcyB0byBmaW5kIG91dCB3aGF0IGRlcGVuZHMgb24gYHZjYXBfZ2V0X3J1bGVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgaXRzIGluZmx1ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA5OjM4OjAxLjY5MTAzNzE1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDUzNzExMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmNhcF9nZXRfcnVsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmM9NTQ9c3RhdGljIGludCBsYW45NjZ4X3B0cF9hZGRfdHJhcChzdHJ1Y3QgbGFuOTY2eF9wb3J0ICpwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wdHAuYy02My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jOjY0OlxcdHZydWxlID0gdmNhcF9nZXRfcnVsZShsYW45NjZ4LVxcdTAwM2V2Y2FwX2N0cmwsIHJ1bGVfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcHRwLmMtNjUtXFx0aWYgKCFJU19FUlIodnJ1bGUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jPTEwMz1zdGF0aWMgaW50IGxhbjk2NnhfcHRwX2RlbF90cmFwKHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jLTExMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jOjExMTpcXHR2cnVsZSA9IHZjYXBfZ2V0X3J1bGUobGFuOTY2eC1cXHUwMDNldmNhcF9jdHJsLCBydWxlX2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3B0cC5jLTExMi1cXHRpZiAoSVNfRVJSKHZydWxlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM9NTgzPXN0YXRpYyBpbnQgbGFuOTY2eF90Y19mbG93ZXJfc3RhdHMoc3RydWN0IGxhbjk2NnhfcG9ydCAqcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmMtNTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfdGNfZmxvd2VyLmM6NTkwOlxcdGVyciA9IHZjYXBfZ2V0X3J1bGVfY291bnRfYnlfY29va2llKHBvcnQtXFx1MDAzZWxhbjk2NngtXFx1MDAzZXZjYXBfY3RybCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3RjX2Zsb3dlci5jLTU5MS1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmNvdW50LCBmLVxcdTAwM2Vjb29raWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmM9MTM3NT1zdGF0aWMgaW50IHNwYXJ4NV90Y19mcmVlX3J1bGVfcmVzb3VyY2VzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTM4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYzoxMzg0OlxcdHZydWxlID0gdmNhcF9nZXRfcnVsZSh2Y3RybCwgcnVsZV9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTM4NS1cXHRpZiAoSVNfRVJSKHZydWxlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jPTE0Mjg9c3RhdGljIGludCBzcGFyeDVfdGNfZmxvd2VyX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdGNfZmxvd2VyLmMtMTQzOC1cXHR2Y3RybCA9IHBvcnQtXFx1MDAzZXNwYXJ4NS1cXHUwMDNldmNhcF9jdHJsO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3RjX2Zsb3dlci5jOjE0Mzk6XFx0ZXJyID0gdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUodmN0cmwsIFxcdTAwMjZjdHIsIGZjby1cXHUwMDNlY29va2llKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV90Y19mbG93ZXIuYy0xNDQwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jPTI0MTY9c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9kZWNvZGVfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsICplbGVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MjQ0NzpzdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2dldF9ydWxlKHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLCB1MzIgaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0yNDQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2NC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYzoyNDY1OkVYUE9SVF9TWU1CT0xfR1BMKHZjYXBfZ2V0X3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMjQ2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM9MzM1Mz1pbnQgdmNhcF9ydWxlX2dldF9rZXlzZXRzKHN0cnVjdCB2Y2FwX3J1bGVfaW50ZXJuYWwgKnJpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMzk2LS8qIENvbGxlY3QgcGFja2V0IGNvdW50cyBmcm9tIGFsbCBydWxlcyB3aXRoIHRoZSBzYW1lIGNvb2tpZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmM6MzM5NzppbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zMzk4LVxcdFxcdFxcdFxcdCAgc3RydWN0IHZjYXBfY291bnRlciAqY3RyLCB1NjQgY29va2llKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYy0zNDM1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jOjM0MzY6RVhQT1JUX1NZTUJPTF9HUEwodmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMtMzQzNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oPTE3Mz1zdHJ1Y3QgdmNhcF9ydWxlICp2Y2FwX2NvcHlfcnVsZShzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaC0xNzQtLyogR2V0IHJ1bGUgZnJvbSBhIFZDQVAgaW5zdGFuY2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaDoxNzU6c3RydWN0IHZjYXBfcnVsZSAqdmNhcF9nZXRfcnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTMyIGlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaC0xNzYtLyogVXBkYXRlIGV4aXN0aW5nIHJ1bGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oPTIwNz1pbnQgdmNhcF9hZG1pbl9ydWxlX2NvdW50KHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgaW50IGNpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaC0yMDktLyogVkNBUCBydWxlIGNvdW50ZXIgb3BlcmF0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVudC5oOjIxMDppbnQgdmNhcF9nZXRfcnVsZV9jb3VudF9ieV9jb29raWUoc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfY2xpZW50LmgtMjExLVxcdFxcdFxcdFxcdCAgc3RydWN0IHZjYXBfY291bnRlciAqY3RyLCB1NjQgY29va2llKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDk6Mzg6MDEuODk2NDI3MTIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3MTk4NzEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIExBTjk2NnggYW5kIFNwYXJ4NSBEcml2ZXJzKipcblxuT2theSwgc28gSSBzZWUgdGhlc2UgZHJpdmVycywgYGxhbjk2NnhgIGFuZCBgc3Bhcng1YCwgcG9wcGluZyB1cCBpbiB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGxhbjk2NnhgIGFuZCBgc3Bhcng1YCBkcml2ZXJzIHRoZW1zZWx2ZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgYXJlIHRoZXNlIGRyaXZlcnMgZXZlbiAqcmVhY2hhYmxlKiB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50P1xuXG5MZXQncyBjbGFyaWZ5IHdoYXQgd2UncmUgZGVhbGluZyB3aXRoIGhlcmUuIGBsYW45NjZ4YCBwb2ludHMgdG8gdGhlIE1pY3JvY2hpcCBMQU45NjZ4IHN3aXRjaCBkcml2ZXIsIGFuZCBgc3Bhcng1YCBpcyB0aGUgTWljcm9jaGlwIFNwYXJ4NSBzd2l0Y2ggZHJpdmVyLiBOb3csIHRoZXNlIGFyZSAqcGh5c2ljYWwqIHN3aXRjaCBjaGlwcywgcmlnaHQ/IE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCB0aGVzZSB0eXBlcyBvZiBjb21wb25lbnRzIGFyZSBnZW5lcmFsbHkgKm5vdCogZW11bGF0ZWQgd2l0aGluIFFFTVUuIFRoYXQncyBhIGtleSBkaXN0aW5jdGlvbi5cblxuVGhlIG5leHQgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVyZSdzIHNvbWUga2luZCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gbGF5ZXIgZm9yIHRoZW0sIG9yIGlmIHRoZXkgYWJzb2x1dGVseSByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZiBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi4gTW9yZSBvZnRlbiB0aGFuIG5vdCwgc3dpdGNoIGRyaXZlcnMg4oCTIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgc3Bhcng1YCwgYHByZXN0ZXJhYCwgYG9jZWxvdGAsIGFuZCBvdGhlcnMgdGhhdCBJJ3ZlIHdvcmtlZCB3aXRoIGluIHRoZSBwYXN0IOKAkyBkbyBoYXZlIHRoYXQgaGFyZHdhcmUgZGVwZW5kZW5jeS5cblxuSSBuZWVkIHRvIGRpZyBkZWVwZXIuIE15IG5leHQgbW92ZSBpcyB0byBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZ2AuIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgaGludHMgYWJvdXQgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQuIEhvcGVmdWxseSwgdGhpcyBLY29uZmlnIGZpbGUgd2lsbCBnaXZlIHRoZSBjbHVlcyBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzOTAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDk6Mzg6MDYuNjY4NDE4NDExWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIExBTjk2NlhfU1dJVENIXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTGFuOTY2eCBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgIDM6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gT0ZcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gTkVUX1NXSVRDSERFVlxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG4gICA4OlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgVkNBUFxcbiAgMTE6XFx0XFx0c2VsZWN0IEZETUFcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIExhbjk2NnggbmV0d29yayBzd2l0Y2ggZGV2aWNlLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgTEFOOTY2WF9EQ0JcXG4gIDE2OlxcdFxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIExBTjk2NlhfU1dJVENIIFxcdTAwMjZcXHUwMDI2IERDQlxcbiAgMTg6XFx0XFx0ZGVmYXVsdCB5XFxuICAxOTpcXHRcXHRoZWxwXFxuICAyMDpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIERhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIGluIHRoZVxcbiAgMjE6XFx0XFx0ICBkcml2ZXIuIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXNzaWduIHByaW9yaXR5IHRvIHRyYWZmaWMsIGJhc2VkIG9uXFxuICAyMjpcXHRcXHQgIERTQ1AgYW5kIFBDUC5cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNldCB0byBZLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozODowNi42Njg1MzA4ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI0NzU5MDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU3lzdGVtIEFyY2hpdGVjdHVyZSoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHBsYXRmb3JtLXNwZWNpZmljLCBsaWtlbHkgYSBkcml2ZXIuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGRlcGVuZCBvbiB0aGUgcHJlc2VuY2Ugb2YgT3BlbiBGaXJtd2FyZSBvciBEZXZpY2UgVHJlZSwgYW5kIHNwZWNpZmljYWxseSwgdGhlIGBIQVNfSU9NRU1gIG1hY3JvLiBUaGlzIHNjcmVhbXMgaGFyZHdhcmUgaW50ZXJhY3Rpb24gYW5kIG1lbW9yeS1tYXBwZWQgSS9PLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIHBsYXRmb3JtIGRyaXZlcnMuIFRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhpcywgSSBzaG91bGQgZGlnIGludG8gdGhlIEtjb25maWcgZm9yIHRoZSBkcml2ZXIsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnYC4gVGhhdCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcywgYW5kIGNsYXJpZnkgZXhhY3RseSBob3cgdGhlc2UgdGhpbmdzIHJlbGF0ZSB0byB0aGlzIHNwZWNpZmljIGRyaXZlcidzIGZ1bmN0aW9uYWxpdHkuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjb2RlIGlzIHN0cnVjdHVyZWQgYW5kIGhvdyB0byBhcHByb2FjaCByZXNvbHZpbmcgdGhlIHByb2JsZW0gSSBhbSB3b3JraW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjI4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozODowOS44OTMyOTUwNDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRjb25maWcgU1BBUlg1X1NXSVRDSFxcbiAgIDI6XFx0XFx0dHJpc3RhdGUgXFxcIlNwYXJ4NSBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgIDM6XFx0XFx0ZGVwZW5kcyBvbiBORVRfU1dJVENIREVWXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBPRlxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX1NQQVJYNSB8fCBBUkNIX0xBTjk2OVggfHwgQ09NUElMRV9URVNUXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxcbiAgIDk6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDEwOlxcdFxcdHNlbGVjdCBQSFlfU1BBUlg1X1NFUkRFU1xcbiAgMTE6XFx0XFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG4gIDEyOlxcdFxcdHNlbGVjdCBWQ0FQXFxuICAxMzpcXHRcXHRzZWxlY3QgRkRNQVxcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgU3Bhcng1IG5ldHdvcmsgc3dpdGNoIGRldmljZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFNQQVJYNV9EQ0JcXG4gIDE4OlxcdFxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0ggXFx1MDAyNlxcdTAwMjYgRENCXFxuICAyMDpcXHRcXHRkZWZhdWx0IHlcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgRGF0YSBDZW50ZXIgQnJpZGdpbmcgKERDQikgaW4gdGhlXFxuICAyMzpcXHRcXHQgIGRyaXZlci4gVGhpcyBjYW4gYmUgdXNlZCB0byBhc3NpZ24gcHJpb3JpdHkgdG8gdHJhZmZpYywgYmFzZWQgb25cXG4gIDI0OlxcdFxcdCAgRFNDUCBhbmQgUENQLlxcbiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIElmIHVuc3VyZSwgc2V0IHRvIFkuXFxuICAyNzpcXHRcXG4gIDI4OlxcdGNvbmZpZyBMQU45NjlYX1NXSVRDSFxcbiAgMjk6XFx0XFx0Ym9vbCBcXFwiTGFuOTY5eCBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgMzA6XFx0XFx0ZGVwZW5kcyBvbiBTUEFSWDVfU1dJVENIXFxuICAzMTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBsYW45Njl4IGZhbWlseSBvZiBuZXR3b3JrIHN3aXRjaCBkZXZpY2VzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwOTozODowOS44OTM0NjExMzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE2ODk4NzUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gYSBmZXcga2V5IGZhY3RvcnM6IGBBUkNIX1NQQVJYNWAsIGBBUkNIX0xBTjk2OVhgLCBvciBgQ09NUElMRV9URVNUYC4gVGhlc2UgZmxhZ3MgYXJlIHRoZSB0ZWxsLiBUaGV5IHBvaW50IGRpcmVjdGx5IHRvIGRyaXZlcnMgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIHN3aXRjaGVzIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBNaWNyb2NoaXAgU3Bhcng1IGFuZCBMQU45NjZ4LiBUaGVzZSBhcmVuJ3QganVzdCBhbnkgZHJpdmVyczsgdGhleSdyZSAqdmVuZG9yLXNwZWNpZmljKiwgYW5kIGNyaXRpY2FsbHksIHRoZXkgKnJlcXVpcmUqIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gU3RhbmRhcmQgUUVNVSwgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgd2UgdHlwaWNhbGx5IHVzZSwgY2FuJ3QgZW11bGF0ZSB0aGlzIGtpbmQgb2Ygc2V0dXAuXG5cbk5vdywgSSdtIHJlY2FsbGluZyB0aGUgZXhwbGljaXQgaW5zdHJ1Y3Rpb246IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiXG5cbkl0J3MgY2xlYXIuIFRoaXMgZHJpdmVyLCBiZWNhdXNlIGl0J3MgdGllZCB0byB0aGlzIHZlcnkgc3BlY2lmaWMsIHVuLWVtdWxhdGFibGUgaGFyZHdhcmUsIGZhbGxzIHNxdWFyZWx5IGludG8gdGhhdCBjYXRlZ29yeS4gVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGUgZG9jdW1lbnRlZCBjcml0ZXJpYSBhbmQgdGhlIHBoeXNpY2FsIHJlcXVpcmVtZW50cywgZnV6emluZyB0aGlzIHBhdGNoIGluIG91ciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBpc24ndCBnb2luZyB0byBiZSBwcm9kdWN0aXZlLiBJdCdzIG5vdCB3b3J0aCB0aGUgZWZmb3J0LiBUaGUgYW5zd2VyIGlzIGRlZmluaXRpdmVseSBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkyMywiT3V0cHV0VG9rZW5zIjo5NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA5OjM4OjE1LjA2MjQ1MjcyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBWQ0FQIEFQSSwgd2hpY2ggaXMgdXNlZCBleGNsdXNpdmVseSBieSBNaWNyb2NoaXAgaGFyZHdhcmUgc3dpdGNoIGRyaXZlcnMgbGlrZSBzcGFyeDUgYW5kIGxhbjk2NnguIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFZDQVAgQVBJLCB3aGljaCBpcyB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IE1pY3JvY2hpcCBoYXJkd2FyZSBzd2l0Y2ggZHJpdmVycyBsaWtlIHNwYXJ4NSBhbmQgbGFuOTY2eC4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7gv8m[1] Phase: Running StartedAt: 2026-08-02 09:38:26 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7gv8m[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-02 09:38:26 +0000 UTC FinishedAt: 2026-08-02 09:38:30 +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,}