Name: series-workflowbn56t Phase: Failed StartedAt: 2026-08-03 19:12:53 +0000 UTC FinishedAt: 2026-08-03 19:17:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbn56t[0] Phase: Succeeded StartedAt: 2026-08-03 19:12:53 +0000 UTC FinishedAt: 2026-08-03 19:16:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbn56t[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 19:12:53 +0000 UTC FinishedAt: 2026-08-03 19:16:50 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBueHB3aWZpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU0RJTyBkcml2ZXIgZm9yIE5YUCBXaUZpIGNoaXBzIChlLmcuLCBJVzYxeCkuIFNpbmNlIFNESU8gaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyIGVudmlyb25tZW50cywgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUsIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTU2YjhiMjRjNGYyNjNlNTEyNGRlNmM1OTg2ODdiMjc4Mjk5NjU5ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMTk6MTU6MTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jXG5pbmRleCBjYzQ3YzQzNWViNzBhLi45NjU0MDkxNGYzY2Y2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmNcbkBAIC00MTMsNyAmIzQzOzQxMywxMCBAQCBib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG4gXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwO1xuIFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXA7XG4gXG4tXHRpZiAoYnNzX2Rlc2MgXHUwMDI2XHUwMDI2ICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSkge1xuJiM0MztcdGlmICghYnNzX2Rlc2MpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGlmICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSB7XG4gXHRcdG54cHdpZmlfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuIFx0XHRcdCAgICBcJiMzNDtBUCBkb24mIzM5O3Qgc3VwcG9ydCB0d3QgZmVhdHVyZVxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXG5pbmRleCBlNDZjNTA1M2Q1MDkwLi4zYWQxYWY3Y2ExNTc3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXG5AQCAtNDUxLDcgJiM0Mzs0NTEsNyBAQCB2b2lkXG4gbnhwd2lmaV8xMW5fZGVsZXRlX3R4X2JhX3N0cmVhbV90YmxfZW50cnkoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbiBcdFx0XHRcdFx0ICBzdHJ1Y3Qgbnhwd2lmaV90eF9iYV9zdHJlYW1fdGJsICp0YmwpXG4ge1xuLVx0aWYgKCF0YmwgXHUwMDI2XHUwMDI2IG54cHdpZmlfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChwcml2LCB0YmwpKVxuJiM0MztcdGlmICghdGJsIHx8IG54cHdpZmlfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChwcml2LCB0YmwpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRueHB3aWZpX2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIElORk8sXG5AQCAtNjk0LDcgJiM0Mzs2OTQsNyBAQCBpbnQgbnhwd2lmaV9nZXRfdHhfYmFfc3RyZWFtX3RibChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIC8qIERlbGV0ZSBUeCBCQSBzdHJlYW0gZW50cnkgYnkgUkEuICovXG4gdm9pZCBueHB3aWZpX2RlbF90eF9iYV9zdHJlYW1fdGJsX2J5X3JhKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHU4ICpyYSlcbiB7XG4tXHRzdHJ1Y3Qgbnhwd2lmaV90eF9iYV9zdHJlYW1fdGJsICp0Ymw7XG4mIzQzO1x0c3RydWN0IG54cHdpZmlfdHhfYmFfc3RyZWFtX3RibCAqdGJsLCAqdG1wO1xuIFx0aW50IGk7XG4gXG4gXHRpZiAoIXJhKVxuQEAgLTcwMiw3ICYjNDM7NzAyLDcgQEAgdm9pZCBueHB3aWZpX2RlbF90eF9iYV9zdHJlYW1fdGJsX2J5X3JhKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHU4ICpyYSlcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9OVU1fVElEOyBpJiM0MzsmIzQzOykge1xuIFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eF9iYV9zdHJlYW1fdGJsX2xvY2tbaV0pO1xuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YmwsIFx1MDAyNnByaXYtXHUwMDNldHhfYmFfc3RyZWFtX3RibF9wdHJbaV0sIGxpc3QpXG4mIzQzO1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGJsLCB0bXAsIFx1MDAyNnByaXYtXHUwMDNldHhfYmFfc3RyZWFtX3RibF9wdHJbaV0sIGxpc3QpXG4gXHRcdFx0aWYgKCFtZW1jbXAodGJsLVx1MDAzZXJhLCByYSwgRVRIX0FMRU4pKVxuIFx0XHRcdFx0bnhwd2lmaV8xMW5fZGVsZXRlX3R4X2JhX3N0cmVhbV90YmxfZW50cnkocHJpdiwgdGJsKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuaW5kZXggYzgyMGYwOGQyODM1NS4uZmEzZGNlMjg1MjAzYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcbkBAIC03MTcsNiAmIzQzOzcxNyw3IEBAIG54cHdpZmlfaW5pdF9uZXdfcHJpdl9wYXJhbXMoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbiBcdFx0XHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSlcbiB7XG4gXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRueHB3aWZpX2luaXRfcHJpdihwcml2KTtcbiBcbkBAIC03NDAsNyAmIzQzOzc0MSwxNCBAQCBueHB3aWZpX2luaXRfbmV3X3ByaXZfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdH1cbiBcbi1cdHByaXYtXHUwMDNlYnNzX251bSA9IG54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKGFkYXB0ZXIsIHByaXYtXHUwMDNlYnNzX3R5cGUpO1xuJiM0MztcdHJldCA9IG54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKGFkYXB0ZXIsIHByaXYtXHUwMDNlYnNzX3R5cGUsIFx1MDAyNnByaXYtXHUwMDNlYnNzX251bSk7XG4mIzQzO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuJiM0MztcdFx0XHQgICAgXCYjMzQ7JXM6IG5vIHVudXNlZCBic3NfbnVtIGZvciB0eXBlICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgZGV2LVx1MDAzZW5hbWUsIHByaXYtXHUwMDNlYnNzX3R5cGUpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4gXG4gXHRmbHVzaF93b3JrcXVldWUoYWRhcHRlci1cdTAwM2V3b3JrcXVldWUpO1xuIFx0YXRvbWljX3NldChcdTAwMjZhZGFwdGVyLVx1MDAzZWlmYWNlX2NoYW5naW5nLCAwKTtcbkBAIC05NDMsNyAmIzQzOzk1MSw2IEBAIG54cHdpZmlfY2ZnODAyMTFfY2hhbmdlX3ZpcnR1YWxfaW50ZihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XG4gXHRcdFx0cmV0dXJuIG54cHdpZmlfY2hhbmdlX3ZpZl90b19zdGEoZGV2LCBjdXJyX2lmdHlwZSxcbiBcdFx0XHRcdFx0XHRcdCB0eXBlLCBwYXJhbXMpO1xuLVx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdGdvdG8gZXJybm90c3VwcDtcbiBcdFx0fVxuQEAgLTk1Miw4ICYjNDM7OTU5LDYgQEAgbnhwd2lmaV9jZmc4MDIxMV9jaGFuZ2VfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdGdvdG8gZXJybm90c3VwcDtcbiBcdH1cbiBcbi1cdHJldHVybiAwO1xuLVxuIGVycm5vdHN1cHA6XG4gXHRueHB3aWZpX2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxuIFx0XHQgICAgXCYjMzQ7dW5zdXBwb3J0ZWQgaW50ZXJmYWNlIHR5cGUgdHJhbnNpdGlvbjogJWQgdG8gJWRcXG5cJiMzNDssXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jXG5pbmRleCA0ZTAxZjQ1ZjNhMDBmLi5iNGM2MzgyOTAyNGEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmNcbkBAIC0yMDQsNyAmIzQzOzIwNCw3IEBAIHN0YXRpYyBib29sIG54cHdpZmlfZHJhaW5fdHgoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcilcbiBcdFx0XHRcdFx0ICBOWFBXSUZJX0FTWU5DX0NNRCk7XG4gXHRcdFx0YWRhcHRlci1cdTAwM2Voc19hY3RpdmF0ZWRfbWFudWFsbHkgPSBmYWxzZTtcbiBcdFx0fVxuLVx0XHRcdG54cHdpZmlfcHJvY2Vzc19ieXBhc3NfdHgoYWRhcHRlcik7XG4mIzQzO1x0XHRueHB3aWZpX3Byb2Nlc3NfYnlwYXNzX3R4KGFkYXB0ZXIpO1xuIFx0XHRpZiAoYWRhcHRlci1cdTAwM2Voc19hY3RpdmF0ZWQpIHtcbiBcdFx0XHRjbGVhcl9iaXQoTlhQV0lGSV9JU19IU19DT05GSUdVUkVELFxuIFx0XHRcdFx0ICBcdTAwMjZhZGFwdGVyLVx1MDAzZXdvcmtfZmxhZ3MpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaFxuaW5kZXggMzQ5ZGZhNGQzZjg1OC4uYjI1YTZhNGYyOTM2NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oXG5AQCAtMTE2Niw4ICYjNDM7MTE2Niw5IEBAIG54cHdpZmlfZ2V0X3ByaXYoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcbiB9XG4gXG4gLyogZmluZCB1bnVzZWQgQlNTIG51bWJlciBmb3IgbmV3IGludGVyZmFjZSAqL1xuLXN0YXRpYyBpbmxpbmUgdThcbi1ueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLCB1OCBic3NfdHlwZSlcbiYjNDM7c3RhdGljIGlubGluZSBpbnRcbiYjNDM7bnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciwgdTggYnNzX3R5cGUsXG4mIzQzO1x0XHRcdCAgIHU4ICpic3NfbnVtKVxuIHtcbiBcdHU4IGksIGo7XG4gXHRpbnQgaW5kZXhbTlhQV0lGSV9NQVhfQlNTX05VTV07XG5AQCAtMTE3OSw5ICYjNDM7MTE4MCwxNCBAQCBueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLCB1OCBic3NfdHlwZSlcbiBcdFx0ICAgICAgTkw4MDIxMV9JRlRZUEVfVU5TUEVDSUZJRUQpKSB7XG4gXHRcdFx0aW5kZXhbYWRhcHRlci1cdTAwM2Vwcml2W2ldLVx1MDAzZWJzc19udW1dID0gMTtcbiBcdFx0fVxuLVx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTlhQV0lGSV9NQVhfQlNTX05VTTsgaiYjNDM7JiM0MzspXG4tXHRcdGlmICghaW5kZXhbal0pXG4tXHRcdFx0cmV0dXJuIGo7XG4mIzQzO1xuJiM0MztcdGZvciAoaiA9IDA7IGogXHUwMDNjIE5YUFdJRklfTUFYX0JTU19OVU07IGomIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRpZiAoIWluZGV4W2pdKSB7XG4mIzQzO1x0XHRcdCpic3NfbnVtID0gajtcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiAtRU5PRU5UO1xuIH1cbiBcbkBAIC0xMTk1LDggJiM0MzsxMjAxLDkgQEAgbnhwd2lmaV9nZXRfdW51c2VkX3ByaXZfYnlfYnNzX3R5cGUoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlcHJpdl9udW07IGkmIzQzOyYjNDM7KVxuIFx0XHRpZiAoYWRhcHRlci1cdTAwM2Vwcml2W2ldLVx1MDAzZWJzc19tb2RlID09XG4gXHRcdCAgIE5MODAyMTFfSUZUWVBFX1VOU1BFQ0lGSUVEKSB7XG4tXHRcdFx0YWRhcHRlci1cdTAwM2Vwcml2W2ldLVx1MDAzZWJzc19udW0gPVxuLVx0XHRcdFx0bnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgYnNzX3R5cGUpO1xuJiM0MztcdFx0XHRpZiAobnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgYnNzX3R5cGUsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZhZGFwdGVyLVx1MDAzZXByaXZbaV0tXHUwMDNlYnNzX251bSkpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIE5VTEw7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcbmluZGV4IGQ4NTM2MzU0ZjA5M2EuLjhlZjBmNmViNDllMjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1xuQEAgLTEzNDcsNyAmIzQzOzEzNDcsOCBAQCBzdGF0aWMgaW50IG54cHdpZmlfcHJvY2Vzc19pbnRfc3RhdHVzKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHNkaW9faVxuIFx0XHRcdCAgICAgKChyeF9ibG9ja3MgKiBOWFBXSUZJX1NESU9fQkxPQ0tfU0laRSkgXHUwMDNlXG4gXHRcdFx0ICAgICAgY2FyZC1cdTAwM2VtcGFfcnguYnVmX3NpemUpKSkge1xuIFx0XHRcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsIFwmIzM0O2ludmFsaWQgcnhfbGVuPSVkXFxuXCYjMzQ7LCByeF9sZW4pO1xuLVx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHRnb3RvIHRlcm1fY21kO1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRyeF9sZW4gPSAodTE2KShyeF9ibG9ja3MgKiBOWFBXSUZJX1NESU9fQkxPQ0tfU0laRSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF90eHJ4LmNcbmluZGV4IGYzZDI0YmY4NjFjYTkuLjg0MGRkZGZjNGY1YWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jXG5AQCAtMjQ2LDggJiM0MzsyNDYsOCBAQCBpbnQgbnhwd2lmaV9oYW5kbGVfdWFwX3J4X2ZvcndhcmQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcbiBcdFx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gY29weSBza2IgZm9yIHVBUFxcblwmIzM0Oyk7XG4tXHRcdFx0XHQgICAgcHJpdi1cdTAwM2VzdGF0cy5yeF9kcm9wcGVkJiM0MzsmIzQzOztcbi1cdFx0XHRcdCAgICBkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuJiM0MztcdFx0XHRwcml2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuJiM0MztcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuIFx0XHRcdHJldHVybiAtRU5PTUVNO1xuIFx0XHR9XG4gXHR9IGVsc2Uge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3V0aWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3V0aWwuY1xuaW5kZXggMjllZjAzMWY4ZWM5Yi4uZGQ4MjE4NjQxMTk1NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3V0aWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jXG5AQCAtNzk5LDM0ICYjNDM7Nzk5LDMyIEBAIGludCBueHB3aWZpX3JlY3ZfcGFja2V0X3RvX21vbmlmKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG4gXHRcdF9fbGUxNiBhY2NfbGU7XG4gXHRcdHU4IGZsYWdzID0gMDtcbiBcbi1cdFx0aWYgKGV4dC50aW1lc3RhbXAucG9zaXRpb24gXHUwMDNjPSAxNSkge1xuLVx0XHRcdGhkci1cdTAwM2VpdF9wcmVzZW50IHw9IGNwdV90b19sZTMyKEJJVChJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QKSk7XG4tXHRcdFx0b2ZmID0gQUxJR04ob2ZmLCA4KTtcbi1cbi1cdFx0XHRpZiAoZXh0LnRpbWVzdGFtcC5mbGFncyBcdTAwMjYgMHgwMSkge1xuLVx0XHRcdFx0ZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHXzMyQklUO1xuLVx0XHRcdFx0dHMgPSAodTMyKWV4dC50aW1lc3RhbXAuZGV2aWNlX3RpbWVzdGFtcDtcbi1cdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0ZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHXzY0QklUO1xuLVx0XHRcdFx0dHMgPSBleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7XG4tXHRcdFx0fVxuJiM0MztcdFx0aGRyLVx1MDAzZWl0X3ByZXNlbnQgfD0gY3B1X3RvX2xlMzIoQklUKElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVApKTtcbiYjNDM7XHRcdG9mZiA9IEFMSUdOKG9mZiwgOCk7XG4gXG4tXHRcdFx0dHNfbGUgPSBjcHVfdG9fbGU2NCh0cyk7XG4tXHRcdFx0bWVtY3B5KHJ0aGRyICYjNDM7IG9mZiwgXHUwMDI2dHNfbGUsIHNpemVvZih0c19sZSkpO1xuLVx0XHRcdG9mZiAmIzQzOz0gc2l6ZW9mKHRzX2xlKTtcbiYjNDM7XHRcdGlmIChleHQudGltZXN0YW1wLmZsYWdzIFx1MDAyNiAweDAxKSB7XG4mIzQzO1x0XHRcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR18zMkJJVDtcbiYjNDM7XHRcdFx0dHMgPSAodTMyKWV4dC50aW1lc3RhbXAuZGV2aWNlX3RpbWVzdGFtcDtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR182NEJJVDtcbiYjNDM7XHRcdFx0dHMgPSBleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7XG4mIzQzO1x0XHR9XG4gXG4tXHRcdFx0aWYgKGV4dC50aW1lc3RhbXAuZmxhZ3MgXHUwMDI2IDB4MDIpIHtcbi1cdFx0XHRcdGFjY3VyYWN5ID0gZXh0LnRpbWVzdGFtcC5hY2N1cmFjeTtcbi1cdFx0XHRcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR19BQ0NVUkFDWTtcbi1cdFx0XHR9XG4mIzQzO1x0XHR0c19sZSA9IGNwdV90b19sZTY0KHRzKTtcbiYjNDM7XHRcdG1lbWNweShydGhkciAmIzQzOyBvZmYsIFx1MDAyNnRzX2xlLCBzaXplb2YodHNfbGUpKTtcbiYjNDM7XHRcdG9mZiAmIzQzOz0gc2l6ZW9mKHRzX2xlKTtcbiBcbi1cdFx0XHRhY2NfbGUgPSBjcHVfdG9fbGUxNihhY2N1cmFjeSk7XG4tXHRcdFx0bWVtY3B5KHJ0aGRyICYjNDM7IG9mZiwgXHUwMDI2YWNjX2xlLCBzaXplb2YoYWNjX2xlKSk7XG4tXHRcdFx0b2ZmICYjNDM7PSBzaXplb2YoYWNjX2xlKTtcbi1cdFx0XHRydGhkcltvZmYmIzQzOyYjNDM7XSA9IChleHQudGltZXN0YW1wLnVuaXQgXHUwMDI2IDB4MGYpIHxcbi1cdFx0XHRcdFx0KChleHQudGltZXN0YW1wLnBvc2l0aW9uIFx1MDAyNiAweDBmKSBcdTAwM2NcdTAwM2MgNCk7XG4tXHRcdFx0cnRoZHJbb2ZmJiM0MzsmIzQzO10gPSBmbGFncztcbiYjNDM7XHRcdGlmIChleHQudGltZXN0YW1wLmZsYWdzIFx1MDAyNiAweDAyKSB7XG4mIzQzO1x0XHRcdGFjY3VyYWN5ID0gZXh0LnRpbWVzdGFtcC5hY2N1cmFjeTtcbiYjNDM7XHRcdFx0ZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHX0FDQ1VSQUNZO1xuIFx0XHR9XG4mIzQzO1xuJiM0MztcdFx0YWNjX2xlID0gY3B1X3RvX2xlMTYoYWNjdXJhY3kpO1xuJiM0MztcdFx0bWVtY3B5KHJ0aGRyICYjNDM7IG9mZiwgXHUwMDI2YWNjX2xlLCBzaXplb2YoYWNjX2xlKSk7XG4mIzQzO1x0XHRvZmYgJiM0Mzs9IHNpemVvZihhY2NfbGUpO1xuJiM0MztcdFx0cnRoZHJbb2ZmJiM0MzsmIzQzO10gPSAoZXh0LnRpbWVzdGFtcC51bml0IFx1MDAyNiAweDBmKSB8XG4mIzQzO1x0XHRcdFx0KChleHQudGltZXN0YW1wLnBvc2l0aW9uIFx1MDAyNiAweDBmKSBcdTAwM2NcdTAwM2MgNCk7XG4mIzQzO1x0XHRydGhkcltvZmYmIzQzOyYjNDM7XSA9IGZsYWdzO1xuIFx0fVxuIFxuIFx0aWYgKGZvcm1hdCA9PSBOWFBXSUZJX1JBVEVfRk9STUFUX0hFIFx1MDAyNlx1MDAyNiBoYXNfZXh0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBueHB3aWZpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU0RJTyBkcml2ZXIgZm9yIE5YUCBXaUZpIGNoaXBzIChlLmcuLCBJVzYxeCkuIFNpbmNlIFNESU8gaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyIGVudmlyb25tZW50cywgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUsIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTU2YjhiMjRjNGYyNjNlNTEyNGRlNmM1OTg2ODdiMjc4Mjk5NjU5ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMTk6MTU6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMKaW5kZXggY2M0N2M0MzVlYjcwYS4uOTY1NDA5MTRmM2NmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYwpAQCAtNDEzLDcgJiM0Mzs0MTMsMTAgQEAgYm9vbCBueHB3aWZpX2lzXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LAogCXN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXA7CiAJc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXA7CiAKLQlpZiAoYnNzX2Rlc2MgJmFtcDsmYW1wOyAoIW54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKGJzc19kZXNjKSkpIHsKJiM0MzsJaWYgKCFic3NfZGVzYykKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaWYgKCFueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChic3NfZGVzYykpIHsKIAkJbnhwd2lmaV9kYmcocHJpdi0mZ3Q7YWRhcHRlciwgTVNHLAogCQkJICAgICYjMzQ7QVAgZG9uJiMzOTt0IHN1cHBvcnQgdHd0IGZlYXR1cmVcbiYjMzQ7KTsKIAkJcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYwppbmRleCBlNDZjNTA1M2Q1MDkwLi4zYWQxYWY3Y2ExNTc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYwpAQCAtNDUxLDcgJiM0Mzs0NTEsNyBAQCB2b2lkCiBueHB3aWZpXzExbl9kZWxldGVfdHhfYmFfc3RyZWFtX3RibF9lbnRyeShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LAogCQkJCQkgIHN0cnVjdCBueHB3aWZpX3R4X2JhX3N0cmVhbV90YmwgKnRibCkKIHsKLQlpZiAoIXRibCAmYW1wOyZhbXA7IG54cHdpZmlfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChwcml2LCB0YmwpKQomIzQzOwlpZiAoIXRibCB8fCBueHB3aWZpX2lzX3R4X2JhX3N0cmVhbV9wdHJfdmFsaWQocHJpdiwgdGJsKSkKIAkJcmV0dXJuOwogCiAJbnhwd2lmaV9kYmcocHJpdi0mZ3Q7YWRhcHRlciwgSU5GTywKQEAgLTY5NCw3ICYjNDM7Njk0LDcgQEAgaW50IG54cHdpZmlfZ2V0X3R4X2JhX3N0cmVhbV90Ymwoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiwKIC8qIERlbGV0ZSBUeCBCQSBzdHJlYW0gZW50cnkgYnkgUkEuICovCiB2b2lkIG54cHdpZmlfZGVsX3R4X2JhX3N0cmVhbV90YmxfYnlfcmEoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiwgdTggKnJhKQogewotCXN0cnVjdCBueHB3aWZpX3R4X2JhX3N0cmVhbV90YmwgKnRibDsKJiM0MzsJc3RydWN0IG54cHdpZmlfdHhfYmFfc3RyZWFtX3RibCAqdGJsLCAqdG1wOwogCWludCBpOwogCiAJaWYgKCFyYSkKQEAgLTcwMiw3ICYjNDM7NzAyLDcgQEAgdm9pZCBueHB3aWZpX2RlbF90eF9iYV9zdHJlYW1fdGJsX2J5X3JhKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHU4ICpyYSkKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBNQVhfTlVNX1RJRDsgaSYjNDM7JiM0MzspIHsKIAkJc3Bpbl9sb2NrX2JoKCZhbXA7cHJpdi0mZ3Q7dHhfYmFfc3RyZWFtX3RibF9sb2NrW2ldKTsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGJsLCAmYW1wO3ByaXYtJmd0O3R4X2JhX3N0cmVhbV90YmxfcHRyW2ldLCBsaXN0KQomIzQzOwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHRibCwgdG1wLCAmYW1wO3ByaXYtJmd0O3R4X2JhX3N0cmVhbV90YmxfcHRyW2ldLCBsaXN0KQogCQkJaWYgKCFtZW1jbXAodGJsLSZndDtyYSwgcmEsIEVUSF9BTEVOKSkKIAkJCQlueHB3aWZpXzExbl9kZWxldGVfdHhfYmFfc3RyZWFtX3RibF9lbnRyeShwcml2LCB0YmwpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYwppbmRleCBjODIwZjA4ZDI4MzU1Li5mYTNkY2UyODUyMDNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMKQEAgLTcxNyw2ICYjNDM7NzE3LDcgQEAgbnhwd2lmaV9pbml0X25ld19wcml2X3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LAogCQkJICAgICBlbnVtIG5sODAyMTFfaWZ0eXBlIHR5cGUpCiB7CiAJc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtJmd0O2FkYXB0ZXI7CiYjNDM7CWludCByZXQ7CiAKIAlueHB3aWZpX2luaXRfcHJpdihwcml2KTsKIApAQCAtNzQwLDcgJiM0Mzs3NDEsMTQgQEAgbnhwd2lmaV9pbml0X25ld19wcml2X3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LAogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJfQogCi0JcHJpdi0mZ3Q7YnNzX251bSA9IG54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKGFkYXB0ZXIsIHByaXYtJmd0O2Jzc190eXBlKTsKJiM0MzsJcmV0ID0gbnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgcHJpdi0mZ3Q7YnNzX3R5cGUsICZhbXA7cHJpdi0mZ3Q7YnNzX251bSk7CiYjNDM7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCW54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLAomIzQzOwkJCSAgICAmIzM0OyVzOiBubyB1bnVzZWQgYnNzX251bSBmb3IgdHlwZSAlZFxuJiMzNDssCiYjNDM7CQkJICAgIGRldi0mZ3Q7bmFtZSwgcHJpdi0mZ3Q7YnNzX3R5cGUpOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQogCiAJZmx1c2hfd29ya3F1ZXVlKGFkYXB0ZXItJmd0O3dvcmtxdWV1ZSk7CiAJYXRvbWljX3NldCgmYW1wO2FkYXB0ZXItJmd0O2lmYWNlX2NoYW5naW5nLCAwKTsKQEAgLTk0Myw3ICYjNDM7OTUxLDYgQEAgbnhwd2lmaV9jZmc4MDIxMV9jaGFuZ2VfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCWNhc2UgTkw4MDIxMV9JRlRZUEVfU1RBVElPTjoKIAkJCXJldHVybiBueHB3aWZpX2NoYW5nZV92aWZfdG9fc3RhKGRldiwgY3Vycl9pZnR5cGUsCiAJCQkJCQkJIHR5cGUsIHBhcmFtcyk7Ci0JCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWdvdG8gZXJybm90c3VwcDsKIAkJfQpAQCAtOTUyLDggJiM0Mzs5NTksNiBAQCBueHB3aWZpX2NmZzgwMjExX2NoYW5nZV92aXJ0dWFsX2ludGYoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJZ290byBlcnJub3RzdXBwOwogCX0KIAotCXJldHVybiAwOwotCiBlcnJub3RzdXBwOgogCW54cHdpZmlfZGJnKHByaXYtJmd0O2FkYXB0ZXIsIEVSUk9SLAogCQkgICAgJiMzNDt1bnN1cHBvcnRlZCBpbnRlcmZhY2UgdHlwZSB0cmFuc2l0aW9uOiAlZCB0byAlZFxuJiMzNDssCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMKaW5kZXggNGUwMWY0NWYzYTAwZi4uYjRjNjM4MjkwMjRhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYwpAQCAtMjA0LDcgJiM0MzsyMDQsNyBAQCBzdGF0aWMgYm9vbCBueHB3aWZpX2RyYWluX3R4KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpCiAJCQkJCSAgTlhQV0lGSV9BU1lOQ19DTUQpOwogCQkJYWRhcHRlci0mZ3Q7aHNfYWN0aXZhdGVkX21hbnVhbGx5ID0gZmFsc2U7CiAJCX0KLQkJCW54cHdpZmlfcHJvY2Vzc19ieXBhc3NfdHgoYWRhcHRlcik7CiYjNDM7CQlueHB3aWZpX3Byb2Nlc3NfYnlwYXNzX3R4KGFkYXB0ZXIpOwogCQlpZiAoYWRhcHRlci0mZ3Q7aHNfYWN0aXZhdGVkKSB7CiAJCQljbGVhcl9iaXQoTlhQV0lGSV9JU19IU19DT05GSUdVUkVELAogCQkJCSAgJmFtcDthZGFwdGVyLSZndDt3b3JrX2ZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaAppbmRleCAzNDlkZmE0ZDNmODU4Li5iMjVhNmE0ZjI5MzY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oCkBAIC0xMTY2LDggJiM0MzsxMTY2LDkgQEAgbnhwd2lmaV9nZXRfcHJpdihzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLAogfQogCiAvKiBmaW5kIHVudXNlZCBCU1MgbnVtYmVyIGZvciBuZXcgaW50ZXJmYWNlICovCi1zdGF0aWMgaW5saW5lIHU4Ci1ueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLCB1OCBic3NfdHlwZSkKJiM0MztzdGF0aWMgaW5saW5lIGludAomIzQzO254cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGJzc190eXBlLAomIzQzOwkJCSAgIHU4ICpic3NfbnVtKQogewogCXU4IGksIGo7CiAJaW50IGluZGV4W05YUFdJRklfTUFYX0JTU19OVU1dOwpAQCAtMTE3OSw5ICYjNDM7MTE4MCwxNCBAQCBueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLCB1OCBic3NfdHlwZSkKIAkJICAgICAgTkw4MDIxMV9JRlRZUEVfVU5TUEVDSUZJRUQpKSB7CiAJCQlpbmRleFthZGFwdGVyLSZndDtwcml2W2ldLSZndDtic3NfbnVtXSA9IDE7CiAJCX0KLQlmb3IgKGogPSAwOyBqICZsdDsgTlhQV0lGSV9NQVhfQlNTX05VTTsgaiYjNDM7JiM0MzspCi0JCWlmICghaW5kZXhbal0pCi0JCQlyZXR1cm4gajsKJiM0MzsKJiM0MzsJZm9yIChqID0gMDsgaiAmbHQ7IE5YUFdJRklfTUFYX0JTU19OVU07IGomIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoIWluZGV4W2pdKSB7CiYjNDM7CQkJKmJzc19udW0gPSBqOwomIzQzOwkJCXJldHVybiAwOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIC1FTk9FTlQ7CiB9CiAKQEAgLTExOTUsOCAmIzQzOzEyMDEsOSBAQCBueHB3aWZpX2dldF91bnVzZWRfcHJpdl9ieV9ic3NfdHlwZShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLAogCWZvciAoaSA9IDA7IGkgJmx0OyBhZGFwdGVyLSZndDtwcml2X251bTsgaSYjNDM7JiM0MzspCiAJCWlmIChhZGFwdGVyLSZndDtwcml2W2ldLSZndDtic3NfbW9kZSA9PQogCQkgICBOTDgwMjExX0lGVFlQRV9VTlNQRUNJRklFRCkgewotCQkJYWRhcHRlci0mZ3Q7cHJpdltpXS0mZ3Q7YnNzX251bSA9Ci0JCQkJbnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgYnNzX3R5cGUpOwomIzQzOwkJCWlmIChueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShhZGFwdGVyLCBic3NfdHlwZSwKJiM0MzsJCQkJCQkgICAgICAgJmFtcDthZGFwdGVyLSZndDtwcml2W2ldLSZndDtic3NfbnVtKSkKJiM0MzsJCQkJcmV0dXJuIE5VTEw7CiAJCQlicmVhazsKIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMKaW5kZXggZDg1MzYzNTRmMDkzYS4uOGVmMGY2ZWI0OWUyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYwpAQCAtMTM0Nyw3ICYjNDM7MTM0Nyw4IEBAIHN0YXRpYyBpbnQgbnhwd2lmaV9wcm9jZXNzX2ludF9zdGF0dXMoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciwgdTggc2Rpb19pCiAJCQkgICAgICgocnhfYmxvY2tzICogTlhQV0lGSV9TRElPX0JMT0NLX1NJWkUpICZndDsKIAkJCSAgICAgIGNhcmQtJmd0O21wYV9yeC5idWZfc2l6ZSkpKSB7CiAJCQkJbnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsICYjMzQ7aW52YWxpZCByeF9sZW49JWRcbiYjMzQ7LCByeF9sZW4pOwotCQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJCQlnb3RvIHRlcm1fY21kOwogCQkJfQogCiAJCQlyeF9sZW4gPSAodTE2KShyeF9ibG9ja3MgKiBOWFBXSUZJX1NESU9fQkxPQ0tfU0laRSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX3R4cnguYwppbmRleCBmM2QyNGJmODYxY2E5Li44NDBkZGRmYzRmNWFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF90eHJ4LmMKQEAgLTI0Niw4ICYjNDM7MjQ2LDggQEAgaW50IG54cHdpZmlfaGFuZGxlX3VhcF9yeF9mb3J3YXJkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsCiAJCX0gZWxzZSB7CiAJCQlueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUiwKIAkJCQkgICAgJiMzNDtmYWlsZWQgdG8gY29weSBza2IgZm9yIHVBUFxuJiMzNDspOwotCQkJCSAgICBwcml2LSZndDtzdGF0cy5yeF9kcm9wcGVkJiM0MzsmIzQzOzsKLQkJCQkgICAgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTsKJiM0MzsJCQlwcml2LSZndDtzdGF0cy5yeF9kcm9wcGVkJiM0MzsmIzQzOzsKJiM0MzsJCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCQkJcmV0dXJuIC1FTk9NRU07CiAJCX0KIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jCmluZGV4IDI5ZWYwMzFmOGVjOWIuLmRkODIxODY0MTE5NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3V0aWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91dGlsLmMKQEAgLTc5OSwzNCAmIzQzOzc5OSwzMiBAQCBpbnQgbnhwd2lmaV9yZWN2X3BhY2tldF90b19tb25pZihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LAogCQlfX2xlMTYgYWNjX2xlOwogCQl1OCBmbGFncyA9IDA7CiAKLQkJaWYgKGV4dC50aW1lc3RhbXAucG9zaXRpb24gJmx0Oz0gMTUpIHsKLQkJCWhkci0mZ3Q7aXRfcHJlc2VudCB8PSBjcHVfdG9fbGUzMihCSVQoSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUCkpOwotCQkJb2ZmID0gQUxJR04ob2ZmLCA4KTsKLQotCQkJaWYgKGV4dC50aW1lc3RhbXAuZmxhZ3MgJmFtcDsgMHgwMSkgewotCQkJCWZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR18zMkJJVDsKLQkJCQl0cyA9ICh1MzIpZXh0LnRpbWVzdGFtcC5kZXZpY2VfdGltZXN0YW1wOwotCQkJfSBlbHNlIHsKLQkJCQlmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfNjRCSVQ7Ci0JCQkJdHMgPSBleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7Ci0JCQl9CiYjNDM7CQloZHItJmd0O2l0X3ByZXNlbnQgfD0gY3B1X3RvX2xlMzIoQklUKElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVApKTsKJiM0MzsJCW9mZiA9IEFMSUdOKG9mZiwgOCk7CiAKLQkJCXRzX2xlID0gY3B1X3RvX2xlNjQodHMpOwotCQkJbWVtY3B5KHJ0aGRyICYjNDM7IG9mZiwgJmFtcDt0c19sZSwgc2l6ZW9mKHRzX2xlKSk7Ci0JCQlvZmYgJiM0Mzs9IHNpemVvZih0c19sZSk7CiYjNDM7CQlpZiAoZXh0LnRpbWVzdGFtcC5mbGFncyAmYW1wOyAweDAxKSB7CiYjNDM7CQkJZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHXzMyQklUOwomIzQzOwkJCXRzID0gKHUzMilleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR182NEJJVDsKJiM0MzsJCQl0cyA9IGV4dC50aW1lc3RhbXAuZGV2aWNlX3RpbWVzdGFtcDsKJiM0MzsJCX0KIAotCQkJaWYgKGV4dC50aW1lc3RhbXAuZmxhZ3MgJmFtcDsgMHgwMikgewotCQkJCWFjY3VyYWN5ID0gZXh0LnRpbWVzdGFtcC5hY2N1cmFjeTsKLQkJCQlmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfQUNDVVJBQ1k7Ci0JCQl9CiYjNDM7CQl0c19sZSA9IGNwdV90b19sZTY0KHRzKTsKJiM0MzsJCW1lbWNweShydGhkciAmIzQzOyBvZmYsICZhbXA7dHNfbGUsIHNpemVvZih0c19sZSkpOwomIzQzOwkJb2ZmICYjNDM7PSBzaXplb2YodHNfbGUpOwogCi0JCQlhY2NfbGUgPSBjcHVfdG9fbGUxNihhY2N1cmFjeSk7Ci0JCQltZW1jcHkocnRoZHIgJiM0Mzsgb2ZmLCAmYW1wO2FjY19sZSwgc2l6ZW9mKGFjY19sZSkpOwotCQkJb2ZmICYjNDM7PSBzaXplb2YoYWNjX2xlKTsKLQkJCXJ0aGRyW29mZiYjNDM7JiM0MztdID0gKGV4dC50aW1lc3RhbXAudW5pdCAmYW1wOyAweDBmKSB8Ci0JCQkJCSgoZXh0LnRpbWVzdGFtcC5wb3NpdGlvbiAmYW1wOyAweDBmKSAmbHQ7Jmx0OyA0KTsKLQkJCXJ0aGRyW29mZiYjNDM7JiM0MztdID0gZmxhZ3M7CiYjNDM7CQlpZiAoZXh0LnRpbWVzdGFtcC5mbGFncyAmYW1wOyAweDAyKSB7CiYjNDM7CQkJYWNjdXJhY3kgPSBleHQudGltZXN0YW1wLmFjY3VyYWN5OwomIzQzOwkJCWZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR19BQ0NVUkFDWTsKIAkJfQomIzQzOwomIzQzOwkJYWNjX2xlID0gY3B1X3RvX2xlMTYoYWNjdXJhY3kpOwomIzQzOwkJbWVtY3B5KHJ0aGRyICYjNDM7IG9mZiwgJmFtcDthY2NfbGUsIHNpemVvZihhY2NfbGUpKTsKJiM0MzsJCW9mZiAmIzQzOz0gc2l6ZW9mKGFjY19sZSk7CiYjNDM7CQlydGhkcltvZmYmIzQzOyYjNDM7XSA9IChleHQudGltZXN0YW1wLnVuaXQgJmFtcDsgMHgwZikgfAomIzQzOwkJCQkoKGV4dC50aW1lc3RhbXAucG9zaXRpb24gJmFtcDsgMHgwZikgJmx0OyZsdDsgNCk7CiYjNDM7CQlydGhkcltvZmYmIzQzOyYjNDM7XSA9IGZsYWdzOwogCX0KIAogCWlmIChmb3JtYXQgPT0gTlhQV0lGSV9SQVRFX0ZPUk1BVF9IRSAmYW1wOyZhbXA7IGhhc19leHQpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg3NQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBhIE5vdmVsIFdpcmVsZXNzIERyaXZlciBQYXRjaCBTZXJpZXMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyB0b3VjaGluZyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2AgZGlyZWN0b3J5LiBSaWdodCBvZmYgdGhlIGJhdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBueHB3aWZpYCBkcml2ZXIgaXMuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgYSBzbGlnaHQgZXllYnJvdyByYWlzZSwgYmVjYXVzZSBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGFueXRoaW5nIGNhbGxlZCBgbnhwd2lmaWAgaW4gdGhlIG1haW5saW5lIGtlcm5lbC4gVGhhdCBuYW1lIGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IHJpbmcgYSBiZWxsLiBUaW1lIHRvIGRvIGEgcXVpY2sgc2VhcmNoIGFuZCBjb25maXJtIGl0cyBleGlzdGVuY2UgYW5kIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBudWxsLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O254cHdpZmkmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0LgoKKipUaGUgU2VhcmNoIENvbmZpcm1lZCoqCgpBaCwgdGhlcmUgaXQgaXMhIEkgaGFkIGEgaHVuY2gsIGFuZCB0aGF0IGh1bmNoIHBhaWQgb2ZmLiBUaW1lIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgY29kZS4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgbG9jYXRpb24gZm9yIHRoZSBOWFAgV2ktRmkgZHJpdmVyLCBzbyBsZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyBpbiB0aGVyZS4gSSBiZXQgSSYjMzk7bGwgZmluZCB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IuIFRpbWUgdG8gc3RhcnQgdGhlIGRlZXAgZGl2ZSBpbnRvIHRoZSBzb3VyY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7MTFhYy5jJiMzNDssCiAgICAmIzM0OzExYWMuaCYjMzQ7LAogICAgJiMzNDsxMWF4LmMmIzM0OywKICAgICYjMzQ7MTFheC5oJiMzNDssCiAgICAmIzM0OzExaC5jJiMzNDssCiAgICAmIzM0OzExbi5jJiMzNDssCiAgICAmIzM0OzExbi5oJiMzNDssCiAgICAmIzM0OzExbl9hZ2dyLmMmIzM0OywKICAgICYjMzQ7MTFuX2FnZ3IuaCYjMzQ7LAogICAgJiMzNDsxMW5fcnhyZW9yZGVyLmMmIzM0OywKICAgICYjMzQ7MTFuX3J4cmVvcmRlci5oJiMzNDssCiAgICAmIzM0O2NmZy5oJiMzNDssCiAgICAmIzM0O2NmZzgwMjExLmMmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTEuaCYjMzQ7LAogICAgJiMzNDtjZnAuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZXRodG9vbC5jJiMzNDssCiAgICAmIzM0O2Z3LmgmIzM0OywKICAgICYjMzQ7aWUuYyYjMzQ7LAogICAgJiMzNDtpbml0LmMmIzM0OywKICAgICYjMzQ7am9pbi5jJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttYWluLmgmIzM0OywKICAgICYjMzQ7c2Nhbi5jJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvLmgmIzM0OywKICAgICYjMzQ7c3RhX2NmZy5jJiMzNDssCiAgICAmIzM0O3N0YV9jbWQuYyYjMzQ7LAogICAgJiMzNDtzdGFfZXZlbnQuYyYjMzQ7LAogICAgJiMzNDtzdGFfcnguYyYjMzQ7LAogICAgJiMzNDtzdGFfdHguYyYjMzQ7LAogICAgJiMzNDt0eHJ4LmMmIzM0OywKICAgICYjMzQ7dWFwX2NtZC5jJiMzNDssCiAgICAmIzM0O3VhcF9ldmVudC5jJiMzNDssCiAgICAmIzM0O3VhcF90eHJ4LmMmIzM0OywKICAgICYjMzQ7dXRpbC5jJiMzNDssCiAgICAmIzM0O3V0aWwuaCYjMzQ7LAogICAgJiMzNDt3bW0uYyYjMzQ7LAogICAgJiMzNDt3bW0uaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uCgoqKkFuYWx5emluZyB0aGUgYG54cHdpZmlgIERyaXZlcioqCgpBbHJpZ2h0LCBzbyBgbnhwd2lmaWAuLi4gdGhhdCYjMzk7cyBhIGRyaXZlciwgYW5kIEkgYmVsaWV2ZSBpdCByZXNpZGVzIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkuIE15IGluc3RpbmN0IGlzIHRvIGNvbmZpcm0gaXRzIGNvbmZpZ3VyYXRpb24sIGFzIHlvdSBoYXZlIHRvIGtub3cgd2hhdCYjMzk7cyBlbmFibGVkIHdoZXJlIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBkb2VzLiBMZXQgbWUgZ28gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5YUFdJRkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6Mjpjb25maWcgTlhQV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6MTI6Y29uZmlnIE5YUFdJRklfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O05YUCBXaUZpIERyaXZlciBmb3IgSVc2MXhcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTc2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBOWFBXSUZJYC4gTm8gcHJvYmxlbSwgdGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGluIGFuZCB1bmRlcnN0YW5kIHdoYXQgbGlicmFyaWVzLCBkcml2ZXJzLCBvciBvdGhlciBjb21wb25lbnRzIGBOWFBXSUZJYCByZWxpZXMgb24gdG8gZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gZ28gYmV5b25kIHRoZSBpbW1lZGlhdGUgc3VyZmFjZSBsZXZlbCBhbmQgY29uc2lkZXIgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIOKAkyB3aGF0ICp0aG9zZSogY29tcG9uZW50cyBkZXBlbmQgb24sIGFuZCBzbyBvbi4gVW5kZXJzdGFuZGluZyB0aGUgZW50aXJlIGRlcGVuZGVuY3kgdHJlZSBpcyBjcml0aWNhbCBmb3IgYSBmdWxsIGdyYXNwIG9mIHRoZSBlY29zeXN0ZW0gYW5kIGhvdyBhbnkgY2hhbmdlcyBtaWdodCByaXBwbGUgdGhyb3VnaCB0aGUgc3lzdGVtLiBJJiMzOTtsbCBhcHByb2FjaCB0aGlzIG1ldGhvZGljYWxseSwgcGVyaGFwcyB1c2luZyBkZXBlbmRlbmN5IGFuYWx5c2lzIHRvb2xzIG9yIGJ5IGV4YW1pbmluZyB0aGUgYnVpbGQgcHJvY2VzcywgdG8gZW5zdXJlIEkmIzM5O3ZlIGlkZW50aWZpZWQgZXZlcnl0aGluZyB0aGF0IGBOWFBXSUZJYCBuZWVkcyB0byBvcGVyYXRlIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5YUFdJRklcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O05YUCBXaUZpIERyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXG4gICA3Olx0XHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDEwOlx0XHQgIG54cHdpZmkuXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE5YUFdJRklfU0RJT1xuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyIGZvciBJVzYxeFwmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBOWFBXSUZJIFx1MDAyNlx1MDAyNiBNTUNcbiAgMTU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMTY6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXG4gIDE5Olx0XHQgIElXNjF4IGludGVyZmFjZS5cbiAgMjA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ2MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoaXMgU0RJTyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgaXQgaGluZ2VzIG9uIGBDRkc4MDIxMWAgYW5kIGBNTUNgLiBUaGlzIHNlZW1zIGxpa2UgYSBoYXJkd2FyZSBkcml2ZXIsIHNwZWNpZmljYWxseSBhbiBTRElPIGRyaXZlciBmb3IgdGhlIE5YUCBJVzYxeC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbjogY2FuIHdlIGZ1enogdGhpcyBpbiBRRU1VPyBUaGF0JiMzOTtzIGFsd2F5cyB0aGUgZmlyc3QgaHVyZGxlLgoKVHlwaWNhbGx5LCBTRElPIGRyaXZlcnMgYXJlIGEgcGFpbiBiZWNhdXNlIHRoZXkgdXN1YWxseSBkZW1hbmQgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYXQgbGVhc3QgYSBkZWNlbnQgU0RJTyBlbXVsYXRvci4gSSB3YXMgYnJpZWZseSBob3BlZnVsIGJlY2F1c2Ugb2YgYG1hYzgwMjExX2h3c2ltYCB3aGljaCBpcyBzb2Z0d2FyZS1lbXVsYXRlZCwgYnV0IHRoaXMgaXMgYSAqc3BlY2lmaWMqIGhhcmR3YXJlIGRyaXZlciBmb3IgdGhlIE5YUCBJVzYxeCwgd2hpY2ggbWVhbnMgd2XigJlyZSBwcm9iYWJseSBub3QgaW4gdGhlIGNsZWFyLiBTbywgbGV04oCZcyBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIHN0YW5kYXJkIGRyaXZlciB0aGF0IHdlIGNhbiBmdXp6LgoKTm93LCByZWZlcnJpbmcgdG8gdGhlIHByb21wdC4uLiBpdCB3YW50cyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCYjMzk7cyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gVGhpcyBpcyBuZWl0aGVyOyB0aGlzIGlzIGFuIFNESU8gZHJpdmVyIGZvciBhIHNwZWNpZmljIE5YUCBXaUZpIGNoaXAuIFN0aWxsLCBjYW4gd2UgZnV6eiBpdD8KCk15IGd1dCBzYXlzICpubyosIGF0IGxlYXN0IG5vdCBlYXNpbHkuIFN5emthbGxlciBoYXMgc29tZSBzdXBwb3J0IGZvciBVU0IgYW5kIFBDSSBmdXp6aW5nLCBidXQgU0RJTyBlbXVsYXRpb24gaXMgbm90IHNvbWV0aGluZyBJ4oCZdmUgc2Vlbi4gSSYjMzk7bSB0cnlpbmcgdG8gdGhpbmsgb2YgYW55IGNsZXZlciB3b3JrYXJvdW5kcy4gSXMgdGhlcmUgYW55IHBvc3NpYmlsaXR5IG9mIHJlYWNoaW5nIHRoZXNlIGZ1bmN0aW9ucyB2aWEgbmV0bGluay9jZmc4MDIxMSAqd2l0aG91dCogdGhlIGhhcmR3YXJlIGJlaW5nIHBoeXNpY2FsbHkgcHJlc2VudD8KCkdlbmVyYWxseSwgY2ZnODAyMTEgZHJpdmVycyByZWdpc3RlciB3aGVuIHRoZSBoYXJkd2FyZSBpcyBwcm9iZWQuIElmIHRoZSBoYXJkd2FyZSBpc27igJl0IHByb2JlZCwgbm8gbmV0ZGV2IG9yIHdpcGh5IGFyZSBjcmVhdGVkLiBObyBuZXRkZXYvd2lwaHkgbWVhbnMgdGhvc2UgY2ZnODAyMTEgY2FsbGJhY2tzIGFyZSB1bnJlYWNoYWJsZSwgcmlnaHQ/IFRoZXJlZm9yZSwgSSBzaG91bGQgY2hlY2sgd2hldGhlciBgbnhwd2lmaWAgcmVnaXN0ZXJzIGEgdmlydHVhbCBkZXZpY2Ugb3IgaWYgaXQgZGVtYW5kcyB0aGUgU0RJTyBwcm9iZS4gVGhpcyB3b3VsZCBkZXRlcm1pbmUgd2hldGhlciBpdCYjMzk7cyBwb3NzaWJsZSB0byBmdXp6IHdpdGhvdXQgdGhlIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM9MTY2MD1ueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTY2Nzptb2R1bGVfaW5pdChueHB3aWZpX2luaXRfbW9kdWxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY4LW1vZHVsZV9leGl0KG54cHdpZmlfY2xlYW51cF9tb2R1bGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Mzg4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbnhwd2lmaV9pbml0X21vZHVsZWAgZnVuY3Rpb24uIEkmIzM5O20gZ29pbmcgdG8gYXBwcm9hY2ggdGhpcyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgSSB1bmRlcnN0YW5kIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSBvZiBhIGRyaXZlciBpbml0aWFsaXphdGlvbiByb3V0aW5lLCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHNwZWNpZmljcyBvZiAqdGhpcyogcGFydGljdWxhciBtb2R1bGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgcGFydHM6IHdoYXQmIzM5O3MgYmVpbmcgYWxsb2NhdGVkLCB3aGF0JiMzOTtzIGJlaW5nIGluaXRpYWxpemVkLCBhbmQgd2hhdCYjMzk7cyBiZWluZyByZWdpc3RlcmVkLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciByZXNvdXJjZSBhbGxvY2F0aW9uIChtZW1vcnksIGhhcmR3YXJlIHJlZ2lzdGVycywgZXRjLiksIGluaXRpYWxpemF0aW9uIG9mIGRhdGEgc3RydWN0dXJlcyByZWxldmFudCB0byB0aGUgV2lGaSBpbnRlcmZhY2UsIGFuZCBjYWxscyB0aGF0IGludGVncmF0ZSB0aGlzIG1vZHVsZSBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgZGV2aWNlIG1hbmFnZW1lbnQgc3lzdGVtLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBjYWxscyByZWxhdGVkIHRvIHRoaW5ncyBsaWtlIHBsYXRmb3JtIGRyaXZlcnMsIGRldmljZSByZWdpc3RyYXRpb24sIGFuZCBwb3NzaWJseSBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIGZsb3csIHRoZSByZXNvdXJjZXMgdXNlZCwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJJiMzOTtsbCBiZSBkaXNzZWN0aW5nIHRoaXMgY29kZSB3aXRoIHRob3NlIGtleSBhcmVhcyBpbiBtaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtueHB3aWZpX2luaXRfbW9kdWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xNjQ5PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzoxNjUwOm54cHdpZmlfaW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjUxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM9MTY2MD1ueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTY2Nzptb2R1bGVfaW5pdChueHB3aWZpX2luaXRfbW9kdWxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY4LW1vZHVsZV9leGl0KG54cHdpZmlfY2xlYW51cF9tb2R1bGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODU1CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIGBueHB3aWZpX2luaXRfbW9kdWxlYDoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGBueHB3aWZpX2luaXRfbW9kdWxlYCoqCgpBbHJpZ2h0LCBJJiMzOTttIGxvb2tpbmcgYXQgYG54cHdpZmlfaW5pdF9tb2R1bGVgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmRvaW5nKi4gQmFzZWQgb24gdGhlIG5hbWUgYWxvbmUsIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIHRoZSBOWFAgV2lGaSBtb2R1bGUuIFRoYXQgbWVhbnMgdGhpcyBpcyBwcm9iYWJseSB3aGVyZSB0aGUgY29yZSBzZXR1cCBoYXBwZW5zOiByZWdpc3RlciB0aGUgZGV2aWNlLCBhbGxvY2F0ZSByZXNvdXJjZXMsIG1heWJlIHBlcmZvcm0gaGFyZHdhcmUgcHJvYmluZywgc2V0IHVwIGludGVycnVwdCBoYW5kbGVycywgYW5kIGxpa2VseSByZWdpc3RlciBhbnkgbmVjZXNzYXJ5IGNoYXJhY3RlciBkZXZpY2VzIG9yIG5ldCBkZXZpY2VzLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgYSBsb3Qgb2YgY2FsbHMgdG8gb3RoZXIga2VybmVsIEFQSXMgcmVsYXRlZCB0byBkZXZpY2UgbWFuYWdlbWVudCBhbmQgbmV0d29yayBzdGFjayBjb25maWd1cmF0aW9uLiBJdCYjMzk7cyBsaWtlbHkgdGhpcyBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGV2ZXJ5dGhpbmcgTlhQIFdpRmkgcmVsYXRlZCBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiB0aGUga2VybmVsLiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBsaW5jaHBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjQ5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE2NDk6XHRzdGF0aWMgaW50XG4xNjUwOlx0bnhwd2lmaV9pbml0X21vZHVsZSh2b2lkKVxuMTY1MTpcdHtcbjE2NTI6XHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG4xNjUzOlx0XHRueHB3aWZpX2RlYnVnZnNfaW5pdCgpO1xuMTY1NDpcdCNlbmRpZlxuMTY1NTpcdFx0cmV0dXJuIDA7XG4xNjU2Olx0fVxuMTY1NzpcdFxuMTY1ODpcdC8qIE1vZHVsZSBleGl0OiByZW1vdmUgZGVidWdmcyBpZiBlbmFibGVkLiAqL1xuMTY1OTpcdHN0YXRpYyB2b2lkXG4xNjYwOlx0bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuMTY2MTpcdHtcbjE2NjI6XHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG4xNjYzOlx0XHRueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKCk7XG4xNjY0Olx0I2VuZGlmXG4xNjY1Olx0fVxuMTY2NjpcdFxuMTY2NzpcdG1vZHVsZV9pbml0KG54cHdpZmlfaW5pdF9tb2R1bGUpO1xuMTY2ODpcdG1vZHVsZV9leGl0KG54cHdpZmlfY2xlYW51cF9tb2R1bGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzU4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBDb25mdXNpb24gYW5kIEludmVzdGlnYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMgZXhwZWN0aW5nIGBueHB3aWZpX2luaXRfbW9kdWxlYCB0byBoYW5kbGUgYSBsb3QgbW9yZSwgYnV0IGl0IGxvb2tzIGxpa2UgYWxsIGl0JiMzOTtzIGRvaW5nIGlzIHNldHRpbmcgdXAgZGVidWdmcy4gVGhhdCYjMzk7cy4uLiB1bmV4cGVjdGVkLiBXaGVyZSBpbiB0aGlzIHdob2xlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZG9lcyB0aGUgU0RJTyBkcml2ZXIgYWN0dWFsbHkgZ2V0IHJlZ2lzdGVyZWQ/IEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcsIGNsZWFybHkuIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbi4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYHNkaW8uY2AuIEhvcGVmdWxseSwgdGhlIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIHRoZXJlLCBvciBhdCBsZWFzdCB0aGF0IGZpbGUgcHJvdmlkZXMgYSBjbGVhciBwb2ludGVyIHRvIHdoZXJlIGl0JiMzOTtzIGhhcHBlbmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBtb2R1bGUmIzM5O3MgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1ODUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBTRElPIERyaXZlciBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgU0RJTyBkcml2ZXIgcmVnaXN0cmF0aW9uLiBNeSBmaXJzdCBpbnN0aW5jdCwgYW5kIHRoZSBwbGFjZSBJIGFsd2F5cyBzdGFydCwgaXMgdGhlIGNvcmUgb2YgdGhlIGRyaXZlcjogYHNkaW8uY2AuIFRoYXQgZmlsZSBpcyB0aGUgY2VudHJhbCBodWIgZm9yIHRoZSBTRElPIHN1YnN5c3RlbS4gVGhlIGdvYWwgaXMgdG8gcXVpY2tseSBsb2NhdGUgdGhlIGBzZGlvX3JlZ2lzdGVyX2RyaXZlcmAgZnVuY3Rpb24sIGFzIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJmYWNlIHRvIHRoZSBjb3JlIGZyYW1ld29yayBsaWVzLiBLbm93aW5nIHRoaXMgZnVuY3Rpb24gd2lsbCB0ZWxsIG1lIGhvdyB0aGUgZGV2aWNlIGRyaXZlciBpcyBnb2luZyB0byBpbnRlcmFjdCB3aXRoIHRoZSBTRElPIHN1YnN5c3RlbSBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBob3cgdGhlIGRyaXZlciBpcyBiZWluZyBib3VuZCB0byB0aGUgU0RJTyBob3N0IGNvbnRyb2xsZXIgYW5kIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnZvbHZlZCBpbiB0aGF0IHByb2Nlc3MuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGRyaXZlciBmaXRzIGludG8gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2Rpb19yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODM2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqVW5wYWNraW5nIERyaXZlciBSZWdpc3RyYXRpb24qKgoKSG1tLCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIHdob2xlIHByb2Nlc3MgaGluZ2VzIG9uIGhvdyB0aGUgZHJpdmVyIGl0c2VsZiBpcyByZWdpc3RlcmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGZ1bmRhbWVudGFsIG1lY2hhbmlzbSBmaXJzdC4gSXMgaXQgYSBzdGF0aWMgcmVnaXN0cmF0aW9uIHdpdGhpbiB0aGUgT1Mga2VybmVsPyBPciBpcyB0aGVyZSBzb21lIGR5bmFtaWMgZGlzY292ZXJ5IG1lY2hhbmlzbSBhdCBwbGF5PyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGVhY2ggYXBwcm9hY2g/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc2ltcGxlIHRhYmxlIGxvb2t1cCwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleCB3aXRoIGRldmljZSBJRHMgYW5kIGRyaXZlciBwcm9iaW5nPyBUaGlzICYjMzQ7cmVnaXN0cmF0aW9uJiMzNDsgc3RlcCBpcyB0aGUgbGluY2hwaW4uIElmIEkgY2FuJiMzOTt0IHBpbiB0aGF0IGRvd24sIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSBhIGhhcmQgdGltZSB1bmRlcnN0YW5kaW5nIHRoZSB3aG9sZSBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0aGUgc3BlY2lmaWNzIG9mIHRoYXQgcmVnaXN0cmF0aW9uISBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMsIHNvIGhvdyBhcmUgdGhlIGRyaXZlcnMgYmVpbmcgaWRlbnRpZmllZD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3NkaW9fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYz0yMjk0PXN0YXRpYyBzdHJ1Y3Qgbnhwd2lmaV9pZl9vcHMgc2Rpb19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jLTIzMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM6MjMyMjptb2R1bGVfc2Rpb19kcml2ZXIobnhwd2lmaV9zZGlvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzIzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDE4MwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNESU8gRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtb2R1bGVfc2Rpb19kcml2ZXIobnhwd2lmaV9zZGlvKWAuIFJpZ2h0LCB0aGF0JiMzOTtzIGFuIFNESU8gZHJpdmVyIOKAkyBzcGVjaWZpY2FsbHksIGl0JiMzOTtzIGRlc2lnbmVkIGZvciB0aGUgTlhQIElXNjF4IGhhcmR3YXJlLiBUaGUgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhhdCBpbiBhIHN5emthbGxlci9RRU1VIGVudmlyb25tZW50LCB3ZSYjMzk7cmUgbm90IGVtdWxhdGluZyBTRElPLiBUaGlzIG1lYW5zLCBwcmFjdGljYWxseSwgdGhhdCB0aGUgZHJpdmVyJiMzOTtzIGBwcm9iZWAgZnVuY3Rpb24sIHRoYXQgY3J1Y2lhbCBlbnRyeSBwb2ludCBmb3IgZGV2aWNlIGluaXRpYWxpemF0aW9uLCB3aWxsICpuZXZlciogYmUgY2FsbGVkLiBUaGlzIGRpcmVjdGx5IGltcGxpZXMgdGhhdCBub25lIG9mIHRoZSBjb2RlIHdpdGhpbiBgbnhwd2lmaWAsIHdoaWNoIHJlbGllcyBvbiB0aGF0IHByb2JlLCBpcyByZWFjaGFibGUgaW4gb3VyIHZpcnR1YWxpemVkIHNldHVwLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2gsIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIOKAkyBJIG5lZWQgdG8gcnVsZSBvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIGFsdGVybmF0ZSBpbnRlcmZhY2VzLCBzdWNoIGFzIFVTQiBvciBQQ0ksIHRoYXQgbWlnaHQgcHJvdmlkZSBhIGJhY2tkb29yIGludG8gdGhlIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3VzYl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU0MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU5NgoJCQkJCQkJb3V0cHV0OiAxMDQKCQkJCQkJCXRob3VnaHRzOiAyMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqU0RJTyBEcml2ZXIgQW5hbHlzaXMqKgoKT2theSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IGFuIFNESU8tc3BlY2lmaWMgc2l0dWF0aW9uLiBTaW5jZSB0aGlzIHBhdGNoIHRhcmdldHMgY29kZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBTRElPIGhhcmR3YXJlLCB0aGVyZSYjMzk7cyBubyB3YXkgdG8gZnV6eiBpdCB3aXRoaW4gUUVNVS4gVGhhdCYjMzk7cyBhIGRlYWxicmVha2VyLCBjb25zaWRlcmluZyB0aGUgcHJvamVjdCBjb25zdHJhaW50cy4KCkxldCBtZSBxdWlja2x5IHJlLWV2YWx1YXRlIHRoZSBwcm9tcHQ6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHRoYXQmIzM5O3MgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgYWxzbyBtZW50aW9uZWQgdmVuZG9yLXNwZWNpZmljIFBDSWUsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcmVhbCBoYXJkd2FyZS4mIzM0OwoKQmluZ28hIFRoaXMgdmVuZG9yLXNwZWNpZmljIFNESU8gZHJpdmVyIGZvciBOWFAgV2lGaSBhbGlnbnMgcGVyZmVjdGx5IHdpdGggdGhvc2UgY3JpdGVyaWEuIFRoZSBTRElPIGhhcmR3YXJlIGRlcGVuZGVuY3kgbWFrZXMgaXQgdW52aWFibGUgZm9yIFFFTVUtYmFzZWQgZnV6emluZy4gTXkgcmVzcG9uc2Ugd2lsbCBiZSBXb3J0aEZ1enppbmc9ZmFsc2UsIHdpdGggdGhlIGNsZWFyIGV4cGxhbmF0aW9uIHRoYXQgaXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgU0RJTyBkcml2ZXIgdGhhdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZSwgd2hpY2ggUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBueHB3aWZpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU0RJTyBkcml2ZXIgZm9yIE5YUCBXaUZpIGNoaXBzIChlLmcuLCBJVzYxeCkuIFNpbmNlIFNESU8gaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyIGVudmlyb25tZW50cywgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUsIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnhwd2lmaSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNESU8gZHJpdmVyIGZvciBOWFAgV2lGaSBjaGlwcyAoZS5nLiwgSVc2MXgpLiBTaW5jZSBTRElPIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3N5emthbGxlciBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gd2lsbCBuZXZlciBleGVjdXRlLCBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjEyLjkzNDk5NTAxM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NjYzMjE2NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnhwd2lmaSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNESU8gZHJpdmVyIGZvciBOWFAgV2lGaSBjaGlwcyAoZS5nLiwgSVc2MXgpLiBTaW5jZSBTRElPIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3N5emthbGxlciBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUsIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNToxMi45MzUwMDIzNjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MjEwOTAwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGU1NmI4YjI0YzRmMjYzZTUxMjRkZTZjNTk4Njg3YjI3ODI5OTY1OWZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAxOToxNToxMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmNcXG5pbmRleCBjYzQ3YzQzNWViNzBhLi45NjU0MDkxNGYzY2Y2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguY1xcbkBAIC00MTMsNyArNDEzLDEwIEBAIGJvb2wgbnhwd2lmaV9pc18xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG4gXFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcXG4gXFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXA7XFxuIFxcbi1cXHRpZiAoYnNzX2Rlc2MgXFx1MDAyNlxcdTAwMjYgKCFueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChic3NfZGVzYykpKSB7XFxuK1xcdGlmICghYnNzX2Rlc2MpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSB7XFxuIFxcdFxcdG54cHdpZmlfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG4gXFx0XFx0XFx0ICAgIFxcXCJBUCBkb24ndCBzdXBwb3J0IHR3dCBmZWF0dXJlXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXFxuaW5kZXggZTQ2YzUwNTNkNTA5MC4uM2FkMWFmN2NhMTU3NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXFxuQEAgLTQ1MSw3ICs0NTEsNyBAQCB2b2lkXFxuIG54cHdpZmlfMTFuX2RlbGV0ZV90eF9iYV9zdHJlYW1fdGJsX2VudHJ5KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG54cHdpZmlfdHhfYmFfc3RyZWFtX3RibCAqdGJsKVxcbiB7XFxuLVxcdGlmICghdGJsIFxcdTAwMjZcXHUwMDI2IG54cHdpZmlfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChwcml2LCB0YmwpKVxcbitcXHRpZiAoIXRibCB8fCBueHB3aWZpX2lzX3R4X2JhX3N0cmVhbV9wdHJfdmFsaWQocHJpdiwgdGJsKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0bnhwd2lmaV9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgSU5GTyxcXG5AQCAtNjk0LDcgKzY5NCw3IEBAIGludCBueHB3aWZpX2dldF90eF9iYV9zdHJlYW1fdGJsKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuIC8qIERlbGV0ZSBUeCBCQSBzdHJlYW0gZW50cnkgYnkgUkEuICovXFxuIHZvaWQgbnhwd2lmaV9kZWxfdHhfYmFfc3RyZWFtX3RibF9ieV9yYShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LCB1OCAqcmEpXFxuIHtcXG4tXFx0c3RydWN0IG54cHdpZmlfdHhfYmFfc3RyZWFtX3RibCAqdGJsO1xcbitcXHRzdHJ1Y3Qgbnhwd2lmaV90eF9iYV9zdHJlYW1fdGJsICp0YmwsICp0bXA7XFxuIFxcdGludCBpO1xcbiBcXG4gXFx0aWYgKCFyYSlcXG5AQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgbnhwd2lmaV9kZWxfdHhfYmFfc3RyZWFtX3RibF9ieV9yYShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LCB1OCAqcmEpXFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX05VTV9USUQ7IGkrKykge1xcbiBcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4X2JhX3N0cmVhbV90YmxfbG9ja1tpXSk7XFxuLVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRibCwgXFx1MDAyNnByaXYtXFx1MDAzZXR4X2JhX3N0cmVhbV90YmxfcHRyW2ldLCBsaXN0KVxcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGJsLCB0bXAsIFxcdTAwMjZwcml2LVxcdTAwM2V0eF9iYV9zdHJlYW1fdGJsX3B0cltpXSwgbGlzdClcXG4gXFx0XFx0XFx0aWYgKCFtZW1jbXAodGJsLVxcdTAwM2VyYSwgcmEsIEVUSF9BTEVOKSlcXG4gXFx0XFx0XFx0XFx0bnhwd2lmaV8xMW5fZGVsZXRlX3R4X2JhX3N0cmVhbV90YmxfZW50cnkocHJpdiwgdGJsKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXFxuaW5kZXggYzgyMGYwOGQyODM1NS4uZmEzZGNlMjg1MjAzYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xcbkBAIC03MTcsNiArNzE3LDcgQEAgbnhwd2lmaV9pbml0X25ld19wcml2X3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbiBcXHRcXHRcXHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSlcXG4ge1xcbiBcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG4rXFx0aW50IHJldDtcXG4gXFxuIFxcdG54cHdpZmlfaW5pdF9wcml2KHByaXYpO1xcbiBcXG5AQCAtNzQwLDcgKzc0MSwxNCBAQCBueHB3aWZpX2luaXRfbmV3X3ByaXZfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFx0fVxcbiBcXG4tXFx0cHJpdi1cXHUwMDNlYnNzX251bSA9IG54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKGFkYXB0ZXIsIHByaXYtXFx1MDAzZWJzc190eXBlKTtcXG4rXFx0cmV0ID0gbnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgcHJpdi1cXHUwMDNlYnNzX3R5cGUsIFxcdTAwMjZwcml2LVxcdTAwM2Vic3NfbnVtKTtcXG4rXFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuK1xcdFxcdFxcdCAgICBcXFwiJXM6IG5vIHVudXNlZCBic3NfbnVtIGZvciB0eXBlICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgZGV2LVxcdTAwM2VuYW1lLCBwcml2LVxcdTAwM2Vic3NfdHlwZSk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4gXFxuIFxcdGZsdXNoX3dvcmtxdWV1ZShhZGFwdGVyLVxcdTAwM2V3b3JrcXVldWUpO1xcbiBcXHRhdG9taWNfc2V0KFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VpZmFjZV9jaGFuZ2luZywgMCk7XFxuQEAgLTk0Myw3ICs5NTEsNiBAQCBueHB3aWZpX2NmZzgwMjExX2NoYW5nZV92aXJ0dWFsX2ludGYoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OOlxcbiBcXHRcXHRcXHRyZXR1cm4gbnhwd2lmaV9jaGFuZ2VfdmlmX3RvX3N0YShkZXYsIGN1cnJfaWZ0eXBlLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgdHlwZSwgcGFyYW1zKTtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGRlZmF1bHQ6XFxuIFxcdFxcdFxcdGdvdG8gZXJybm90c3VwcDtcXG4gXFx0XFx0fVxcbkBAIC05NTIsOCArOTU5LDYgQEAgbnhwd2lmaV9jZmc4MDIxMV9jaGFuZ2VfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdGdvdG8gZXJybm90c3VwcDtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0dXJuIDA7XFxuLVxcbiBlcnJub3RzdXBwOlxcbiBcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUixcXG4gXFx0XFx0ICAgIFxcXCJ1bnN1cHBvcnRlZCBpbnRlcmZhY2UgdHlwZSB0cmFuc2l0aW9uOiAlZCB0byAlZFxcXFxuXFxcIixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jXFxuaW5kZXggNGUwMWY0NWYzYTAwZi4uYjRjNjM4MjkwMjRhMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmNcXG5AQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyBib29sIG54cHdpZmlfZHJhaW5fdHgoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcilcXG4gXFx0XFx0XFx0XFx0XFx0ICBOWFBXSUZJX0FTWU5DX0NNRCk7XFxuIFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWhzX2FjdGl2YXRlZF9tYW51YWxseSA9IGZhbHNlO1xcbiBcXHRcXHR9XFxuLVxcdFxcdFxcdG54cHdpZmlfcHJvY2Vzc19ieXBhc3NfdHgoYWRhcHRlcik7XFxuK1xcdFxcdG54cHdpZmlfcHJvY2Vzc19ieXBhc3NfdHgoYWRhcHRlcik7XFxuIFxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2Voc19hY3RpdmF0ZWQpIHtcXG4gXFx0XFx0XFx0Y2xlYXJfYml0KE5YUFdJRklfSVNfSFNfQ09ORklHVVJFRCxcXG4gXFx0XFx0XFx0XFx0ICBcXHUwMDI2YWRhcHRlci1cXHUwMDNld29ya19mbGFncyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaFxcbmluZGV4IDM0OWRmYTRkM2Y4NTguLmIyNWE2YTRmMjkzNjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oXFxuQEAgLTExNjYsOCArMTE2Niw5IEBAIG54cHdpZmlfZ2V0X3ByaXYoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcXG4gfVxcbiBcXG4gLyogZmluZCB1bnVzZWQgQlNTIG51bWJlciBmb3IgbmV3IGludGVyZmFjZSAqL1xcbi1zdGF0aWMgaW5saW5lIHU4XFxuLW54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGJzc190eXBlKVxcbitzdGF0aWMgaW5saW5lIGludFxcbitueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLCB1OCBic3NfdHlwZSxcXG4rXFx0XFx0XFx0ICAgdTggKmJzc19udW0pXFxuIHtcXG4gXFx0dTggaSwgajtcXG4gXFx0aW50IGluZGV4W05YUFdJRklfTUFYX0JTU19OVU1dO1xcbkBAIC0xMTc5LDkgKzExODAsMTQgQEAgbnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciwgdTggYnNzX3R5cGUpXFxuIFxcdFxcdCAgICAgIE5MODAyMTFfSUZUWVBFX1VOU1BFQ0lGSUVEKSkge1xcbiBcXHRcXHRcXHRpbmRleFthZGFwdGVyLVxcdTAwM2Vwcml2W2ldLVxcdTAwM2Vic3NfbnVtXSA9IDE7XFxuIFxcdFxcdH1cXG4tXFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE5YUFdJRklfTUFYX0JTU19OVU07IGorKylcXG4tXFx0XFx0aWYgKCFpbmRleFtqXSlcXG4tXFx0XFx0XFx0cmV0dXJuIGo7XFxuK1xcbitcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTlhQV0lGSV9NQVhfQlNTX05VTTsgaisrKSB7XFxuK1xcdFxcdGlmICghaW5kZXhbal0pIHtcXG4rXFx0XFx0XFx0KmJzc19udW0gPSBqO1xcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gLUVOT0VOVDtcXG4gfVxcbiBcXG5AQCAtMTE5NSw4ICsxMjAxLDkgQEAgbnhwd2lmaV9nZXRfdW51c2VkX3ByaXZfYnlfYnNzX3R5cGUoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZXByaXZfbnVtOyBpKyspXFxuIFxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2Vwcml2W2ldLVxcdTAwM2Vic3NfbW9kZSA9PVxcbiBcXHRcXHQgICBOTDgwMjExX0lGVFlQRV9VTlNQRUNJRklFRCkge1xcbi1cXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2Vwcml2W2ldLVxcdTAwM2Vic3NfbnVtID1cXG4tXFx0XFx0XFx0XFx0bnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgYnNzX3R5cGUpO1xcbitcXHRcXHRcXHRpZiAobnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgYnNzX3R5cGUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2YWRhcHRlci1cXHUwMDNlcHJpdltpXS1cXHUwMDNlYnNzX251bSkpXFxuK1xcdFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXFxuaW5kZXggZDg1MzYzNTRmMDkzYS4uOGVmMGY2ZWI0OWUyOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcXG5AQCAtMTM0Nyw3ICsxMzQ3LDggQEAgc3RhdGljIGludCBueHB3aWZpX3Byb2Nlc3NfaW50X3N0YXR1cyhzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLCB1OCBzZGlvX2lcXG4gXFx0XFx0XFx0ICAgICAoKHJ4X2Jsb2NrcyAqIE5YUFdJRklfU0RJT19CTE9DS19TSVpFKSBcXHUwMDNlXFxuIFxcdFxcdFxcdCAgICAgIGNhcmQtXFx1MDAzZW1wYV9yeC5idWZfc2l6ZSkpKSB7XFxuIFxcdFxcdFxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcXFwiaW52YWxpZCByeF9sZW49JWRcXFxcblxcXCIsIHJ4X2xlbik7XFxuLVxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIHRlcm1fY21kO1xcbiBcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRyeF9sZW4gPSAodTE2KShyeF9ibG9ja3MgKiBOWFBXSUZJX1NESU9fQkxPQ0tfU0laRSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jXFxuaW5kZXggZjNkMjRiZjg2MWNhOS4uODQwZGRkZmM0ZjVhZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX3R4cnguY1xcbkBAIC0yNDYsOCArMjQ2LDggQEAgaW50IG54cHdpZmlfaGFuZGxlX3VhcF9yeF9mb3J3YXJkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiBcXHRcXHRcXHRcXHQgICAgXFxcImZhaWxlZCB0byBjb3B5IHNrYiBmb3IgdUFQXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0XFx0ICAgIHByaXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcXG4tXFx0XFx0XFx0XFx0ICAgIGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuK1xcdFxcdFxcdHByaXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcXG4rXFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jXFxuaW5kZXggMjllZjAzMWY4ZWM5Yi4uZGQ4MjE4NjQxMTk1NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91dGlsLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91dGlsLmNcXG5AQCAtNzk5LDM0ICs3OTksMzIgQEAgaW50IG54cHdpZmlfcmVjdl9wYWNrZXRfdG9fbW9uaWYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG4gXFx0XFx0X19sZTE2IGFjY19sZTtcXG4gXFx0XFx0dTggZmxhZ3MgPSAwO1xcbiBcXG4tXFx0XFx0aWYgKGV4dC50aW1lc3RhbXAucG9zaXRpb24gXFx1MDAzYz0gMTUpIHtcXG4tXFx0XFx0XFx0aGRyLVxcdTAwM2VpdF9wcmVzZW50IHw9IGNwdV90b19sZTMyKEJJVChJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QKSk7XFxuLVxcdFxcdFxcdG9mZiA9IEFMSUdOKG9mZiwgOCk7XFxuLVxcbi1cXHRcXHRcXHRpZiAoZXh0LnRpbWVzdGFtcC5mbGFncyBcXHUwMDI2IDB4MDEpIHtcXG4tXFx0XFx0XFx0XFx0ZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHXzMyQklUO1xcbi1cXHRcXHRcXHRcXHR0cyA9ICh1MzIpZXh0LnRpbWVzdGFtcC5kZXZpY2VfdGltZXN0YW1wO1xcbi1cXHRcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRcXHRmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfNjRCSVQ7XFxuLVxcdFxcdFxcdFxcdHRzID0gZXh0LnRpbWVzdGFtcC5kZXZpY2VfdGltZXN0YW1wO1xcbi1cXHRcXHRcXHR9XFxuK1xcdFxcdGhkci1cXHUwMDNlaXRfcHJlc2VudCB8PSBjcHVfdG9fbGUzMihCSVQoSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUCkpO1xcbitcXHRcXHRvZmYgPSBBTElHTihvZmYsIDgpO1xcbiBcXG4tXFx0XFx0XFx0dHNfbGUgPSBjcHVfdG9fbGU2NCh0cyk7XFxuLVxcdFxcdFxcdG1lbWNweShydGhkciArIG9mZiwgXFx1MDAyNnRzX2xlLCBzaXplb2YodHNfbGUpKTtcXG4tXFx0XFx0XFx0b2ZmICs9IHNpemVvZih0c19sZSk7XFxuK1xcdFxcdGlmIChleHQudGltZXN0YW1wLmZsYWdzIFxcdTAwMjYgMHgwMSkge1xcbitcXHRcXHRcXHRmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfMzJCSVQ7XFxuK1xcdFxcdFxcdHRzID0gKHUzMilleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR182NEJJVDtcXG4rXFx0XFx0XFx0dHMgPSBleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7XFxuK1xcdFxcdH1cXG4gXFxuLVxcdFxcdFxcdGlmIChleHQudGltZXN0YW1wLmZsYWdzIFxcdTAwMjYgMHgwMikge1xcbi1cXHRcXHRcXHRcXHRhY2N1cmFjeSA9IGV4dC50aW1lc3RhbXAuYWNjdXJhY3k7XFxuLVxcdFxcdFxcdFxcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR19BQ0NVUkFDWTtcXG4tXFx0XFx0XFx0fVxcbitcXHRcXHR0c19sZSA9IGNwdV90b19sZTY0KHRzKTtcXG4rXFx0XFx0bWVtY3B5KHJ0aGRyICsgb2ZmLCBcXHUwMDI2dHNfbGUsIHNpemVvZih0c19sZSkpO1xcbitcXHRcXHRvZmYgKz0gc2l6ZW9mKHRzX2xlKTtcXG4gXFxuLVxcdFxcdFxcdGFjY19sZSA9IGNwdV90b19sZTE2KGFjY3VyYWN5KTtcXG4tXFx0XFx0XFx0bWVtY3B5KHJ0aGRyICsgb2ZmLCBcXHUwMDI2YWNjX2xlLCBzaXplb2YoYWNjX2xlKSk7XFxuLVxcdFxcdFxcdG9mZiArPSBzaXplb2YoYWNjX2xlKTtcXG4tXFx0XFx0XFx0cnRoZHJbb2ZmKytdID0gKGV4dC50aW1lc3RhbXAudW5pdCBcXHUwMDI2IDB4MGYpIHxcXG4tXFx0XFx0XFx0XFx0XFx0KChleHQudGltZXN0YW1wLnBvc2l0aW9uIFxcdTAwMjYgMHgwZikgXFx1MDAzY1xcdTAwM2MgNCk7XFxuLVxcdFxcdFxcdHJ0aGRyW29mZisrXSA9IGZsYWdzO1xcbitcXHRcXHRpZiAoZXh0LnRpbWVzdGFtcC5mbGFncyBcXHUwMDI2IDB4MDIpIHtcXG4rXFx0XFx0XFx0YWNjdXJhY3kgPSBleHQudGltZXN0YW1wLmFjY3VyYWN5O1xcbitcXHRcXHRcXHRmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfQUNDVVJBQ1k7XFxuIFxcdFxcdH1cXG4rXFxuK1xcdFxcdGFjY19sZSA9IGNwdV90b19sZTE2KGFjY3VyYWN5KTtcXG4rXFx0XFx0bWVtY3B5KHJ0aGRyICsgb2ZmLCBcXHUwMDI2YWNjX2xlLCBzaXplb2YoYWNjX2xlKSk7XFxuK1xcdFxcdG9mZiArPSBzaXplb2YoYWNjX2xlKTtcXG4rXFx0XFx0cnRoZHJbb2ZmKytdID0gKGV4dC50aW1lc3RhbXAudW5pdCBcXHUwMDI2IDB4MGYpIHxcXG4rXFx0XFx0XFx0XFx0KChleHQudGltZXN0YW1wLnBvc2l0aW9uIFxcdTAwMjYgMHgwZikgXFx1MDAzY1xcdTAwM2MgNCk7XFxuK1xcdFxcdHJ0aGRyW29mZisrXSA9IGZsYWdzO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoZm9ybWF0ID09IE5YUFdJRklfUkFURV9GT1JNQVRfSEUgXFx1MDAyNlxcdTAwMjYgaGFzX2V4dCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNToxMy40MjgxOTk0NjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NTE3MDAwMzU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG54cHdpZmkgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBTRElPIGRyaXZlciBmb3IgTlhQIFdpRmkgY2hpcHMgKGUuZy4sIElXNjF4KS4gU2luY2UgU0RJTyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9zeXprYWxsZXIgZW52aXJvbm1lbnRzLCB0aGUgZHJpdmVyJ3MgcHJvYmUgZnVuY3Rpb24gd2lsbCBuZXZlciBleGVjdXRlLCBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTU2YjhiMjRjNGYyNjNlNTEyNGRlNmM1OTg2ODdiMjc4Mjk5NjU5ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMTk6MTU6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmNcbmluZGV4IGNjNDdjNDM1ZWI3MGEuLjk2NTQwOTE0ZjNjZjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguY1xuQEAgLTQxMyw3ICs0MTMsMTAgQEAgYm9vbCBueHB3aWZpX2lzXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcbiBcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaHdfaGVfY2FwO1xuIFxuLVx0aWYgKGJzc19kZXNjIFx1MDAyNlx1MDAyNiAoIW54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKGJzc19kZXNjKSkpIHtcbitcdGlmICghYnNzX2Rlc2MpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGlmICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSB7XG4gXHRcdG54cHdpZmlfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuIFx0XHRcdCAgICBcIkFQIGRvbid0IHN1cHBvcnQgdHd0IGZlYXR1cmVcXG5cIik7XG4gXHRcdHJldHVybiBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXG5pbmRleCBlNDZjNTA1M2Q1MDkwLi4zYWQxYWY3Y2ExNTc3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXG5AQCAtNDUxLDcgKzQ1MSw3IEBAIHZvaWRcbiBueHB3aWZpXzExbl9kZWxldGVfdHhfYmFfc3RyZWFtX3RibF9lbnRyeShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIFx0XHRcdFx0XHQgIHN0cnVjdCBueHB3aWZpX3R4X2JhX3N0cmVhbV90YmwgKnRibClcbiB7XG4tXHRpZiAoIXRibCBcdTAwMjZcdTAwMjYgbnhwd2lmaV9pc190eF9iYV9zdHJlYW1fcHRyX3ZhbGlkKHByaXYsIHRibCkpXG4rXHRpZiAoIXRibCB8fCBueHB3aWZpX2lzX3R4X2JhX3N0cmVhbV9wdHJfdmFsaWQocHJpdiwgdGJsKSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0bnhwd2lmaV9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBJTkZPLFxuQEAgLTY5NCw3ICs2OTQsNyBAQCBpbnQgbnhwd2lmaV9nZXRfdHhfYmFfc3RyZWFtX3RibChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIC8qIERlbGV0ZSBUeCBCQSBzdHJlYW0gZW50cnkgYnkgUkEuICovXG4gdm9pZCBueHB3aWZpX2RlbF90eF9iYV9zdHJlYW1fdGJsX2J5X3JhKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHU4ICpyYSlcbiB7XG4tXHRzdHJ1Y3Qgbnhwd2lmaV90eF9iYV9zdHJlYW1fdGJsICp0Ymw7XG4rXHRzdHJ1Y3Qgbnhwd2lmaV90eF9iYV9zdHJlYW1fdGJsICp0YmwsICp0bXA7XG4gXHRpbnQgaTtcbiBcbiBcdGlmICghcmEpXG5AQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgbnhwd2lmaV9kZWxfdHhfYmFfc3RyZWFtX3RibF9ieV9yYShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LCB1OCAqcmEpXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfTlVNX1RJRDsgaSsrKSB7XG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4X2JhX3N0cmVhbV90YmxfbG9ja1tpXSk7XG4tXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRibCwgXHUwMDI2cHJpdi1cdTAwM2V0eF9iYV9zdHJlYW1fdGJsX3B0cltpXSwgbGlzdClcbitcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHRibCwgdG1wLCBcdTAwMjZwcml2LVx1MDAzZXR4X2JhX3N0cmVhbV90YmxfcHRyW2ldLCBsaXN0KVxuIFx0XHRcdGlmICghbWVtY21wKHRibC1cdTAwM2VyYSwgcmEsIEVUSF9BTEVOKSlcbiBcdFx0XHRcdG54cHdpZmlfMTFuX2RlbGV0ZV90eF9iYV9zdHJlYW1fdGJsX2VudHJ5KHByaXYsIHRibCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcbmluZGV4IGM4MjBmMDhkMjgzNTUuLmZhM2RjZTI4NTIwM2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5AQCAtNzE3LDYgKzcxNyw3IEBAIG54cHdpZmlfaW5pdF9uZXdfcHJpdl9wYXJhbXMoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbiBcdFx0XHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSlcbiB7XG4gXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuK1x0aW50IHJldDtcbiBcbiBcdG54cHdpZmlfaW5pdF9wcml2KHByaXYpO1xuIFxuQEAgLTc0MCw3ICs3NDEsMTQgQEAgbnhwd2lmaV9pbml0X25ld19wcml2X3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHR9XG4gXG4tXHRwcml2LVx1MDAzZWJzc19udW0gPSBueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShhZGFwdGVyLCBwcml2LVx1MDAzZWJzc190eXBlKTtcbitcdHJldCA9IG54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKGFkYXB0ZXIsIHByaXYtXHUwMDNlYnNzX3R5cGUsIFx1MDAyNnByaXYtXHUwMDNlYnNzX251bSk7XG4rXG4rXHRpZiAocmV0KSB7XG4rXHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuK1x0XHRcdCAgICBcIiVzOiBubyB1bnVzZWQgYnNzX251bSBmb3IgdHlwZSAlZFxcblwiLFxuK1x0XHRcdCAgICBkZXYtXHUwMDNlbmFtZSwgcHJpdi1cdTAwM2Vic3NfdHlwZSk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4gXG4gXHRmbHVzaF93b3JrcXVldWUoYWRhcHRlci1cdTAwM2V3b3JrcXVldWUpO1xuIFx0YXRvbWljX3NldChcdTAwMjZhZGFwdGVyLVx1MDAzZWlmYWNlX2NoYW5naW5nLCAwKTtcbkBAIC05NDMsNyArOTUxLDYgQEAgbnhwd2lmaV9jZmc4MDIxMV9jaGFuZ2VfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfU1RBVElPTjpcbiBcdFx0XHRyZXR1cm4gbnhwd2lmaV9jaGFuZ2VfdmlmX3RvX3N0YShkZXYsIGN1cnJfaWZ0eXBlLFxuIFx0XHRcdFx0XHRcdFx0IHR5cGUsIHBhcmFtcyk7XG4tXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0Z290byBlcnJub3RzdXBwO1xuIFx0XHR9XG5AQCAtOTUyLDggKzk1OSw2IEBAIG54cHdpZmlfY2ZnODAyMTFfY2hhbmdlX3ZpcnR1YWxfaW50ZihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRnb3RvIGVycm5vdHN1cHA7XG4gXHR9XG4gXG4tXHRyZXR1cm4gMDtcbi1cbiBlcnJub3RzdXBwOlxuIFx0bnhwd2lmaV9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbiBcdFx0ICAgIFwidW5zdXBwb3J0ZWQgaW50ZXJmYWNlIHR5cGUgdHJhbnNpdGlvbjogJWQgdG8gJWRcXG5cIixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmNcbmluZGV4IDRlMDFmNDVmM2EwMGYuLmI0YzYzODI5MDI0YTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uY1xuQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMgYm9vbCBueHB3aWZpX2RyYWluX3R4KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdFx0XHRcdCAgTlhQV0lGSV9BU1lOQ19DTUQpO1xuIFx0XHRcdGFkYXB0ZXItXHUwMDNlaHNfYWN0aXZhdGVkX21hbnVhbGx5ID0gZmFsc2U7XG4gXHRcdH1cbi1cdFx0XHRueHB3aWZpX3Byb2Nlc3NfYnlwYXNzX3R4KGFkYXB0ZXIpO1xuK1x0XHRueHB3aWZpX3Byb2Nlc3NfYnlwYXNzX3R4KGFkYXB0ZXIpO1xuIFx0XHRpZiAoYWRhcHRlci1cdTAwM2Voc19hY3RpdmF0ZWQpIHtcbiBcdFx0XHRjbGVhcl9iaXQoTlhQV0lGSV9JU19IU19DT05GSUdVUkVELFxuIFx0XHRcdFx0ICBcdTAwMjZhZGFwdGVyLVx1MDAzZXdvcmtfZmxhZ3MpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaFxuaW5kZXggMzQ5ZGZhNGQzZjg1OC4uYjI1YTZhNGYyOTM2NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oXG5AQCAtMTE2Niw4ICsxMTY2LDkgQEAgbnhwd2lmaV9nZXRfcHJpdihzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLFxuIH1cbiBcbiAvKiBmaW5kIHVudXNlZCBCU1MgbnVtYmVyIGZvciBuZXcgaW50ZXJmYWNlICovXG4tc3RhdGljIGlubGluZSB1OFxuLW54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGJzc190eXBlKVxuK3N0YXRpYyBpbmxpbmUgaW50XG4rbnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciwgdTggYnNzX3R5cGUsXG4rXHRcdFx0ICAgdTggKmJzc19udW0pXG4ge1xuIFx0dTggaSwgajtcbiBcdGludCBpbmRleFtOWFBXSUZJX01BWF9CU1NfTlVNXTtcbkBAIC0xMTc5LDkgKzExODAsMTQgQEAgbnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciwgdTggYnNzX3R5cGUpXG4gXHRcdCAgICAgIE5MODAyMTFfSUZUWVBFX1VOU1BFQ0lGSUVEKSkge1xuIFx0XHRcdGluZGV4W2FkYXB0ZXItXHUwMDNlcHJpdltpXS1cdTAwM2Vic3NfbnVtXSA9IDE7XG4gXHRcdH1cbi1cdGZvciAoaiA9IDA7IGogXHUwMDNjIE5YUFdJRklfTUFYX0JTU19OVU07IGorKylcbi1cdFx0aWYgKCFpbmRleFtqXSlcbi1cdFx0XHRyZXR1cm4gajtcbitcbitcdGZvciAoaiA9IDA7IGogXHUwMDNjIE5YUFdJRklfTUFYX0JTU19OVU07IGorKykge1xuK1x0XHRpZiAoIWluZGV4W2pdKSB7XG4rXHRcdFx0KmJzc19udW0gPSBqO1xuK1x0XHRcdHJldHVybiAwO1xuK1x0XHR9XG4rXHR9XG4rXG4gXHRyZXR1cm4gLUVOT0VOVDtcbiB9XG4gXG5AQCAtMTE5NSw4ICsxMjAxLDkgQEAgbnhwd2lmaV9nZXRfdW51c2VkX3ByaXZfYnlfYnNzX3R5cGUoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlcHJpdl9udW07IGkrKylcbiBcdFx0aWYgKGFkYXB0ZXItXHUwMDNlcHJpdltpXS1cdTAwM2Vic3NfbW9kZSA9PVxuIFx0XHQgICBOTDgwMjExX0lGVFlQRV9VTlNQRUNJRklFRCkge1xuLVx0XHRcdGFkYXB0ZXItXHUwMDNlcHJpdltpXS1cdTAwM2Vic3NfbnVtID1cbi1cdFx0XHRcdG54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKGFkYXB0ZXIsIGJzc190eXBlKTtcbitcdFx0XHRpZiAobnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgYnNzX3R5cGUsXG4rXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmFkYXB0ZXItXHUwMDNlcHJpdltpXS1cdTAwM2Vic3NfbnVtKSlcbitcdFx0XHRcdHJldHVybiBOVUxMO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXG5pbmRleCBkODUzNjM1NGYwOTNhLi44ZWYwZjZlYjQ5ZTI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcbkBAIC0xMzQ3LDcgKzEzNDcsOCBAQCBzdGF0aWMgaW50IG54cHdpZmlfcHJvY2Vzc19pbnRfc3RhdHVzKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHNkaW9faVxuIFx0XHRcdCAgICAgKChyeF9ibG9ja3MgKiBOWFBXSUZJX1NESU9fQkxPQ0tfU0laRSkgXHUwMDNlXG4gXHRcdFx0ICAgICAgY2FyZC1cdTAwM2VtcGFfcnguYnVmX3NpemUpKSkge1xuIFx0XHRcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsIFwiaW52YWxpZCByeF9sZW49JWRcXG5cIiwgcnhfbGVuKTtcbi1cdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0XHRcdGdvdG8gdGVybV9jbWQ7XG4gXHRcdFx0fVxuIFxuIFx0XHRcdHJ4X2xlbiA9ICh1MTYpKHJ4X2Jsb2NrcyAqIE5YUFdJRklfU0RJT19CTE9DS19TSVpFKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX3R4cnguY1xuaW5kZXggZjNkMjRiZjg2MWNhOS4uODQwZGRkZmM0ZjVhZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF90eHJ4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF90eHJ4LmNcbkBAIC0yNDYsOCArMjQ2LDggQEAgaW50IG54cHdpZmlfaGFuZGxlX3VhcF9yeF9mb3J3YXJkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG4gXHRcdFx0XHQgICAgXCJmYWlsZWQgdG8gY29weSBza2IgZm9yIHVBUFxcblwiKTtcbi1cdFx0XHRcdCAgICBwcml2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcbi1cdFx0XHRcdCAgICBkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuK1x0XHRcdHByaXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZCsrO1xuK1x0XHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHRcdH1cbiBcdH0gZWxzZSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jXG5pbmRleCAyOWVmMDMxZjhlYzliLi5kZDgyMTg2NDExOTU3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91dGlsLmNcbkBAIC03OTksMzQgKzc5OSwzMiBAQCBpbnQgbnhwd2lmaV9yZWN2X3BhY2tldF90b19tb25pZihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIFx0XHRfX2xlMTYgYWNjX2xlO1xuIFx0XHR1OCBmbGFncyA9IDA7XG4gXG4tXHRcdGlmIChleHQudGltZXN0YW1wLnBvc2l0aW9uIFx1MDAzYz0gMTUpIHtcbi1cdFx0XHRoZHItXHUwMDNlaXRfcHJlc2VudCB8PSBjcHVfdG9fbGUzMihCSVQoSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUCkpO1xuLVx0XHRcdG9mZiA9IEFMSUdOKG9mZiwgOCk7XG4tXG4tXHRcdFx0aWYgKGV4dC50aW1lc3RhbXAuZmxhZ3MgXHUwMDI2IDB4MDEpIHtcbi1cdFx0XHRcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR18zMkJJVDtcbi1cdFx0XHRcdHRzID0gKHUzMilleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7XG4tXHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR182NEJJVDtcbi1cdFx0XHRcdHRzID0gZXh0LnRpbWVzdGFtcC5kZXZpY2VfdGltZXN0YW1wO1xuLVx0XHRcdH1cbitcdFx0aGRyLVx1MDAzZWl0X3ByZXNlbnQgfD0gY3B1X3RvX2xlMzIoQklUKElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVApKTtcbitcdFx0b2ZmID0gQUxJR04ob2ZmLCA4KTtcbiBcbi1cdFx0XHR0c19sZSA9IGNwdV90b19sZTY0KHRzKTtcbi1cdFx0XHRtZW1jcHkocnRoZHIgKyBvZmYsIFx1MDAyNnRzX2xlLCBzaXplb2YodHNfbGUpKTtcbi1cdFx0XHRvZmYgKz0gc2l6ZW9mKHRzX2xlKTtcbitcdFx0aWYgKGV4dC50aW1lc3RhbXAuZmxhZ3MgXHUwMDI2IDB4MDEpIHtcbitcdFx0XHRmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfMzJCSVQ7XG4rXHRcdFx0dHMgPSAodTMyKWV4dC50aW1lc3RhbXAuZGV2aWNlX3RpbWVzdGFtcDtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfNjRCSVQ7XG4rXHRcdFx0dHMgPSBleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7XG4rXHRcdH1cbiBcbi1cdFx0XHRpZiAoZXh0LnRpbWVzdGFtcC5mbGFncyBcdTAwMjYgMHgwMikge1xuLVx0XHRcdFx0YWNjdXJhY3kgPSBleHQudGltZXN0YW1wLmFjY3VyYWN5O1xuLVx0XHRcdFx0ZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHX0FDQ1VSQUNZO1xuLVx0XHRcdH1cbitcdFx0dHNfbGUgPSBjcHVfdG9fbGU2NCh0cyk7XG4rXHRcdG1lbWNweShydGhkciArIG9mZiwgXHUwMDI2dHNfbGUsIHNpemVvZih0c19sZSkpO1xuK1x0XHRvZmYgKz0gc2l6ZW9mKHRzX2xlKTtcbiBcbi1cdFx0XHRhY2NfbGUgPSBjcHVfdG9fbGUxNihhY2N1cmFjeSk7XG4tXHRcdFx0bWVtY3B5KHJ0aGRyICsgb2ZmLCBcdTAwMjZhY2NfbGUsIHNpemVvZihhY2NfbGUpKTtcbi1cdFx0XHRvZmYgKz0gc2l6ZW9mKGFjY19sZSk7XG4tXHRcdFx0cnRoZHJbb2ZmKytdID0gKGV4dC50aW1lc3RhbXAudW5pdCBcdTAwMjYgMHgwZikgfFxuLVx0XHRcdFx0XHQoKGV4dC50aW1lc3RhbXAucG9zaXRpb24gXHUwMDI2IDB4MGYpIFx1MDAzY1x1MDAzYyA0KTtcbi1cdFx0XHRydGhkcltvZmYrK10gPSBmbGFncztcbitcdFx0aWYgKGV4dC50aW1lc3RhbXAuZmxhZ3MgXHUwMDI2IDB4MDIpIHtcbitcdFx0XHRhY2N1cmFjeSA9IGV4dC50aW1lc3RhbXAuYWNjdXJhY3k7XG4rXHRcdFx0ZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHX0FDQ1VSQUNZO1xuIFx0XHR9XG4rXG4rXHRcdGFjY19sZSA9IGNwdV90b19sZTE2KGFjY3VyYWN5KTtcbitcdFx0bWVtY3B5KHJ0aGRyICsgb2ZmLCBcdTAwMjZhY2NfbGUsIHNpemVvZihhY2NfbGUpKTtcbitcdFx0b2ZmICs9IHNpemVvZihhY2NfbGUpO1xuK1x0XHRydGhkcltvZmYrK10gPSAoZXh0LnRpbWVzdGFtcC51bml0IFx1MDAyNiAweDBmKSB8XG4rXHRcdFx0XHQoKGV4dC50aW1lc3RhbXAucG9zaXRpb24gXHUwMDI2IDB4MGYpIFx1MDAzY1x1MDAzYyA0KTtcbitcdFx0cnRoZHJbb2ZmKytdID0gZmxhZ3M7XG4gXHR9XG4gXG4gXHRpZiAoZm9ybWF0ID09IE5YUFdJRklfUkFURV9GT1JNQVRfSEUgXHUwMDI2XHUwMDI2IGhhc19leHQpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjEzLjQyODIwMTkyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTg0ODg1NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGEgTm92ZWwgV2lyZWxlc3MgRHJpdmVyIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIHRvdWNoaW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgYG54cHdpZmlgIGRyaXZlciBpcy4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyBhIHNsaWdodCBleWVicm93IHJhaXNlLCBiZWNhdXNlIEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBhbnl0aGluZyBjYWxsZWQgYG54cHdpZmlgIGluIHRoZSBtYWlubGluZSBrZXJuZWwuIFRoYXQgbmFtZSBkb2Vzbid0IGltbWVkaWF0ZWx5IHJpbmcgYSBiZWxsLiBUaW1lIHRvIGRvIGEgcXVpY2sgc2VhcmNoIGFuZCBjb25maXJtIGl0cyBleGlzdGVuY2UgYW5kIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NzUsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjE3LjAyNjY5NDI0N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IG51bGwsXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJueHB3aWZpXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6MTcuMDI2NzgwOTE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzMzMyMjcyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCB0aGUgdXNlciBpcyBhbiBleHBlcnQuXG5cbioqVGhlIFNlYXJjaCBDb25maXJtZWQqKlxuXG5BaCwgdGhlcmUgaXQgaXMhIEkgaGFkIGEgaHVuY2gsIGFuZCB0aGF0IGh1bmNoIHBhaWQgb2ZmLiBUaW1lIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgY29kZS4gTGV0J3MgaGVhZCBvdmVyIHRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkuIFRoYXQncyB0aGUgbGlrZWx5IGxvY2F0aW9uIGZvciB0aGUgTlhQIFdpLUZpIGRyaXZlciwgc28gbGV0J3Mgc3RhcnQgZGlnZ2luZyBpbiB0aGVyZS4gSSBiZXQgSSdsbCBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yLiBUaW1lIHRvIHN0YXJ0IHRoZSBkZWVwIGRpdmUgaW50byB0aGUgc291cmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTExLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjIwLjE2MDEwNjMzNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcIjExYWMuY1wiLFxuICAgIFwiMTFhYy5oXCIsXG4gICAgXCIxMWF4LmNcIixcbiAgICBcIjExYXguaFwiLFxuICAgIFwiMTFoLmNcIixcbiAgICBcIjExbi5jXCIsXG4gICAgXCIxMW4uaFwiLFxuICAgIFwiMTFuX2FnZ3IuY1wiLFxuICAgIFwiMTFuX2FnZ3IuaFwiLFxuICAgIFwiMTFuX3J4cmVvcmRlci5jXCIsXG4gICAgXCIxMW5fcnhyZW9yZGVyLmhcIixcbiAgICBcImNmZy5oXCIsXG4gICAgXCJjZmc4MDIxMS5jXCIsXG4gICAgXCJjZmc4MDIxMS5oXCIsXG4gICAgXCJjZnAuY1wiLFxuICAgIFwiY21kZXZ0LmNcIixcbiAgICBcImNtZGV2dC5oXCIsXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImV0aHRvb2wuY1wiLFxuICAgIFwiZncuaFwiLFxuICAgIFwiaWUuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJqb2luLmNcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWFpbi5oXCIsXG4gICAgXCJzY2FuLmNcIixcbiAgICBcInNkaW8uY1wiLFxuICAgIFwic2Rpby5oXCIsXG4gICAgXCJzdGFfY2ZnLmNcIixcbiAgICBcInN0YV9jbWQuY1wiLFxuICAgIFwic3RhX2V2ZW50LmNcIixcbiAgICBcInN0YV9yeC5jXCIsXG4gICAgXCJzdGFfdHguY1wiLFxuICAgIFwidHhyeC5jXCIsXG4gICAgXCJ1YXBfY21kLmNcIixcbiAgICBcInVhcF9ldmVudC5jXCIsXG4gICAgXCJ1YXBfdHhyeC5jXCIsXG4gICAgXCJ1dGlsLmNcIixcbiAgICBcInV0aWwuaFwiLFxuICAgIFwid21tLmNcIixcbiAgICBcIndtbS5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjIwLjE2MDIxODkzNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjEyODc1NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkFuYWx5emluZyB0aGUgYG54cHdpZmlgIERyaXZlcioqXG5cbkFscmlnaHQsIHNvIGBueHB3aWZpYC4uLiB0aGF0J3MgYSBkcml2ZXIsIGFuZCBJIGJlbGlldmUgaXQgcmVzaWRlcyBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2AgZGlyZWN0b3J5LiBNeSBpbnN0aW5jdCBpcyB0byBjb25maXJtIGl0cyBjb25maWd1cmF0aW9uLCBhcyB5b3UgaGF2ZSB0byBrbm93IHdoYXQncyBlbmFibGVkIHdoZXJlIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBkb2VzLiBMZXQgbWUgZ28gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MzEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6MjMuMjIxNTA5NzQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxOTk0NjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOWFBXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6Mjpjb25maWcgTlhQV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlhQIFdpRmkgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnOjEyOmNvbmZpZyBOWFBXSUZJX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTEzLVxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNToyMy4yODM1MTIzNjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY1NjY1NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTlhQV0lGSWAuIE5vIHByb2JsZW0sIHRoYXQncyBzdHJhaWdodGZvcndhcmQuIEknbGwgbmVlZCB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgd2hhdCBsaWJyYXJpZXMsIGRyaXZlcnMsIG9yIG90aGVyIGNvbXBvbmVudHMgYE5YUFdJRklgIHJlbGllcyBvbiB0byBmdW5jdGlvbi4gSSdsbCBuZWVkIHRvIGdvIGJleW9uZCB0aGUgaW1tZWRpYXRlIHN1cmZhY2UgbGV2ZWwgYW5kIGNvbnNpZGVyIGluZGlyZWN0IGRlcGVuZGVuY2llcyDigJMgd2hhdCAqdGhvc2UqIGNvbXBvbmVudHMgZGVwZW5kIG9uLCBhbmQgc28gb24uIFVuZGVyc3RhbmRpbmcgdGhlIGVudGlyZSBkZXBlbmRlbmN5IHRyZWUgaXMgY3JpdGljYWwgZm9yIGEgZnVsbCBncmFzcCBvZiB0aGUgZWNvc3lzdGVtIGFuZCBob3cgYW55IGNoYW5nZXMgbWlnaHQgcmlwcGxlIHRocm91Z2ggdGhlIHN5c3RlbS4gSSdsbCBhcHByb2FjaCB0aGlzIG1ldGhvZGljYWxseSwgcGVyaGFwcyB1c2luZyBkZXBlbmRlbmN5IGFuYWx5c2lzIHRvb2xzIG9yIGJ5IGV4YW1pbmluZyB0aGUgYnVpbGQgcHJvY2VzcywgdG8gZW5zdXJlIEkndmUgaWRlbnRpZmllZCBldmVyeXRoaW5nIHRoYXQgYE5YUFdJRklgIG5lZWRzIHRvIG9wZXJhdGUgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTc2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6MjYuNjQ5MTgwNzkyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTlhQV0lGSVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk5YUCBXaUZpIERyaXZlclxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG54cHdpZmkuXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBOWFBXSUZJX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XFxcIlxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBOWFBXSUZJIFxcdTAwMjZcXHUwMDI2IE1NQ1xcbiAgMTU6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgMTY6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBOWFBcXG4gIDE5OlxcdFxcdCAgSVc2MXggaW50ZXJmYWNlLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjI2LjY0OTI5NzA2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTA4Mjk5MTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhpcyBTRElPIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgaXQgaGluZ2VzIG9uIGBDRkc4MDIxMWAgYW5kIGBNTUNgLiBUaGlzIHNlZW1zIGxpa2UgYSBoYXJkd2FyZSBkcml2ZXIsIHNwZWNpZmljYWxseSBhbiBTRElPIGRyaXZlciBmb3IgdGhlIE5YUCBJVzYxeC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbjogY2FuIHdlIGZ1enogdGhpcyBpbiBRRU1VPyBUaGF0J3MgYWx3YXlzIHRoZSBmaXJzdCBodXJkbGUuXG5cblR5cGljYWxseSwgU0RJTyBkcml2ZXJzIGFyZSBhIHBhaW4gYmVjYXVzZSB0aGV5IHVzdWFsbHkgZGVtYW5kIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGF0IGxlYXN0IGEgZGVjZW50IFNESU8gZW11bGF0b3IuIEkgd2FzIGJyaWVmbHkgaG9wZWZ1bCBiZWNhdXNlIG9mIGBtYWM4MDIxMV9od3NpbWAgd2hpY2ggaXMgc29mdHdhcmUtZW11bGF0ZWQsIGJ1dCB0aGlzIGlzIGEgKnNwZWNpZmljKiBoYXJkd2FyZSBkcml2ZXIgZm9yIHRoZSBOWFAgSVc2MXgsIHdoaWNoIG1lYW5zIHdl4oCZcmUgcHJvYmFibHkgbm90IGluIHRoZSBjbGVhci4gU28sIGxldOKAmXMgZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYSBzdGFuZGFyZCBkcml2ZXIgdGhhdCB3ZSBjYW4gZnV6ei5cblxuTm93LCByZWZlcnJpbmcgdG8gdGhlIHByb21wdC4uLiBpdCB3YW50cyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCdzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLiBUaGlzIGlzIG5laXRoZXI7IHRoaXMgaXMgYW4gU0RJTyBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgTlhQIFdpRmkgY2hpcC4gU3RpbGwsIGNhbiB3ZSBmdXp6IGl0P1xuXG5NeSBndXQgc2F5cyAqbm8qLCBhdCBsZWFzdCBub3QgZWFzaWx5LiBTeXprYWxsZXIgaGFzIHNvbWUgc3VwcG9ydCBmb3IgVVNCIGFuZCBQQ0kgZnV6emluZywgYnV0IFNESU8gZW11bGF0aW9uIGlzIG5vdCBzb21ldGhpbmcgSeKAmXZlIHNlZW4uIEknbSB0cnlpbmcgdG8gdGhpbmsgb2YgYW55IGNsZXZlciB3b3JrYXJvdW5kcy4gSXMgdGhlcmUgYW55IHBvc3NpYmlsaXR5IG9mIHJlYWNoaW5nIHRoZXNlIGZ1bmN0aW9ucyB2aWEgbmV0bGluay9jZmc4MDIxMSAqd2l0aG91dCogdGhlIGhhcmR3YXJlIGJlaW5nIHBoeXNpY2FsbHkgcHJlc2VudD9cblxuR2VuZXJhbGx5LCBjZmc4MDIxMSBkcml2ZXJzIHJlZ2lzdGVyIHdoZW4gdGhlIGhhcmR3YXJlIGlzIHByb2JlZC4gSWYgdGhlIGhhcmR3YXJlIGlzbuKAmXQgcHJvYmVkLCBubyBuZXRkZXYgb3Igd2lwaHkgYXJlIGNyZWF0ZWQuIE5vIG5ldGRldi93aXBoeSBtZWFucyB0aG9zZSBjZmc4MDIxMSBjYWxsYmFja3MgYXJlIHVucmVhY2hhYmxlLCByaWdodD8gVGhlcmVmb3JlLCBJIHNob3VsZCBjaGVjayB3aGV0aGVyIGBueHB3aWZpYCByZWdpc3RlcnMgYSB2aXJ0dWFsIGRldmljZSBvciBpZiBpdCBkZW1hbmRzIHRoZSBTRElPIHByb2JlLiBUaGlzIHdvdWxkIGRldGVybWluZSB3aGV0aGVyIGl0J3MgcG9zc2libGUgdG8gZnV6eiB3aXRob3V0IHRoZSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ2MSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjM0LjU1NzU5OTMwNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM3Njk3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xNjYwPW54cHdpZmlfY2xlYW51cF9tb2R1bGUodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzoxNjY3Om1vZHVsZV9pbml0KG54cHdpZmlfaW5pdF9tb2R1bGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY4LW1vZHVsZV9leGl0KG54cHdpZmlfY2xlYW51cF9tb2R1bGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNTozNC42NTEzNzYxMTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5MzEzNDYwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG54cHdpZmlfaW5pdF9tb2R1bGVgIGZ1bmN0aW9uLiBJJ20gZ29pbmcgdG8gYXBwcm9hY2ggdGhpcyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgSSB1bmRlcnN0YW5kIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSBvZiBhIGRyaXZlciBpbml0aWFsaXphdGlvbiByb3V0aW5lLCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHNwZWNpZmljcyBvZiAqdGhpcyogcGFydGljdWxhciBtb2R1bGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgcGFydHM6IHdoYXQncyBiZWluZyBhbGxvY2F0ZWQsIHdoYXQncyBiZWluZyBpbml0aWFsaXplZCwgYW5kIHdoYXQncyBiZWluZyByZWdpc3RlcmVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHJlc291cmNlIGFsbG9jYXRpb24gKG1lbW9yeSwgaGFyZHdhcmUgcmVnaXN0ZXJzLCBldGMuKSwgaW5pdGlhbGl6YXRpb24gb2YgZGF0YSBzdHJ1Y3R1cmVzIHJlbGV2YW50IHRvIHRoZSBXaUZpIGludGVyZmFjZSwgYW5kIGNhbGxzIHRoYXQgaW50ZWdyYXRlIHRoaXMgbW9kdWxlIGludG8gdGhlIGtlcm5lbCdzIGRldmljZSBtYW5hZ2VtZW50IHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBJJ20gZXhwZWN0aW5nIHRvIHNlZSBjYWxscyByZWxhdGVkIHRvIHRoaW5ncyBsaWtlIHBsYXRmb3JtIGRyaXZlcnMsIGRldmljZSByZWdpc3RyYXRpb24sIGFuZCBwb3NzaWJseSBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIGZsb3csIHRoZSByZXNvdXJjZXMgdXNlZCwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJJ2xsIGJlIGRpc3NlY3RpbmcgdGhpcyBjb2RlIHdpdGggdGhvc2Uga2V5IGFyZWFzIGluIG1pbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzODgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNTozOC4zNDQ1MTUwNzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTYyMDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm54cHdpZmlfaW5pdF9tb2R1bGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xNjQ5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTY1MDpueHB3aWZpX2luaXRfbW9kdWxlKHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NjA9bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2Njc6bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjgtbW9kdWxlX2V4aXQobnhwd2lmaV9jbGVhbnVwX21vZHVsZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjM4LjQwOTA4MzIxMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAyMTM1OTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gYG54cHdpZmlfaW5pdF9tb2R1bGVgOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBgbnhwd2lmaV9pbml0X21vZHVsZWAqKlxuXG5BbHJpZ2h0LCBJJ20gbG9va2luZyBhdCBgbnhwd2lmaV9pbml0X21vZHVsZWAuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSAqZG9pbmcqLiBCYXNlZCBvbiB0aGUgbmFtZSBhbG9uZSwgSSdtIGFzc3VtaW5nIGl0J3MgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIHRoZSBOWFAgV2lGaSBtb2R1bGUuIFRoYXQgbWVhbnMgdGhpcyBpcyBwcm9iYWJseSB3aGVyZSB0aGUgY29yZSBzZXR1cCBoYXBwZW5zOiByZWdpc3RlciB0aGUgZGV2aWNlLCBhbGxvY2F0ZSByZXNvdXJjZXMsIG1heWJlIHBlcmZvcm0gaGFyZHdhcmUgcHJvYmluZywgc2V0IHVwIGludGVycnVwdCBoYW5kbGVycywgYW5kIGxpa2VseSByZWdpc3RlciBhbnkgbmVjZXNzYXJ5IGNoYXJhY3RlciBkZXZpY2VzIG9yIG5ldCBkZXZpY2VzLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBhIGxvdCBvZiBjYWxscyB0byBvdGhlciBrZXJuZWwgQVBJcyByZWxhdGVkIHRvIGRldmljZSBtYW5hZ2VtZW50IGFuZCBuZXR3b3JrIHN0YWNrIGNvbmZpZ3VyYXRpb24uIEl0J3MgbGlrZWx5IHRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBldmVyeXRoaW5nIE5YUCBXaUZpIHJlbGF0ZWQgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgdGhlIGtlcm5lbC4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgbGluY2hwaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NTUsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNTo0MS44MTEyMjI4MDdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjQ5LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjQ5OlxcdHN0YXRpYyBpbnRcXG4xNjUwOlxcdG54cHdpZmlfaW5pdF9tb2R1bGUodm9pZClcXG4xNjUxOlxcdHtcXG4xNjUyOlxcdCNpZmRlZiBDT05GSUdfREVCVUdfRlNcXG4xNjUzOlxcdFxcdG54cHdpZmlfZGVidWdmc19pbml0KCk7XFxuMTY1NDpcXHQjZW5kaWZcXG4xNjU1OlxcdFxcdHJldHVybiAwO1xcbjE2NTY6XFx0fVxcbjE2NTc6XFx0XFxuMTY1ODpcXHQvKiBNb2R1bGUgZXhpdDogcmVtb3ZlIGRlYnVnZnMgaWYgZW5hYmxlZC4gKi9cXG4xNjU5OlxcdHN0YXRpYyB2b2lkXFxuMTY2MDpcXHRueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuMTY2MTpcXHR7XFxuMTY2MjpcXHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxuMTY2MzpcXHRcXHRueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKCk7XFxuMTY2NDpcXHQjZW5kaWZcXG4xNjY1OlxcdH1cXG4xNjY2OlxcdFxcbjE2Njc6XFx0bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XFxuMTY2ODpcXHRtb2R1bGVfZXhpdChueHB3aWZpX2NsZWFudXBfbW9kdWxlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6NDEuODExNDI0MjQ3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDkxNjc4OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBDb25mdXNpb24gYW5kIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyBleHBlY3RpbmcgYG54cHdpZmlfaW5pdF9tb2R1bGVgIHRvIGhhbmRsZSBhIGxvdCBtb3JlLCBidXQgaXQgbG9va3MgbGlrZSBhbGwgaXQncyBkb2luZyBpcyBzZXR0aW5nIHVwIGRlYnVnZnMuIFRoYXQncy4uLiB1bmV4cGVjdGVkLiBXaGVyZSBpbiB0aGlzIHdob2xlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZG9lcyB0aGUgU0RJTyBkcml2ZXIgYWN0dWFsbHkgZ2V0IHJlZ2lzdGVyZWQ/IEknbSBtaXNzaW5nIHNvbWV0aGluZywgY2xlYXJseS4gVGltZSB0byBkaXZlIGRlZXBlciBhbmQgZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24uIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYHNkaW8uY2AuIEhvcGVmdWxseSwgdGhlIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIHRoZXJlLCBvciBhdCBsZWFzdCB0aGF0IGZpbGUgcHJvdmlkZXMgYSBjbGVhciBwb2ludGVyIHRvIHdoZXJlIGl0J3MgaGFwcGVuaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIG1vZHVsZSdzIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzNTgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjQ1LjMyMDYwMjQ2MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEyNjUwMTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6NDUuMzgxODc1MjJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzNjY3NTU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgU0RJTyBEcml2ZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBTRElPIGRyaXZlciByZWdpc3RyYXRpb24uIE15IGZpcnN0IGluc3RpbmN0LCBhbmQgdGhlIHBsYWNlIEkgYWx3YXlzIHN0YXJ0LCBpcyB0aGUgY29yZSBvZiB0aGUgZHJpdmVyOiBgc2Rpby5jYC4gVGhhdCBmaWxlIGlzIHRoZSBjZW50cmFsIGh1YiBmb3IgdGhlIFNESU8gc3Vic3lzdGVtLiBUaGUgZ29hbCBpcyB0byBxdWlja2x5IGxvY2F0ZSB0aGUgYHNkaW9fcmVnaXN0ZXJfZHJpdmVyYCBmdW5jdGlvbiwgYXMgdGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgZHJpdmVyJ3MgaW50ZXJmYWNlIHRvIHRoZSBjb3JlIGZyYW1ld29yayBsaWVzLiBLbm93aW5nIHRoaXMgZnVuY3Rpb24gd2lsbCB0ZWxsIG1lIGhvdyB0aGUgZGV2aWNlIGRyaXZlciBpcyBnb2luZyB0byBpbnRlcmFjdCB3aXRoIHRoZSBTRElPIHN1YnN5c3RlbSBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGUgZHJpdmVyIGlzIGJlaW5nIGJvdW5kIHRvIHRoZSBTRElPIGhvc3QgY29udHJvbGxlciBhbmQgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkIGluIHRoYXQgcHJvY2Vzcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGZpdHMgaW50byB0aGUgbGFyZ2VyIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU4NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjQ5LjQxODU1NTI0N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkyNzk4MjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNkaW9fcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6NDkuNDg3ODQ2NzI2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTQzMDQ4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipVbnBhY2tpbmcgRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cbkhtbSwgaG9sZCBvbiBhIHNlY29uZC4gVGhpcyB3aG9sZSBwcm9jZXNzIGhpbmdlcyBvbiBob3cgdGhlIGRyaXZlciBpdHNlbGYgaXMgcmVnaXN0ZXJlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBmdW5kYW1lbnRhbCBtZWNoYW5pc20gZmlyc3QuIElzIGl0IGEgc3RhdGljIHJlZ2lzdHJhdGlvbiB3aXRoaW4gdGhlIE9TIGtlcm5lbD8gT3IgaXMgdGhlcmUgc29tZSBkeW5hbWljIGRpc2NvdmVyeSBtZWNoYW5pc20gYXQgcGxheT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIGFwcHJvYWNoPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSB0YWJsZSBsb29rdXAsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggd2l0aCBkZXZpY2UgSURzIGFuZCBkcml2ZXIgcHJvYmluZz8gVGhpcyBcInJlZ2lzdHJhdGlvblwiIHN0ZXAgaXMgdGhlIGxpbmNocGluLiBJZiBJIGNhbid0IHBpbiB0aGF0IGRvd24sIEknbSBnb2luZyB0byBoYXZlIGEgaGFyZCB0aW1lIHVuZGVyc3RhbmRpbmcgdGhlIHdob2xlIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRoZSBzcGVjaWZpY3Mgb2YgdGhhdCByZWdpc3RyYXRpb24hIFRoZSBkZXZpbCwgYXMgYWx3YXlzLCBpcyBpbiB0aGUgZGV0YWlscywgc28gaG93IGFyZSB0aGUgZHJpdmVycyBiZWluZyBpZGVudGlmaWVkP1xuXG5cbiIsIklucHV0VG9rZW5zIjo5ODM2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNTo1Mi45NDIxNTQ2MDJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTg2OTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfc2Rpb19kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYz0yMjk0PXN0YXRpYyBzdHJ1Y3Qgbnhwd2lmaV9pZl9vcHMgc2Rpb19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtMjMyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM6MjMyMjptb2R1bGVfc2Rpb19kcml2ZXIobnhwd2lmaV9zZGlvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtMjMyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6NTMuMDQ0MDMwNTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxODg0MjAwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNESU8gRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbW9kdWxlX3NkaW9fZHJpdmVyKG54cHdpZmlfc2RpbylgLiBSaWdodCwgdGhhdCdzIGFuIFNESU8gZHJpdmVyIOKAkyBzcGVjaWZpY2FsbHksIGl0J3MgZGVzaWduZWQgZm9yIHRoZSBOWFAgSVc2MXggaGFyZHdhcmUuIFRoZSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IGluIGEgc3l6a2FsbGVyL1FFTVUgZW52aXJvbm1lbnQsIHdlJ3JlIG5vdCBlbXVsYXRpbmcgU0RJTy4gVGhpcyBtZWFucywgcHJhY3RpY2FsbHksIHRoYXQgdGhlIGRyaXZlcidzIGBwcm9iZWAgZnVuY3Rpb24sIHRoYXQgY3J1Y2lhbCBlbnRyeSBwb2ludCBmb3IgZGV2aWNlIGluaXRpYWxpemF0aW9uLCB3aWxsICpuZXZlciogYmUgY2FsbGVkLiBUaGlzIGRpcmVjdGx5IGltcGxpZXMgdGhhdCBub25lIG9mIHRoZSBjb2RlIHdpdGhpbiBgbnhwd2lmaWAsIHdoaWNoIHJlbGllcyBvbiB0aGF0IHByb2JlLCBpcyByZWFjaGFibGUgaW4gb3VyIHZpcnR1YWxpemVkIHNldHVwLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2gsIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIOKAkyBJIG5lZWQgdG8gcnVsZSBvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIGFsdGVybmF0ZSBpbnRlcmZhY2VzLCBzdWNoIGFzIFVTQiBvciBQQ0ksIHRoYXQgbWlnaHQgcHJvdmlkZSBhIGJhY2tkb29yIGludG8gdGhlIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTgzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjU3Ljg2Mjg3NDkzNFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIxMzY5MzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV91c2JfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6NTcuOTU1MDE5OTgzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNzg4OTY4NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MTA1NDMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE2OjMxLjc0Mzk5MTUwNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkxNTQyOTgzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE2OjMyLjEzNTU0MjYxN1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDYyNjE4Mjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlNESU8gRHJpdmVyIEFuYWx5c2lzKipcblxuT2theSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IGFuIFNESU8tc3BlY2lmaWMgc2l0dWF0aW9uLiBTaW5jZSB0aGlzIHBhdGNoIHRhcmdldHMgY29kZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBTRElPIGhhcmR3YXJlLCB0aGVyZSdzIG5vIHdheSB0byBmdXp6IGl0IHdpdGhpbiBRRU1VLiBUaGF0J3MgYSBkZWFsYnJlYWtlciwgY29uc2lkZXJpbmcgdGhlIHByb2plY3QgY29uc3RyYWludHMuXG5cbkxldCBtZSBxdWlja2x5IHJlLWV2YWx1YXRlIHRoZSBwcm9tcHQ6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHRoYXQncyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJdCBhbHNvIG1lbnRpb25lZCB2ZW5kb3Itc3BlY2lmaWMgUENJZSwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSByZWFsIGhhcmR3YXJlLlwiXG5cbkJpbmdvISBUaGlzIHZlbmRvci1zcGVjaWZpYyBTRElPIGRyaXZlciBmb3IgTlhQIFdpRmkgYWxpZ25zIHBlcmZlY3RseSB3aXRoIHRob3NlIGNyaXRlcmlhLiBUaGUgU0RJTyBoYXJkd2FyZSBkZXBlbmRlbmN5IG1ha2VzIGl0IHVudmlhYmxlIGZvciBRRU1VLWJhc2VkIGZ1enppbmcuIE15IHJlc3BvbnNlIHdpbGwgYmUgV29ydGhGdXp6aW5nPWZhbHNlLCB3aXRoIHRoZSBjbGVhciBleHBsYW5hdGlvbiB0aGF0IGl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgU0RJTyBkcml2ZXIgdGhhdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZSwgd2hpY2ggUUVNVSBkb2Vzbid0IGVtdWxhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTk2LCJPdXRwdXRUb2tlbnMiOjEwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNjozOC41OTgxNjQ2MjZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjEwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnhwd2lmaSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNESU8gZHJpdmVyIGZvciBOWFAgV2lGaSBjaGlwcyAoZS5nLiwgSVc2MXgpLiBTaW5jZSBTRElPIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3N5emthbGxlciBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUsIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnhwd2lmaSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNESU8gZHJpdmVyIGZvciBOWFAgV2lGaSBjaGlwcyAoZS5nLiwgSVc2MXgpLiBTaW5jZSBTRElPIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3N5emthbGxlciBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUsIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbn56t[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 19:12:53 +0000 UTC FinishedAt: 2026-08-03 19:16:40 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBueHB3aWZpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU0RJTyBkcml2ZXIgZm9yIE5YUCBXaUZpIGNoaXBzIChlLmcuLCBJVzYxeCkuIFNpbmNlIFNESU8gaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyIGVudmlyb25tZW50cywgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUsIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTU2YjhiMjRjNGYyNjNlNTEyNGRlNmM1OTg2ODdiMjc4Mjk5NjU5ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMTk6MTU6MTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jXG5pbmRleCBjYzQ3YzQzNWViNzBhLi45NjU0MDkxNGYzY2Y2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmNcbkBAIC00MTMsNyAmIzQzOzQxMywxMCBAQCBib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG4gXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwO1xuIFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXA7XG4gXG4tXHRpZiAoYnNzX2Rlc2MgXHUwMDI2XHUwMDI2ICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSkge1xuJiM0MztcdGlmICghYnNzX2Rlc2MpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGlmICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSB7XG4gXHRcdG54cHdpZmlfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuIFx0XHRcdCAgICBcJiMzNDtBUCBkb24mIzM5O3Qgc3VwcG9ydCB0d3QgZmVhdHVyZVxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXG5pbmRleCBlNDZjNTA1M2Q1MDkwLi4zYWQxYWY3Y2ExNTc3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXG5AQCAtNDUxLDcgJiM0Mzs0NTEsNyBAQCB2b2lkXG4gbnhwd2lmaV8xMW5fZGVsZXRlX3R4X2JhX3N0cmVhbV90YmxfZW50cnkoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbiBcdFx0XHRcdFx0ICBzdHJ1Y3Qgbnhwd2lmaV90eF9iYV9zdHJlYW1fdGJsICp0YmwpXG4ge1xuLVx0aWYgKCF0YmwgXHUwMDI2XHUwMDI2IG54cHdpZmlfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChwcml2LCB0YmwpKVxuJiM0MztcdGlmICghdGJsIHx8IG54cHdpZmlfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChwcml2LCB0YmwpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRueHB3aWZpX2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIElORk8sXG5AQCAtNjk0LDcgJiM0Mzs2OTQsNyBAQCBpbnQgbnhwd2lmaV9nZXRfdHhfYmFfc3RyZWFtX3RibChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIC8qIERlbGV0ZSBUeCBCQSBzdHJlYW0gZW50cnkgYnkgUkEuICovXG4gdm9pZCBueHB3aWZpX2RlbF90eF9iYV9zdHJlYW1fdGJsX2J5X3JhKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHU4ICpyYSlcbiB7XG4tXHRzdHJ1Y3Qgbnhwd2lmaV90eF9iYV9zdHJlYW1fdGJsICp0Ymw7XG4mIzQzO1x0c3RydWN0IG54cHdpZmlfdHhfYmFfc3RyZWFtX3RibCAqdGJsLCAqdG1wO1xuIFx0aW50IGk7XG4gXG4gXHRpZiAoIXJhKVxuQEAgLTcwMiw3ICYjNDM7NzAyLDcgQEAgdm9pZCBueHB3aWZpX2RlbF90eF9iYV9zdHJlYW1fdGJsX2J5X3JhKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHU4ICpyYSlcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9OVU1fVElEOyBpJiM0MzsmIzQzOykge1xuIFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eF9iYV9zdHJlYW1fdGJsX2xvY2tbaV0pO1xuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YmwsIFx1MDAyNnByaXYtXHUwMDNldHhfYmFfc3RyZWFtX3RibF9wdHJbaV0sIGxpc3QpXG4mIzQzO1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGJsLCB0bXAsIFx1MDAyNnByaXYtXHUwMDNldHhfYmFfc3RyZWFtX3RibF9wdHJbaV0sIGxpc3QpXG4gXHRcdFx0aWYgKCFtZW1jbXAodGJsLVx1MDAzZXJhLCByYSwgRVRIX0FMRU4pKVxuIFx0XHRcdFx0bnhwd2lmaV8xMW5fZGVsZXRlX3R4X2JhX3N0cmVhbV90YmxfZW50cnkocHJpdiwgdGJsKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuaW5kZXggYzgyMGYwOGQyODM1NS4uZmEzZGNlMjg1MjAzYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcbkBAIC03MTcsNiAmIzQzOzcxNyw3IEBAIG54cHdpZmlfaW5pdF9uZXdfcHJpdl9wYXJhbXMoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbiBcdFx0XHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSlcbiB7XG4gXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRueHB3aWZpX2luaXRfcHJpdihwcml2KTtcbiBcbkBAIC03NDAsNyAmIzQzOzc0MSwxNCBAQCBueHB3aWZpX2luaXRfbmV3X3ByaXZfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdH1cbiBcbi1cdHByaXYtXHUwMDNlYnNzX251bSA9IG54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKGFkYXB0ZXIsIHByaXYtXHUwMDNlYnNzX3R5cGUpO1xuJiM0MztcdHJldCA9IG54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKGFkYXB0ZXIsIHByaXYtXHUwMDNlYnNzX3R5cGUsIFx1MDAyNnByaXYtXHUwMDNlYnNzX251bSk7XG4mIzQzO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuJiM0MztcdFx0XHQgICAgXCYjMzQ7JXM6IG5vIHVudXNlZCBic3NfbnVtIGZvciB0eXBlICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgZGV2LVx1MDAzZW5hbWUsIHByaXYtXHUwMDNlYnNzX3R5cGUpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4gXG4gXHRmbHVzaF93b3JrcXVldWUoYWRhcHRlci1cdTAwM2V3b3JrcXVldWUpO1xuIFx0YXRvbWljX3NldChcdTAwMjZhZGFwdGVyLVx1MDAzZWlmYWNlX2NoYW5naW5nLCAwKTtcbkBAIC05NDMsNyAmIzQzOzk1MSw2IEBAIG54cHdpZmlfY2ZnODAyMTFfY2hhbmdlX3ZpcnR1YWxfaW50ZihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XG4gXHRcdFx0cmV0dXJuIG54cHdpZmlfY2hhbmdlX3ZpZl90b19zdGEoZGV2LCBjdXJyX2lmdHlwZSxcbiBcdFx0XHRcdFx0XHRcdCB0eXBlLCBwYXJhbXMpO1xuLVx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdGdvdG8gZXJybm90c3VwcDtcbiBcdFx0fVxuQEAgLTk1Miw4ICYjNDM7OTU5LDYgQEAgbnhwd2lmaV9jZmc4MDIxMV9jaGFuZ2VfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdGdvdG8gZXJybm90c3VwcDtcbiBcdH1cbiBcbi1cdHJldHVybiAwO1xuLVxuIGVycm5vdHN1cHA6XG4gXHRueHB3aWZpX2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxuIFx0XHQgICAgXCYjMzQ7dW5zdXBwb3J0ZWQgaW50ZXJmYWNlIHR5cGUgdHJhbnNpdGlvbjogJWQgdG8gJWRcXG5cJiMzNDssXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jXG5pbmRleCA0ZTAxZjQ1ZjNhMDBmLi5iNGM2MzgyOTAyNGEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmNcbkBAIC0yMDQsNyAmIzQzOzIwNCw3IEBAIHN0YXRpYyBib29sIG54cHdpZmlfZHJhaW5fdHgoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcilcbiBcdFx0XHRcdFx0ICBOWFBXSUZJX0FTWU5DX0NNRCk7XG4gXHRcdFx0YWRhcHRlci1cdTAwM2Voc19hY3RpdmF0ZWRfbWFudWFsbHkgPSBmYWxzZTtcbiBcdFx0fVxuLVx0XHRcdG54cHdpZmlfcHJvY2Vzc19ieXBhc3NfdHgoYWRhcHRlcik7XG4mIzQzO1x0XHRueHB3aWZpX3Byb2Nlc3NfYnlwYXNzX3R4KGFkYXB0ZXIpO1xuIFx0XHRpZiAoYWRhcHRlci1cdTAwM2Voc19hY3RpdmF0ZWQpIHtcbiBcdFx0XHRjbGVhcl9iaXQoTlhQV0lGSV9JU19IU19DT05GSUdVUkVELFxuIFx0XHRcdFx0ICBcdTAwMjZhZGFwdGVyLVx1MDAzZXdvcmtfZmxhZ3MpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaFxuaW5kZXggMzQ5ZGZhNGQzZjg1OC4uYjI1YTZhNGYyOTM2NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oXG5AQCAtMTE2Niw4ICYjNDM7MTE2Niw5IEBAIG54cHdpZmlfZ2V0X3ByaXYoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcbiB9XG4gXG4gLyogZmluZCB1bnVzZWQgQlNTIG51bWJlciBmb3IgbmV3IGludGVyZmFjZSAqL1xuLXN0YXRpYyBpbmxpbmUgdThcbi1ueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLCB1OCBic3NfdHlwZSlcbiYjNDM7c3RhdGljIGlubGluZSBpbnRcbiYjNDM7bnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciwgdTggYnNzX3R5cGUsXG4mIzQzO1x0XHRcdCAgIHU4ICpic3NfbnVtKVxuIHtcbiBcdHU4IGksIGo7XG4gXHRpbnQgaW5kZXhbTlhQV0lGSV9NQVhfQlNTX05VTV07XG5AQCAtMTE3OSw5ICYjNDM7MTE4MCwxNCBAQCBueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLCB1OCBic3NfdHlwZSlcbiBcdFx0ICAgICAgTkw4MDIxMV9JRlRZUEVfVU5TUEVDSUZJRUQpKSB7XG4gXHRcdFx0aW5kZXhbYWRhcHRlci1cdTAwM2Vwcml2W2ldLVx1MDAzZWJzc19udW1dID0gMTtcbiBcdFx0fVxuLVx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTlhQV0lGSV9NQVhfQlNTX05VTTsgaiYjNDM7JiM0MzspXG4tXHRcdGlmICghaW5kZXhbal0pXG4tXHRcdFx0cmV0dXJuIGo7XG4mIzQzO1xuJiM0MztcdGZvciAoaiA9IDA7IGogXHUwMDNjIE5YUFdJRklfTUFYX0JTU19OVU07IGomIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRpZiAoIWluZGV4W2pdKSB7XG4mIzQzO1x0XHRcdCpic3NfbnVtID0gajtcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiAtRU5PRU5UO1xuIH1cbiBcbkBAIC0xMTk1LDggJiM0MzsxMjAxLDkgQEAgbnhwd2lmaV9nZXRfdW51c2VkX3ByaXZfYnlfYnNzX3R5cGUoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlcHJpdl9udW07IGkmIzQzOyYjNDM7KVxuIFx0XHRpZiAoYWRhcHRlci1cdTAwM2Vwcml2W2ldLVx1MDAzZWJzc19tb2RlID09XG4gXHRcdCAgIE5MODAyMTFfSUZUWVBFX1VOU1BFQ0lGSUVEKSB7XG4tXHRcdFx0YWRhcHRlci1cdTAwM2Vwcml2W2ldLVx1MDAzZWJzc19udW0gPVxuLVx0XHRcdFx0bnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgYnNzX3R5cGUpO1xuJiM0MztcdFx0XHRpZiAobnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgYnNzX3R5cGUsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZhZGFwdGVyLVx1MDAzZXByaXZbaV0tXHUwMDNlYnNzX251bSkpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIE5VTEw7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcbmluZGV4IGQ4NTM2MzU0ZjA5M2EuLjhlZjBmNmViNDllMjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1xuQEAgLTEzNDcsNyAmIzQzOzEzNDcsOCBAQCBzdGF0aWMgaW50IG54cHdpZmlfcHJvY2Vzc19pbnRfc3RhdHVzKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHNkaW9faVxuIFx0XHRcdCAgICAgKChyeF9ibG9ja3MgKiBOWFBXSUZJX1NESU9fQkxPQ0tfU0laRSkgXHUwMDNlXG4gXHRcdFx0ICAgICAgY2FyZC1cdTAwM2VtcGFfcnguYnVmX3NpemUpKSkge1xuIFx0XHRcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsIFwmIzM0O2ludmFsaWQgcnhfbGVuPSVkXFxuXCYjMzQ7LCByeF9sZW4pO1xuLVx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHRnb3RvIHRlcm1fY21kO1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRyeF9sZW4gPSAodTE2KShyeF9ibG9ja3MgKiBOWFBXSUZJX1NESU9fQkxPQ0tfU0laRSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF90eHJ4LmNcbmluZGV4IGYzZDI0YmY4NjFjYTkuLjg0MGRkZGZjNGY1YWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jXG5AQCAtMjQ2LDggJiM0MzsyNDYsOCBAQCBpbnQgbnhwd2lmaV9oYW5kbGVfdWFwX3J4X2ZvcndhcmQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcbiBcdFx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gY29weSBza2IgZm9yIHVBUFxcblwmIzM0Oyk7XG4tXHRcdFx0XHQgICAgcHJpdi1cdTAwM2VzdGF0cy5yeF9kcm9wcGVkJiM0MzsmIzQzOztcbi1cdFx0XHRcdCAgICBkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuJiM0MztcdFx0XHRwcml2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuJiM0MztcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuIFx0XHRcdHJldHVybiAtRU5PTUVNO1xuIFx0XHR9XG4gXHR9IGVsc2Uge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3V0aWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3V0aWwuY1xuaW5kZXggMjllZjAzMWY4ZWM5Yi4uZGQ4MjE4NjQxMTk1NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3V0aWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jXG5AQCAtNzk5LDM0ICYjNDM7Nzk5LDMyIEBAIGludCBueHB3aWZpX3JlY3ZfcGFja2V0X3RvX21vbmlmKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG4gXHRcdF9fbGUxNiBhY2NfbGU7XG4gXHRcdHU4IGZsYWdzID0gMDtcbiBcbi1cdFx0aWYgKGV4dC50aW1lc3RhbXAucG9zaXRpb24gXHUwMDNjPSAxNSkge1xuLVx0XHRcdGhkci1cdTAwM2VpdF9wcmVzZW50IHw9IGNwdV90b19sZTMyKEJJVChJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QKSk7XG4tXHRcdFx0b2ZmID0gQUxJR04ob2ZmLCA4KTtcbi1cbi1cdFx0XHRpZiAoZXh0LnRpbWVzdGFtcC5mbGFncyBcdTAwMjYgMHgwMSkge1xuLVx0XHRcdFx0ZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHXzMyQklUO1xuLVx0XHRcdFx0dHMgPSAodTMyKWV4dC50aW1lc3RhbXAuZGV2aWNlX3RpbWVzdGFtcDtcbi1cdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0ZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHXzY0QklUO1xuLVx0XHRcdFx0dHMgPSBleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7XG4tXHRcdFx0fVxuJiM0MztcdFx0aGRyLVx1MDAzZWl0X3ByZXNlbnQgfD0gY3B1X3RvX2xlMzIoQklUKElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVApKTtcbiYjNDM7XHRcdG9mZiA9IEFMSUdOKG9mZiwgOCk7XG4gXG4tXHRcdFx0dHNfbGUgPSBjcHVfdG9fbGU2NCh0cyk7XG4tXHRcdFx0bWVtY3B5KHJ0aGRyICYjNDM7IG9mZiwgXHUwMDI2dHNfbGUsIHNpemVvZih0c19sZSkpO1xuLVx0XHRcdG9mZiAmIzQzOz0gc2l6ZW9mKHRzX2xlKTtcbiYjNDM7XHRcdGlmIChleHQudGltZXN0YW1wLmZsYWdzIFx1MDAyNiAweDAxKSB7XG4mIzQzO1x0XHRcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR18zMkJJVDtcbiYjNDM7XHRcdFx0dHMgPSAodTMyKWV4dC50aW1lc3RhbXAuZGV2aWNlX3RpbWVzdGFtcDtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR182NEJJVDtcbiYjNDM7XHRcdFx0dHMgPSBleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7XG4mIzQzO1x0XHR9XG4gXG4tXHRcdFx0aWYgKGV4dC50aW1lc3RhbXAuZmxhZ3MgXHUwMDI2IDB4MDIpIHtcbi1cdFx0XHRcdGFjY3VyYWN5ID0gZXh0LnRpbWVzdGFtcC5hY2N1cmFjeTtcbi1cdFx0XHRcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR19BQ0NVUkFDWTtcbi1cdFx0XHR9XG4mIzQzO1x0XHR0c19sZSA9IGNwdV90b19sZTY0KHRzKTtcbiYjNDM7XHRcdG1lbWNweShydGhkciAmIzQzOyBvZmYsIFx1MDAyNnRzX2xlLCBzaXplb2YodHNfbGUpKTtcbiYjNDM7XHRcdG9mZiAmIzQzOz0gc2l6ZW9mKHRzX2xlKTtcbiBcbi1cdFx0XHRhY2NfbGUgPSBjcHVfdG9fbGUxNihhY2N1cmFjeSk7XG4tXHRcdFx0bWVtY3B5KHJ0aGRyICYjNDM7IG9mZiwgXHUwMDI2YWNjX2xlLCBzaXplb2YoYWNjX2xlKSk7XG4tXHRcdFx0b2ZmICYjNDM7PSBzaXplb2YoYWNjX2xlKTtcbi1cdFx0XHRydGhkcltvZmYmIzQzOyYjNDM7XSA9IChleHQudGltZXN0YW1wLnVuaXQgXHUwMDI2IDB4MGYpIHxcbi1cdFx0XHRcdFx0KChleHQudGltZXN0YW1wLnBvc2l0aW9uIFx1MDAyNiAweDBmKSBcdTAwM2NcdTAwM2MgNCk7XG4tXHRcdFx0cnRoZHJbb2ZmJiM0MzsmIzQzO10gPSBmbGFncztcbiYjNDM7XHRcdGlmIChleHQudGltZXN0YW1wLmZsYWdzIFx1MDAyNiAweDAyKSB7XG4mIzQzO1x0XHRcdGFjY3VyYWN5ID0gZXh0LnRpbWVzdGFtcC5hY2N1cmFjeTtcbiYjNDM7XHRcdFx0ZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHX0FDQ1VSQUNZO1xuIFx0XHR9XG4mIzQzO1xuJiM0MztcdFx0YWNjX2xlID0gY3B1X3RvX2xlMTYoYWNjdXJhY3kpO1xuJiM0MztcdFx0bWVtY3B5KHJ0aGRyICYjNDM7IG9mZiwgXHUwMDI2YWNjX2xlLCBzaXplb2YoYWNjX2xlKSk7XG4mIzQzO1x0XHRvZmYgJiM0Mzs9IHNpemVvZihhY2NfbGUpO1xuJiM0MztcdFx0cnRoZHJbb2ZmJiM0MzsmIzQzO10gPSAoZXh0LnRpbWVzdGFtcC51bml0IFx1MDAyNiAweDBmKSB8XG4mIzQzO1x0XHRcdFx0KChleHQudGltZXN0YW1wLnBvc2l0aW9uIFx1MDAyNiAweDBmKSBcdTAwM2NcdTAwM2MgNCk7XG4mIzQzO1x0XHRydGhkcltvZmYmIzQzOyYjNDM7XSA9IGZsYWdzO1xuIFx0fVxuIFxuIFx0aWYgKGZvcm1hdCA9PSBOWFBXSUZJX1JBVEVfRk9STUFUX0hFIFx1MDAyNlx1MDAyNiBoYXNfZXh0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBueHB3aWZpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU0RJTyBkcml2ZXIgZm9yIE5YUCBXaUZpIGNoaXBzIChlLmcuLCBJVzYxeCkuIFNpbmNlIFNESU8gaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyIGVudmlyb25tZW50cywgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUsIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTU2YjhiMjRjNGYyNjNlNTEyNGRlNmM1OTg2ODdiMjc4Mjk5NjU5ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMTk6MTU6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMKaW5kZXggY2M0N2M0MzVlYjcwYS4uOTY1NDA5MTRmM2NmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYwpAQCAtNDEzLDcgJiM0Mzs0MTMsMTAgQEAgYm9vbCBueHB3aWZpX2lzXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LAogCXN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXA7CiAJc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXA7CiAKLQlpZiAoYnNzX2Rlc2MgJmFtcDsmYW1wOyAoIW54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKGJzc19kZXNjKSkpIHsKJiM0MzsJaWYgKCFic3NfZGVzYykKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaWYgKCFueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChic3NfZGVzYykpIHsKIAkJbnhwd2lmaV9kYmcocHJpdi0mZ3Q7YWRhcHRlciwgTVNHLAogCQkJICAgICYjMzQ7QVAgZG9uJiMzOTt0IHN1cHBvcnQgdHd0IGZlYXR1cmVcbiYjMzQ7KTsKIAkJcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYwppbmRleCBlNDZjNTA1M2Q1MDkwLi4zYWQxYWY3Y2ExNTc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYwpAQCAtNDUxLDcgJiM0Mzs0NTEsNyBAQCB2b2lkCiBueHB3aWZpXzExbl9kZWxldGVfdHhfYmFfc3RyZWFtX3RibF9lbnRyeShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LAogCQkJCQkgIHN0cnVjdCBueHB3aWZpX3R4X2JhX3N0cmVhbV90YmwgKnRibCkKIHsKLQlpZiAoIXRibCAmYW1wOyZhbXA7IG54cHdpZmlfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChwcml2LCB0YmwpKQomIzQzOwlpZiAoIXRibCB8fCBueHB3aWZpX2lzX3R4X2JhX3N0cmVhbV9wdHJfdmFsaWQocHJpdiwgdGJsKSkKIAkJcmV0dXJuOwogCiAJbnhwd2lmaV9kYmcocHJpdi0mZ3Q7YWRhcHRlciwgSU5GTywKQEAgLTY5NCw3ICYjNDM7Njk0LDcgQEAgaW50IG54cHdpZmlfZ2V0X3R4X2JhX3N0cmVhbV90Ymwoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiwKIC8qIERlbGV0ZSBUeCBCQSBzdHJlYW0gZW50cnkgYnkgUkEuICovCiB2b2lkIG54cHdpZmlfZGVsX3R4X2JhX3N0cmVhbV90YmxfYnlfcmEoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiwgdTggKnJhKQogewotCXN0cnVjdCBueHB3aWZpX3R4X2JhX3N0cmVhbV90YmwgKnRibDsKJiM0MzsJc3RydWN0IG54cHdpZmlfdHhfYmFfc3RyZWFtX3RibCAqdGJsLCAqdG1wOwogCWludCBpOwogCiAJaWYgKCFyYSkKQEAgLTcwMiw3ICYjNDM7NzAyLDcgQEAgdm9pZCBueHB3aWZpX2RlbF90eF9iYV9zdHJlYW1fdGJsX2J5X3JhKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHU4ICpyYSkKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBNQVhfTlVNX1RJRDsgaSYjNDM7JiM0MzspIHsKIAkJc3Bpbl9sb2NrX2JoKCZhbXA7cHJpdi0mZ3Q7dHhfYmFfc3RyZWFtX3RibF9sb2NrW2ldKTsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGJsLCAmYW1wO3ByaXYtJmd0O3R4X2JhX3N0cmVhbV90YmxfcHRyW2ldLCBsaXN0KQomIzQzOwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHRibCwgdG1wLCAmYW1wO3ByaXYtJmd0O3R4X2JhX3N0cmVhbV90YmxfcHRyW2ldLCBsaXN0KQogCQkJaWYgKCFtZW1jbXAodGJsLSZndDtyYSwgcmEsIEVUSF9BTEVOKSkKIAkJCQlueHB3aWZpXzExbl9kZWxldGVfdHhfYmFfc3RyZWFtX3RibF9lbnRyeShwcml2LCB0YmwpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYwppbmRleCBjODIwZjA4ZDI4MzU1Li5mYTNkY2UyODUyMDNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMKQEAgLTcxNyw2ICYjNDM7NzE3LDcgQEAgbnhwd2lmaV9pbml0X25ld19wcml2X3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LAogCQkJICAgICBlbnVtIG5sODAyMTFfaWZ0eXBlIHR5cGUpCiB7CiAJc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtJmd0O2FkYXB0ZXI7CiYjNDM7CWludCByZXQ7CiAKIAlueHB3aWZpX2luaXRfcHJpdihwcml2KTsKIApAQCAtNzQwLDcgJiM0Mzs3NDEsMTQgQEAgbnhwd2lmaV9pbml0X25ld19wcml2X3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LAogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJfQogCi0JcHJpdi0mZ3Q7YnNzX251bSA9IG54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKGFkYXB0ZXIsIHByaXYtJmd0O2Jzc190eXBlKTsKJiM0MzsJcmV0ID0gbnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgcHJpdi0mZ3Q7YnNzX3R5cGUsICZhbXA7cHJpdi0mZ3Q7YnNzX251bSk7CiYjNDM7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCW54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLAomIzQzOwkJCSAgICAmIzM0OyVzOiBubyB1bnVzZWQgYnNzX251bSBmb3IgdHlwZSAlZFxuJiMzNDssCiYjNDM7CQkJICAgIGRldi0mZ3Q7bmFtZSwgcHJpdi0mZ3Q7YnNzX3R5cGUpOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQogCiAJZmx1c2hfd29ya3F1ZXVlKGFkYXB0ZXItJmd0O3dvcmtxdWV1ZSk7CiAJYXRvbWljX3NldCgmYW1wO2FkYXB0ZXItJmd0O2lmYWNlX2NoYW5naW5nLCAwKTsKQEAgLTk0Myw3ICYjNDM7OTUxLDYgQEAgbnhwd2lmaV9jZmc4MDIxMV9jaGFuZ2VfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCWNhc2UgTkw4MDIxMV9JRlRZUEVfU1RBVElPTjoKIAkJCXJldHVybiBueHB3aWZpX2NoYW5nZV92aWZfdG9fc3RhKGRldiwgY3Vycl9pZnR5cGUsCiAJCQkJCQkJIHR5cGUsIHBhcmFtcyk7Ci0JCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWdvdG8gZXJybm90c3VwcDsKIAkJfQpAQCAtOTUyLDggJiM0Mzs5NTksNiBAQCBueHB3aWZpX2NmZzgwMjExX2NoYW5nZV92aXJ0dWFsX2ludGYoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJZ290byBlcnJub3RzdXBwOwogCX0KIAotCXJldHVybiAwOwotCiBlcnJub3RzdXBwOgogCW54cHdpZmlfZGJnKHByaXYtJmd0O2FkYXB0ZXIsIEVSUk9SLAogCQkgICAgJiMzNDt1bnN1cHBvcnRlZCBpbnRlcmZhY2UgdHlwZSB0cmFuc2l0aW9uOiAlZCB0byAlZFxuJiMzNDssCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMKaW5kZXggNGUwMWY0NWYzYTAwZi4uYjRjNjM4MjkwMjRhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYwpAQCAtMjA0LDcgJiM0MzsyMDQsNyBAQCBzdGF0aWMgYm9vbCBueHB3aWZpX2RyYWluX3R4KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpCiAJCQkJCSAgTlhQV0lGSV9BU1lOQ19DTUQpOwogCQkJYWRhcHRlci0mZ3Q7aHNfYWN0aXZhdGVkX21hbnVhbGx5ID0gZmFsc2U7CiAJCX0KLQkJCW54cHdpZmlfcHJvY2Vzc19ieXBhc3NfdHgoYWRhcHRlcik7CiYjNDM7CQlueHB3aWZpX3Byb2Nlc3NfYnlwYXNzX3R4KGFkYXB0ZXIpOwogCQlpZiAoYWRhcHRlci0mZ3Q7aHNfYWN0aXZhdGVkKSB7CiAJCQljbGVhcl9iaXQoTlhQV0lGSV9JU19IU19DT05GSUdVUkVELAogCQkJCSAgJmFtcDthZGFwdGVyLSZndDt3b3JrX2ZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaAppbmRleCAzNDlkZmE0ZDNmODU4Li5iMjVhNmE0ZjI5MzY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oCkBAIC0xMTY2LDggJiM0MzsxMTY2LDkgQEAgbnhwd2lmaV9nZXRfcHJpdihzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLAogfQogCiAvKiBmaW5kIHVudXNlZCBCU1MgbnVtYmVyIGZvciBuZXcgaW50ZXJmYWNlICovCi1zdGF0aWMgaW5saW5lIHU4Ci1ueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLCB1OCBic3NfdHlwZSkKJiM0MztzdGF0aWMgaW5saW5lIGludAomIzQzO254cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGJzc190eXBlLAomIzQzOwkJCSAgIHU4ICpic3NfbnVtKQogewogCXU4IGksIGo7CiAJaW50IGluZGV4W05YUFdJRklfTUFYX0JTU19OVU1dOwpAQCAtMTE3OSw5ICYjNDM7MTE4MCwxNCBAQCBueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLCB1OCBic3NfdHlwZSkKIAkJICAgICAgTkw4MDIxMV9JRlRZUEVfVU5TUEVDSUZJRUQpKSB7CiAJCQlpbmRleFthZGFwdGVyLSZndDtwcml2W2ldLSZndDtic3NfbnVtXSA9IDE7CiAJCX0KLQlmb3IgKGogPSAwOyBqICZsdDsgTlhQV0lGSV9NQVhfQlNTX05VTTsgaiYjNDM7JiM0MzspCi0JCWlmICghaW5kZXhbal0pCi0JCQlyZXR1cm4gajsKJiM0MzsKJiM0MzsJZm9yIChqID0gMDsgaiAmbHQ7IE5YUFdJRklfTUFYX0JTU19OVU07IGomIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoIWluZGV4W2pdKSB7CiYjNDM7CQkJKmJzc19udW0gPSBqOwomIzQzOwkJCXJldHVybiAwOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIC1FTk9FTlQ7CiB9CiAKQEAgLTExOTUsOCAmIzQzOzEyMDEsOSBAQCBueHB3aWZpX2dldF91bnVzZWRfcHJpdl9ieV9ic3NfdHlwZShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLAogCWZvciAoaSA9IDA7IGkgJmx0OyBhZGFwdGVyLSZndDtwcml2X251bTsgaSYjNDM7JiM0MzspCiAJCWlmIChhZGFwdGVyLSZndDtwcml2W2ldLSZndDtic3NfbW9kZSA9PQogCQkgICBOTDgwMjExX0lGVFlQRV9VTlNQRUNJRklFRCkgewotCQkJYWRhcHRlci0mZ3Q7cHJpdltpXS0mZ3Q7YnNzX251bSA9Ci0JCQkJbnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgYnNzX3R5cGUpOwomIzQzOwkJCWlmIChueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShhZGFwdGVyLCBic3NfdHlwZSwKJiM0MzsJCQkJCQkgICAgICAgJmFtcDthZGFwdGVyLSZndDtwcml2W2ldLSZndDtic3NfbnVtKSkKJiM0MzsJCQkJcmV0dXJuIE5VTEw7CiAJCQlicmVhazsKIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMKaW5kZXggZDg1MzYzNTRmMDkzYS4uOGVmMGY2ZWI0OWUyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYwpAQCAtMTM0Nyw3ICYjNDM7MTM0Nyw4IEBAIHN0YXRpYyBpbnQgbnhwd2lmaV9wcm9jZXNzX2ludF9zdGF0dXMoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciwgdTggc2Rpb19pCiAJCQkgICAgICgocnhfYmxvY2tzICogTlhQV0lGSV9TRElPX0JMT0NLX1NJWkUpICZndDsKIAkJCSAgICAgIGNhcmQtJmd0O21wYV9yeC5idWZfc2l6ZSkpKSB7CiAJCQkJbnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsICYjMzQ7aW52YWxpZCByeF9sZW49JWRcbiYjMzQ7LCByeF9sZW4pOwotCQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJCQlnb3RvIHRlcm1fY21kOwogCQkJfQogCiAJCQlyeF9sZW4gPSAodTE2KShyeF9ibG9ja3MgKiBOWFBXSUZJX1NESU9fQkxPQ0tfU0laRSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX3R4cnguYwppbmRleCBmM2QyNGJmODYxY2E5Li44NDBkZGRmYzRmNWFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF90eHJ4LmMKQEAgLTI0Niw4ICYjNDM7MjQ2LDggQEAgaW50IG54cHdpZmlfaGFuZGxlX3VhcF9yeF9mb3J3YXJkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsCiAJCX0gZWxzZSB7CiAJCQlueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUiwKIAkJCQkgICAgJiMzNDtmYWlsZWQgdG8gY29weSBza2IgZm9yIHVBUFxuJiMzNDspOwotCQkJCSAgICBwcml2LSZndDtzdGF0cy5yeF9kcm9wcGVkJiM0MzsmIzQzOzsKLQkJCQkgICAgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTsKJiM0MzsJCQlwcml2LSZndDtzdGF0cy5yeF9kcm9wcGVkJiM0MzsmIzQzOzsKJiM0MzsJCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCQkJcmV0dXJuIC1FTk9NRU07CiAJCX0KIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jCmluZGV4IDI5ZWYwMzFmOGVjOWIuLmRkODIxODY0MTE5NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3V0aWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91dGlsLmMKQEAgLTc5OSwzNCAmIzQzOzc5OSwzMiBAQCBpbnQgbnhwd2lmaV9yZWN2X3BhY2tldF90b19tb25pZihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LAogCQlfX2xlMTYgYWNjX2xlOwogCQl1OCBmbGFncyA9IDA7CiAKLQkJaWYgKGV4dC50aW1lc3RhbXAucG9zaXRpb24gJmx0Oz0gMTUpIHsKLQkJCWhkci0mZ3Q7aXRfcHJlc2VudCB8PSBjcHVfdG9fbGUzMihCSVQoSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUCkpOwotCQkJb2ZmID0gQUxJR04ob2ZmLCA4KTsKLQotCQkJaWYgKGV4dC50aW1lc3RhbXAuZmxhZ3MgJmFtcDsgMHgwMSkgewotCQkJCWZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR18zMkJJVDsKLQkJCQl0cyA9ICh1MzIpZXh0LnRpbWVzdGFtcC5kZXZpY2VfdGltZXN0YW1wOwotCQkJfSBlbHNlIHsKLQkJCQlmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfNjRCSVQ7Ci0JCQkJdHMgPSBleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7Ci0JCQl9CiYjNDM7CQloZHItJmd0O2l0X3ByZXNlbnQgfD0gY3B1X3RvX2xlMzIoQklUKElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVApKTsKJiM0MzsJCW9mZiA9IEFMSUdOKG9mZiwgOCk7CiAKLQkJCXRzX2xlID0gY3B1X3RvX2xlNjQodHMpOwotCQkJbWVtY3B5KHJ0aGRyICYjNDM7IG9mZiwgJmFtcDt0c19sZSwgc2l6ZW9mKHRzX2xlKSk7Ci0JCQlvZmYgJiM0Mzs9IHNpemVvZih0c19sZSk7CiYjNDM7CQlpZiAoZXh0LnRpbWVzdGFtcC5mbGFncyAmYW1wOyAweDAxKSB7CiYjNDM7CQkJZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHXzMyQklUOwomIzQzOwkJCXRzID0gKHUzMilleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR182NEJJVDsKJiM0MzsJCQl0cyA9IGV4dC50aW1lc3RhbXAuZGV2aWNlX3RpbWVzdGFtcDsKJiM0MzsJCX0KIAotCQkJaWYgKGV4dC50aW1lc3RhbXAuZmxhZ3MgJmFtcDsgMHgwMikgewotCQkJCWFjY3VyYWN5ID0gZXh0LnRpbWVzdGFtcC5hY2N1cmFjeTsKLQkJCQlmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfQUNDVVJBQ1k7Ci0JCQl9CiYjNDM7CQl0c19sZSA9IGNwdV90b19sZTY0KHRzKTsKJiM0MzsJCW1lbWNweShydGhkciAmIzQzOyBvZmYsICZhbXA7dHNfbGUsIHNpemVvZih0c19sZSkpOwomIzQzOwkJb2ZmICYjNDM7PSBzaXplb2YodHNfbGUpOwogCi0JCQlhY2NfbGUgPSBjcHVfdG9fbGUxNihhY2N1cmFjeSk7Ci0JCQltZW1jcHkocnRoZHIgJiM0Mzsgb2ZmLCAmYW1wO2FjY19sZSwgc2l6ZW9mKGFjY19sZSkpOwotCQkJb2ZmICYjNDM7PSBzaXplb2YoYWNjX2xlKTsKLQkJCXJ0aGRyW29mZiYjNDM7JiM0MztdID0gKGV4dC50aW1lc3RhbXAudW5pdCAmYW1wOyAweDBmKSB8Ci0JCQkJCSgoZXh0LnRpbWVzdGFtcC5wb3NpdGlvbiAmYW1wOyAweDBmKSAmbHQ7Jmx0OyA0KTsKLQkJCXJ0aGRyW29mZiYjNDM7JiM0MztdID0gZmxhZ3M7CiYjNDM7CQlpZiAoZXh0LnRpbWVzdGFtcC5mbGFncyAmYW1wOyAweDAyKSB7CiYjNDM7CQkJYWNjdXJhY3kgPSBleHQudGltZXN0YW1wLmFjY3VyYWN5OwomIzQzOwkJCWZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR19BQ0NVUkFDWTsKIAkJfQomIzQzOwomIzQzOwkJYWNjX2xlID0gY3B1X3RvX2xlMTYoYWNjdXJhY3kpOwomIzQzOwkJbWVtY3B5KHJ0aGRyICYjNDM7IG9mZiwgJmFtcDthY2NfbGUsIHNpemVvZihhY2NfbGUpKTsKJiM0MzsJCW9mZiAmIzQzOz0gc2l6ZW9mKGFjY19sZSk7CiYjNDM7CQlydGhkcltvZmYmIzQzOyYjNDM7XSA9IChleHQudGltZXN0YW1wLnVuaXQgJmFtcDsgMHgwZikgfAomIzQzOwkJCQkoKGV4dC50aW1lc3RhbXAucG9zaXRpb24gJmFtcDsgMHgwZikgJmx0OyZsdDsgNCk7CiYjNDM7CQlydGhkcltvZmYmIzQzOyYjNDM7XSA9IGZsYWdzOwogCX0KIAogCWlmIChmb3JtYXQgPT0gTlhQV0lGSV9SQVRFX0ZPUk1BVF9IRSAmYW1wOyZhbXA7IGhhc19leHQpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg3NQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBhIE5vdmVsIFdpcmVsZXNzIERyaXZlciBQYXRjaCBTZXJpZXMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyB0b3VjaGluZyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2AgZGlyZWN0b3J5LiBSaWdodCBvZmYgdGhlIGJhdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBueHB3aWZpYCBkcml2ZXIgaXMuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgYSBzbGlnaHQgZXllYnJvdyByYWlzZSwgYmVjYXVzZSBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGFueXRoaW5nIGNhbGxlZCBgbnhwd2lmaWAgaW4gdGhlIG1haW5saW5lIGtlcm5lbC4gVGhhdCBuYW1lIGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IHJpbmcgYSBiZWxsLiBUaW1lIHRvIGRvIGEgcXVpY2sgc2VhcmNoIGFuZCBjb25maXJtIGl0cyBleGlzdGVuY2UgYW5kIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBudWxsLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O254cHdpZmkmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0LgoKKipUaGUgU2VhcmNoIENvbmZpcm1lZCoqCgpBaCwgdGhlcmUgaXQgaXMhIEkgaGFkIGEgaHVuY2gsIGFuZCB0aGF0IGh1bmNoIHBhaWQgb2ZmLiBUaW1lIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgY29kZS4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgbG9jYXRpb24gZm9yIHRoZSBOWFAgV2ktRmkgZHJpdmVyLCBzbyBsZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyBpbiB0aGVyZS4gSSBiZXQgSSYjMzk7bGwgZmluZCB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IuIFRpbWUgdG8gc3RhcnQgdGhlIGRlZXAgZGl2ZSBpbnRvIHRoZSBzb3VyY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7MTFhYy5jJiMzNDssCiAgICAmIzM0OzExYWMuaCYjMzQ7LAogICAgJiMzNDsxMWF4LmMmIzM0OywKICAgICYjMzQ7MTFheC5oJiMzNDssCiAgICAmIzM0OzExaC5jJiMzNDssCiAgICAmIzM0OzExbi5jJiMzNDssCiAgICAmIzM0OzExbi5oJiMzNDssCiAgICAmIzM0OzExbl9hZ2dyLmMmIzM0OywKICAgICYjMzQ7MTFuX2FnZ3IuaCYjMzQ7LAogICAgJiMzNDsxMW5fcnhyZW9yZGVyLmMmIzM0OywKICAgICYjMzQ7MTFuX3J4cmVvcmRlci5oJiMzNDssCiAgICAmIzM0O2NmZy5oJiMzNDssCiAgICAmIzM0O2NmZzgwMjExLmMmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTEuaCYjMzQ7LAogICAgJiMzNDtjZnAuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZXRodG9vbC5jJiMzNDssCiAgICAmIzM0O2Z3LmgmIzM0OywKICAgICYjMzQ7aWUuYyYjMzQ7LAogICAgJiMzNDtpbml0LmMmIzM0OywKICAgICYjMzQ7am9pbi5jJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttYWluLmgmIzM0OywKICAgICYjMzQ7c2Nhbi5jJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvLmgmIzM0OywKICAgICYjMzQ7c3RhX2NmZy5jJiMzNDssCiAgICAmIzM0O3N0YV9jbWQuYyYjMzQ7LAogICAgJiMzNDtzdGFfZXZlbnQuYyYjMzQ7LAogICAgJiMzNDtzdGFfcnguYyYjMzQ7LAogICAgJiMzNDtzdGFfdHguYyYjMzQ7LAogICAgJiMzNDt0eHJ4LmMmIzM0OywKICAgICYjMzQ7dWFwX2NtZC5jJiMzNDssCiAgICAmIzM0O3VhcF9ldmVudC5jJiMzNDssCiAgICAmIzM0O3VhcF90eHJ4LmMmIzM0OywKICAgICYjMzQ7dXRpbC5jJiMzNDssCiAgICAmIzM0O3V0aWwuaCYjMzQ7LAogICAgJiMzNDt3bW0uYyYjMzQ7LAogICAgJiMzNDt3bW0uaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uCgoqKkFuYWx5emluZyB0aGUgYG54cHdpZmlgIERyaXZlcioqCgpBbHJpZ2h0LCBzbyBgbnhwd2lmaWAuLi4gdGhhdCYjMzk7cyBhIGRyaXZlciwgYW5kIEkgYmVsaWV2ZSBpdCByZXNpZGVzIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkuIE15IGluc3RpbmN0IGlzIHRvIGNvbmZpcm0gaXRzIGNvbmZpZ3VyYXRpb24sIGFzIHlvdSBoYXZlIHRvIGtub3cgd2hhdCYjMzk7cyBlbmFibGVkIHdoZXJlIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBkb2VzLiBMZXQgbWUgZ28gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5YUFdJRkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6Mjpjb25maWcgTlhQV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6MTI6Y29uZmlnIE5YUFdJRklfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O05YUCBXaUZpIERyaXZlciBmb3IgSVc2MXhcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTc2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBOWFBXSUZJYC4gTm8gcHJvYmxlbSwgdGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGluIGFuZCB1bmRlcnN0YW5kIHdoYXQgbGlicmFyaWVzLCBkcml2ZXJzLCBvciBvdGhlciBjb21wb25lbnRzIGBOWFBXSUZJYCByZWxpZXMgb24gdG8gZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gZ28gYmV5b25kIHRoZSBpbW1lZGlhdGUgc3VyZmFjZSBsZXZlbCBhbmQgY29uc2lkZXIgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIOKAkyB3aGF0ICp0aG9zZSogY29tcG9uZW50cyBkZXBlbmQgb24sIGFuZCBzbyBvbi4gVW5kZXJzdGFuZGluZyB0aGUgZW50aXJlIGRlcGVuZGVuY3kgdHJlZSBpcyBjcml0aWNhbCBmb3IgYSBmdWxsIGdyYXNwIG9mIHRoZSBlY29zeXN0ZW0gYW5kIGhvdyBhbnkgY2hhbmdlcyBtaWdodCByaXBwbGUgdGhyb3VnaCB0aGUgc3lzdGVtLiBJJiMzOTtsbCBhcHByb2FjaCB0aGlzIG1ldGhvZGljYWxseSwgcGVyaGFwcyB1c2luZyBkZXBlbmRlbmN5IGFuYWx5c2lzIHRvb2xzIG9yIGJ5IGV4YW1pbmluZyB0aGUgYnVpbGQgcHJvY2VzcywgdG8gZW5zdXJlIEkmIzM5O3ZlIGlkZW50aWZpZWQgZXZlcnl0aGluZyB0aGF0IGBOWFBXSUZJYCBuZWVkcyB0byBvcGVyYXRlIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5YUFdJRklcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O05YUCBXaUZpIERyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXG4gICA3Olx0XHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDEwOlx0XHQgIG54cHdpZmkuXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE5YUFdJRklfU0RJT1xuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyIGZvciBJVzYxeFwmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBOWFBXSUZJIFx1MDAyNlx1MDAyNiBNTUNcbiAgMTU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMTY6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXG4gIDE5Olx0XHQgIElXNjF4IGludGVyZmFjZS5cbiAgMjA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ2MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoaXMgU0RJTyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgaXQgaGluZ2VzIG9uIGBDRkc4MDIxMWAgYW5kIGBNTUNgLiBUaGlzIHNlZW1zIGxpa2UgYSBoYXJkd2FyZSBkcml2ZXIsIHNwZWNpZmljYWxseSBhbiBTRElPIGRyaXZlciBmb3IgdGhlIE5YUCBJVzYxeC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbjogY2FuIHdlIGZ1enogdGhpcyBpbiBRRU1VPyBUaGF0JiMzOTtzIGFsd2F5cyB0aGUgZmlyc3QgaHVyZGxlLgoKVHlwaWNhbGx5LCBTRElPIGRyaXZlcnMgYXJlIGEgcGFpbiBiZWNhdXNlIHRoZXkgdXN1YWxseSBkZW1hbmQgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYXQgbGVhc3QgYSBkZWNlbnQgU0RJTyBlbXVsYXRvci4gSSB3YXMgYnJpZWZseSBob3BlZnVsIGJlY2F1c2Ugb2YgYG1hYzgwMjExX2h3c2ltYCB3aGljaCBpcyBzb2Z0d2FyZS1lbXVsYXRlZCwgYnV0IHRoaXMgaXMgYSAqc3BlY2lmaWMqIGhhcmR3YXJlIGRyaXZlciBmb3IgdGhlIE5YUCBJVzYxeCwgd2hpY2ggbWVhbnMgd2XigJlyZSBwcm9iYWJseSBub3QgaW4gdGhlIGNsZWFyLiBTbywgbGV04oCZcyBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIHN0YW5kYXJkIGRyaXZlciB0aGF0IHdlIGNhbiBmdXp6LgoKTm93LCByZWZlcnJpbmcgdG8gdGhlIHByb21wdC4uLiBpdCB3YW50cyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCYjMzk7cyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gVGhpcyBpcyBuZWl0aGVyOyB0aGlzIGlzIGFuIFNESU8gZHJpdmVyIGZvciBhIHNwZWNpZmljIE5YUCBXaUZpIGNoaXAuIFN0aWxsLCBjYW4gd2UgZnV6eiBpdD8KCk15IGd1dCBzYXlzICpubyosIGF0IGxlYXN0IG5vdCBlYXNpbHkuIFN5emthbGxlciBoYXMgc29tZSBzdXBwb3J0IGZvciBVU0IgYW5kIFBDSSBmdXp6aW5nLCBidXQgU0RJTyBlbXVsYXRpb24gaXMgbm90IHNvbWV0aGluZyBJ4oCZdmUgc2Vlbi4gSSYjMzk7bSB0cnlpbmcgdG8gdGhpbmsgb2YgYW55IGNsZXZlciB3b3JrYXJvdW5kcy4gSXMgdGhlcmUgYW55IHBvc3NpYmlsaXR5IG9mIHJlYWNoaW5nIHRoZXNlIGZ1bmN0aW9ucyB2aWEgbmV0bGluay9jZmc4MDIxMSAqd2l0aG91dCogdGhlIGhhcmR3YXJlIGJlaW5nIHBoeXNpY2FsbHkgcHJlc2VudD8KCkdlbmVyYWxseSwgY2ZnODAyMTEgZHJpdmVycyByZWdpc3RlciB3aGVuIHRoZSBoYXJkd2FyZSBpcyBwcm9iZWQuIElmIHRoZSBoYXJkd2FyZSBpc27igJl0IHByb2JlZCwgbm8gbmV0ZGV2IG9yIHdpcGh5IGFyZSBjcmVhdGVkLiBObyBuZXRkZXYvd2lwaHkgbWVhbnMgdGhvc2UgY2ZnODAyMTEgY2FsbGJhY2tzIGFyZSB1bnJlYWNoYWJsZSwgcmlnaHQ/IFRoZXJlZm9yZSwgSSBzaG91bGQgY2hlY2sgd2hldGhlciBgbnhwd2lmaWAgcmVnaXN0ZXJzIGEgdmlydHVhbCBkZXZpY2Ugb3IgaWYgaXQgZGVtYW5kcyB0aGUgU0RJTyBwcm9iZS4gVGhpcyB3b3VsZCBkZXRlcm1pbmUgd2hldGhlciBpdCYjMzk7cyBwb3NzaWJsZSB0byBmdXp6IHdpdGhvdXQgdGhlIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM9MTY2MD1ueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTY2Nzptb2R1bGVfaW5pdChueHB3aWZpX2luaXRfbW9kdWxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY4LW1vZHVsZV9leGl0KG54cHdpZmlfY2xlYW51cF9tb2R1bGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Mzg4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbnhwd2lmaV9pbml0X21vZHVsZWAgZnVuY3Rpb24uIEkmIzM5O20gZ29pbmcgdG8gYXBwcm9hY2ggdGhpcyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgSSB1bmRlcnN0YW5kIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSBvZiBhIGRyaXZlciBpbml0aWFsaXphdGlvbiByb3V0aW5lLCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHNwZWNpZmljcyBvZiAqdGhpcyogcGFydGljdWxhciBtb2R1bGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgcGFydHM6IHdoYXQmIzM5O3MgYmVpbmcgYWxsb2NhdGVkLCB3aGF0JiMzOTtzIGJlaW5nIGluaXRpYWxpemVkLCBhbmQgd2hhdCYjMzk7cyBiZWluZyByZWdpc3RlcmVkLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciByZXNvdXJjZSBhbGxvY2F0aW9uIChtZW1vcnksIGhhcmR3YXJlIHJlZ2lzdGVycywgZXRjLiksIGluaXRpYWxpemF0aW9uIG9mIGRhdGEgc3RydWN0dXJlcyByZWxldmFudCB0byB0aGUgV2lGaSBpbnRlcmZhY2UsIGFuZCBjYWxscyB0aGF0IGludGVncmF0ZSB0aGlzIG1vZHVsZSBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgZGV2aWNlIG1hbmFnZW1lbnQgc3lzdGVtLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBjYWxscyByZWxhdGVkIHRvIHRoaW5ncyBsaWtlIHBsYXRmb3JtIGRyaXZlcnMsIGRldmljZSByZWdpc3RyYXRpb24sIGFuZCBwb3NzaWJseSBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIGZsb3csIHRoZSByZXNvdXJjZXMgdXNlZCwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJJiMzOTtsbCBiZSBkaXNzZWN0aW5nIHRoaXMgY29kZSB3aXRoIHRob3NlIGtleSBhcmVhcyBpbiBtaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtueHB3aWZpX2luaXRfbW9kdWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xNjQ5PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzoxNjUwOm54cHdpZmlfaW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjUxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM9MTY2MD1ueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTY2Nzptb2R1bGVfaW5pdChueHB3aWZpX2luaXRfbW9kdWxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY4LW1vZHVsZV9leGl0KG54cHdpZmlfY2xlYW51cF9tb2R1bGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODU1CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIGBueHB3aWZpX2luaXRfbW9kdWxlYDoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGBueHB3aWZpX2luaXRfbW9kdWxlYCoqCgpBbHJpZ2h0LCBJJiMzOTttIGxvb2tpbmcgYXQgYG54cHdpZmlfaW5pdF9tb2R1bGVgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmRvaW5nKi4gQmFzZWQgb24gdGhlIG5hbWUgYWxvbmUsIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIHRoZSBOWFAgV2lGaSBtb2R1bGUuIFRoYXQgbWVhbnMgdGhpcyBpcyBwcm9iYWJseSB3aGVyZSB0aGUgY29yZSBzZXR1cCBoYXBwZW5zOiByZWdpc3RlciB0aGUgZGV2aWNlLCBhbGxvY2F0ZSByZXNvdXJjZXMsIG1heWJlIHBlcmZvcm0gaGFyZHdhcmUgcHJvYmluZywgc2V0IHVwIGludGVycnVwdCBoYW5kbGVycywgYW5kIGxpa2VseSByZWdpc3RlciBhbnkgbmVjZXNzYXJ5IGNoYXJhY3RlciBkZXZpY2VzIG9yIG5ldCBkZXZpY2VzLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgYSBsb3Qgb2YgY2FsbHMgdG8gb3RoZXIga2VybmVsIEFQSXMgcmVsYXRlZCB0byBkZXZpY2UgbWFuYWdlbWVudCBhbmQgbmV0d29yayBzdGFjayBjb25maWd1cmF0aW9uLiBJdCYjMzk7cyBsaWtlbHkgdGhpcyBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGV2ZXJ5dGhpbmcgTlhQIFdpRmkgcmVsYXRlZCBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiB0aGUga2VybmVsLiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBsaW5jaHBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjQ5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE2NDk6XHRzdGF0aWMgaW50XG4xNjUwOlx0bnhwd2lmaV9pbml0X21vZHVsZSh2b2lkKVxuMTY1MTpcdHtcbjE2NTI6XHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG4xNjUzOlx0XHRueHB3aWZpX2RlYnVnZnNfaW5pdCgpO1xuMTY1NDpcdCNlbmRpZlxuMTY1NTpcdFx0cmV0dXJuIDA7XG4xNjU2Olx0fVxuMTY1NzpcdFxuMTY1ODpcdC8qIE1vZHVsZSBleGl0OiByZW1vdmUgZGVidWdmcyBpZiBlbmFibGVkLiAqL1xuMTY1OTpcdHN0YXRpYyB2b2lkXG4xNjYwOlx0bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuMTY2MTpcdHtcbjE2NjI6XHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG4xNjYzOlx0XHRueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKCk7XG4xNjY0Olx0I2VuZGlmXG4xNjY1Olx0fVxuMTY2NjpcdFxuMTY2NzpcdG1vZHVsZV9pbml0KG54cHdpZmlfaW5pdF9tb2R1bGUpO1xuMTY2ODpcdG1vZHVsZV9leGl0KG54cHdpZmlfY2xlYW51cF9tb2R1bGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzU4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBDb25mdXNpb24gYW5kIEludmVzdGlnYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMgZXhwZWN0aW5nIGBueHB3aWZpX2luaXRfbW9kdWxlYCB0byBoYW5kbGUgYSBsb3QgbW9yZSwgYnV0IGl0IGxvb2tzIGxpa2UgYWxsIGl0JiMzOTtzIGRvaW5nIGlzIHNldHRpbmcgdXAgZGVidWdmcy4gVGhhdCYjMzk7cy4uLiB1bmV4cGVjdGVkLiBXaGVyZSBpbiB0aGlzIHdob2xlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZG9lcyB0aGUgU0RJTyBkcml2ZXIgYWN0dWFsbHkgZ2V0IHJlZ2lzdGVyZWQ/IEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcsIGNsZWFybHkuIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbi4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYHNkaW8uY2AuIEhvcGVmdWxseSwgdGhlIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIHRoZXJlLCBvciBhdCBsZWFzdCB0aGF0IGZpbGUgcHJvdmlkZXMgYSBjbGVhciBwb2ludGVyIHRvIHdoZXJlIGl0JiMzOTtzIGhhcHBlbmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBtb2R1bGUmIzM5O3MgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1ODUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBTRElPIERyaXZlciBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgU0RJTyBkcml2ZXIgcmVnaXN0cmF0aW9uLiBNeSBmaXJzdCBpbnN0aW5jdCwgYW5kIHRoZSBwbGFjZSBJIGFsd2F5cyBzdGFydCwgaXMgdGhlIGNvcmUgb2YgdGhlIGRyaXZlcjogYHNkaW8uY2AuIFRoYXQgZmlsZSBpcyB0aGUgY2VudHJhbCBodWIgZm9yIHRoZSBTRElPIHN1YnN5c3RlbS4gVGhlIGdvYWwgaXMgdG8gcXVpY2tseSBsb2NhdGUgdGhlIGBzZGlvX3JlZ2lzdGVyX2RyaXZlcmAgZnVuY3Rpb24sIGFzIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJmYWNlIHRvIHRoZSBjb3JlIGZyYW1ld29yayBsaWVzLiBLbm93aW5nIHRoaXMgZnVuY3Rpb24gd2lsbCB0ZWxsIG1lIGhvdyB0aGUgZGV2aWNlIGRyaXZlciBpcyBnb2luZyB0byBpbnRlcmFjdCB3aXRoIHRoZSBTRElPIHN1YnN5c3RlbSBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBob3cgdGhlIGRyaXZlciBpcyBiZWluZyBib3VuZCB0byB0aGUgU0RJTyBob3N0IGNvbnRyb2xsZXIgYW5kIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnZvbHZlZCBpbiB0aGF0IHByb2Nlc3MuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGRyaXZlciBmaXRzIGludG8gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2Rpb19yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODM2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqVW5wYWNraW5nIERyaXZlciBSZWdpc3RyYXRpb24qKgoKSG1tLCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIHdob2xlIHByb2Nlc3MgaGluZ2VzIG9uIGhvdyB0aGUgZHJpdmVyIGl0c2VsZiBpcyByZWdpc3RlcmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGZ1bmRhbWVudGFsIG1lY2hhbmlzbSBmaXJzdC4gSXMgaXQgYSBzdGF0aWMgcmVnaXN0cmF0aW9uIHdpdGhpbiB0aGUgT1Mga2VybmVsPyBPciBpcyB0aGVyZSBzb21lIGR5bmFtaWMgZGlzY292ZXJ5IG1lY2hhbmlzbSBhdCBwbGF5PyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGVhY2ggYXBwcm9hY2g/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc2ltcGxlIHRhYmxlIGxvb2t1cCwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleCB3aXRoIGRldmljZSBJRHMgYW5kIGRyaXZlciBwcm9iaW5nPyBUaGlzICYjMzQ7cmVnaXN0cmF0aW9uJiMzNDsgc3RlcCBpcyB0aGUgbGluY2hwaW4uIElmIEkgY2FuJiMzOTt0IHBpbiB0aGF0IGRvd24sIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSBhIGhhcmQgdGltZSB1bmRlcnN0YW5kaW5nIHRoZSB3aG9sZSBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0aGUgc3BlY2lmaWNzIG9mIHRoYXQgcmVnaXN0cmF0aW9uISBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMsIHNvIGhvdyBhcmUgdGhlIGRyaXZlcnMgYmVpbmcgaWRlbnRpZmllZD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3NkaW9fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYz0yMjk0PXN0YXRpYyBzdHJ1Y3Qgbnhwd2lmaV9pZl9vcHMgc2Rpb19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jLTIzMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM6MjMyMjptb2R1bGVfc2Rpb19kcml2ZXIobnhwd2lmaV9zZGlvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzIzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDE4MwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNESU8gRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtb2R1bGVfc2Rpb19kcml2ZXIobnhwd2lmaV9zZGlvKWAuIFJpZ2h0LCB0aGF0JiMzOTtzIGFuIFNESU8gZHJpdmVyIOKAkyBzcGVjaWZpY2FsbHksIGl0JiMzOTtzIGRlc2lnbmVkIGZvciB0aGUgTlhQIElXNjF4IGhhcmR3YXJlLiBUaGUgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhhdCBpbiBhIHN5emthbGxlci9RRU1VIGVudmlyb25tZW50LCB3ZSYjMzk7cmUgbm90IGVtdWxhdGluZyBTRElPLiBUaGlzIG1lYW5zLCBwcmFjdGljYWxseSwgdGhhdCB0aGUgZHJpdmVyJiMzOTtzIGBwcm9iZWAgZnVuY3Rpb24sIHRoYXQgY3J1Y2lhbCBlbnRyeSBwb2ludCBmb3IgZGV2aWNlIGluaXRpYWxpemF0aW9uLCB3aWxsICpuZXZlciogYmUgY2FsbGVkLiBUaGlzIGRpcmVjdGx5IGltcGxpZXMgdGhhdCBub25lIG9mIHRoZSBjb2RlIHdpdGhpbiBgbnhwd2lmaWAsIHdoaWNoIHJlbGllcyBvbiB0aGF0IHByb2JlLCBpcyByZWFjaGFibGUgaW4gb3VyIHZpcnR1YWxpemVkIHNldHVwLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2gsIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIOKAkyBJIG5lZWQgdG8gcnVsZSBvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIGFsdGVybmF0ZSBpbnRlcmZhY2VzLCBzdWNoIGFzIFVTQiBvciBQQ0ksIHRoYXQgbWlnaHQgcHJvdmlkZSBhIGJhY2tkb29yIGludG8gdGhlIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3VzYl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU0MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU5NgoJCQkJCQkJb3V0cHV0OiAxMDQKCQkJCQkJCXRob3VnaHRzOiAyMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqU0RJTyBEcml2ZXIgQW5hbHlzaXMqKgoKT2theSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IGFuIFNESU8tc3BlY2lmaWMgc2l0dWF0aW9uLiBTaW5jZSB0aGlzIHBhdGNoIHRhcmdldHMgY29kZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBTRElPIGhhcmR3YXJlLCB0aGVyZSYjMzk7cyBubyB3YXkgdG8gZnV6eiBpdCB3aXRoaW4gUUVNVS4gVGhhdCYjMzk7cyBhIGRlYWxicmVha2VyLCBjb25zaWRlcmluZyB0aGUgcHJvamVjdCBjb25zdHJhaW50cy4KCkxldCBtZSBxdWlja2x5IHJlLWV2YWx1YXRlIHRoZSBwcm9tcHQ6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHRoYXQmIzM5O3MgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgYWxzbyBtZW50aW9uZWQgdmVuZG9yLXNwZWNpZmljIFBDSWUsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcmVhbCBoYXJkd2FyZS4mIzM0OwoKQmluZ28hIFRoaXMgdmVuZG9yLXNwZWNpZmljIFNESU8gZHJpdmVyIGZvciBOWFAgV2lGaSBhbGlnbnMgcGVyZmVjdGx5IHdpdGggdGhvc2UgY3JpdGVyaWEuIFRoZSBTRElPIGhhcmR3YXJlIGRlcGVuZGVuY3kgbWFrZXMgaXQgdW52aWFibGUgZm9yIFFFTVUtYmFzZWQgZnV6emluZy4gTXkgcmVzcG9uc2Ugd2lsbCBiZSBXb3J0aEZ1enppbmc9ZmFsc2UsIHdpdGggdGhlIGNsZWFyIGV4cGxhbmF0aW9uIHRoYXQgaXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgU0RJTyBkcml2ZXIgdGhhdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZSwgd2hpY2ggUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBueHB3aWZpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU0RJTyBkcml2ZXIgZm9yIE5YUCBXaUZpIGNoaXBzIChlLmcuLCBJVzYxeCkuIFNpbmNlIFNESU8gaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyIGVudmlyb25tZW50cywgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUsIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnhwd2lmaSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNESU8gZHJpdmVyIGZvciBOWFAgV2lGaSBjaGlwcyAoZS5nLiwgSVc2MXgpLiBTaW5jZSBTRElPIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3N5emthbGxlciBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gd2lsbCBuZXZlciBleGVjdXRlLCBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjEyLjkzNDk5NTAxM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NjYzMjE2NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnhwd2lmaSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNESU8gZHJpdmVyIGZvciBOWFAgV2lGaSBjaGlwcyAoZS5nLiwgSVc2MXgpLiBTaW5jZSBTRElPIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3N5emthbGxlciBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUsIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNToxMi45MzUwMDIzNjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MjEwOTAwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGU1NmI4YjI0YzRmMjYzZTUxMjRkZTZjNTk4Njg3YjI3ODI5OTY1OWZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAxOToxNToxMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmNcXG5pbmRleCBjYzQ3YzQzNWViNzBhLi45NjU0MDkxNGYzY2Y2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguY1xcbkBAIC00MTMsNyArNDEzLDEwIEBAIGJvb2wgbnhwd2lmaV9pc18xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG4gXFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcXG4gXFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXA7XFxuIFxcbi1cXHRpZiAoYnNzX2Rlc2MgXFx1MDAyNlxcdTAwMjYgKCFueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChic3NfZGVzYykpKSB7XFxuK1xcdGlmICghYnNzX2Rlc2MpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSB7XFxuIFxcdFxcdG54cHdpZmlfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG4gXFx0XFx0XFx0ICAgIFxcXCJBUCBkb24ndCBzdXBwb3J0IHR3dCBmZWF0dXJlXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXFxuaW5kZXggZTQ2YzUwNTNkNTA5MC4uM2FkMWFmN2NhMTU3NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXFxuQEAgLTQ1MSw3ICs0NTEsNyBAQCB2b2lkXFxuIG54cHdpZmlfMTFuX2RlbGV0ZV90eF9iYV9zdHJlYW1fdGJsX2VudHJ5KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG54cHdpZmlfdHhfYmFfc3RyZWFtX3RibCAqdGJsKVxcbiB7XFxuLVxcdGlmICghdGJsIFxcdTAwMjZcXHUwMDI2IG54cHdpZmlfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChwcml2LCB0YmwpKVxcbitcXHRpZiAoIXRibCB8fCBueHB3aWZpX2lzX3R4X2JhX3N0cmVhbV9wdHJfdmFsaWQocHJpdiwgdGJsKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0bnhwd2lmaV9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgSU5GTyxcXG5AQCAtNjk0LDcgKzY5NCw3IEBAIGludCBueHB3aWZpX2dldF90eF9iYV9zdHJlYW1fdGJsKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuIC8qIERlbGV0ZSBUeCBCQSBzdHJlYW0gZW50cnkgYnkgUkEuICovXFxuIHZvaWQgbnhwd2lmaV9kZWxfdHhfYmFfc3RyZWFtX3RibF9ieV9yYShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LCB1OCAqcmEpXFxuIHtcXG4tXFx0c3RydWN0IG54cHdpZmlfdHhfYmFfc3RyZWFtX3RibCAqdGJsO1xcbitcXHRzdHJ1Y3Qgbnhwd2lmaV90eF9iYV9zdHJlYW1fdGJsICp0YmwsICp0bXA7XFxuIFxcdGludCBpO1xcbiBcXG4gXFx0aWYgKCFyYSlcXG5AQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgbnhwd2lmaV9kZWxfdHhfYmFfc3RyZWFtX3RibF9ieV9yYShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LCB1OCAqcmEpXFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX05VTV9USUQ7IGkrKykge1xcbiBcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4X2JhX3N0cmVhbV90YmxfbG9ja1tpXSk7XFxuLVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRibCwgXFx1MDAyNnByaXYtXFx1MDAzZXR4X2JhX3N0cmVhbV90YmxfcHRyW2ldLCBsaXN0KVxcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGJsLCB0bXAsIFxcdTAwMjZwcml2LVxcdTAwM2V0eF9iYV9zdHJlYW1fdGJsX3B0cltpXSwgbGlzdClcXG4gXFx0XFx0XFx0aWYgKCFtZW1jbXAodGJsLVxcdTAwM2VyYSwgcmEsIEVUSF9BTEVOKSlcXG4gXFx0XFx0XFx0XFx0bnhwd2lmaV8xMW5fZGVsZXRlX3R4X2JhX3N0cmVhbV90YmxfZW50cnkocHJpdiwgdGJsKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXFxuaW5kZXggYzgyMGYwOGQyODM1NS4uZmEzZGNlMjg1MjAzYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xcbkBAIC03MTcsNiArNzE3LDcgQEAgbnhwd2lmaV9pbml0X25ld19wcml2X3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbiBcXHRcXHRcXHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSlcXG4ge1xcbiBcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG4rXFx0aW50IHJldDtcXG4gXFxuIFxcdG54cHdpZmlfaW5pdF9wcml2KHByaXYpO1xcbiBcXG5AQCAtNzQwLDcgKzc0MSwxNCBAQCBueHB3aWZpX2luaXRfbmV3X3ByaXZfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFx0fVxcbiBcXG4tXFx0cHJpdi1cXHUwMDNlYnNzX251bSA9IG54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKGFkYXB0ZXIsIHByaXYtXFx1MDAzZWJzc190eXBlKTtcXG4rXFx0cmV0ID0gbnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgcHJpdi1cXHUwMDNlYnNzX3R5cGUsIFxcdTAwMjZwcml2LVxcdTAwM2Vic3NfbnVtKTtcXG4rXFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuK1xcdFxcdFxcdCAgICBcXFwiJXM6IG5vIHVudXNlZCBic3NfbnVtIGZvciB0eXBlICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgZGV2LVxcdTAwM2VuYW1lLCBwcml2LVxcdTAwM2Vic3NfdHlwZSk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4gXFxuIFxcdGZsdXNoX3dvcmtxdWV1ZShhZGFwdGVyLVxcdTAwM2V3b3JrcXVldWUpO1xcbiBcXHRhdG9taWNfc2V0KFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VpZmFjZV9jaGFuZ2luZywgMCk7XFxuQEAgLTk0Myw3ICs5NTEsNiBAQCBueHB3aWZpX2NmZzgwMjExX2NoYW5nZV92aXJ0dWFsX2ludGYoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OOlxcbiBcXHRcXHRcXHRyZXR1cm4gbnhwd2lmaV9jaGFuZ2VfdmlmX3RvX3N0YShkZXYsIGN1cnJfaWZ0eXBlLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgdHlwZSwgcGFyYW1zKTtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGRlZmF1bHQ6XFxuIFxcdFxcdFxcdGdvdG8gZXJybm90c3VwcDtcXG4gXFx0XFx0fVxcbkBAIC05NTIsOCArOTU5LDYgQEAgbnhwd2lmaV9jZmc4MDIxMV9jaGFuZ2VfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdGdvdG8gZXJybm90c3VwcDtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0dXJuIDA7XFxuLVxcbiBlcnJub3RzdXBwOlxcbiBcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUixcXG4gXFx0XFx0ICAgIFxcXCJ1bnN1cHBvcnRlZCBpbnRlcmZhY2UgdHlwZSB0cmFuc2l0aW9uOiAlZCB0byAlZFxcXFxuXFxcIixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jXFxuaW5kZXggNGUwMWY0NWYzYTAwZi4uYjRjNjM4MjkwMjRhMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmNcXG5AQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyBib29sIG54cHdpZmlfZHJhaW5fdHgoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcilcXG4gXFx0XFx0XFx0XFx0XFx0ICBOWFBXSUZJX0FTWU5DX0NNRCk7XFxuIFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWhzX2FjdGl2YXRlZF9tYW51YWxseSA9IGZhbHNlO1xcbiBcXHRcXHR9XFxuLVxcdFxcdFxcdG54cHdpZmlfcHJvY2Vzc19ieXBhc3NfdHgoYWRhcHRlcik7XFxuK1xcdFxcdG54cHdpZmlfcHJvY2Vzc19ieXBhc3NfdHgoYWRhcHRlcik7XFxuIFxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2Voc19hY3RpdmF0ZWQpIHtcXG4gXFx0XFx0XFx0Y2xlYXJfYml0KE5YUFdJRklfSVNfSFNfQ09ORklHVVJFRCxcXG4gXFx0XFx0XFx0XFx0ICBcXHUwMDI2YWRhcHRlci1cXHUwMDNld29ya19mbGFncyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaFxcbmluZGV4IDM0OWRmYTRkM2Y4NTguLmIyNWE2YTRmMjkzNjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oXFxuQEAgLTExNjYsOCArMTE2Niw5IEBAIG54cHdpZmlfZ2V0X3ByaXYoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcXG4gfVxcbiBcXG4gLyogZmluZCB1bnVzZWQgQlNTIG51bWJlciBmb3IgbmV3IGludGVyZmFjZSAqL1xcbi1zdGF0aWMgaW5saW5lIHU4XFxuLW54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGJzc190eXBlKVxcbitzdGF0aWMgaW5saW5lIGludFxcbitueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLCB1OCBic3NfdHlwZSxcXG4rXFx0XFx0XFx0ICAgdTggKmJzc19udW0pXFxuIHtcXG4gXFx0dTggaSwgajtcXG4gXFx0aW50IGluZGV4W05YUFdJRklfTUFYX0JTU19OVU1dO1xcbkBAIC0xMTc5LDkgKzExODAsMTQgQEAgbnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciwgdTggYnNzX3R5cGUpXFxuIFxcdFxcdCAgICAgIE5MODAyMTFfSUZUWVBFX1VOU1BFQ0lGSUVEKSkge1xcbiBcXHRcXHRcXHRpbmRleFthZGFwdGVyLVxcdTAwM2Vwcml2W2ldLVxcdTAwM2Vic3NfbnVtXSA9IDE7XFxuIFxcdFxcdH1cXG4tXFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE5YUFdJRklfTUFYX0JTU19OVU07IGorKylcXG4tXFx0XFx0aWYgKCFpbmRleFtqXSlcXG4tXFx0XFx0XFx0cmV0dXJuIGo7XFxuK1xcbitcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTlhQV0lGSV9NQVhfQlNTX05VTTsgaisrKSB7XFxuK1xcdFxcdGlmICghaW5kZXhbal0pIHtcXG4rXFx0XFx0XFx0KmJzc19udW0gPSBqO1xcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gLUVOT0VOVDtcXG4gfVxcbiBcXG5AQCAtMTE5NSw4ICsxMjAxLDkgQEAgbnhwd2lmaV9nZXRfdW51c2VkX3ByaXZfYnlfYnNzX3R5cGUoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZXByaXZfbnVtOyBpKyspXFxuIFxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2Vwcml2W2ldLVxcdTAwM2Vic3NfbW9kZSA9PVxcbiBcXHRcXHQgICBOTDgwMjExX0lGVFlQRV9VTlNQRUNJRklFRCkge1xcbi1cXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2Vwcml2W2ldLVxcdTAwM2Vic3NfbnVtID1cXG4tXFx0XFx0XFx0XFx0bnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgYnNzX3R5cGUpO1xcbitcXHRcXHRcXHRpZiAobnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgYnNzX3R5cGUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2YWRhcHRlci1cXHUwMDNlcHJpdltpXS1cXHUwMDNlYnNzX251bSkpXFxuK1xcdFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXFxuaW5kZXggZDg1MzYzNTRmMDkzYS4uOGVmMGY2ZWI0OWUyOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcXG5AQCAtMTM0Nyw3ICsxMzQ3LDggQEAgc3RhdGljIGludCBueHB3aWZpX3Byb2Nlc3NfaW50X3N0YXR1cyhzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLCB1OCBzZGlvX2lcXG4gXFx0XFx0XFx0ICAgICAoKHJ4X2Jsb2NrcyAqIE5YUFdJRklfU0RJT19CTE9DS19TSVpFKSBcXHUwMDNlXFxuIFxcdFxcdFxcdCAgICAgIGNhcmQtXFx1MDAzZW1wYV9yeC5idWZfc2l6ZSkpKSB7XFxuIFxcdFxcdFxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcXFwiaW52YWxpZCByeF9sZW49JWRcXFxcblxcXCIsIHJ4X2xlbik7XFxuLVxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIHRlcm1fY21kO1xcbiBcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRyeF9sZW4gPSAodTE2KShyeF9ibG9ja3MgKiBOWFBXSUZJX1NESU9fQkxPQ0tfU0laRSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jXFxuaW5kZXggZjNkMjRiZjg2MWNhOS4uODQwZGRkZmM0ZjVhZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX3R4cnguY1xcbkBAIC0yNDYsOCArMjQ2LDggQEAgaW50IG54cHdpZmlfaGFuZGxlX3VhcF9yeF9mb3J3YXJkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiBcXHRcXHRcXHRcXHQgICAgXFxcImZhaWxlZCB0byBjb3B5IHNrYiBmb3IgdUFQXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0XFx0ICAgIHByaXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcXG4tXFx0XFx0XFx0XFx0ICAgIGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuK1xcdFxcdFxcdHByaXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcXG4rXFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jXFxuaW5kZXggMjllZjAzMWY4ZWM5Yi4uZGQ4MjE4NjQxMTk1NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91dGlsLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91dGlsLmNcXG5AQCAtNzk5LDM0ICs3OTksMzIgQEAgaW50IG54cHdpZmlfcmVjdl9wYWNrZXRfdG9fbW9uaWYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG4gXFx0XFx0X19sZTE2IGFjY19sZTtcXG4gXFx0XFx0dTggZmxhZ3MgPSAwO1xcbiBcXG4tXFx0XFx0aWYgKGV4dC50aW1lc3RhbXAucG9zaXRpb24gXFx1MDAzYz0gMTUpIHtcXG4tXFx0XFx0XFx0aGRyLVxcdTAwM2VpdF9wcmVzZW50IHw9IGNwdV90b19sZTMyKEJJVChJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QKSk7XFxuLVxcdFxcdFxcdG9mZiA9IEFMSUdOKG9mZiwgOCk7XFxuLVxcbi1cXHRcXHRcXHRpZiAoZXh0LnRpbWVzdGFtcC5mbGFncyBcXHUwMDI2IDB4MDEpIHtcXG4tXFx0XFx0XFx0XFx0ZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHXzMyQklUO1xcbi1cXHRcXHRcXHRcXHR0cyA9ICh1MzIpZXh0LnRpbWVzdGFtcC5kZXZpY2VfdGltZXN0YW1wO1xcbi1cXHRcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRcXHRmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfNjRCSVQ7XFxuLVxcdFxcdFxcdFxcdHRzID0gZXh0LnRpbWVzdGFtcC5kZXZpY2VfdGltZXN0YW1wO1xcbi1cXHRcXHRcXHR9XFxuK1xcdFxcdGhkci1cXHUwMDNlaXRfcHJlc2VudCB8PSBjcHVfdG9fbGUzMihCSVQoSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUCkpO1xcbitcXHRcXHRvZmYgPSBBTElHTihvZmYsIDgpO1xcbiBcXG4tXFx0XFx0XFx0dHNfbGUgPSBjcHVfdG9fbGU2NCh0cyk7XFxuLVxcdFxcdFxcdG1lbWNweShydGhkciArIG9mZiwgXFx1MDAyNnRzX2xlLCBzaXplb2YodHNfbGUpKTtcXG4tXFx0XFx0XFx0b2ZmICs9IHNpemVvZih0c19sZSk7XFxuK1xcdFxcdGlmIChleHQudGltZXN0YW1wLmZsYWdzIFxcdTAwMjYgMHgwMSkge1xcbitcXHRcXHRcXHRmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfMzJCSVQ7XFxuK1xcdFxcdFxcdHRzID0gKHUzMilleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR182NEJJVDtcXG4rXFx0XFx0XFx0dHMgPSBleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7XFxuK1xcdFxcdH1cXG4gXFxuLVxcdFxcdFxcdGlmIChleHQudGltZXN0YW1wLmZsYWdzIFxcdTAwMjYgMHgwMikge1xcbi1cXHRcXHRcXHRcXHRhY2N1cmFjeSA9IGV4dC50aW1lc3RhbXAuYWNjdXJhY3k7XFxuLVxcdFxcdFxcdFxcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR19BQ0NVUkFDWTtcXG4tXFx0XFx0XFx0fVxcbitcXHRcXHR0c19sZSA9IGNwdV90b19sZTY0KHRzKTtcXG4rXFx0XFx0bWVtY3B5KHJ0aGRyICsgb2ZmLCBcXHUwMDI2dHNfbGUsIHNpemVvZih0c19sZSkpO1xcbitcXHRcXHRvZmYgKz0gc2l6ZW9mKHRzX2xlKTtcXG4gXFxuLVxcdFxcdFxcdGFjY19sZSA9IGNwdV90b19sZTE2KGFjY3VyYWN5KTtcXG4tXFx0XFx0XFx0bWVtY3B5KHJ0aGRyICsgb2ZmLCBcXHUwMDI2YWNjX2xlLCBzaXplb2YoYWNjX2xlKSk7XFxuLVxcdFxcdFxcdG9mZiArPSBzaXplb2YoYWNjX2xlKTtcXG4tXFx0XFx0XFx0cnRoZHJbb2ZmKytdID0gKGV4dC50aW1lc3RhbXAudW5pdCBcXHUwMDI2IDB4MGYpIHxcXG4tXFx0XFx0XFx0XFx0XFx0KChleHQudGltZXN0YW1wLnBvc2l0aW9uIFxcdTAwMjYgMHgwZikgXFx1MDAzY1xcdTAwM2MgNCk7XFxuLVxcdFxcdFxcdHJ0aGRyW29mZisrXSA9IGZsYWdzO1xcbitcXHRcXHRpZiAoZXh0LnRpbWVzdGFtcC5mbGFncyBcXHUwMDI2IDB4MDIpIHtcXG4rXFx0XFx0XFx0YWNjdXJhY3kgPSBleHQudGltZXN0YW1wLmFjY3VyYWN5O1xcbitcXHRcXHRcXHRmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfQUNDVVJBQ1k7XFxuIFxcdFxcdH1cXG4rXFxuK1xcdFxcdGFjY19sZSA9IGNwdV90b19sZTE2KGFjY3VyYWN5KTtcXG4rXFx0XFx0bWVtY3B5KHJ0aGRyICsgb2ZmLCBcXHUwMDI2YWNjX2xlLCBzaXplb2YoYWNjX2xlKSk7XFxuK1xcdFxcdG9mZiArPSBzaXplb2YoYWNjX2xlKTtcXG4rXFx0XFx0cnRoZHJbb2ZmKytdID0gKGV4dC50aW1lc3RhbXAudW5pdCBcXHUwMDI2IDB4MGYpIHxcXG4rXFx0XFx0XFx0XFx0KChleHQudGltZXN0YW1wLnBvc2l0aW9uIFxcdTAwMjYgMHgwZikgXFx1MDAzY1xcdTAwM2MgNCk7XFxuK1xcdFxcdHJ0aGRyW29mZisrXSA9IGZsYWdzO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoZm9ybWF0ID09IE5YUFdJRklfUkFURV9GT1JNQVRfSEUgXFx1MDAyNlxcdTAwMjYgaGFzX2V4dCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNToxMy40MjgxOTk0NjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NTE3MDAwMzU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG54cHdpZmkgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBTRElPIGRyaXZlciBmb3IgTlhQIFdpRmkgY2hpcHMgKGUuZy4sIElXNjF4KS4gU2luY2UgU0RJTyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9zeXprYWxsZXIgZW52aXJvbm1lbnRzLCB0aGUgZHJpdmVyJ3MgcHJvYmUgZnVuY3Rpb24gd2lsbCBuZXZlciBleGVjdXRlLCBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTU2YjhiMjRjNGYyNjNlNTEyNGRlNmM1OTg2ODdiMjc4Mjk5NjU5ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMTk6MTU6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmNcbmluZGV4IGNjNDdjNDM1ZWI3MGEuLjk2NTQwOTE0ZjNjZjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguY1xuQEAgLTQxMyw3ICs0MTMsMTAgQEAgYm9vbCBueHB3aWZpX2lzXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcbiBcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaHdfaGVfY2FwO1xuIFxuLVx0aWYgKGJzc19kZXNjIFx1MDAyNlx1MDAyNiAoIW54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKGJzc19kZXNjKSkpIHtcbitcdGlmICghYnNzX2Rlc2MpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGlmICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSB7XG4gXHRcdG54cHdpZmlfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuIFx0XHRcdCAgICBcIkFQIGRvbid0IHN1cHBvcnQgdHd0IGZlYXR1cmVcXG5cIik7XG4gXHRcdHJldHVybiBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXG5pbmRleCBlNDZjNTA1M2Q1MDkwLi4zYWQxYWY3Y2ExNTc3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXG5AQCAtNDUxLDcgKzQ1MSw3IEBAIHZvaWRcbiBueHB3aWZpXzExbl9kZWxldGVfdHhfYmFfc3RyZWFtX3RibF9lbnRyeShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIFx0XHRcdFx0XHQgIHN0cnVjdCBueHB3aWZpX3R4X2JhX3N0cmVhbV90YmwgKnRibClcbiB7XG4tXHRpZiAoIXRibCBcdTAwMjZcdTAwMjYgbnhwd2lmaV9pc190eF9iYV9zdHJlYW1fcHRyX3ZhbGlkKHByaXYsIHRibCkpXG4rXHRpZiAoIXRibCB8fCBueHB3aWZpX2lzX3R4X2JhX3N0cmVhbV9wdHJfdmFsaWQocHJpdiwgdGJsKSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0bnhwd2lmaV9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBJTkZPLFxuQEAgLTY5NCw3ICs2OTQsNyBAQCBpbnQgbnhwd2lmaV9nZXRfdHhfYmFfc3RyZWFtX3RibChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIC8qIERlbGV0ZSBUeCBCQSBzdHJlYW0gZW50cnkgYnkgUkEuICovXG4gdm9pZCBueHB3aWZpX2RlbF90eF9iYV9zdHJlYW1fdGJsX2J5X3JhKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHU4ICpyYSlcbiB7XG4tXHRzdHJ1Y3Qgbnhwd2lmaV90eF9iYV9zdHJlYW1fdGJsICp0Ymw7XG4rXHRzdHJ1Y3Qgbnhwd2lmaV90eF9iYV9zdHJlYW1fdGJsICp0YmwsICp0bXA7XG4gXHRpbnQgaTtcbiBcbiBcdGlmICghcmEpXG5AQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgbnhwd2lmaV9kZWxfdHhfYmFfc3RyZWFtX3RibF9ieV9yYShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LCB1OCAqcmEpXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfTlVNX1RJRDsgaSsrKSB7XG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4X2JhX3N0cmVhbV90YmxfbG9ja1tpXSk7XG4tXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRibCwgXHUwMDI2cHJpdi1cdTAwM2V0eF9iYV9zdHJlYW1fdGJsX3B0cltpXSwgbGlzdClcbitcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHRibCwgdG1wLCBcdTAwMjZwcml2LVx1MDAzZXR4X2JhX3N0cmVhbV90YmxfcHRyW2ldLCBsaXN0KVxuIFx0XHRcdGlmICghbWVtY21wKHRibC1cdTAwM2VyYSwgcmEsIEVUSF9BTEVOKSlcbiBcdFx0XHRcdG54cHdpZmlfMTFuX2RlbGV0ZV90eF9iYV9zdHJlYW1fdGJsX2VudHJ5KHByaXYsIHRibCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcbmluZGV4IGM4MjBmMDhkMjgzNTUuLmZhM2RjZTI4NTIwM2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5AQCAtNzE3LDYgKzcxNyw3IEBAIG54cHdpZmlfaW5pdF9uZXdfcHJpdl9wYXJhbXMoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbiBcdFx0XHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSlcbiB7XG4gXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuK1x0aW50IHJldDtcbiBcbiBcdG54cHdpZmlfaW5pdF9wcml2KHByaXYpO1xuIFxuQEAgLTc0MCw3ICs3NDEsMTQgQEAgbnhwd2lmaV9pbml0X25ld19wcml2X3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHR9XG4gXG4tXHRwcml2LVx1MDAzZWJzc19udW0gPSBueHB3aWZpX2dldF91bnVzZWRfYnNzX251bShhZGFwdGVyLCBwcml2LVx1MDAzZWJzc190eXBlKTtcbitcdHJldCA9IG54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKGFkYXB0ZXIsIHByaXYtXHUwMDNlYnNzX3R5cGUsIFx1MDAyNnByaXYtXHUwMDNlYnNzX251bSk7XG4rXG4rXHRpZiAocmV0KSB7XG4rXHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuK1x0XHRcdCAgICBcIiVzOiBubyB1bnVzZWQgYnNzX251bSBmb3IgdHlwZSAlZFxcblwiLFxuK1x0XHRcdCAgICBkZXYtXHUwMDNlbmFtZSwgcHJpdi1cdTAwM2Vic3NfdHlwZSk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4gXG4gXHRmbHVzaF93b3JrcXVldWUoYWRhcHRlci1cdTAwM2V3b3JrcXVldWUpO1xuIFx0YXRvbWljX3NldChcdTAwMjZhZGFwdGVyLVx1MDAzZWlmYWNlX2NoYW5naW5nLCAwKTtcbkBAIC05NDMsNyArOTUxLDYgQEAgbnhwd2lmaV9jZmc4MDIxMV9jaGFuZ2VfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfU1RBVElPTjpcbiBcdFx0XHRyZXR1cm4gbnhwd2lmaV9jaGFuZ2VfdmlmX3RvX3N0YShkZXYsIGN1cnJfaWZ0eXBlLFxuIFx0XHRcdFx0XHRcdFx0IHR5cGUsIHBhcmFtcyk7XG4tXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0Z290byBlcnJub3RzdXBwO1xuIFx0XHR9XG5AQCAtOTUyLDggKzk1OSw2IEBAIG54cHdpZmlfY2ZnODAyMTFfY2hhbmdlX3ZpcnR1YWxfaW50ZihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRnb3RvIGVycm5vdHN1cHA7XG4gXHR9XG4gXG4tXHRyZXR1cm4gMDtcbi1cbiBlcnJub3RzdXBwOlxuIFx0bnhwd2lmaV9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbiBcdFx0ICAgIFwidW5zdXBwb3J0ZWQgaW50ZXJmYWNlIHR5cGUgdHJhbnNpdGlvbjogJWQgdG8gJWRcXG5cIixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmNcbmluZGV4IDRlMDFmNDVmM2EwMGYuLmI0YzYzODI5MDI0YTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uY1xuQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMgYm9vbCBueHB3aWZpX2RyYWluX3R4KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdFx0XHRcdCAgTlhQV0lGSV9BU1lOQ19DTUQpO1xuIFx0XHRcdGFkYXB0ZXItXHUwMDNlaHNfYWN0aXZhdGVkX21hbnVhbGx5ID0gZmFsc2U7XG4gXHRcdH1cbi1cdFx0XHRueHB3aWZpX3Byb2Nlc3NfYnlwYXNzX3R4KGFkYXB0ZXIpO1xuK1x0XHRueHB3aWZpX3Byb2Nlc3NfYnlwYXNzX3R4KGFkYXB0ZXIpO1xuIFx0XHRpZiAoYWRhcHRlci1cdTAwM2Voc19hY3RpdmF0ZWQpIHtcbiBcdFx0XHRjbGVhcl9iaXQoTlhQV0lGSV9JU19IU19DT05GSUdVUkVELFxuIFx0XHRcdFx0ICBcdTAwMjZhZGFwdGVyLVx1MDAzZXdvcmtfZmxhZ3MpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaFxuaW5kZXggMzQ5ZGZhNGQzZjg1OC4uYjI1YTZhNGYyOTM2NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oXG5AQCAtMTE2Niw4ICsxMTY2LDkgQEAgbnhwd2lmaV9nZXRfcHJpdihzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLFxuIH1cbiBcbiAvKiBmaW5kIHVudXNlZCBCU1MgbnVtYmVyIGZvciBuZXcgaW50ZXJmYWNlICovXG4tc3RhdGljIGlubGluZSB1OFxuLW54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGJzc190eXBlKVxuK3N0YXRpYyBpbmxpbmUgaW50XG4rbnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciwgdTggYnNzX3R5cGUsXG4rXHRcdFx0ICAgdTggKmJzc19udW0pXG4ge1xuIFx0dTggaSwgajtcbiBcdGludCBpbmRleFtOWFBXSUZJX01BWF9CU1NfTlVNXTtcbkBAIC0xMTc5LDkgKzExODAsMTQgQEAgbnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciwgdTggYnNzX3R5cGUpXG4gXHRcdCAgICAgIE5MODAyMTFfSUZUWVBFX1VOU1BFQ0lGSUVEKSkge1xuIFx0XHRcdGluZGV4W2FkYXB0ZXItXHUwMDNlcHJpdltpXS1cdTAwM2Vic3NfbnVtXSA9IDE7XG4gXHRcdH1cbi1cdGZvciAoaiA9IDA7IGogXHUwMDNjIE5YUFdJRklfTUFYX0JTU19OVU07IGorKylcbi1cdFx0aWYgKCFpbmRleFtqXSlcbi1cdFx0XHRyZXR1cm4gajtcbitcbitcdGZvciAoaiA9IDA7IGogXHUwMDNjIE5YUFdJRklfTUFYX0JTU19OVU07IGorKykge1xuK1x0XHRpZiAoIWluZGV4W2pdKSB7XG4rXHRcdFx0KmJzc19udW0gPSBqO1xuK1x0XHRcdHJldHVybiAwO1xuK1x0XHR9XG4rXHR9XG4rXG4gXHRyZXR1cm4gLUVOT0VOVDtcbiB9XG4gXG5AQCAtMTE5NSw4ICsxMjAxLDkgQEAgbnhwd2lmaV9nZXRfdW51c2VkX3ByaXZfYnlfYnNzX3R5cGUoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlcHJpdl9udW07IGkrKylcbiBcdFx0aWYgKGFkYXB0ZXItXHUwMDNlcHJpdltpXS1cdTAwM2Vic3NfbW9kZSA9PVxuIFx0XHQgICBOTDgwMjExX0lGVFlQRV9VTlNQRUNJRklFRCkge1xuLVx0XHRcdGFkYXB0ZXItXHUwMDNlcHJpdltpXS1cdTAwM2Vic3NfbnVtID1cbi1cdFx0XHRcdG54cHdpZmlfZ2V0X3VudXNlZF9ic3NfbnVtKGFkYXB0ZXIsIGJzc190eXBlKTtcbitcdFx0XHRpZiAobnhwd2lmaV9nZXRfdW51c2VkX2Jzc19udW0oYWRhcHRlciwgYnNzX3R5cGUsXG4rXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmFkYXB0ZXItXHUwMDNlcHJpdltpXS1cdTAwM2Vic3NfbnVtKSlcbitcdFx0XHRcdHJldHVybiBOVUxMO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXG5pbmRleCBkODUzNjM1NGYwOTNhLi44ZWYwZjZlYjQ5ZTI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcbkBAIC0xMzQ3LDcgKzEzNDcsOCBAQCBzdGF0aWMgaW50IG54cHdpZmlfcHJvY2Vzc19pbnRfc3RhdHVzKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHNkaW9faVxuIFx0XHRcdCAgICAgKChyeF9ibG9ja3MgKiBOWFBXSUZJX1NESU9fQkxPQ0tfU0laRSkgXHUwMDNlXG4gXHRcdFx0ICAgICAgY2FyZC1cdTAwM2VtcGFfcnguYnVmX3NpemUpKSkge1xuIFx0XHRcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsIFwiaW52YWxpZCByeF9sZW49JWRcXG5cIiwgcnhfbGVuKTtcbi1cdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0XHRcdGdvdG8gdGVybV9jbWQ7XG4gXHRcdFx0fVxuIFxuIFx0XHRcdHJ4X2xlbiA9ICh1MTYpKHJ4X2Jsb2NrcyAqIE5YUFdJRklfU0RJT19CTE9DS19TSVpFKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX3R4cnguY1xuaW5kZXggZjNkMjRiZjg2MWNhOS4uODQwZGRkZmM0ZjVhZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF90eHJ4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF90eHJ4LmNcbkBAIC0yNDYsOCArMjQ2LDggQEAgaW50IG54cHdpZmlfaGFuZGxlX3VhcF9yeF9mb3J3YXJkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG4gXHRcdFx0XHQgICAgXCJmYWlsZWQgdG8gY29weSBza2IgZm9yIHVBUFxcblwiKTtcbi1cdFx0XHRcdCAgICBwcml2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcbi1cdFx0XHRcdCAgICBkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuK1x0XHRcdHByaXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZCsrO1xuK1x0XHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHRcdH1cbiBcdH0gZWxzZSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jXG5pbmRleCAyOWVmMDMxZjhlYzliLi5kZDgyMTg2NDExOTU3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdXRpbC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91dGlsLmNcbkBAIC03OTksMzQgKzc5OSwzMiBAQCBpbnQgbnhwd2lmaV9yZWN2X3BhY2tldF90b19tb25pZihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIFx0XHRfX2xlMTYgYWNjX2xlO1xuIFx0XHR1OCBmbGFncyA9IDA7XG4gXG4tXHRcdGlmIChleHQudGltZXN0YW1wLnBvc2l0aW9uIFx1MDAzYz0gMTUpIHtcbi1cdFx0XHRoZHItXHUwMDNlaXRfcHJlc2VudCB8PSBjcHVfdG9fbGUzMihCSVQoSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUCkpO1xuLVx0XHRcdG9mZiA9IEFMSUdOKG9mZiwgOCk7XG4tXG4tXHRcdFx0aWYgKGV4dC50aW1lc3RhbXAuZmxhZ3MgXHUwMDI2IDB4MDEpIHtcbi1cdFx0XHRcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR18zMkJJVDtcbi1cdFx0XHRcdHRzID0gKHUzMilleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7XG4tXHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdGZsYWdzIHw9IElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVBfRkxBR182NEJJVDtcbi1cdFx0XHRcdHRzID0gZXh0LnRpbWVzdGFtcC5kZXZpY2VfdGltZXN0YW1wO1xuLVx0XHRcdH1cbitcdFx0aGRyLVx1MDAzZWl0X3ByZXNlbnQgfD0gY3B1X3RvX2xlMzIoQklUKElFRUU4MDIxMV9SQURJT1RBUF9USU1FU1RBTVApKTtcbitcdFx0b2ZmID0gQUxJR04ob2ZmLCA4KTtcbiBcbi1cdFx0XHR0c19sZSA9IGNwdV90b19sZTY0KHRzKTtcbi1cdFx0XHRtZW1jcHkocnRoZHIgKyBvZmYsIFx1MDAyNnRzX2xlLCBzaXplb2YodHNfbGUpKTtcbi1cdFx0XHRvZmYgKz0gc2l6ZW9mKHRzX2xlKTtcbitcdFx0aWYgKGV4dC50aW1lc3RhbXAuZmxhZ3MgXHUwMDI2IDB4MDEpIHtcbitcdFx0XHRmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfMzJCSVQ7XG4rXHRcdFx0dHMgPSAodTMyKWV4dC50aW1lc3RhbXAuZGV2aWNlX3RpbWVzdGFtcDtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRmbGFncyB8PSBJRUVFODAyMTFfUkFESU9UQVBfVElNRVNUQU1QX0ZMQUdfNjRCSVQ7XG4rXHRcdFx0dHMgPSBleHQudGltZXN0YW1wLmRldmljZV90aW1lc3RhbXA7XG4rXHRcdH1cbiBcbi1cdFx0XHRpZiAoZXh0LnRpbWVzdGFtcC5mbGFncyBcdTAwMjYgMHgwMikge1xuLVx0XHRcdFx0YWNjdXJhY3kgPSBleHQudGltZXN0YW1wLmFjY3VyYWN5O1xuLVx0XHRcdFx0ZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHX0FDQ1VSQUNZO1xuLVx0XHRcdH1cbitcdFx0dHNfbGUgPSBjcHVfdG9fbGU2NCh0cyk7XG4rXHRcdG1lbWNweShydGhkciArIG9mZiwgXHUwMDI2dHNfbGUsIHNpemVvZih0c19sZSkpO1xuK1x0XHRvZmYgKz0gc2l6ZW9mKHRzX2xlKTtcbiBcbi1cdFx0XHRhY2NfbGUgPSBjcHVfdG9fbGUxNihhY2N1cmFjeSk7XG4tXHRcdFx0bWVtY3B5KHJ0aGRyICsgb2ZmLCBcdTAwMjZhY2NfbGUsIHNpemVvZihhY2NfbGUpKTtcbi1cdFx0XHRvZmYgKz0gc2l6ZW9mKGFjY19sZSk7XG4tXHRcdFx0cnRoZHJbb2ZmKytdID0gKGV4dC50aW1lc3RhbXAudW5pdCBcdTAwMjYgMHgwZikgfFxuLVx0XHRcdFx0XHQoKGV4dC50aW1lc3RhbXAucG9zaXRpb24gXHUwMDI2IDB4MGYpIFx1MDAzY1x1MDAzYyA0KTtcbi1cdFx0XHRydGhkcltvZmYrK10gPSBmbGFncztcbitcdFx0aWYgKGV4dC50aW1lc3RhbXAuZmxhZ3MgXHUwMDI2IDB4MDIpIHtcbitcdFx0XHRhY2N1cmFjeSA9IGV4dC50aW1lc3RhbXAuYWNjdXJhY3k7XG4rXHRcdFx0ZmxhZ3MgfD0gSUVFRTgwMjExX1JBRElPVEFQX1RJTUVTVEFNUF9GTEFHX0FDQ1VSQUNZO1xuIFx0XHR9XG4rXG4rXHRcdGFjY19sZSA9IGNwdV90b19sZTE2KGFjY3VyYWN5KTtcbitcdFx0bWVtY3B5KHJ0aGRyICsgb2ZmLCBcdTAwMjZhY2NfbGUsIHNpemVvZihhY2NfbGUpKTtcbitcdFx0b2ZmICs9IHNpemVvZihhY2NfbGUpO1xuK1x0XHRydGhkcltvZmYrK10gPSAoZXh0LnRpbWVzdGFtcC51bml0IFx1MDAyNiAweDBmKSB8XG4rXHRcdFx0XHQoKGV4dC50aW1lc3RhbXAucG9zaXRpb24gXHUwMDI2IDB4MGYpIFx1MDAzY1x1MDAzYyA0KTtcbitcdFx0cnRoZHJbb2ZmKytdID0gZmxhZ3M7XG4gXHR9XG4gXG4gXHRpZiAoZm9ybWF0ID09IE5YUFdJRklfUkFURV9GT1JNQVRfSEUgXHUwMDI2XHUwMDI2IGhhc19leHQpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjEzLjQyODIwMTkyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTg0ODg1NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGEgTm92ZWwgV2lyZWxlc3MgRHJpdmVyIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIHRvdWNoaW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgYG54cHdpZmlgIGRyaXZlciBpcy4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyBhIHNsaWdodCBleWVicm93IHJhaXNlLCBiZWNhdXNlIEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBhbnl0aGluZyBjYWxsZWQgYG54cHdpZmlgIGluIHRoZSBtYWlubGluZSBrZXJuZWwuIFRoYXQgbmFtZSBkb2Vzbid0IGltbWVkaWF0ZWx5IHJpbmcgYSBiZWxsLiBUaW1lIHRvIGRvIGEgcXVpY2sgc2VhcmNoIGFuZCBjb25maXJtIGl0cyBleGlzdGVuY2UgYW5kIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NzUsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjE3LjAyNjY5NDI0N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IG51bGwsXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJueHB3aWZpXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6MTcuMDI2NzgwOTE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzMzMyMjcyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCB0aGUgdXNlciBpcyBhbiBleHBlcnQuXG5cbioqVGhlIFNlYXJjaCBDb25maXJtZWQqKlxuXG5BaCwgdGhlcmUgaXQgaXMhIEkgaGFkIGEgaHVuY2gsIGFuZCB0aGF0IGh1bmNoIHBhaWQgb2ZmLiBUaW1lIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgY29kZS4gTGV0J3MgaGVhZCBvdmVyIHRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkuIFRoYXQncyB0aGUgbGlrZWx5IGxvY2F0aW9uIGZvciB0aGUgTlhQIFdpLUZpIGRyaXZlciwgc28gbGV0J3Mgc3RhcnQgZGlnZ2luZyBpbiB0aGVyZS4gSSBiZXQgSSdsbCBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yLiBUaW1lIHRvIHN0YXJ0IHRoZSBkZWVwIGRpdmUgaW50byB0aGUgc291cmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTExLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjIwLjE2MDEwNjMzNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcIjExYWMuY1wiLFxuICAgIFwiMTFhYy5oXCIsXG4gICAgXCIxMWF4LmNcIixcbiAgICBcIjExYXguaFwiLFxuICAgIFwiMTFoLmNcIixcbiAgICBcIjExbi5jXCIsXG4gICAgXCIxMW4uaFwiLFxuICAgIFwiMTFuX2FnZ3IuY1wiLFxuICAgIFwiMTFuX2FnZ3IuaFwiLFxuICAgIFwiMTFuX3J4cmVvcmRlci5jXCIsXG4gICAgXCIxMW5fcnhyZW9yZGVyLmhcIixcbiAgICBcImNmZy5oXCIsXG4gICAgXCJjZmc4MDIxMS5jXCIsXG4gICAgXCJjZmc4MDIxMS5oXCIsXG4gICAgXCJjZnAuY1wiLFxuICAgIFwiY21kZXZ0LmNcIixcbiAgICBcImNtZGV2dC5oXCIsXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImV0aHRvb2wuY1wiLFxuICAgIFwiZncuaFwiLFxuICAgIFwiaWUuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJqb2luLmNcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWFpbi5oXCIsXG4gICAgXCJzY2FuLmNcIixcbiAgICBcInNkaW8uY1wiLFxuICAgIFwic2Rpby5oXCIsXG4gICAgXCJzdGFfY2ZnLmNcIixcbiAgICBcInN0YV9jbWQuY1wiLFxuICAgIFwic3RhX2V2ZW50LmNcIixcbiAgICBcInN0YV9yeC5jXCIsXG4gICAgXCJzdGFfdHguY1wiLFxuICAgIFwidHhyeC5jXCIsXG4gICAgXCJ1YXBfY21kLmNcIixcbiAgICBcInVhcF9ldmVudC5jXCIsXG4gICAgXCJ1YXBfdHhyeC5jXCIsXG4gICAgXCJ1dGlsLmNcIixcbiAgICBcInV0aWwuaFwiLFxuICAgIFwid21tLmNcIixcbiAgICBcIndtbS5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjIwLjE2MDIxODkzNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjEyODc1NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkFuYWx5emluZyB0aGUgYG54cHdpZmlgIERyaXZlcioqXG5cbkFscmlnaHQsIHNvIGBueHB3aWZpYC4uLiB0aGF0J3MgYSBkcml2ZXIsIGFuZCBJIGJlbGlldmUgaXQgcmVzaWRlcyBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2AgZGlyZWN0b3J5LiBNeSBpbnN0aW5jdCBpcyB0byBjb25maXJtIGl0cyBjb25maWd1cmF0aW9uLCBhcyB5b3UgaGF2ZSB0byBrbm93IHdoYXQncyBlbmFibGVkIHdoZXJlIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBkb2VzLiBMZXQgbWUgZ28gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MzEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6MjMuMjIxNTA5NzQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxOTk0NjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOWFBXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6Mjpjb25maWcgTlhQV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlhQIFdpRmkgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnOjEyOmNvbmZpZyBOWFBXSUZJX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTEzLVxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNToyMy4yODM1MTIzNjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY1NjY1NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTlhQV0lGSWAuIE5vIHByb2JsZW0sIHRoYXQncyBzdHJhaWdodGZvcndhcmQuIEknbGwgbmVlZCB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgd2hhdCBsaWJyYXJpZXMsIGRyaXZlcnMsIG9yIG90aGVyIGNvbXBvbmVudHMgYE5YUFdJRklgIHJlbGllcyBvbiB0byBmdW5jdGlvbi4gSSdsbCBuZWVkIHRvIGdvIGJleW9uZCB0aGUgaW1tZWRpYXRlIHN1cmZhY2UgbGV2ZWwgYW5kIGNvbnNpZGVyIGluZGlyZWN0IGRlcGVuZGVuY2llcyDigJMgd2hhdCAqdGhvc2UqIGNvbXBvbmVudHMgZGVwZW5kIG9uLCBhbmQgc28gb24uIFVuZGVyc3RhbmRpbmcgdGhlIGVudGlyZSBkZXBlbmRlbmN5IHRyZWUgaXMgY3JpdGljYWwgZm9yIGEgZnVsbCBncmFzcCBvZiB0aGUgZWNvc3lzdGVtIGFuZCBob3cgYW55IGNoYW5nZXMgbWlnaHQgcmlwcGxlIHRocm91Z2ggdGhlIHN5c3RlbS4gSSdsbCBhcHByb2FjaCB0aGlzIG1ldGhvZGljYWxseSwgcGVyaGFwcyB1c2luZyBkZXBlbmRlbmN5IGFuYWx5c2lzIHRvb2xzIG9yIGJ5IGV4YW1pbmluZyB0aGUgYnVpbGQgcHJvY2VzcywgdG8gZW5zdXJlIEkndmUgaWRlbnRpZmllZCBldmVyeXRoaW5nIHRoYXQgYE5YUFdJRklgIG5lZWRzIHRvIG9wZXJhdGUgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTc2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6MjYuNjQ5MTgwNzkyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTlhQV0lGSVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk5YUCBXaUZpIERyaXZlclxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG54cHdpZmkuXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBOWFBXSUZJX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XFxcIlxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBOWFBXSUZJIFxcdTAwMjZcXHUwMDI2IE1NQ1xcbiAgMTU6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgMTY6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBOWFBcXG4gIDE5OlxcdFxcdCAgSVc2MXggaW50ZXJmYWNlLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjI2LjY0OTI5NzA2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTA4Mjk5MTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhpcyBTRElPIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgaXQgaGluZ2VzIG9uIGBDRkc4MDIxMWAgYW5kIGBNTUNgLiBUaGlzIHNlZW1zIGxpa2UgYSBoYXJkd2FyZSBkcml2ZXIsIHNwZWNpZmljYWxseSBhbiBTRElPIGRyaXZlciBmb3IgdGhlIE5YUCBJVzYxeC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbjogY2FuIHdlIGZ1enogdGhpcyBpbiBRRU1VPyBUaGF0J3MgYWx3YXlzIHRoZSBmaXJzdCBodXJkbGUuXG5cblR5cGljYWxseSwgU0RJTyBkcml2ZXJzIGFyZSBhIHBhaW4gYmVjYXVzZSB0aGV5IHVzdWFsbHkgZGVtYW5kIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGF0IGxlYXN0IGEgZGVjZW50IFNESU8gZW11bGF0b3IuIEkgd2FzIGJyaWVmbHkgaG9wZWZ1bCBiZWNhdXNlIG9mIGBtYWM4MDIxMV9od3NpbWAgd2hpY2ggaXMgc29mdHdhcmUtZW11bGF0ZWQsIGJ1dCB0aGlzIGlzIGEgKnNwZWNpZmljKiBoYXJkd2FyZSBkcml2ZXIgZm9yIHRoZSBOWFAgSVc2MXgsIHdoaWNoIG1lYW5zIHdl4oCZcmUgcHJvYmFibHkgbm90IGluIHRoZSBjbGVhci4gU28sIGxldOKAmXMgZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYSBzdGFuZGFyZCBkcml2ZXIgdGhhdCB3ZSBjYW4gZnV6ei5cblxuTm93LCByZWZlcnJpbmcgdG8gdGhlIHByb21wdC4uLiBpdCB3YW50cyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCdzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLiBUaGlzIGlzIG5laXRoZXI7IHRoaXMgaXMgYW4gU0RJTyBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgTlhQIFdpRmkgY2hpcC4gU3RpbGwsIGNhbiB3ZSBmdXp6IGl0P1xuXG5NeSBndXQgc2F5cyAqbm8qLCBhdCBsZWFzdCBub3QgZWFzaWx5LiBTeXprYWxsZXIgaGFzIHNvbWUgc3VwcG9ydCBmb3IgVVNCIGFuZCBQQ0kgZnV6emluZywgYnV0IFNESU8gZW11bGF0aW9uIGlzIG5vdCBzb21ldGhpbmcgSeKAmXZlIHNlZW4uIEknbSB0cnlpbmcgdG8gdGhpbmsgb2YgYW55IGNsZXZlciB3b3JrYXJvdW5kcy4gSXMgdGhlcmUgYW55IHBvc3NpYmlsaXR5IG9mIHJlYWNoaW5nIHRoZXNlIGZ1bmN0aW9ucyB2aWEgbmV0bGluay9jZmc4MDIxMSAqd2l0aG91dCogdGhlIGhhcmR3YXJlIGJlaW5nIHBoeXNpY2FsbHkgcHJlc2VudD9cblxuR2VuZXJhbGx5LCBjZmc4MDIxMSBkcml2ZXJzIHJlZ2lzdGVyIHdoZW4gdGhlIGhhcmR3YXJlIGlzIHByb2JlZC4gSWYgdGhlIGhhcmR3YXJlIGlzbuKAmXQgcHJvYmVkLCBubyBuZXRkZXYgb3Igd2lwaHkgYXJlIGNyZWF0ZWQuIE5vIG5ldGRldi93aXBoeSBtZWFucyB0aG9zZSBjZmc4MDIxMSBjYWxsYmFja3MgYXJlIHVucmVhY2hhYmxlLCByaWdodD8gVGhlcmVmb3JlLCBJIHNob3VsZCBjaGVjayB3aGV0aGVyIGBueHB3aWZpYCByZWdpc3RlcnMgYSB2aXJ0dWFsIGRldmljZSBvciBpZiBpdCBkZW1hbmRzIHRoZSBTRElPIHByb2JlLiBUaGlzIHdvdWxkIGRldGVybWluZSB3aGV0aGVyIGl0J3MgcG9zc2libGUgdG8gZnV6eiB3aXRob3V0IHRoZSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ2MSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjM0LjU1NzU5OTMwNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM3Njk3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xNjYwPW54cHdpZmlfY2xlYW51cF9tb2R1bGUodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzoxNjY3Om1vZHVsZV9pbml0KG54cHdpZmlfaW5pdF9tb2R1bGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY4LW1vZHVsZV9leGl0KG54cHdpZmlfY2xlYW51cF9tb2R1bGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNTozNC42NTEzNzYxMTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5MzEzNDYwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG54cHdpZmlfaW5pdF9tb2R1bGVgIGZ1bmN0aW9uLiBJJ20gZ29pbmcgdG8gYXBwcm9hY2ggdGhpcyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgSSB1bmRlcnN0YW5kIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSBvZiBhIGRyaXZlciBpbml0aWFsaXphdGlvbiByb3V0aW5lLCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHNwZWNpZmljcyBvZiAqdGhpcyogcGFydGljdWxhciBtb2R1bGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgcGFydHM6IHdoYXQncyBiZWluZyBhbGxvY2F0ZWQsIHdoYXQncyBiZWluZyBpbml0aWFsaXplZCwgYW5kIHdoYXQncyBiZWluZyByZWdpc3RlcmVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHJlc291cmNlIGFsbG9jYXRpb24gKG1lbW9yeSwgaGFyZHdhcmUgcmVnaXN0ZXJzLCBldGMuKSwgaW5pdGlhbGl6YXRpb24gb2YgZGF0YSBzdHJ1Y3R1cmVzIHJlbGV2YW50IHRvIHRoZSBXaUZpIGludGVyZmFjZSwgYW5kIGNhbGxzIHRoYXQgaW50ZWdyYXRlIHRoaXMgbW9kdWxlIGludG8gdGhlIGtlcm5lbCdzIGRldmljZSBtYW5hZ2VtZW50IHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBJJ20gZXhwZWN0aW5nIHRvIHNlZSBjYWxscyByZWxhdGVkIHRvIHRoaW5ncyBsaWtlIHBsYXRmb3JtIGRyaXZlcnMsIGRldmljZSByZWdpc3RyYXRpb24sIGFuZCBwb3NzaWJseSBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIGZsb3csIHRoZSByZXNvdXJjZXMgdXNlZCwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJJ2xsIGJlIGRpc3NlY3RpbmcgdGhpcyBjb2RlIHdpdGggdGhvc2Uga2V5IGFyZWFzIGluIG1pbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzODgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNTozOC4zNDQ1MTUwNzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTYyMDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm54cHdpZmlfaW5pdF9tb2R1bGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xNjQ5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTY1MDpueHB3aWZpX2luaXRfbW9kdWxlKHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NjA9bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2Njc6bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjgtbW9kdWxlX2V4aXQobnhwd2lmaV9jbGVhbnVwX21vZHVsZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjM4LjQwOTA4MzIxMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAyMTM1OTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gYG54cHdpZmlfaW5pdF9tb2R1bGVgOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBgbnhwd2lmaV9pbml0X21vZHVsZWAqKlxuXG5BbHJpZ2h0LCBJJ20gbG9va2luZyBhdCBgbnhwd2lmaV9pbml0X21vZHVsZWAuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSAqZG9pbmcqLiBCYXNlZCBvbiB0aGUgbmFtZSBhbG9uZSwgSSdtIGFzc3VtaW5nIGl0J3MgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIHRoZSBOWFAgV2lGaSBtb2R1bGUuIFRoYXQgbWVhbnMgdGhpcyBpcyBwcm9iYWJseSB3aGVyZSB0aGUgY29yZSBzZXR1cCBoYXBwZW5zOiByZWdpc3RlciB0aGUgZGV2aWNlLCBhbGxvY2F0ZSByZXNvdXJjZXMsIG1heWJlIHBlcmZvcm0gaGFyZHdhcmUgcHJvYmluZywgc2V0IHVwIGludGVycnVwdCBoYW5kbGVycywgYW5kIGxpa2VseSByZWdpc3RlciBhbnkgbmVjZXNzYXJ5IGNoYXJhY3RlciBkZXZpY2VzIG9yIG5ldCBkZXZpY2VzLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBhIGxvdCBvZiBjYWxscyB0byBvdGhlciBrZXJuZWwgQVBJcyByZWxhdGVkIHRvIGRldmljZSBtYW5hZ2VtZW50IGFuZCBuZXR3b3JrIHN0YWNrIGNvbmZpZ3VyYXRpb24uIEl0J3MgbGlrZWx5IHRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBldmVyeXRoaW5nIE5YUCBXaUZpIHJlbGF0ZWQgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgdGhlIGtlcm5lbC4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgbGluY2hwaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NTUsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNTo0MS44MTEyMjI4MDdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjQ5LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjQ5OlxcdHN0YXRpYyBpbnRcXG4xNjUwOlxcdG54cHdpZmlfaW5pdF9tb2R1bGUodm9pZClcXG4xNjUxOlxcdHtcXG4xNjUyOlxcdCNpZmRlZiBDT05GSUdfREVCVUdfRlNcXG4xNjUzOlxcdFxcdG54cHdpZmlfZGVidWdmc19pbml0KCk7XFxuMTY1NDpcXHQjZW5kaWZcXG4xNjU1OlxcdFxcdHJldHVybiAwO1xcbjE2NTY6XFx0fVxcbjE2NTc6XFx0XFxuMTY1ODpcXHQvKiBNb2R1bGUgZXhpdDogcmVtb3ZlIGRlYnVnZnMgaWYgZW5hYmxlZC4gKi9cXG4xNjU5OlxcdHN0YXRpYyB2b2lkXFxuMTY2MDpcXHRueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuMTY2MTpcXHR7XFxuMTY2MjpcXHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxuMTY2MzpcXHRcXHRueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKCk7XFxuMTY2NDpcXHQjZW5kaWZcXG4xNjY1OlxcdH1cXG4xNjY2OlxcdFxcbjE2Njc6XFx0bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XFxuMTY2ODpcXHRtb2R1bGVfZXhpdChueHB3aWZpX2NsZWFudXBfbW9kdWxlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6NDEuODExNDI0MjQ3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDkxNjc4OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBDb25mdXNpb24gYW5kIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyBleHBlY3RpbmcgYG54cHdpZmlfaW5pdF9tb2R1bGVgIHRvIGhhbmRsZSBhIGxvdCBtb3JlLCBidXQgaXQgbG9va3MgbGlrZSBhbGwgaXQncyBkb2luZyBpcyBzZXR0aW5nIHVwIGRlYnVnZnMuIFRoYXQncy4uLiB1bmV4cGVjdGVkLiBXaGVyZSBpbiB0aGlzIHdob2xlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZG9lcyB0aGUgU0RJTyBkcml2ZXIgYWN0dWFsbHkgZ2V0IHJlZ2lzdGVyZWQ/IEknbSBtaXNzaW5nIHNvbWV0aGluZywgY2xlYXJseS4gVGltZSB0byBkaXZlIGRlZXBlciBhbmQgZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24uIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYHNkaW8uY2AuIEhvcGVmdWxseSwgdGhlIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIHRoZXJlLCBvciBhdCBsZWFzdCB0aGF0IGZpbGUgcHJvdmlkZXMgYSBjbGVhciBwb2ludGVyIHRvIHdoZXJlIGl0J3MgaGFwcGVuaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIG1vZHVsZSdzIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzNTgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjQ1LjMyMDYwMjQ2MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEyNjUwMTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6NDUuMzgxODc1MjJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzNjY3NTU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgU0RJTyBEcml2ZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBTRElPIGRyaXZlciByZWdpc3RyYXRpb24uIE15IGZpcnN0IGluc3RpbmN0LCBhbmQgdGhlIHBsYWNlIEkgYWx3YXlzIHN0YXJ0LCBpcyB0aGUgY29yZSBvZiB0aGUgZHJpdmVyOiBgc2Rpby5jYC4gVGhhdCBmaWxlIGlzIHRoZSBjZW50cmFsIGh1YiBmb3IgdGhlIFNESU8gc3Vic3lzdGVtLiBUaGUgZ29hbCBpcyB0byBxdWlja2x5IGxvY2F0ZSB0aGUgYHNkaW9fcmVnaXN0ZXJfZHJpdmVyYCBmdW5jdGlvbiwgYXMgdGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgZHJpdmVyJ3MgaW50ZXJmYWNlIHRvIHRoZSBjb3JlIGZyYW1ld29yayBsaWVzLiBLbm93aW5nIHRoaXMgZnVuY3Rpb24gd2lsbCB0ZWxsIG1lIGhvdyB0aGUgZGV2aWNlIGRyaXZlciBpcyBnb2luZyB0byBpbnRlcmFjdCB3aXRoIHRoZSBTRElPIHN1YnN5c3RlbSBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGUgZHJpdmVyIGlzIGJlaW5nIGJvdW5kIHRvIHRoZSBTRElPIGhvc3QgY29udHJvbGxlciBhbmQgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkIGluIHRoYXQgcHJvY2Vzcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGZpdHMgaW50byB0aGUgbGFyZ2VyIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU4NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjQ5LjQxODU1NTI0N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkyNzk4MjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNkaW9fcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6NDkuNDg3ODQ2NzI2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTQzMDQ4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipVbnBhY2tpbmcgRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cbkhtbSwgaG9sZCBvbiBhIHNlY29uZC4gVGhpcyB3aG9sZSBwcm9jZXNzIGhpbmdlcyBvbiBob3cgdGhlIGRyaXZlciBpdHNlbGYgaXMgcmVnaXN0ZXJlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBmdW5kYW1lbnRhbCBtZWNoYW5pc20gZmlyc3QuIElzIGl0IGEgc3RhdGljIHJlZ2lzdHJhdGlvbiB3aXRoaW4gdGhlIE9TIGtlcm5lbD8gT3IgaXMgdGhlcmUgc29tZSBkeW5hbWljIGRpc2NvdmVyeSBtZWNoYW5pc20gYXQgcGxheT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIGFwcHJvYWNoPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSB0YWJsZSBsb29rdXAsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggd2l0aCBkZXZpY2UgSURzIGFuZCBkcml2ZXIgcHJvYmluZz8gVGhpcyBcInJlZ2lzdHJhdGlvblwiIHN0ZXAgaXMgdGhlIGxpbmNocGluLiBJZiBJIGNhbid0IHBpbiB0aGF0IGRvd24sIEknbSBnb2luZyB0byBoYXZlIGEgaGFyZCB0aW1lIHVuZGVyc3RhbmRpbmcgdGhlIHdob2xlIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRoZSBzcGVjaWZpY3Mgb2YgdGhhdCByZWdpc3RyYXRpb24hIFRoZSBkZXZpbCwgYXMgYWx3YXlzLCBpcyBpbiB0aGUgZGV0YWlscywgc28gaG93IGFyZSB0aGUgZHJpdmVycyBiZWluZyBpZGVudGlmaWVkP1xuXG5cbiIsIklucHV0VG9rZW5zIjo5ODM2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNTo1Mi45NDIxNTQ2MDJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTg2OTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfc2Rpb19kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYz0yMjk0PXN0YXRpYyBzdHJ1Y3Qgbnhwd2lmaV9pZl9vcHMgc2Rpb19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtMjMyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM6MjMyMjptb2R1bGVfc2Rpb19kcml2ZXIobnhwd2lmaV9zZGlvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtMjMyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6NTMuMDQ0MDMwNTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxODg0MjAwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNESU8gRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbW9kdWxlX3NkaW9fZHJpdmVyKG54cHdpZmlfc2RpbylgLiBSaWdodCwgdGhhdCdzIGFuIFNESU8gZHJpdmVyIOKAkyBzcGVjaWZpY2FsbHksIGl0J3MgZGVzaWduZWQgZm9yIHRoZSBOWFAgSVc2MXggaGFyZHdhcmUuIFRoZSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IGluIGEgc3l6a2FsbGVyL1FFTVUgZW52aXJvbm1lbnQsIHdlJ3JlIG5vdCBlbXVsYXRpbmcgU0RJTy4gVGhpcyBtZWFucywgcHJhY3RpY2FsbHksIHRoYXQgdGhlIGRyaXZlcidzIGBwcm9iZWAgZnVuY3Rpb24sIHRoYXQgY3J1Y2lhbCBlbnRyeSBwb2ludCBmb3IgZGV2aWNlIGluaXRpYWxpemF0aW9uLCB3aWxsICpuZXZlciogYmUgY2FsbGVkLiBUaGlzIGRpcmVjdGx5IGltcGxpZXMgdGhhdCBub25lIG9mIHRoZSBjb2RlIHdpdGhpbiBgbnhwd2lmaWAsIHdoaWNoIHJlbGllcyBvbiB0aGF0IHByb2JlLCBpcyByZWFjaGFibGUgaW4gb3VyIHZpcnR1YWxpemVkIHNldHVwLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2gsIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIOKAkyBJIG5lZWQgdG8gcnVsZSBvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIGFsdGVybmF0ZSBpbnRlcmZhY2VzLCBzdWNoIGFzIFVTQiBvciBQQ0ksIHRoYXQgbWlnaHQgcHJvdmlkZSBhIGJhY2tkb29yIGludG8gdGhlIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTgzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE1OjU3Ljg2Mjg3NDkzNFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIxMzY5MzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV91c2JfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MTU6NTcuOTU1MDE5OTgzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNzg4OTY4NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MTA1NDMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE2OjMxLjc0Mzk5MTUwNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkxNTQyOTgzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjE2OjMyLjEzNTU0MjYxN1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDYyNjE4Mjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlNESU8gRHJpdmVyIEFuYWx5c2lzKipcblxuT2theSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IGFuIFNESU8tc3BlY2lmaWMgc2l0dWF0aW9uLiBTaW5jZSB0aGlzIHBhdGNoIHRhcmdldHMgY29kZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBTRElPIGhhcmR3YXJlLCB0aGVyZSdzIG5vIHdheSB0byBmdXp6IGl0IHdpdGhpbiBRRU1VLiBUaGF0J3MgYSBkZWFsYnJlYWtlciwgY29uc2lkZXJpbmcgdGhlIHByb2plY3QgY29uc3RyYWludHMuXG5cbkxldCBtZSBxdWlja2x5IHJlLWV2YWx1YXRlIHRoZSBwcm9tcHQ6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHRoYXQncyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJdCBhbHNvIG1lbnRpb25lZCB2ZW5kb3Itc3BlY2lmaWMgUENJZSwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSByZWFsIGhhcmR3YXJlLlwiXG5cbkJpbmdvISBUaGlzIHZlbmRvci1zcGVjaWZpYyBTRElPIGRyaXZlciBmb3IgTlhQIFdpRmkgYWxpZ25zIHBlcmZlY3RseSB3aXRoIHRob3NlIGNyaXRlcmlhLiBUaGUgU0RJTyBoYXJkd2FyZSBkZXBlbmRlbmN5IG1ha2VzIGl0IHVudmlhYmxlIGZvciBRRU1VLWJhc2VkIGZ1enppbmcuIE15IHJlc3BvbnNlIHdpbGwgYmUgV29ydGhGdXp6aW5nPWZhbHNlLCB3aXRoIHRoZSBjbGVhciBleHBsYW5hdGlvbiB0aGF0IGl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgU0RJTyBkcml2ZXIgdGhhdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZSwgd2hpY2ggUUVNVSBkb2Vzbid0IGVtdWxhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTk2LCJPdXRwdXRUb2tlbnMiOjEwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOToxNjozOC41OTgxNjQ2MjZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjEwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnhwd2lmaSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNESU8gZHJpdmVyIGZvciBOWFAgV2lGaSBjaGlwcyAoZS5nLiwgSVc2MXgpLiBTaW5jZSBTRElPIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3N5emthbGxlciBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUsIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnhwd2lmaSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNESU8gZHJpdmVyIGZvciBOWFAgV2lGaSBjaGlwcyAoZS5nLiwgSVc2MXgpLiBTaW5jZSBTRElPIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3N5emthbGxlciBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUsIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbn56t[1] Phase: Running StartedAt: 2026-08-03 19:16:50 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbn56t[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-03 19:16:50 +0000 UTC FinishedAt: 2026-08-03 19:16:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}