Name: series-workflowkxjrv Phase: Failed StartedAt: 2026-09-04 03:52:20 +0000 UTC FinishedAt: 2026-09-04 04:10:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkxjrv[0] Phase: Succeeded StartedAt: 2026-09-04 03:52:20 +0000 UTC FinishedAt: 2026-09-04 04:10:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkxjrv[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 03:52:20 +0000 UTC FinishedAt: 2026-09-04 04:10:20 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgYnVmZmVyIGJvdW5kcyBjaGVja2luZyBmb3IgRVRIVE9PTF9HUlhDTFNSTEFMTCBpbiBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChCcm9hZGNvbSBTdGFyZmlnaHRlciAyIERTQSBzd2l0Y2gsIE1hcnZlbGwgODhFNnh4eCBEU0Egc3dpdGNoLCBhbmQgTmV0cm9ub21lIE5GUCBTbWFydE5JQykgYW5kIHVwZGF0ZXMgZG9jIGNvbW1lbnRzIGluIGluY2x1ZGUvbGludXgvZXRodG9vbC5oLiBBbGwgZXhlY3V0YWJsZSBjb2RlIGNoYW5nZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHZlbmRvciBoYXJkd2FyZSBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDcy9Tb0MvTURJTyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBhbmQgdGhlIGNoYW5nZSB0byBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaCBpcyBkb2N1bWVudGF0aW9uIG9ubHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzk0ZTY3ZDgzZTMyZGZiZGI5N2NkOWIwYTUwNWVlNmJhZDdjMzU4NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDQ6MDk6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmMgYi9kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuY1xuaW5kZXggNTBkM2E4MThlYjFiNy4uODRhMDg2YzNlOTliNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuY1xuQEAgLTEwODgsNiAmIzQzOzEwODgsOCBAQCBzdGF0aWMgaW50IGJjbV9zZjJfY2ZwX3J1bGVfZ2V0X2FsbChzdHJ1Y3QgYmNtX3NmMl9wcml2ICpwcml2LFxuIFx0dW5zaWduZWQgaW50IGluZGV4ID0gMSwgcnVsZXNfY250ID0gMDtcbiBcbiBcdGZvcl9lYWNoX3NldF9iaXRfZnJvbShpbmRleCwgcHJpdi1cdTAwM2VjZnAudW5pcXVlLCBwcml2LVx1MDAzZW51bV9jZnBfcnVsZXMpIHtcbiYjNDM7XHRcdGlmIChydWxlc19jbnQgPT0gbmZjLVx1MDAzZXJ1bGVfY250KVxuJiM0MztcdFx0XHRyZXR1cm4gLUVNU0dTSVpFO1xuIFx0XHRydWxlX2xvY3NbcnVsZXNfY250XSA9IGluZGV4O1xuIFx0XHRydWxlc19jbnQmIzQzOyYjNDM7O1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbmluZGV4IDgwYjg3N2M3NDUxM2QuLjdmNjhhMGM1NTgwMjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbkBAIC0yNDM4LDYgJiM0MzsyNDM4LDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHRzdHJ1Y3QgZXRodG9vbF9yeF9mbG93X3NwZWMgKmZzID0gXHUwMDI2cnhuZmMtXHUwMDNlZnM7XG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cdTAwM2Vwcml2O1xuIFx0c3RydWN0IG12ODhlNnh4eF9wb2xpY3kgKnBvbGljeTtcbiYjNDM7XHR1MzIgY250ID0gMDtcbiBcdGludCBlcnI7XG4gXHRpbnQgaWQ7XG4gXG5AQCAtMjQ2MywxMSAmIzQzOzI0NjQsMTggQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOlxuIFx0XHRyeG5mYy1cdTAwM2VkYXRhID0gMDtcbi1cdFx0cnhuZmMtXHUwMDNlcnVsZV9jbnQgPSAwO1xuLVx0XHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2Y2hpcC1cdTAwM2Vwb2xpY2llcywgcG9saWN5LCBpZClcbi1cdFx0XHRpZiAocG9saWN5LVx1MDAzZXBvcnQgPT0gcG9ydClcbi1cdFx0XHRcdHJ1bGVfbG9jc1tyeG5mYy1cdTAwM2VydWxlX2NudCYjNDM7JiM0MztdID0gaWQ7XG4gXHRcdGVyciA9IDA7XG4mIzQzO1x0XHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2Y2hpcC1cdTAwM2Vwb2xpY2llcywgcG9saWN5LCBpZCkge1xuJiM0MztcdFx0XHRpZiAocG9saWN5LVx1MDAzZXBvcnQgIT0gcG9ydClcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdFx0aWYgKGNudCA9PSByeG5mYy1cdTAwM2VydWxlX2NudCkge1xuJiM0MztcdFx0XHRcdGVyciA9IC1FTVNHU0laRTtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0XHRydWxlX2xvY3NbY250JiM0MzsmIzQzO10gPSBpZDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGlmICghZXJyKVxuJiM0MztcdFx0XHRyeG5mYy1cdTAwM2VydWxlX2NudCA9IGNudDtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRlcnIgPSAtRU9QTk9UU1VQUDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2V0aHRvb2wuY1xuaW5kZXggYTJhODlkNDhlM2NhYy4uNGU4MzYzNzcxNWUwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNcbkBAIC0xNDIxLDcgJiM0MzsxNDIxLDggQEAgc3RhdGljIGludCBuZnBfbmV0X2dldF9mc19ydWxlKHN0cnVjdCBuZnBfbmV0ICpubiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcbiBcdHJldHVybiAtRU5PRU5UO1xuIH1cbiBcbi1zdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX2xvYyhzdHJ1Y3QgbmZwX25ldCAqbm4sIHUzMiAqcnVsZV9sb2NzKVxuJiM0MztzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX2xvYyhzdHJ1Y3QgbmZwX25ldCAqbm4sIHN0cnVjdCBldGh0b29sX3J4bmZjICpjbWQsXG4mIzQzO1x0XHRcdCAgICAgIHUzMiAqcnVsZV9sb2NzKVxuIHtcbiBcdHN0cnVjdCBuZnBfZnNfZW50cnkgKmVudHJ5O1xuIFx0dTMyIGNvdW50ID0gMDtcbkBAIC0xNDI5LDggJiM0MzsxNDMwLDEyIEBAIHN0YXRpYyBpbnQgbmZwX25ldF9nZXRfZnNfbG9jKHN0cnVjdCBuZnBfbmV0ICpubiwgdTMyICpydWxlX2xvY3MpXG4gXHRpZiAoIShubi1cdTAwM2VjYXBfdzEgXHUwMDI2IE5GUF9ORVRfQ0ZHX0NUUkxfRkxPV19TVEVFUikpXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksIFx1MDAyNm5uLVx1MDAzZWZzLmxpc3QsIG5vZGUpXG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgXHUwMDI2bm4tXHUwMDNlZnMubGlzdCwgbm9kZSkge1xuJiM0MztcdFx0aWYgKGNvdW50ID09IGNtZC1cdTAwM2VydWxlX2NudClcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiBcdFx0cnVsZV9sb2NzW2NvdW50JiM0MzsmIzQzO10gPSBlbnRyeS1cdTAwM2Vsb2M7XG4mIzQzO1x0fVxuJiM0MztcdGNtZC1cdTAwM2VydWxlX2NudCA9IGNvdW50O1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTE0NTUsNyAmIzQzOzE0NjAsNyBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X3J4bmZjKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdHJldHVybiBuZnBfbmV0X2dldF9mc19ydWxlKG5uLCBjbWQpO1xuIFx0Y2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOlxuIFx0XHRjbWQtXHUwMDNlZGF0YSA9IE5GUF9GU19NQVhfRU5UUlk7XG4tXHRcdHJldHVybiBuZnBfbmV0X2dldF9mc19sb2Mobm4sIHJ1bGVfbG9jcyk7XG4mIzQzO1x0XHRyZXR1cm4gbmZwX25ldF9nZXRfZnNfbG9jKG5uLCBjbWQsIHJ1bGVfbG9jcyk7XG4gXHRkZWZhdWx0OlxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHR9XG5AQCAtMTY5OCw4ICYjNDM7MTcwMywxNCBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZnNfYWRkKHN0cnVjdCBuZnBfbmV0ICpubiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcbiBcbiBcdFx0XHRubi1cdTAwM2Vmcy5jb3VudC0tO1xuIFx0XHRcdGVyciA9IG5mcF9uZXRfZnNfYWRkX2h3KG5uLCBuZXcpO1xuLVx0XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0XHQvKiBtYm94IGJyb2tlbiwgYWRkaW5nIHRoZSBvbGQgcnVsZSBiYWNrIHdpbGxcbiYjNDM7XHRcdFx0XHQgKiBsaWtlbHkgYWxzbyBmYWlsLlxuJiM0MztcdFx0XHRcdCAqL1xuJiM0MztcdFx0XHRcdGxpc3RfZGVsKFx1MDAyNmVudHJ5LVx1MDAzZW5vZGUpO1xuJiM0MztcdFx0XHRcdGtmcmVlKGVudHJ5KTtcbiBcdFx0XHRcdGdvdG8gZXJyO1xuJiM0MztcdFx0XHR9XG4gXG4gXHRcdFx0bm4tXHUwMDNlZnMuY291bnQmIzQzOyYjNDM7O1xuIFx0XHRcdGxpc3RfcmVwbGFjZShcdTAwMjZlbnRyeS1cdTAwM2Vub2RlLCBcdTAwMjZuZXctXHUwMDNlbm9kZSk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuaW5kZXggMTI2ODNiNWQxMjVlNC4uMjUzNjAwYzBlY2NkZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuQEAgLTEwNTcsNiAmIzQzOzEwNTcsMTIgQEAgc3RydWN0IGtlcm5lbF9ldGh0b29sX3RzX2luZm8ge1xuICAqIEBnZXRfc3NldF9jb3VudDogR2V0IG51bWJlciBvZiBzdHJpbmdzIHRoYXQgQGdldF9zdHJpbmdzIHdpbGwgd3JpdGUuXG4gICogQGdldF9yeG5mYzogR2V0IFJYIGZsb3cgY2xhc3NpZmljYXRpb24gcnVsZXMuICBSZXR1cm5zIGEgbmVnYXRpdmVcbiAgKlx0ZXJyb3IgY29kZSBvciB6ZXJvLlxuJiM0MzsgKlx0Tm90ZSB0aGF0IGZvciAlRVRIVE9PTF9HUlhDTFNSTEFMTCBydWxlX2NudCBhbmQgc2l6ZSBvZiB0aGUgYXJyYXlzXG4mIzQzOyAqXHRpcyB1c2VyLXByb3ZpZGVkLCBhbmQgbm90IGd1YXJhbnRlZWQgdG8gbWF0Y2ggd2hhdCBkcml2ZXIgd291bGRcbiYjNDM7ICpcdGhhdmUgcmVwb3J0ZWQgdmlhICVFVEhUT09MX0dSWENMU1JMQ05ULiBEcml2ZXJzIG11c3QgcmV0dXJuIC0lRU1TR1NJWkVcbiYjNDM7ICpcdHdoZW4gcnVsZV9jbnQgaXMgdG9vIHNtYWxsLiBydWxlX2xvY3MgaXMgJU5VTEwgd2hlbiBydWxlX2NudCBpcyB6ZXJvLlxuJiM0MzsgKlx0T24gc3VjY2VzcyBkcml2ZXJzIG11c3Qgc2V0IHJ1bGVfY250IHRvIHRoZSBudW1iZXIgb2YgbG9jYXRpb25zIHRoZXlcbiYjNDM7ICpcdGZpbGxlZCBpbiwgdGhlIGNvcmUgY29waWVzIG91dCBleGFjdGx5IHRoYXQgbWFueS5cbiAgKiBAc2V0X3J4bmZjOiBTZXQgUlggZmxvdyBjbGFzc2lmaWNhdGlvbiBydWxlcy4gIFJldHVybnMgYSBuZWdhdGl2ZVxuICAqXHRlcnJvciBjb2RlIG9yIHplcm8uXG4gICogQGZsYXNoX2RldmljZTogV3JpdGUgYSBmaXJtd2FyZSBpbWFnZSB0byBkZXZpY2UmIzM5O3MgZmxhc2ggbWVtb3J5LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBhZGRzIGJ1ZmZlciBib3VuZHMgY2hlY2tpbmcgZm9yIEVUSFRPT0xfR1JYQ0xTUkxBTEwgaW4gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBEU0Egc3dpdGNoLCBNYXJ2ZWxsIDg4RTZ4eHggRFNBIHN3aXRjaCwgYW5kIE5ldHJvbm9tZSBORlAgU21hcnROSUMpIGFuZCB1cGRhdGVzIGRvYyBjb21tZW50cyBpbiBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC4gQWxsIGV4ZWN1dGFibGUgY29kZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB2ZW5kb3IgaGFyZHdhcmUgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3MvU29DL01ESU8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIHRoZSBjaGFuZ2UgdG8gaW5jbHVkZS9saW51eC9ldGh0b29sLmggaXMgZG9jdW1lbnRhdGlvbiBvbmx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM5NGU2N2Q4M2UzMmRmYmRiOTdjZDliMGE1MDVlZTZiYWQ3YzM1ODYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCA0IDA0OjA5OjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmMgYi9kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYwppbmRleCA1MGQzYTgxOGViMWI3Li44NGEwODZjM2U5OWI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYwpAQCAtMTA4OCw2ICYjNDM7MTA4OCw4IEBAIHN0YXRpYyBpbnQgYmNtX3NmMl9jZnBfcnVsZV9nZXRfYWxsKHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXYsCiAJdW5zaWduZWQgaW50IGluZGV4ID0gMSwgcnVsZXNfY250ID0gMDsKIAogCWZvcl9lYWNoX3NldF9iaXRfZnJvbShpbmRleCwgcHJpdi0mZ3Q7Y2ZwLnVuaXF1ZSwgcHJpdi0mZ3Q7bnVtX2NmcF9ydWxlcykgewomIzQzOwkJaWYgKHJ1bGVzX2NudCA9PSBuZmMtJmd0O3J1bGVfY250KQomIzQzOwkJCXJldHVybiAtRU1TR1NJWkU7CiAJCXJ1bGVfbG9jc1tydWxlc19jbnRdID0gaW5kZXg7CiAJCXJ1bGVzX2NudCYjNDM7JiM0Mzs7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYwppbmRleCA4MGI4NzdjNzQ1MTNkLi43ZjY4YTBjNTU4MDI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYwpAQCAtMjQzOCw2ICYjNDM7MjQzOCw3IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2dldF9yeG5mYyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCXN0cnVjdCBldGh0b29sX3J4X2Zsb3dfc3BlYyAqZnMgPSAmYW1wO3J4bmZjLSZndDtmczsKIAlzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy0mZ3Q7cHJpdjsKIAlzdHJ1Y3QgbXY4OGU2eHh4X3BvbGljeSAqcG9saWN5OwomIzQzOwl1MzIgY250ID0gMDsKIAlpbnQgZXJyOwogCWludCBpZDsKIApAQCAtMjQ2MywxMSAmIzQzOzI0NjQsMTggQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiAJCWJyZWFrOwogCWNhc2UgRVRIVE9PTF9HUlhDTFNSTEFMTDoKIAkJcnhuZmMtJmd0O2RhdGEgPSAwOwotCQlyeG5mYy0mZ3Q7cnVsZV9jbnQgPSAwOwotCQlpZHJfZm9yX2VhY2hfZW50cnkoJmFtcDtjaGlwLSZndDtwb2xpY2llcywgcG9saWN5LCBpZCkKLQkJCWlmIChwb2xpY3ktJmd0O3BvcnQgPT0gcG9ydCkKLQkJCQlydWxlX2xvY3NbcnhuZmMtJmd0O3J1bGVfY250JiM0MzsmIzQzO10gPSBpZDsKIAkJZXJyID0gMDsKJiM0MzsJCWlkcl9mb3JfZWFjaF9lbnRyeSgmYW1wO2NoaXAtJmd0O3BvbGljaWVzLCBwb2xpY3ksIGlkKSB7CiYjNDM7CQkJaWYgKHBvbGljeS0mZ3Q7cG9ydCAhPSBwb3J0KQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsJCQlpZiAoY250ID09IHJ4bmZjLSZndDtydWxlX2NudCkgewomIzQzOwkJCQllcnIgPSAtRU1TR1NJWkU7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCX0KJiM0MzsJCQlydWxlX2xvY3NbY250JiM0MzsmIzQzO10gPSBpZDsKJiM0MzsJCX0KJiM0MzsJCWlmICghZXJyKQomIzQzOwkJCXJ4bmZjLSZndDtydWxlX2NudCA9IGNudDsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZXJyID0gLUVPUE5PVFNVUFA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2V0aHRvb2wuYwppbmRleCBhMmE4OWQ0OGUzY2FjLi40ZTgzNjM3NzE1ZTAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmMKQEAgLTE0MjEsNyAmIzQzOzE0MjEsOCBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX3J1bGUoc3RydWN0IG5mcF9uZXQgKm5uLCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKQogCXJldHVybiAtRU5PRU5UOwogfQogCi1zdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX2xvYyhzdHJ1Y3QgbmZwX25ldCAqbm4sIHUzMiAqcnVsZV9sb2NzKQomIzQzO3N0YXRpYyBpbnQgbmZwX25ldF9nZXRfZnNfbG9jKHN0cnVjdCBuZnBfbmV0ICpubiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZCwKJiM0MzsJCQkgICAgICB1MzIgKnJ1bGVfbG9jcykKIHsKIAlzdHJ1Y3QgbmZwX2ZzX2VudHJ5ICplbnRyeTsKIAl1MzIgY291bnQgPSAwOwpAQCAtMTQyOSw4ICYjNDM7MTQzMCwxMiBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX2xvYyhzdHJ1Y3QgbmZwX25ldCAqbm4sIHUzMiAqcnVsZV9sb2NzKQogCWlmICghKG5uLSZndDtjYXBfdzEgJmFtcDsgTkZQX05FVF9DRkdfQ1RSTF9GTE9XX1NURUVSKSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgJmFtcDtubi0mZ3Q7ZnMubGlzdCwgbm9kZSkKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgJmFtcDtubi0mZ3Q7ZnMubGlzdCwgbm9kZSkgewomIzQzOwkJaWYgKGNvdW50ID09IGNtZC0mZ3Q7cnVsZV9jbnQpCiYjNDM7CQkJcmV0dXJuIC1FTVNHU0laRTsKIAkJcnVsZV9sb2NzW2NvdW50JiM0MzsmIzQzO10gPSBlbnRyeS0mZ3Q7bG9jOwomIzQzOwl9CiYjNDM7CWNtZC0mZ3Q7cnVsZV9jbnQgPSBjb3VudDsKIAogCXJldHVybiAwOwogfQpAQCAtMTQ1NSw3ICYjNDM7MTQ2MCw3IEBAIHN0YXRpYyBpbnQgbmZwX25ldF9nZXRfcnhuZmMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJcmV0dXJuIG5mcF9uZXRfZ2V0X2ZzX3J1bGUobm4sIGNtZCk7CiAJY2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOgogCQljbWQtJmd0O2RhdGEgPSBORlBfRlNfTUFYX0VOVFJZOwotCQlyZXR1cm4gbmZwX25ldF9nZXRfZnNfbG9jKG5uLCBydWxlX2xvY3MpOwomIzQzOwkJcmV0dXJuIG5mcF9uZXRfZ2V0X2ZzX2xvYyhubiwgY21kLCBydWxlX2xvY3MpOwogCWRlZmF1bHQ6CiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAl9CkBAIC0xNjk4LDggJiM0MzsxNzAzLDE0IEBAIHN0YXRpYyBpbnQgbmZwX25ldF9mc19hZGQoc3RydWN0IG5mcF9uZXQgKm5uLCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKQogCiAJCQlubi0mZ3Q7ZnMuY291bnQtLTsKIAkJCWVyciA9IG5mcF9uZXRfZnNfYWRkX2h3KG5uLCBuZXcpOwotCQkJaWYgKGVycikKJiM0MzsJCQlpZiAoZXJyKSB7CiYjNDM7CQkJCS8qIG1ib3ggYnJva2VuLCBhZGRpbmcgdGhlIG9sZCBydWxlIGJhY2sgd2lsbAomIzQzOwkJCQkgKiBsaWtlbHkgYWxzbyBmYWlsLgomIzQzOwkJCQkgKi8KJiM0MzsJCQkJbGlzdF9kZWwoJmFtcDtlbnRyeS0mZ3Q7bm9kZSk7CiYjNDM7CQkJCWtmcmVlKGVudHJ5KTsKIAkJCQlnb3RvIGVycjsKJiM0MzsJCQl9CiAKIAkJCW5uLSZndDtmcy5jb3VudCYjNDM7JiM0Mzs7CiAJCQlsaXN0X3JlcGxhY2UoJmFtcDtlbnRyeS0mZ3Q7bm9kZSwgJmFtcDtuZXctJmd0O25vZGUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaAppbmRleCAxMjY4M2I1ZDEyNWU0Li4yNTM2MDBjMGVjY2RmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaApAQCAtMTA1Nyw2ICYjNDM7MTA1NywxMiBAQCBzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfdHNfaW5mbyB7CiAgKiBAZ2V0X3NzZXRfY291bnQ6IEdldCBudW1iZXIgb2Ygc3RyaW5ncyB0aGF0IEBnZXRfc3RyaW5ncyB3aWxsIHdyaXRlLgogICogQGdldF9yeG5mYzogR2V0IFJYIGZsb3cgY2xhc3NpZmljYXRpb24gcnVsZXMuICBSZXR1cm5zIGEgbmVnYXRpdmUKICAqCWVycm9yIGNvZGUgb3IgemVyby4KJiM0MzsgKglOb3RlIHRoYXQgZm9yICVFVEhUT09MX0dSWENMU1JMQUxMIHJ1bGVfY250IGFuZCBzaXplIG9mIHRoZSBhcnJheXMKJiM0MzsgKglpcyB1c2VyLXByb3ZpZGVkLCBhbmQgbm90IGd1YXJhbnRlZWQgdG8gbWF0Y2ggd2hhdCBkcml2ZXIgd291bGQKJiM0MzsgKgloYXZlIHJlcG9ydGVkIHZpYSAlRVRIVE9PTF9HUlhDTFNSTENOVC4gRHJpdmVycyBtdXN0IHJldHVybiAtJUVNU0dTSVpFCiYjNDM7ICoJd2hlbiBydWxlX2NudCBpcyB0b28gc21hbGwuIHJ1bGVfbG9jcyBpcyAlTlVMTCB3aGVuIHJ1bGVfY250IGlzIHplcm8uCiYjNDM7ICoJT24gc3VjY2VzcyBkcml2ZXJzIG11c3Qgc2V0IHJ1bGVfY250IHRvIHRoZSBudW1iZXIgb2YgbG9jYXRpb25zIHRoZXkKJiM0MzsgKglmaWxsZWQgaW4sIHRoZSBjb3JlIGNvcGllcyBvdXQgZXhhY3RseSB0aGF0IG1hbnkuCiAgKiBAc2V0X3J4bmZjOiBTZXQgUlggZmxvdyBjbGFzc2lmaWNhdGlvbiBydWxlcy4gIFJldHVybnMgYSBuZWdhdGl2ZQogICoJZXJyb3IgY29kZSBvciB6ZXJvLgogICogQGZsYXNoX2RldmljZTogV3JpdGUgYSBmaXJtd2FyZSBpbWFnZSB0byBkZXZpY2UmIzM5O3MgZmxhc2ggbWVtb3J5Lgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjIxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFN5emthbGxlciBQYXRjaCBTZXJpZXMgZm9yIE5ldHdvcmsgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBzZXJpZXMgaW50ZW5kZWQgZm9yIHN5emthbGxlciBmdXp6aW5nLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2VzIGFuZCwgY3JpdGljYWxseSwgaG93IGFjY2Vzc2libGUgdGhlc2UgZHJpdmVycyBhcmUgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgdXNlciYjMzk7cyBpbnRlcmVzdCBoZXJlIGlzIHRvIGV2YWx1YXRlIHRoZSBwYXRjaCBpbiB0aGUgY29udGV4dCBvZiBoYXJkd2FyZS9yZWFjaGFiaWxpdHkuCgpMZXQmIzM5O3MgYnJlYWsgZG93biB3aGF0JiMzOTtzIGJlZW4gdG91Y2hlZDogSSBzZWUgdGhlc2UgZmlsZXM6IGBkcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuY2AsIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jYCwgYW5kIGEgc2ltcGxlIGNvbW1lbnQgdXBkYXRlIGluIGBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaGAuIE15IGltbWVkaWF0ZSByZWFjdGlvbiBpcyB0byB6ZXJvIGluIG9uIHRob3NlIGRyaXZlcnM6IEJyb2FkY29tIFN0YXJmaWdodGVyIDIsIE1hcnZlbGwgODhFNnh4eCBEU0Egc3dpdGNoZXMsIGFuZCBOZXRyb25vbWUgTkZQIG5ldHdvcmsgY2FyZC4KCk5vdyBjb21lcyB0aGUgY3J1Y2lhbCBxdWVzdGlvbi4gQXJlIHRoZXNlIGRyaXZlcnMgcmVhbGlzdGljYWxseSByZWFjaGFibGUgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZT8gQ2FuIEkgaW5zdGFudGlhdGUgdGhlbSwgZXZlbiBwYXJ0aWFsbHksIHdpdGhpbiBRRU1VIG9yIEdDRT8gT3IgZG8gdGhleSBkZXBlbmQgaGVhdmlseSBvbiBNRElPIGJ1c2VzLCBwbGF0Zm9ybSBkZXZpY2VzLCBQQ0llIEFTSUNzLCBvciBvdGhlciBoYXJkd2FyZSBkZXBlbmRlbmNpZXM/IEkgbmVlZCB0byBrbm93IGlmIHRoaXMgcGF0Y2ggY2FuIGJlIGVmZmVjdGl2ZWx5IHRlc3RlZCB3aXRoaW4gYSB0eXBpY2FsIGZ1enppbmcgc2V0dXAuCgpJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZ3JlcCB0aGUga2VybmVsIHNvdXJjZSBhbmQgY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgdGhlc2UgZHJpdmVycy4gSSB3YW50IHRvIHNlZSBob3cgdGhleSYjMzk7cmUgY29uZmlndXJlZCwgd2hhdCBkZXBlbmRlbmNpZXMgdGhleSBoYXZlLCBhbmQgaWYgdGhlcmUmIzM5O3MgYW55IGluZGljYXRpb24gb2YgZW11bGF0ZWQgc3VwcG9ydC4gVGhpcyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZlYXNpYmlsaXR5IG9mIGZ1enppbmcgdGhlc2UgZHJpdmVycyBlZmZlY3RpdmVseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCQ01fU0YyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzU3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCBkaXZpbmcgaW50byB0aGUgc3ViamVjdCBtYXR0ZXI6CgoqKktjb25maWcgSW5zcGVjdGlvbiBmb3IgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9ucyBhcmUgYmVpbmcgaGFuZGxlZCB3aXRoaW4gdGhlc2UgcGFydGljdWxhciBkcml2ZXIgc3VidHJlZXMuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyB0aGV5JiMzOTtyZSB0aGUgaGVhcnQgb2YgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGJ1aWx0IGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkLCBiYXNlZCBvbiB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbG9vayBpbnRvIGBkcml2ZXJzL25ldC9kc2FgIOKAkyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlIGRyaXZlcnMgcmVzaWRlLCBzbyBJJiMzOTttIGV4cGVjdGluZyBzb21lIGludGVyZXN0aW5nIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBhbmQgZmVhdHVyZSBzZXRzIGluIHRoZXJlLiBUaGVuIEkmIzM5O2xsIHBvcCBvdmVyIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwYC4gSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBOZXRyb25vbWUgZGV2aWNlczsgSSYjMzk7bSBleHBlY3Rpbmcgc29tZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgdGhvc2U7IEkgd2FudCB0byBzZWUgd2hhdCBvcHRpb25zIGV4aXN0IGZvciB0aGF0IHNwZWNpYWxpemVkIGhhcmR3YXJlIHBsYXRmb3JtLCBpbmNsdWRpbmcgYW55IHVuaXF1ZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb25zIG9yIGZlYXR1cmUgdG9nZ2xlcyByZWxhdGVkIHRvIHRoZSBORlAgYXJjaGl0ZWN0dXJlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZHJpdmVycyBmaXQgaW50byB0aGUgbGFyZ2VyIG5ldHdvcmsgc3RhY2sgYW5kIGlkZW50aWZ5IGFueSBjb25maWd1cmF0aW9uIHBlY3VsaWFyaXRpZXMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gVGltZSB0byBzdGFydCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JjbV9zZjJ8bXY4OGU2eHh4fE5FVF9EU0EmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yPW1lbnUgXCYjMzQ7RGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSBkcml2ZXJzXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozOlx0ZGVwZW5kcyBvbiBORVRfRFNBXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9NT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy02LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6Nzpjb25maWcgTkVUX0RTQV9CQ01fU0YyXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctOS1cdGRlcGVuZHMgb24gSEFTX0lPTUVNXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMDpcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMS1cdHNlbGVjdCBGSVhFRF9QSFlcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE5OmNvbmZpZyBORVRfRFNBX0xPT1BcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7RFNBIG1vY2stdXAgRXRoZXJuZXQgc3dpdGNoIGNoaXAgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MjE6XHRzZWxlY3QgTkVUX0RTQV9UQUdfTk9ORVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMjItXHRzZWxlY3QgRklYRURfUEhZXG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9Mjk9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NVDc1MzBcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjMzOlx0c2VsZWN0IE5FVF9EU0FfVEFHX01US1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzQtXHRzZWxlY3QgUkVHTUFQX0lSUVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzU6XHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozNjpcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01NSU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDU6XHRkZXBlbmRzIG9uIE5FVF9EU0FfTVQ3NTMwXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Ni1cdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01My1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01NS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBNTUlPIGludGVyZmFjZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU2Olx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTctXHRkZXBlbmRzIG9uIEhBU19JT01FTVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTY1LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NjY6Y29uZmlnIE5FVF9EU0FfTVQ3NjI4XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzYyOCBFbWJlZGRlZCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNjgtXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgKFNPQ19NVDc2MjAgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6Njk6XHRzZWxlY3QgTkVUX0RTQV9UQUdfTVQ3NjI4XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03MC1cdHNlbGVjdCBNRURJQVRFS19GRV9TT0NfUEhZXG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzUtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo3Njpjb25maWcgTkVUX0RTQV9NVjg4RTYwNjBcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc3LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCA4OEU2MDYwIGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc4Olx0c2VsZWN0IE5FVF9EU0FfVEFHX1RSQUlMRVJcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTgzPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTg0LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6ODU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctODYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9OTk9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEwMC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEwMTpjb25maWcgTkVUX0RTQV9SWk4xX0E1UFNXXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDItXHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFJaL04xIEE1UFNXIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDMtXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEwNDpcdHNlbGVjdCBORVRfRFNBX1RBR19SWk4xX0E1UFNXXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDUtXHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEwOS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjExMDpjb25maWcgTkVUX0RTQV9LUzg5OTVcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTExMS1cdHRyaXN0YXRlIFwmIzM0O01pY3JlbCBLUzg5OTUgZmFtaWx5IDUtcG9ydHMgMTAvMTAwIEV0aGVybmV0IHN3aXRjaGVzXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMTItXHRkZXBlbmRzIG9uIFNQSVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTEzOlx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTExNC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMTctXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMTg6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMTktXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTIwOlx0c2VsZWN0IE5FVF9EU0FfVEFHX0xBTjkzMDNcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEyMS1cdHNlbGVjdCBSRUdNQVBcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMjYtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMjc6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzX0kyQ1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTI4LVx0dHJpc3RhdGUgXCYjMzQ7U01TQy9NaWNyb2NoaXAgTEFOOTMwMyAzLXBvcnRzIDEwLzEwMCBldGhlcm5ldCBzd2l0Y2ggaW4gSTJDIG1hbmFnZWQgbW9kZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEzMC1cdGRlcGVuZHMgb24gVkxBTl84MDIxUSB8fCBWTEFOXzgwMjFRPW5cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEzMTpcdHNlbGVjdCBORVRfRFNBX1NNU0NfTEFOOTMwM1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTMyLVx0c2VsZWN0IFJFR01BUF9JMkNcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMzYtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMzc6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEzOC1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBMQU45MzAzL0xBTjkzNTQgMy1wb3J0cyAxMC8xMDAgZXRoZXJuZXQgc3dpdGNoIGluIE1ESU8gbWFuYWdlZCBtb2RlXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMzk6XHRzZWxlY3QgTkVUX0RTQV9TTVNDX0xBTjkzMDNcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0MC1cdGRlcGVuZHMgb24gVkxBTl84MDIxUSB8fCBWTEFOXzgwMjFRPW5cbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNDQtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNDU6Y29uZmlnIE5FVF9EU0FfVklURVNTRV9WU0M3M1hYXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNDYtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTQ3Olx0c2VsZWN0IE5FVF9EU0FfVEFHX1ZTQzczWFhfODAyMVFcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0OC1cdHNlbGVjdCBGSVhFRF9QSFlcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNTQtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNTU6Y29uZmlnIE5FVF9EU0FfVklURVNTRV9WU0M3M1hYX1NQSVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTU2LVx0dHJpc3RhdGUgXCYjMzQ7Vml0ZXNzZSBWU0M3Mzg1LzczODgvNzM5NS83Mzk4IFNQSSBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE1Ny1cdGRlcGVuZHMgb24gU1BJXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNTg6XHRzZWxlY3QgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE1OS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjItXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNjM6Y29uZmlnIE5FVF9EU0FfVklURVNTRV9WU0M3M1hYX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjQtXHR0cmlzdGF0ZSBcJiMzNDtWaXRlc3NlIFZTQzczODUvNzM4OC83Mzk1LzczOTggUGxhdGZvcm0gbW9kZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjUtXHRkZXBlbmRzIG9uIEhBU19JT01FTVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTY2Olx0c2VsZWN0IE5FVF9EU0FfVklURVNTRV9WU0M3M1hYXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTcyOmNvbmZpZyBORVRfRFNBX1lUOTIxWFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNzQ6XHRzZWxlY3QgTkVUX0RTQV9UQUdfWVQ5MjFYXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNzUtXHRzZWxlY3QgTkVUX0lFRUU4MDIxUV9IRUxQRVJTIGlmIERDQlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyMzUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlF1aWNrIEtjb25maWcgQ2hlY2sqKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIGdldCBhIGxheSBvZiB0aGUgbGFuZCwgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyB0aGUgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjcm9zcy1yZWZlcmVuY2UgYSBjb3VwbGUgb2Yga2V5IEtjb25maWcgZmlsZXMgdG8gc2VlIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBzdHJ1Y3R1cmVkIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL0tjb25maWdgLiBUaGlzIHNob3VsZCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcywgZmVhdHVyZXMsIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBBIHF1aWNrIHNjYW4gb2YgdGhlc2Ugc2hvdWxkIGJlIGVub3VnaCB0byBnZXQgYSBncmFzcCBvZiB0aGVpciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHJlbGF0ZWQgZGVwZW5kZW5jaWVzIGJlZm9yZSBkaXZpbmcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBzb3VyY2UgY29kZS4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB1bnVzdWFsIG9yIGFueSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBmbGFncyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgYmVoYXZpb3IgSSYjMzk7bSBpbnZlc3RpZ2F0aW5nLiBUaGlzIGlzIGp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gYXZvaWQgd2FzdGluZyB0aW1lIGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIDg4RTZ4eHggRXRoZXJuZXQgc3dpdGNoIGZhYnJpYyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FcbiAgIDU6XHRcdHNlbGVjdCBJUlFfRE9NQUlOXG4gICA2Olx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfRURTQVxuICAgNzpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX0RTQVxuICAgODpcdFx0aGVscFxuICAgOTpcdFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIG1vc3Qgb2YgdGhlIE1hcnZlbGwgODhFNnh4eCBtb2RlbHMgb2ZcbiAgMTA6XHRcdCAgRXRoZXJuZXQgc3dpdGNoIGNoaXBzLCBleGNlcHQgODhFNjA2MC5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfUFRQXG4gIDEzOlx0XHRib29sIFwmIzM0O1BUUCBzdXBwb3J0IGZvciBNYXJ2ZWxsIDg4RTZ4eHhcJiMzNDtcbiAgMTQ6XHRcdGRlZmF1bHQgblxuICAxNTpcdFx0ZGVwZW5kcyBvbiAoTkVUX0RTQV9NVjg4RTZYWFggPSB5IFx1MDAyNlx1MDAyNiBQVFBfMTU4OF9DTE9DSyA9IHkpIHx8IFxcXG4gIDE2Olx0XHQgICAgICAgICAgIChORVRfRFNBX01WODhFNlhYWCA9IG0gXHUwMDI2XHUwMDI2IFBUUF8xNTg4X0NMT0NLKVxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBTYXkgWSB0byBlbmFibGUgUFRQIGhhcmR3YXJlIHRpbWVzdGFtcGluZyBvbiBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoXG4gIDE5Olx0XHQgIGNoaXBzIHRoYXQgc3VwcG9ydCBpdC5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfTEVEU1xuICAyMjpcdFx0Ym9vbCBcJiMzNDtMRUQgc3VwcG9ydCBmb3IgTWFydmVsbCA4OEU2eHh4XCYjMzQ7XG4gIDIzOlx0XHRkZWZhdWx0IHlcbiAgMjQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NVjg4RTZYWFhcbiAgMjU6XHRcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TkVUX0RTQV9NVjg4RTZYWFhcbiAgMjY6XHRcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xuICAyNzpcdFx0aGVscFxuICAyODpcdFx0ICBUaGlzIGVuYWJsZWQgc3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIExFRHMgYXR0YWNoZWQgdG8gdGhlXG4gIDI5Olx0XHQgIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2ggY2hpcHMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAxMwoJCQkJCQkJb3V0cHV0OiA2MwoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgTW9kdWxlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXZpY2UgZHJpdmVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYG12ODhlNnh4eGAsIGBiY21fc2YyYCwgYW5kIGBuZnBgIGFyZSBoYW5kbGVkIGR1cmluZyB0aGUgcHJvYmUgYW5kIGF0dGFjaCBwaGFzZS4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBkaWZmZXJlbmNlcyBhbmQgY29tbW9uYWxpdGllcyBpbiB0aGVpciBpbXBsZW1lbnRhdGlvbnMuIFNvLCBJJiMzOTtsbCBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gcGlucG9pbnQgZXhhY3RseSB3aGVyZSB0aGUgbW9kdWxlJiMzOTtzIGluaXRpYWxpemF0aW9uIGtpY2tzIG9mZi4gSSYjMzk7bGwgc2VhcmNoIGVhY2ggbW9kdWxlJiMzOTtzIGNvZGUgZm9yIGluc3RhbmNlcyBvZiAmIzM0O2luaXQmIzM0OyBvciAmIzM0O3Byb2JlJiMzNDsuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50cywgdGhlIHN0YXJ0aW5nIHBvaW50cyBmb3IgdGhlc2UgZHJpdmVycywgYW5kIGFsbG93IGEgZm9jdXNlZCBhbmFseXNpcy4gRnJvbSB0aGVyZSwgSSBjYW4gdHJhY2UgdGhlIGNvbnRyb2wgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXR8bW9kdWxlX21kaW9fZHJpdmVyfG1kaW9fZHJpdmVyX3JlZ2lzdGVyfHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcnxwY2lfcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzMDQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiBob3cgdGhlc2UgRFNBIHN3aXRjaCBjaGlwcyBhcmUgaW5pdGlhbGl6ZWQgYW5kIGludGVncmF0ZWQgaW50byB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoZSBjcnVjaWFsIHJlZ2lzdHJhdGlvbiBob29rcyBmb3IgdGhlc2UgbW9kdWxlcywgdGhlIGVudHJ5IHBvaW50cyB0aGF0IGVzc2VudGlhbGx5IHRlbGwgdGhlIGtlcm5lbCAmIzM0O0hleSwgSSYjMzk7bSBoZXJlIGFuZCByZWFkeSB0byBjb250cm9sIHRoaXMgaGFyZHdhcmUsJiMzNDsgYXJlIGdvaW5nIHRvIGJlIGx1cmtpbmcgaW4gdGhlIGRyaXZlciBzb3VyY2UgZmlsZXMgZm9yIHRoZXNlIHNwZWNpZmljIGNoaXBzLgoKKipMb2NhdGluZyBEcml2ZXIgUmVnaXN0cmF0aW9uKioKClNvLCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG15IHNlYXJjaCBvbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNgIGFuZCBgZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuY2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBodW50aW5nIGZvciB0aGUgc3RhbmRhcmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMg4oCTIHRoZSB0ZWxsLXRhbGUgc2lnbnMgb2YgYSBkcml2ZXImIzM5O3MgcHJlc2VuY2UuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGBtb2R1bGVfaW5pdGAgY2FsbHMsIGxpa2VseSBwb2ludGluZyB0byBhIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgY2hpcCYjMzk7cyBpbnRlcm5hbCBzdGF0ZSwgcmVnaXN0ZXJzIGl0IHdpdGggdGhlIERTQSBmcmFtZXdvcmssIGFuZCBwZXJoYXBzIGhvb2tzIGludG8gYW55IHBsYXRmb3JtLXNwZWNpZmljIHByb2JpbmcgbWVjaGFuaXNtcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNYXJ2ZWxsIGFuZCBCcm9hZGNvbSBjaGlwcyBhcmUgY29taW5nIG9ubGluZS4gSSYjMzk7bGwgYmUgaW50ZXJlc3RlZCB0byBzZWUgaG93IHRoZXkmIzM5O3ZlIGhhbmRsZWQgcmVnaXN0ZXJpbmcgdGhlbXNlbHZlcyBhcyBEU0EgZGV2aWNlcywgYW5kIEkgZXhwZWN0IHRvIHNlZSBzcGVjaWZpYyBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgcHJvYmFibHkgd2l0aGluIGBtb2R1bGVfaW5pdGAgZnVuY3Rpb25zLiBUaGlzIHNlYXJjaCBzaG91bGQgcHJvdmlkZSBhIGNydWNpYWwgZ2xpbXBzZSBpbnRvIHRoZSBvdmVyYWxsIHN5c3RlbSBpbml0aWFsaXphdGlvbiBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NzUyOT1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG12ODhlNnh4eF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUzOS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1NDA6bWRpb19tb2R1bGVfZHJpdmVyKG12ODhlNnh4eF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzU0MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgwNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBkZWxpdmVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCBjb25zaWRlcmF0aW9uczoKCioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFN3aXRjaCBEcml2ZXIgYW5kIENvbnNpZGVyaW5nIGEgQ29tcGFyaXNvbioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtdjg4ZTZ4eHhgLiBUaGF0JiMzOTtzIGFuIGBtZGlvX2RyaXZlcmAsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgTWFydmVsbCYjMzk7cyA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaGVzLiBJJiMzOTttIGludGltYXRlbHkgZmFtaWxpYXIgd2l0aCB0aGVzZSBraW5kcyBvZiBkcml2ZXJzLCBzbyB0aGlzIGlzIGFsbCBicmVhZC1hbmQtYnV0dGVyIHN0dWZmLiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBob3cgZG9lcyB0aGlzIGRyaXZlciBzdGFjayB1cCBhZ2FpbnN0IHNpbWlsYXIgaW1wbGVtZW50YXRpb25zPyBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGJlbmNobWFyayBpdCBhZ2FpbnN0IHRoZSBgYmNtX3NmMmAgZHJpdmVyLiBJIG5lZWQgdG8gZ2V0IGEgcGljdHVyZSBvZiB3aGF0IE1hcnZlbGwgaXMgb2ZmZXJpbmcgaGVyZSwgYW5kIGEgY29tcGFyaXNvbiB3aXRoIHRoZSBgYmNtX3NmMmAgZHJpdmVyIHdpbGwgZ2l2ZSBtZSBhIGJhc2VsaW5lIGZvciBldmFsdWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYmNtX3NmMiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDY5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBmaWxlIHNlYXJjaDoKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERyaXZlciBGaWxlcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biBzb21lIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYWAgZGlyZWN0b3J5IHRoYXQgYXJlIHJlbGF0ZWQgdG8gYGJjbV9zZjJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgYmNtX3NmMmAgbGlrZWx5IHJlZmVyZW5jZXMgYSBzcGVjaWZpYyBCcm9hZGNvbSAoQkNNKSBTd2l0Y2ggRmFicmljIChTRikgaGFyZHdhcmUgY29tcG9uZW50LiBHaXZlbiBteSBleHBlcnRpc2UgaW4gdGhpcyBhcmVhLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBhcHBhcmVudCB0aGF0IEkmIzM5O20gbGlrZWx5IGRlYWxpbmcgd2l0aCBkcml2ZXIgY29kZSBmb3IgYSBuZXR3b3JrIHN3aXRjaCBvciByZWxhdGVkIGhhcmR3YXJlLiBUaGUgYGRyaXZlcnMvbmV0L2RzYWAgZGlyZWN0b3J5IGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzLCBhcyBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGlzIGEgY29tbW9uIGZyYW1ld29yayBmb3IgaW50ZWdyYXRpbmcgc3dpdGNoIGhhcmR3YXJlIGludG8gdGhlIExpbnV4IGtlcm5lbC4KClRoZXJlZm9yZSwgbXkgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGUgZmlsZXMgSSBmaW5kIHdpbGwgY29udGFpbiB0aGUgZGV2aWNlIGRyaXZlciBjb2RlLCBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgcmVnaXN0ZXIgZGVmaW5pdGlvbnMsIG9yIHBvc3NpYmx5IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3Mgc3BlY2lmaWMgdG8gdGhlIGBiY21fc2YyYCBoYXJkd2FyZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igc291cmNlIGNvZGUgZmlsZXMgKGxpa2VseSBDIGZpbGVzLCBoZWFkZXIgZmlsZXMpIHRoYXQgd291bGQgaW1wbGVtZW50IHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBrZXJuZWwgYW5kIHRoZSBzd2l0Y2ggaGFyZHdhcmUuIFRoZSBzZWFyY2ggaXRzZWxmIGlzIHNpbXBsZTsgSSYjMzk7bGwgdXNlIHRvb2xzIGxpa2UgYGZpbmRgIGFuZCBgZ3JlcGAgb3IgbXkgcHJlZmVycmVkIElERSYjMzk7cyBzZWFyY2ggZnVuY3Rpb24uIFVsdGltYXRlbHksIEkgYW50aWNpcGF0ZSB0aGlzIHNlYXJjaCB3aWxsIGxlYWQgbWUgdG8gdGhlIGRyaXZlciBzb3VyY2UgdGhhdCB3aWxsIGxpa2VseSBpbXBsZW1lbnQgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGludGVyZmFjZSBmb3IgdGhlIGBiY21fc2YyYCBkZXZpY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2JjbV9zZjIuYyYjMzQ7LAogICAgJiMzNDtiY21fc2YyLmgmIzM0OywKICAgICYjMzQ7YmNtX3NmMl9jZnAuYyYjMzQ7LAogICAgJiMzNDtiY21fc2YyX3JlZ3MuaCYjMzQ7LAogICAgJiMzNDtkc2FfbG9vcC5jJiMzNDssCiAgICAmIzM0O2tzODk5NS5jJiMzNDssCiAgICAmIzM0O2xhbjkzMDMtY29yZS5jJiMzNDssCiAgICAmIzM0O2xhbjkzMDMuaCYjMzQ7LAogICAgJiMzNDtsYW45MzAzX2kyYy5jJiMzNDssCiAgICAmIzM0O2xhbjkzMDNfbWRpby5jJiMzNDssCiAgICAmIzM0O210NzUzMC1tZGlvLmMmIzM0OywKICAgICYjMzQ7bXQ3NTMwLW1taW8uYyYjMzQ7LAogICAgJiMzNDttdDc1MzAuYyYjMzQ7LAogICAgJiMzNDttdDc1MzAuaCYjMzQ7LAogICAgJiMzNDttdDc2MjguYyYjMzQ7LAogICAgJiMzNDttdjg4ZTYwNjAuYyYjMzQ7LAogICAgJiMzNDttdjg4ZTYwNjAuaCYjMzQ7LAogICAgJiMzNDtyem4xX2E1cHN3LmMmIzM0OywKICAgICYjMzQ7cnpuMV9hNXBzdy5oJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmMmIzM0OywKICAgICYjMzQ7dml0ZXNzZS12c2M3M3h4LXBsYXRmb3JtLmMmIzM0OywKICAgICYjMzQ7dml0ZXNzZS12c2M3M3h4LXNwaS5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UtdnNjNzN4eC5oJiMzNDssCiAgICAmIzM0O3l0OTIxeC5jJiMzNDssCiAgICAmIzM0O3l0OTIxeC5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2I1MyYjMzQ7LAogICAgJiMzNDtoaXJzY2htYW5uJiMzNDssCiAgICAmIzM0O2xhbnRpcSYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXAmIzM0OywKICAgICYjMzQ7bXY4OGU2eHh4JiMzNDssCiAgICAmIzM0O214bDg2Mnh4JiMzNDssCiAgICAmIzM0O25ldGMmIzM0OywKICAgICYjMzQ7b2NlbG90JiMzNDssCiAgICAmIzM0O3FjYSYjMzQ7LAogICAgJiMzNDtyZWFsdGVrJiMzNDssCiAgICAmIzM0O3NqYTExMDUmIzM0OywKICAgICYjMzQ7eHJzNzAweCYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzg5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEJDTV9TRjIgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIGNoZWNrIG91dCBob3cgdGhlIEJyb2FkY29tIFNGMiBkcml2ZXIgaXMgYmVpbmcgcmVnaXN0ZXJlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbG9vayBhdCBgZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgZHJpdmVyJiMzOTtzIHJlZ2lzdHJhdGlvbiBpcyBmdW5jdGlvbmluZyBhcyBleHBlY3RlZCwgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBpc3N1ZXMgaW4gaXRzIGluaXRpYWxpemF0aW9uIG9yIGJpbmRpbmcgcHJvY2Vzcy4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSBoYXJkd2FyZSBpcyBiZWhhdmluZyBhcHByb3ByaWF0ZWx5LiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgY29yZSByZWdpc3RyYXRpb24gbWVjaGFuaXNtcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcnxwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9MTYyNj1zdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMoYmNtX3NmMl9wbV9vcHMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNjI5LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxNjMwOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJjbV9zZjJfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNjMxLVx0LnByb2JlXHQ9IGJjbV9zZjJfc3dfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNjM5LX07XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjE2NDA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihiY21fc2YyX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTE2NDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjA0CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGJjbV9zZjIgRHJpdmVyKioKCk9rYXksIHNvICpiY21fc2YyKiBpcyB0aGUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIE9wZW5GbG93L3BsYXRmb3JtIGRyaXZlciwgdGhhdCYjMzk7cyB0YWlsb3JlZCBmb3IgdGhlIEJyb2FkY29tIFN0YXJmaWdodGVyIDIgc3dpdGNoIHNpbGljb24uIFRoYXQmIzM5O3MgZ29vZCBjb250ZXh0IHRvIHN0YXJ0IHdpdGgg4oCTIEkgY2FuIGltbWVkaWF0ZWx5IHBsYWNlIGl0IGluIHRoZSBlY29zeXN0ZW0uIEkga25vdyB3aGF0IHRoZSAmIzM0O2JjbSYjMzQ7IHByZWZpeCB1c3VhbGx5IGluZGljYXRlcywgYW5kICYjMzQ7U3RhcmZpZ2h0ZXIgMiYjMzQ7IGdpdmVzIG1lIGEgc29saWQgaGFyZHdhcmUgZm91bmRhdGlvbiB0byB3b3JrIGZyb20uCgpOb3csIGdpdmVuIHRoYXQgaXQmIzM5O3MgYSBCcm9hZGNvbSBzd2l0Y2gsIG15IG5leHQgcXVlc3Rpb24gaXMgaW5ldml0YWJseSwgaG93IGlzIGl0IGRlYWxpbmcgd2l0aCB0aGUgbmV0d29yayBmb3J3YXJkaW5nIHBsYW5lIChORlApPyBEb2VzIGl0IHJ1biB0aGUgZGF0YSBwbGFuZSBkaXJlY3RseSBpbiBCcm9hZGNvbSYjMzk7cyBzaWxpY29uIG9yIGRvZXMgaXQgcnVuIHNvbWUgc29mdHdhcmUgcHJvY2VzcyBvbiBhIGNvbnRyb2wgcGxhbmUgcHJvY2Vzc29yPyBXaGF0IHNwZWNpZmljIGFyY2hpdGVjdHVyZSBhcmUgd2UgdGFsa2luZyBhYm91dD8gTGV0JiMzOTtzIGNoZWNrIE5GUC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlcnxtb2R1bGVfcGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbWFpbi5jPTk0OT1zdGF0aWMgaW50IF9faW5pdCBuZnBfbWFpbl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbWFpbi5jLTk1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYzo5NjA6XHRlcnIgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm5mcF9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYy05NjEtXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYy05NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9tYWluLmM6OTY0Olx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZuZnBfbmV0dmZfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9tYWluLmMtOTY1LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE3MjAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgRHJpdmVyIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlc2UgZHJpdmVyIGNoYW5nZXMsIHN0YXJ0aW5nIHdpdGggYGRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoLiBJIHNlZSB0aGF0IGBiY21fc2YyX2NmcF9ydWxlX2dldF9hbGxgIGlzIGJlaW5nIGNhbGxlZCB3aXRoaW4gYGJjbV9zZjJfY2ZwX3J1bGVfZ2V0YC4gVGhpcyBzdWdnZXN0cyBhIGRlcGVuZGVuY3kgb3IgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhvc2UgdHdvIGZ1bmN0aW9ucy4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBgYmNtX3NmMl9jZnBfcnVsZV9nZXRfYWxsYCB0byBzZWUgd2hlcmUgZWxzZSBpdCYjMzk7cyBiZWluZyB1c2VkLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoYXQgZnVuY3Rpb24gY2FsbCBpcyBjcml0aWNhbCBmb3IgYXNzZXNzaW5nIHRoZSBvdmVyYWxsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gRnJvbSBoZXJlIEkgbmVlZCB0byBhbmFseXplIGl0cyB1c2FnZSBhbmQgdW5kZXJzdGFuZCBpdHMgc2lkZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiY21fc2YyX2NmcF9ydWxlX2dldF9hbGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmM9MTA2ND1zdGF0aWMgaW50IGJjbV9zZjJfY2ZwX3J1bGVfZ2V0KHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXYsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jLTEwODMtLyogV2UgaW1wbGVtZW50IHRoZSBzZWFyY2ggZG9pbmcgYSBUQ0FNIHNlYXJjaCBvcGVyYXRpb24gKi9cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jOjEwODQ6c3RhdGljIGludCBiY21fc2YyX2NmcF9ydWxlX2dldF9hbGwoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jLTEwODUtXHRcdFx0XHQgICAgaW50IHBvcnQsIHN0cnVjdCBldGh0b29sX3J4bmZjICpuZmMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmM9MTEwND1pbnQgYmNtX3NmMl9nZXRfcnhuZmMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYy0xMTI0LVx0Y2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOlxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmM6MTEyNTpcdFx0cmV0ID0gYmNtX3NmMl9jZnBfcnVsZV9nZXRfYWxsKHByaXYsIHBvcnQsIG5mYywgcnVsZV9sb2NzKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jLTExMjYtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM2NwoJCQkJCQkJb3V0cHV0OiAxNTAKCQkJCQkJCXRob3VnaHRzOiAxNDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBQcm92aWRlZCBDb2RlIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBzZXJpZXMgaXMgbGlrZWx5ICpub3QqIHN1aXRhYmxlIGZvciBmdXp6aW5nIGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgZGV0YWlsczoKCkZpcnN0LCBgYmNtX3NmMmAsIHRoZSBCcm9hZGNvbSBTdGFyZmlnaHRlciAyIHN3aXRjaCBkcml2ZXIuIENsZWFybHksIHRoaXMgaXMgYW4gU29DIHBsYXRmb3JtIGRyaXZlciwgZXhwZWN0aW5nIHRvIGludGVyYWN0IHdpdGggc3BlY2lmaWMgQnJvYWRjb20gc3dpdGNoIGhhcmR3YXJlIHJlZ2lzdGVycywgaWRlbnRpZmllZCBieSBkZXZpY2UgdHJlZSBtYXRjaGVzLiBUaGlzIHNjcmVhbXMgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUmIzM0OyBpbiBhIHZhbmlsbGEgeDg2LTY0IFFFTVUgZW52aXJvbm1lbnQuICBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhbiBlbWJlZGRlZCBzd2l0Y2gsIG5vdCBzb21ldGhpbmcgZWFzaWx5IGVtdWxhdGVkLgoKVGhlbiB3ZSBoYXZlIGBtdjg4ZTZ4eHhgLiBUaGlzIE1hcnZlbGwgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciBpcyBhbiBNRElPIGRyaXZlci4gIEl0IHByb2JlcyBmb3IgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCBpZGVudGlmaWFibGUgYnkgdGhlaXIgc3BlY2lmaWMgUEhZIElEcywgb3ZlciBhbiBNRElPIGJ1cy4gIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCB0aGVyZSBpc24mIzM5O3QgYSByZWFkaWx5IGF2YWlsYWJsZSBtb2NrIG9yIGVtdWxhdGVkIGBtdjg4ZTZ4eHhgIGltcGxlbWVudGF0aW9uIHdpdGhpbiB0aGUgc3RhbmRhcmQgUUVNVSBvciB0aGUga2VybmVsIGl0c2VsZi4gV2UgaGF2ZSBgZHNhX2xvb3BgIHdoaWNoLCB3aGlsZSBhIG1vY2sgRFNBIHN3aXRjaCwgaXMgYSBzZXBhcmF0ZSBkcml2ZXIuIGBtdjg4ZTZ4eHhgIGRpcmVjdGx5IGludGVyYWN0cyB3aXRoIHNwZWNpZmljIGhhcmR3YXJlLiBObyBnby4KCk5leHQsIGBuZnBgLiBUaGlzIGlzIGEgTmV0cm9ub21lIEZsb3cgUHJvY2Vzc29yIGRyaXZlciwgYSBQQ0llIFNtYXJ0TklDLiBUaGVzZSBhcmUgKnZlbmRvci1zcGVjaWZpYyogUENJZSBjYXJkcyDigJMgTmV0cm9ub21lIE5GUDQwMDAvTkZQNjAwMC9ORlAzODAwLiBUaGVzZSBhcmUgQVNJQ3MgdGhhdCBqdXN0IGFyZW4mIzM5O3QgZ29pbmcgdG8gYmUgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAuICBBZ2Fpbiwgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKTm93LCBsZXQmIzM5O3Mgbm90IG92ZXJsb29rIHRoZSBjaGFuZ2UgaW4gYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC4gIFRoaXMgaXMgaW1wb3J0YW50LiBUaGUgbW9kaWZpY2F0aW9uIGlzIHB1cmVseSBhIGRvY3VtZW50YXRpb24gY29tbWVudCBhZGRlZCB0byB0aGUgYHN0cnVjdCBldGh0b29sX29wc2AuIEl0JiMzOTtzIGEgY2xhcmlmaWNhdGlvbiBvbiBob3cgdG8gaGFuZGxlIHRoZSBgRVRIVE9PTF9HUlhDTFNSTEFMTGAgcnVsZSBjb3VudCwgc3BlY2lmaWNhbGx5IHRvIHJldHVybiBgLUVNU0dTSVpFYCB3aGVuIHRoZSB1c2VyLXByb3ZpZGVkIGNvdW50IGlzIHRvbyBzbWFsbC4gQnV0IHRoaXMgaXMgYSBjb21tZW50LCBub3QgZXhlY3V0YWJsZSBjb2RlLgoKTm93IEkmIzM5O20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIGFsbCB0aGUgZmlsZXMgdGhhdCB3ZXJlIG1vZGlmaWVkOiBgZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmNgLCBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNgLCBhbmQgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC4KCkFmdGVyIGNyb3NzLWNoZWNraW5nIHRoZSBkaWZmIHByb3ZpZGVkLCBJIGNhbiBjb25maXJtIHRoYXQgdGhlIG9ubHkgbW9kaWZpZWQgZXhlY3V0YWJsZSBjb2RlIGlzIGluZGVlZCBpbiB0aGUgZHJpdmVycyBmb3IgdGhlIGFmb3JlbWVudGlvbmVkIGhhcmR3YXJlLiAgSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggdXBkYXRlcyBmbG93IGNsYXNzaWZpY2F0aW9uIHJ1bGVzIChgRVRIVE9PTF9HUlhDTFNSTEFMTGApIGFjcm9zcyB0aGUgZHJpdmVycyB0byBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvd3MsIGFuZCB0aGUgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYCBjaGFuZ2UgaXMgKm9ubHkqIGEgY29tbWVudC4KCkdpdmVuIGFsbCB0aGlzLCBJIGNvbmNsdWRlIHRoYXQgdGhlc2UgY2hhbmdlcyBkbyBub3QgZXhwb3NlIGFueSBjb2RlIHRoYXQgd291bGQgYmUgcmVsZXZhbnQgdG8gZnV6emluZyBpbiBhIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50LiBUaGUgaGFyZHdhcmUgdGFyZ2V0cyBhcmUgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiB0aGVzZSBzY2VuYXJpb3MsIGFuZCB0aGUgb3RoZXIgbW9kaWZpY2F0aW9uIGlzIG9ubHkgYSBkb2N1bWVudGF0aW9uIGNoYW5nZS4KClRoZXJlZm9yZSwgdGhlIGZpbmFsIG91dHB1dCBpczoKCi0gICBXb3J0aEZ1enppbmc6IGZhbHNlCi0gICBGb2N1c1N5bWJvbHM6IFxbIF0KLSAgIEVuYWJsZUNvbmZpZ3M6IFxbIF0KLSAgIFJlYXNvbmluZzogVGhlIHBhdGNoIHNlcmllcyBpcyBhYm91dCBpbXByb3ZpbmcgYEVUSFRPT0xfR1JYQ0xTUkxBTExgIGhhbmRsaW5nIGFjcm9zcyB0aHJlZSBkcml2ZXJzIChgYmNtX3NmMmAsIGBtdjg4ZTZ4eHhgLCBgbmZwYCkgdG8gcHJldmVudCBidWZmZXIgb3ZlcmZsb3dzIHJlbGF0ZWQgdG8gdXNlci1wcm92aWRlZCBgcnVsZV9jbnRgLCBwbHVzIGEgZG9jdW1lbnRhdGlvbiBjb21tZW50IGluIGBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaGAuICBBbGwgdGhlIG1vZGlmaWVkIGV4ZWN1dGFibGUgY29kZSBpcyBpbiBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChCcm9hZGNvbSBTb0Mgc3dpdGNoLCBNYXJ2ZWxsIHN3aXRjaCBjaGlwLCBhbmQgTmV0cm9ub21lIFNtYXJ0TklDKSB0aGF0IGRlcGVuZCBvbiBwaHlzaWNhbCBoYXJkd2FyZSBub3QgYXZhaWxhYmxlIGluIHN0YW5kYXJkIFFFTVUvR0NFLCBhbmQgdGhlIGhlYWRlciBjaGFuZ2UgaXMgb25seSBkb2N1bWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBhZGRzIGJ1ZmZlciBib3VuZHMgY2hlY2tpbmcgZm9yIEVUSFRPT0xfR1JYQ0xTUkxBTEwgaW4gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBEU0Egc3dpdGNoLCBNYXJ2ZWxsIDg4RTZ4eHggRFNBIHN3aXRjaCwgYW5kIE5ldHJvbm9tZSBORlAgU21hcnROSUMpIGFuZCB1cGRhdGVzIGRvYyBjb21tZW50cyBpbiBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC4gQWxsIGV4ZWN1dGFibGUgY29kZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB2ZW5kb3IgaGFyZHdhcmUgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3MvU29DL01ESU8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIHRoZSBjaGFuZ2UgdG8gaW5jbHVkZS9saW51eC9ldGh0b29sLmggaXMgZG9jdW1lbnRhdGlvbiBvbmx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgYnVmZmVyIGJvdW5kcyBjaGVja2luZyBmb3IgRVRIVE9PTF9HUlhDTFNSTEFMTCBpbiBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChCcm9hZGNvbSBTdGFyZmlnaHRlciAyIERTQSBzd2l0Y2gsIE1hcnZlbGwgODhFNnh4eCBEU0Egc3dpdGNoLCBhbmQgTmV0cm9ub21lIE5GUCBTbWFydE5JQykgYW5kIHVwZGF0ZXMgZG9jIGNvbW1lbnRzIGluIGluY2x1ZGUvbGludXgvZXRodG9vbC5oLiBBbGwgZXhlY3V0YWJsZSBjb2RlIGNoYW5nZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHZlbmRvciBoYXJkd2FyZSBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDcy9Tb0MvTURJTyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBhbmQgdGhlIGNoYW5nZSB0byBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaCBpcyBkb2N1bWVudGF0aW9uIG9ubHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDoxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6MjQuNjY2MTkxMTA3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxNDAxMDYxODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBidWZmZXIgYm91bmRzIGNoZWNraW5nIGZvciBFVEhUT09MX0dSWENMU1JMQUxMIGluIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgKEJyb2FkY29tIFN0YXJmaWdodGVyIDIgRFNBIHN3aXRjaCwgTWFydmVsbCA4OEU2eHh4IERTQSBzd2l0Y2gsIGFuZCBOZXRyb25vbWUgTkZQIFNtYXJ0TklDKSBhbmQgdXBkYXRlcyBkb2MgY29tbWVudHMgaW4gaW5jbHVkZS9saW51eC9ldGh0b29sLmguIEFsbCBleGVjdXRhYmxlIGNvZGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gdmVuZG9yIGhhcmR3YXJlIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUNzL1NvQy9NRElPIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY2hhbmdlIHRvIGluY2x1ZGUvbGludXgvZXRodG9vbC5oIGlzIGRvY3VtZW50YXRpb24gb25seS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA0OjA5OjI0LjY2NjE5ODMyN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIyODY0ODEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzk0ZTY3ZDgzZTMyZGZiZGI5N2NkOWIwYTUwNWVlNmJhZDdjMzU4NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDA0OjA5OjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jIGIvZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmNcXG5pbmRleCA1MGQzYTgxOGViMWI3Li44NGEwODZjM2U5OWI0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmNcXG5AQCAtMTA4OCw2ICsxMDg4LDggQEAgc3RhdGljIGludCBiY21fc2YyX2NmcF9ydWxlX2dldF9hbGwoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdixcXG4gXFx0dW5zaWduZWQgaW50IGluZGV4ID0gMSwgcnVsZXNfY250ID0gMDtcXG4gXFxuIFxcdGZvcl9lYWNoX3NldF9iaXRfZnJvbShpbmRleCwgcHJpdi1cXHUwMDNlY2ZwLnVuaXF1ZSwgcHJpdi1cXHUwMDNlbnVtX2NmcF9ydWxlcykge1xcbitcXHRcXHRpZiAocnVsZXNfY250ID09IG5mYy1cXHUwMDNlcnVsZV9jbnQpXFxuK1xcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuIFxcdFxcdHJ1bGVfbG9jc1tydWxlc19jbnRdID0gaW5kZXg7XFxuIFxcdFxcdHJ1bGVzX2NudCsrO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcXG5pbmRleCA4MGI4NzdjNzQ1MTNkLi43ZjY4YTBjNTU4MDI2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcXG5AQCAtMjQzOCw2ICsyNDM4LDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuIFxcdHN0cnVjdCBldGh0b29sX3J4X2Zsb3dfc3BlYyAqZnMgPSBcXHUwMDI2cnhuZmMtXFx1MDAzZWZzO1xcbiBcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cXHUwMDNlcHJpdjtcXG4gXFx0c3RydWN0IG12ODhlNnh4eF9wb2xpY3kgKnBvbGljeTtcXG4rXFx0dTMyIGNudCA9IDA7XFxuIFxcdGludCBlcnI7XFxuIFxcdGludCBpZDtcXG4gXFxuQEAgLTI0NjMsMTEgKzI0NjQsMTggQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEVUSFRPT0xfR1JYQ0xTUkxBTEw6XFxuIFxcdFxcdHJ4bmZjLVxcdTAwM2VkYXRhID0gMDtcXG4tXFx0XFx0cnhuZmMtXFx1MDAzZXJ1bGVfY250ID0gMDtcXG4tXFx0XFx0aWRyX2Zvcl9lYWNoX2VudHJ5KFxcdTAwMjZjaGlwLVxcdTAwM2Vwb2xpY2llcywgcG9saWN5LCBpZClcXG4tXFx0XFx0XFx0aWYgKHBvbGljeS1cXHUwMDNlcG9ydCA9PSBwb3J0KVxcbi1cXHRcXHRcXHRcXHRydWxlX2xvY3NbcnhuZmMtXFx1MDAzZXJ1bGVfY250KytdID0gaWQ7XFxuIFxcdFxcdGVyciA9IDA7XFxuK1xcdFxcdGlkcl9mb3JfZWFjaF9lbnRyeShcXHUwMDI2Y2hpcC1cXHUwMDNlcG9saWNpZXMsIHBvbGljeSwgaWQpIHtcXG4rXFx0XFx0XFx0aWYgKHBvbGljeS1cXHUwMDNlcG9ydCAhPSBwb3J0KVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0XFx0aWYgKGNudCA9PSByeG5mYy1cXHUwMDNlcnVsZV9jbnQpIHtcXG4rXFx0XFx0XFx0XFx0ZXJyID0gLUVNU0dTSVpFO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRydWxlX2xvY3NbY250KytdID0gaWQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0aWYgKCFlcnIpXFxuK1xcdFxcdFxcdHJ4bmZjLVxcdTAwM2VydWxlX2NudCA9IGNudDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdGVyciA9IC1FT1BOT1RTVVBQO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2V0aHRvb2wuY1xcbmluZGV4IGEyYTg5ZDQ4ZTNjYWMuLjRlODM2Mzc3MTVlMDMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNcXG5AQCAtMTQyMSw3ICsxNDIxLDggQEAgc3RhdGljIGludCBuZnBfbmV0X2dldF9mc19ydWxlKHN0cnVjdCBuZnBfbmV0ICpubiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcXG4gXFx0cmV0dXJuIC1FTk9FTlQ7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgbmZwX25ldF9nZXRfZnNfbG9jKHN0cnVjdCBuZnBfbmV0ICpubiwgdTMyICpydWxlX2xvY3MpXFxuK3N0YXRpYyBpbnQgbmZwX25ldF9nZXRfZnNfbG9jKHN0cnVjdCBuZnBfbmV0ICpubiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZCxcXG4rXFx0XFx0XFx0ICAgICAgdTMyICpydWxlX2xvY3MpXFxuIHtcXG4gXFx0c3RydWN0IG5mcF9mc19lbnRyeSAqZW50cnk7XFxuIFxcdHUzMiBjb3VudCA9IDA7XFxuQEAgLTE0MjksOCArMTQzMCwxMiBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX2xvYyhzdHJ1Y3QgbmZwX25ldCAqbm4sIHUzMiAqcnVsZV9sb2NzKVxcbiBcXHRpZiAoIShubi1cXHUwMDNlY2FwX3cxIFxcdTAwMjYgTkZQX05FVF9DRkdfQ1RSTF9GTE9XX1NURUVSKSlcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4tXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgXFx1MDAyNm5uLVxcdTAwM2Vmcy5saXN0LCBub2RlKVxcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGVudHJ5LCBcXHUwMDI2bm4tXFx1MDAzZWZzLmxpc3QsIG5vZGUpIHtcXG4rXFx0XFx0aWYgKGNvdW50ID09IGNtZC1cXHUwMDNlcnVsZV9jbnQpXFxuK1xcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuIFxcdFxcdHJ1bGVfbG9jc1tjb3VudCsrXSA9IGVudHJ5LVxcdTAwM2Vsb2M7XFxuK1xcdH1cXG4rXFx0Y21kLVxcdTAwM2VydWxlX2NudCA9IGNvdW50O1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtMTQ1NSw3ICsxNDYwLDcgQEAgc3RhdGljIGludCBuZnBfbmV0X2dldF9yeG5mYyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRcXHRyZXR1cm4gbmZwX25ldF9nZXRfZnNfcnVsZShubiwgY21kKTtcXG4gXFx0Y2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOlxcbiBcXHRcXHRjbWQtXFx1MDAzZWRhdGEgPSBORlBfRlNfTUFYX0VOVFJZO1xcbi1cXHRcXHRyZXR1cm4gbmZwX25ldF9nZXRfZnNfbG9jKG5uLCBydWxlX2xvY3MpO1xcbitcXHRcXHRyZXR1cm4gbmZwX25ldF9nZXRfZnNfbG9jKG5uLCBjbWQsIHJ1bGVfbG9jcyk7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFx0fVxcbkBAIC0xNjk4LDggKzE3MDMsMTQgQEAgc3RhdGljIGludCBuZnBfbmV0X2ZzX2FkZChzdHJ1Y3QgbmZwX25ldCAqbm4sIHN0cnVjdCBldGh0b29sX3J4bmZjICpjbWQpXFxuIFxcbiBcXHRcXHRcXHRubi1cXHUwMDNlZnMuY291bnQtLTtcXG4gXFx0XFx0XFx0ZXJyID0gbmZwX25ldF9mc19hZGRfaHcobm4sIG5ldyk7XFxuLVxcdFxcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdGlmIChlcnIpIHtcXG4rXFx0XFx0XFx0XFx0LyogbWJveCBicm9rZW4sIGFkZGluZyB0aGUgb2xkIHJ1bGUgYmFjayB3aWxsXFxuK1xcdFxcdFxcdFxcdCAqIGxpa2VseSBhbHNvIGZhaWwuXFxuK1xcdFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2ZW50cnktXFx1MDAzZW5vZGUpO1xcbitcXHRcXHRcXHRcXHRrZnJlZShlbnRyeSk7XFxuIFxcdFxcdFxcdFxcdGdvdG8gZXJyO1xcbitcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRubi1cXHUwMDNlZnMuY291bnQrKztcXG4gXFx0XFx0XFx0bGlzdF9yZXBsYWNlKFxcdTAwMjZlbnRyeS1cXHUwMDNlbm9kZSwgXFx1MDAyNm5ldy1cXHUwMDNlbm9kZSk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcXG5pbmRleCAxMjY4M2I1ZDEyNWU0Li4yNTM2MDBjMGVjY2RmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcXG5AQCAtMTA1Nyw2ICsxMDU3LDEyIEBAIHN0cnVjdCBrZXJuZWxfZXRodG9vbF90c19pbmZvIHtcXG4gICogQGdldF9zc2V0X2NvdW50OiBHZXQgbnVtYmVyIG9mIHN0cmluZ3MgdGhhdCBAZ2V0X3N0cmluZ3Mgd2lsbCB3cml0ZS5cXG4gICogQGdldF9yeG5mYzogR2V0IFJYIGZsb3cgY2xhc3NpZmljYXRpb24gcnVsZXMuICBSZXR1cm5zIGEgbmVnYXRpdmVcXG4gICpcXHRlcnJvciBjb2RlIG9yIHplcm8uXFxuKyAqXFx0Tm90ZSB0aGF0IGZvciAlRVRIVE9PTF9HUlhDTFNSTEFMTCBydWxlX2NudCBhbmQgc2l6ZSBvZiB0aGUgYXJyYXlzXFxuKyAqXFx0aXMgdXNlci1wcm92aWRlZCwgYW5kIG5vdCBndWFyYW50ZWVkIHRvIG1hdGNoIHdoYXQgZHJpdmVyIHdvdWxkXFxuKyAqXFx0aGF2ZSByZXBvcnRlZCB2aWEgJUVUSFRPT0xfR1JYQ0xTUkxDTlQuIERyaXZlcnMgbXVzdCByZXR1cm4gLSVFTVNHU0laRVxcbisgKlxcdHdoZW4gcnVsZV9jbnQgaXMgdG9vIHNtYWxsLiBydWxlX2xvY3MgaXMgJU5VTEwgd2hlbiBydWxlX2NudCBpcyB6ZXJvLlxcbisgKlxcdE9uIHN1Y2Nlc3MgZHJpdmVycyBtdXN0IHNldCBydWxlX2NudCB0byB0aGUgbnVtYmVyIG9mIGxvY2F0aW9ucyB0aGV5XFxuKyAqXFx0ZmlsbGVkIGluLCB0aGUgY29yZSBjb3BpZXMgb3V0IGV4YWN0bHkgdGhhdCBtYW55LlxcbiAgKiBAc2V0X3J4bmZjOiBTZXQgUlggZmxvdyBjbGFzc2lmaWNhdGlvbiBydWxlcy4gIFJldHVybnMgYSBuZWdhdGl2ZVxcbiAgKlxcdGVycm9yIGNvZGUgb3IgemVyby5cXG4gICogQGZsYXNoX2RldmljZTogV3JpdGUgYSBmaXJtd2FyZSBpbWFnZSB0byBkZXZpY2UncyBmbGFzaCBtZW1vcnkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA0OjA5OjI1LjI5MTIwMTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ0NTE1MDc2MDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBidWZmZXIgYm91bmRzIGNoZWNraW5nIGZvciBFVEhUT09MX0dSWENMU1JMQUxMIGluIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgKEJyb2FkY29tIFN0YXJmaWdodGVyIDIgRFNBIHN3aXRjaCwgTWFydmVsbCA4OEU2eHh4IERTQSBzd2l0Y2gsIGFuZCBOZXRyb25vbWUgTkZQIFNtYXJ0TklDKSBhbmQgdXBkYXRlcyBkb2MgY29tbWVudHMgaW4gaW5jbHVkZS9saW51eC9ldGh0b29sLmguIEFsbCBleGVjdXRhYmxlIGNvZGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gdmVuZG9yIGhhcmR3YXJlIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUNzL1NvQy9NRElPIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY2hhbmdlIHRvIGluY2x1ZGUvbGludXgvZXRodG9vbC5oIGlzIGRvY3VtZW50YXRpb24gb25seS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzk0ZTY3ZDgzZTMyZGZiZGI5N2NkOWIwYTUwNWVlNmJhZDdjMzU4NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDQ6MDk6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYyBiL2RyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jXG5pbmRleCA1MGQzYTgxOGViMWI3Li44NGEwODZjM2U5OWI0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jXG5AQCAtMTA4OCw2ICsxMDg4LDggQEAgc3RhdGljIGludCBiY21fc2YyX2NmcF9ydWxlX2dldF9hbGwoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdixcbiBcdHVuc2lnbmVkIGludCBpbmRleCA9IDEsIHJ1bGVzX2NudCA9IDA7XG4gXG4gXHRmb3JfZWFjaF9zZXRfYml0X2Zyb20oaW5kZXgsIHByaXYtXHUwMDNlY2ZwLnVuaXF1ZSwgcHJpdi1cdTAwM2VudW1fY2ZwX3J1bGVzKSB7XG4rXHRcdGlmIChydWxlc19jbnQgPT0gbmZjLVx1MDAzZXJ1bGVfY250KVxuK1x0XHRcdHJldHVybiAtRU1TR1NJWkU7XG4gXHRcdHJ1bGVfbG9jc1tydWxlc19jbnRdID0gaW5kZXg7XG4gXHRcdHJ1bGVzX2NudCsrO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbmluZGV4IDgwYjg3N2M3NDUxM2QuLjdmNjhhMGM1NTgwMjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbkBAIC0yNDM4LDYgKzI0MzgsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9nZXRfcnhuZmMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdHN0cnVjdCBldGh0b29sX3J4X2Zsb3dfc3BlYyAqZnMgPSBcdTAwMjZyeG5mYy1cdTAwM2VmcztcbiBcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVx1MDAzZXByaXY7XG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X3BvbGljeSAqcG9saWN5O1xuK1x0dTMyIGNudCA9IDA7XG4gXHRpbnQgZXJyO1xuIFx0aW50IGlkO1xuIFxuQEAgLTI0NjMsMTEgKzI0NjQsMTggQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOlxuIFx0XHRyeG5mYy1cdTAwM2VkYXRhID0gMDtcbi1cdFx0cnhuZmMtXHUwMDNlcnVsZV9jbnQgPSAwO1xuLVx0XHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2Y2hpcC1cdTAwM2Vwb2xpY2llcywgcG9saWN5LCBpZClcbi1cdFx0XHRpZiAocG9saWN5LVx1MDAzZXBvcnQgPT0gcG9ydClcbi1cdFx0XHRcdHJ1bGVfbG9jc1tyeG5mYy1cdTAwM2VydWxlX2NudCsrXSA9IGlkO1xuIFx0XHRlcnIgPSAwO1xuK1x0XHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2Y2hpcC1cdTAwM2Vwb2xpY2llcywgcG9saWN5LCBpZCkge1xuK1x0XHRcdGlmIChwb2xpY3ktXHUwMDNlcG9ydCAhPSBwb3J0KVxuK1x0XHRcdFx0Y29udGludWU7XG4rXHRcdFx0aWYgKGNudCA9PSByeG5mYy1cdTAwM2VydWxlX2NudCkge1xuK1x0XHRcdFx0ZXJyID0gLUVNU0dTSVpFO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0fVxuK1x0XHRcdHJ1bGVfbG9jc1tjbnQrK10gPSBpZDtcbitcdFx0fVxuK1x0XHRpZiAoIWVycilcbitcdFx0XHRyeG5mYy1cdTAwM2VydWxlX2NudCA9IGNudDtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRlcnIgPSAtRU9QTk9UU1VQUDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2V0aHRvb2wuY1xuaW5kZXggYTJhODlkNDhlM2NhYy4uNGU4MzYzNzcxNWUwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNcbkBAIC0xNDIxLDcgKzE0MjEsOCBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX3J1bGUoc3RydWN0IG5mcF9uZXQgKm5uLCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKVxuIFx0cmV0dXJuIC1FTk9FTlQ7XG4gfVxuIFxuLXN0YXRpYyBpbnQgbmZwX25ldF9nZXRfZnNfbG9jKHN0cnVjdCBuZnBfbmV0ICpubiwgdTMyICpydWxlX2xvY3MpXG4rc3RhdGljIGludCBuZnBfbmV0X2dldF9mc19sb2Moc3RydWN0IG5mcF9uZXQgKm5uLCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kLFxuK1x0XHRcdCAgICAgIHUzMiAqcnVsZV9sb2NzKVxuIHtcbiBcdHN0cnVjdCBuZnBfZnNfZW50cnkgKmVudHJ5O1xuIFx0dTMyIGNvdW50ID0gMDtcbkBAIC0xNDI5LDggKzE0MzAsMTIgQEAgc3RhdGljIGludCBuZnBfbmV0X2dldF9mc19sb2Moc3RydWN0IG5mcF9uZXQgKm5uLCB1MzIgKnJ1bGVfbG9jcylcbiBcdGlmICghKG5uLVx1MDAzZWNhcF93MSBcdTAwMjYgTkZQX05FVF9DRkdfQ1RSTF9GTE9XX1NURUVSKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgXHUwMDI2bm4tXHUwMDNlZnMubGlzdCwgbm9kZSlcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksIFx1MDAyNm5uLVx1MDAzZWZzLmxpc3QsIG5vZGUpIHtcbitcdFx0aWYgKGNvdW50ID09IGNtZC1cdTAwM2VydWxlX2NudClcbitcdFx0XHRyZXR1cm4gLUVNU0dTSVpFO1xuIFx0XHRydWxlX2xvY3NbY291bnQrK10gPSBlbnRyeS1cdTAwM2Vsb2M7XG4rXHR9XG4rXHRjbWQtXHUwMDNlcnVsZV9jbnQgPSBjb3VudDtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0xNDU1LDcgKzE0NjAsNyBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X3J4bmZjKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdHJldHVybiBuZnBfbmV0X2dldF9mc19ydWxlKG5uLCBjbWQpO1xuIFx0Y2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOlxuIFx0XHRjbWQtXHUwMDNlZGF0YSA9IE5GUF9GU19NQVhfRU5UUlk7XG4tXHRcdHJldHVybiBuZnBfbmV0X2dldF9mc19sb2Mobm4sIHJ1bGVfbG9jcyk7XG4rXHRcdHJldHVybiBuZnBfbmV0X2dldF9mc19sb2Mobm4sIGNtZCwgcnVsZV9sb2NzKTtcbiBcdGRlZmF1bHQ6XG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdH1cbkBAIC0xNjk4LDggKzE3MDMsMTQgQEAgc3RhdGljIGludCBuZnBfbmV0X2ZzX2FkZChzdHJ1Y3QgbmZwX25ldCAqbm4sIHN0cnVjdCBldGh0b29sX3J4bmZjICpjbWQpXG4gXG4gXHRcdFx0bm4tXHUwMDNlZnMuY291bnQtLTtcbiBcdFx0XHRlcnIgPSBuZnBfbmV0X2ZzX2FkZF9odyhubiwgbmV3KTtcbi1cdFx0XHRpZiAoZXJyKVxuK1x0XHRcdGlmIChlcnIpIHtcbitcdFx0XHRcdC8qIG1ib3ggYnJva2VuLCBhZGRpbmcgdGhlIG9sZCBydWxlIGJhY2sgd2lsbFxuK1x0XHRcdFx0ICogbGlrZWx5IGFsc28gZmFpbC5cbitcdFx0XHRcdCAqL1xuK1x0XHRcdFx0bGlzdF9kZWwoXHUwMDI2ZW50cnktXHUwMDNlbm9kZSk7XG4rXHRcdFx0XHRrZnJlZShlbnRyeSk7XG4gXHRcdFx0XHRnb3RvIGVycjtcbitcdFx0XHR9XG4gXG4gXHRcdFx0bm4tXHUwMDNlZnMuY291bnQrKztcbiBcdFx0XHRsaXN0X3JlcGxhY2UoXHUwMDI2ZW50cnktXHUwMDNlbm9kZSwgXHUwMDI2bmV3LVx1MDAzZW5vZGUpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcbmluZGV4IDEyNjgzYjVkMTI1ZTQuLjI1MzYwMGMwZWNjZGYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuKysrIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcbkBAIC0xMDU3LDYgKzEwNTcsMTIgQEAgc3RydWN0IGtlcm5lbF9ldGh0b29sX3RzX2luZm8ge1xuICAqIEBnZXRfc3NldF9jb3VudDogR2V0IG51bWJlciBvZiBzdHJpbmdzIHRoYXQgQGdldF9zdHJpbmdzIHdpbGwgd3JpdGUuXG4gICogQGdldF9yeG5mYzogR2V0IFJYIGZsb3cgY2xhc3NpZmljYXRpb24gcnVsZXMuICBSZXR1cm5zIGEgbmVnYXRpdmVcbiAgKlx0ZXJyb3IgY29kZSBvciB6ZXJvLlxuKyAqXHROb3RlIHRoYXQgZm9yICVFVEhUT09MX0dSWENMU1JMQUxMIHJ1bGVfY250IGFuZCBzaXplIG9mIHRoZSBhcnJheXNcbisgKlx0aXMgdXNlci1wcm92aWRlZCwgYW5kIG5vdCBndWFyYW50ZWVkIHRvIG1hdGNoIHdoYXQgZHJpdmVyIHdvdWxkXG4rICpcdGhhdmUgcmVwb3J0ZWQgdmlhICVFVEhUT09MX0dSWENMU1JMQ05ULiBEcml2ZXJzIG11c3QgcmV0dXJuIC0lRU1TR1NJWkVcbisgKlx0d2hlbiBydWxlX2NudCBpcyB0b28gc21hbGwuIHJ1bGVfbG9jcyBpcyAlTlVMTCB3aGVuIHJ1bGVfY250IGlzIHplcm8uXG4rICpcdE9uIHN1Y2Nlc3MgZHJpdmVycyBtdXN0IHNldCBydWxlX2NudCB0byB0aGUgbnVtYmVyIG9mIGxvY2F0aW9ucyB0aGV5XG4rICpcdGZpbGxlZCBpbiwgdGhlIGNvcmUgY29waWVzIG91dCBleGFjdGx5IHRoYXQgbWFueS5cbiAgKiBAc2V0X3J4bmZjOiBTZXQgUlggZmxvdyBjbGFzc2lmaWNhdGlvbiBydWxlcy4gIFJldHVybnMgYSBuZWdhdGl2ZVxuICAqXHRlcnJvciBjb2RlIG9yIHplcm8uXG4gICogQGZsYXNoX2RldmljZTogV3JpdGUgYSBmaXJtd2FyZSBpbWFnZSB0byBkZXZpY2UncyBmbGFzaCBtZW1vcnkuXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOToyNS4yOTEyMDU3OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEzMDQ3NDEzMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFN5emthbGxlciBQYXRjaCBTZXJpZXMgZm9yIE5ldHdvcmsgRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggc2VyaWVzIGludGVuZGVkIGZvciBzeXprYWxsZXIgZnV6emluZy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcyBhbmQsIGNyaXRpY2FsbHksIGhvdyBhY2Nlc3NpYmxlIHRoZXNlIGRyaXZlcnMgYXJlIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIHVzZXIncyBpbnRlcmVzdCBoZXJlIGlzIHRvIGV2YWx1YXRlIHRoZSBwYXRjaCBpbiB0aGUgY29udGV4dCBvZiBoYXJkd2FyZS9yZWFjaGFiaWxpdHkuXG5cbkxldCdzIGJyZWFrIGRvd24gd2hhdCdzIGJlZW4gdG91Y2hlZDogSSBzZWUgdGhlc2UgZmlsZXM6IGBkcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuY2AsIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jYCwgYW5kIGEgc2ltcGxlIGNvbW1lbnQgdXBkYXRlIGluIGBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaGAuIE15IGltbWVkaWF0ZSByZWFjdGlvbiBpcyB0byB6ZXJvIGluIG9uIHRob3NlIGRyaXZlcnM6IEJyb2FkY29tIFN0YXJmaWdodGVyIDIsIE1hcnZlbGwgODhFNnh4eCBEU0Egc3dpdGNoZXMsIGFuZCBOZXRyb25vbWUgTkZQIG5ldHdvcmsgY2FyZC5cblxuTm93IGNvbWVzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uLiBBcmUgdGhlc2UgZHJpdmVycyByZWFsaXN0aWNhbGx5IHJlYWNoYWJsZSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlPyBDYW4gSSBpbnN0YW50aWF0ZSB0aGVtLCBldmVuIHBhcnRpYWxseSwgd2l0aGluIFFFTVUgb3IgR0NFPyBPciBkbyB0aGV5IGRlcGVuZCBoZWF2aWx5IG9uIE1ESU8gYnVzZXMsIHBsYXRmb3JtIGRldmljZXMsIFBDSWUgQVNJQ3MsIG9yIG90aGVyIGhhcmR3YXJlIGRlcGVuZGVuY2llcz8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBwYXRjaCBjYW4gYmUgZWZmZWN0aXZlbHkgdGVzdGVkIHdpdGhpbiBhIHR5cGljYWwgZnV6emluZyBzZXR1cC5cblxuSSdtIGdvaW5nIHRvIHF1aWNrbHkgZ3JlcCB0aGUga2VybmVsIHNvdXJjZSBhbmQgY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgdGhlc2UgZHJpdmVycy4gSSB3YW50IHRvIHNlZSBob3cgdGhleSdyZSBjb25maWd1cmVkLCB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IGhhdmUsIGFuZCBpZiB0aGVyZSdzIGFueSBpbmRpY2F0aW9uIG9mIGVtdWxhdGVkIHN1cHBvcnQuIFRoaXMgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmZWFzaWJpbGl0eSBvZiBmdXp6aW5nIHRoZXNlIGRyaXZlcnMgZWZmZWN0aXZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MjEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTozOC4zMzg2MjE3OThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM0MjE5NTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCQ01fU0YyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6MzguNDMyMDQ5OTE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE5Nzk2OTc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQgZGl2aW5nIGludG8gdGhlIHN1YmplY3QgbWF0dGVyOlxuXG4qKktjb25maWcgSW5zcGVjdGlvbiBmb3IgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbnMgYXJlIGJlaW5nIGhhbmRsZWQgd2l0aGluIHRoZXNlIHBhcnRpY3VsYXIgZHJpdmVyIHN1YnRyZWVzLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdGhlIGBLY29uZmlnYCBmaWxlcyDigJMgdGhleSdyZSB0aGUgaGVhcnQgb2YgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGJ1aWx0IGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkLCBiYXNlZCBvbiB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBsb29rIGludG8gYGRyaXZlcnMvbmV0L2RzYWAg4oCTIHRoYXQncyB3aGVyZSB0aGUgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSBkcml2ZXJzIHJlc2lkZSwgc28gSSdtIGV4cGVjdGluZyBzb21lIGludGVyZXN0aW5nIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBhbmQgZmVhdHVyZSBzZXRzIGluIHRoZXJlLiBUaGVuIEknbGwgcG9wIG92ZXIgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnBgLiBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgTmV0cm9ub21lIGRldmljZXM7IEknbSBleHBlY3Rpbmcgc29tZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgdGhvc2U7IEkgd2FudCB0byBzZWUgd2hhdCBvcHRpb25zIGV4aXN0IGZvciB0aGF0IHNwZWNpYWxpemVkIGhhcmR3YXJlIHBsYXRmb3JtLCBpbmNsdWRpbmcgYW55IHVuaXF1ZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb25zIG9yIGZlYXR1cmUgdG9nZ2xlcyByZWxhdGVkIHRvIHRoZSBORlAgYXJjaGl0ZWN0dXJlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZHJpdmVycyBmaXQgaW50byB0aGUgbGFyZ2VyIG5ldHdvcmsgc3RhY2sgYW5kIGlkZW50aWZ5IGFueSBjb25maWd1cmF0aW9uIHBlY3VsaWFyaXRpZXMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gVGltZSB0byBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzU3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6NDAuNjMwMDIxMjkxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjc5OTk0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiY21fc2YyfG12ODhlNnh4eHxORVRfRFNBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTI9bWVudSBcXFwiRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSBkcml2ZXJzXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjM6XFx0ZGVwZW5kcyBvbiBORVRfRFNBXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZz01PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTYtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6Nzpjb25maWcgTkVUX0RTQV9CQ01fU0YyXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy05LVxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTA6XFx0c2VsZWN0IE5FVF9EU0FfVEFHX0JSQ01cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMS1cXHRzZWxlY3QgRklYRURfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxOTpjb25maWcgTkVUX0RTQV9MT09QXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIkRTQSBtb2NrLXVwIEV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MjE6XFx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0yMi1cXHRzZWxlY3QgRklYRURfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NVDc1MzBcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzM6XFx0c2VsZWN0IE5FVF9EU0FfVEFHX01US1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM0LVxcdHNlbGVjdCBSRUdNQVBfSVJRXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzU6XFx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjM2OlxcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01NSU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zNy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo0Mzpjb25maWcgTkVUX0RTQV9NVDc1MzBfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgTURJTyBpbnRlcmZhY2UgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQ1OlxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Ni1cXHRzZWxlY3QgTUVESUFURUtfR0VfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01My1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU2OlxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01Ny1cXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NjY6Y29uZmlnIE5FVF9EU0FfTVQ3NjI4XFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzYyOCBFbWJlZGRlZCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy02OC1cXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiAoU09DX01UNzYyMCB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6Njk6XFx0c2VsZWN0IE5FVF9EU0FfVEFHX01UNzYyOFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTcwLVxcdHNlbGVjdCBNRURJQVRFS19GRV9TT0NfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03NS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo3Njpjb25maWcgTkVUX0RTQV9NVjg4RTYwNjBcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03Ny1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCA4OEU2MDYwIGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6Nzg6XFx0c2VsZWN0IE5FVF9EU0FfVEFHX1RSQUlMRVJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZz04Mz1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy04NC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo4NTpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy04Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTk5PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDAtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTAxOmNvbmZpZyBORVRfRFNBX1JaTjFfQTVQU1dcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDItXFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovTjEgQTVQU1cgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTAzLVxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUlpOMSB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTA0OlxcdHNlbGVjdCBORVRfRFNBX1RBR19SWk4xX0E1UFNXXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTA1LVxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDktXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTEwOmNvbmZpZyBORVRfRFNBX0tTODk5NVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTExMS1cXHR0cmlzdGF0ZSBcXFwiTWljcmVsIEtTODk5NSBmYW1pbHkgNS1wb3J0cyAxMC8xMDAgRXRoZXJuZXQgc3dpdGNoZXNcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTEyLVxcdGRlcGVuZHMgb24gU1BJXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTEzOlxcdHNlbGVjdCBORVRfRFNBX1RBR19OT05FXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTE0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTExNy1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMTg6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTE5LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTIwOlxcdHNlbGVjdCBORVRfRFNBX1RBR19MQU45MzAzXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTIxLVxcdHNlbGVjdCBSRUdNQVBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEyNi1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMjc6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzX0kyQ1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEyOC1cXHR0cmlzdGF0ZSBcXFwiU01TQy9NaWNyb2NoaXAgTEFOOTMwMyAzLXBvcnRzIDEwLzEwMCBldGhlcm5ldCBzd2l0Y2ggaW4gSTJDIG1hbmFnZWQgbW9kZVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEzMC1cXHRkZXBlbmRzIG9uIFZMQU5fODAyMVEgfHwgVkxBTl84MDIxUT1uXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTMxOlxcdHNlbGVjdCBORVRfRFNBX1NNU0NfTEFOOTMwM1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEzMi1cXHRzZWxlY3QgUkVHTUFQX0kyQ1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTM2LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEzNzpjb25maWcgTkVUX0RTQV9TTVNDX0xBTjkzMDNfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEzOC1cXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIExBTjkzMDMvTEFOOTM1NCAzLXBvcnRzIDEwLzEwMCBldGhlcm5ldCBzd2l0Y2ggaW4gTURJTyBtYW5hZ2VkIG1vZGVcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTM5OlxcdHNlbGVjdCBORVRfRFNBX1NNU0NfTEFOOTMwM1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0MC1cXHRkZXBlbmRzIG9uIFZMQU5fODAyMVEgfHwgVkxBTl84MDIxUT1uXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNDQtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTQ1OmNvbmZpZyBORVRfRFNBX1ZJVEVTU0VfVlNDNzNYWFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0Ni1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE0NzpcXHRzZWxlY3QgTkVUX0RTQV9UQUdfVlNDNzNYWF84MDIxUVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0OC1cXHRzZWxlY3QgRklYRURfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNTQtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTU1OmNvbmZpZyBORVRfRFNBX1ZJVEVTU0VfVlNDNzNYWF9TUElcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNTYtXFx0dHJpc3RhdGUgXFxcIlZpdGVzc2UgVlNDNzM4NS83Mzg4LzczOTUvNzM5OCBTUEkgbW9kZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE1Ny1cXHRkZXBlbmRzIG9uIFNQSVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE1ODpcXHRzZWxlY3QgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNTktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTYyLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE2Mzpjb25maWcgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjQtXFx0dHJpc3RhdGUgXFxcIlZpdGVzc2UgVlNDNzM4NS83Mzg4LzczOTUvNzM5OCBQbGF0Zm9ybSBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTY1LVxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTY2OlxcdHNlbGVjdCBORVRfRFNBX1ZJVEVTU0VfVlNDNzNYWFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE2Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTcyOmNvbmZpZyBORVRfRFNBX1lUOTIxWFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE3NDpcXHRzZWxlY3QgTkVUX0RTQV9UQUdfWVQ5MjFYXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTc1LVxcdHNlbGVjdCBORVRfSUVFRTgwMjFRX0hFTFBFUlMgaWYgRENCXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA0OjA5OjQwLjczNjgyNTQ2NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxMTQ3NzY0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUXVpY2sgS2NvbmZpZyBDaGVjayoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIG5ldHdvcmsgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY3Jvc3MtcmVmZXJlbmNlIGEgY291cGxlIG9mIGtleSBLY29uZmlnIGZpbGVzIHRvIHNlZSBob3cgdGhlc2UgZHJpdmVycyBhcmUgc3RydWN0dXJlZCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL0tjb25maWdgLiBUaGlzIHNob3VsZCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcywgZmVhdHVyZXMsIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBBIHF1aWNrIHNjYW4gb2YgdGhlc2Ugc2hvdWxkIGJlIGVub3VnaCB0byBnZXQgYSBncmFzcCBvZiB0aGVpciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHJlbGF0ZWQgZGVwZW5kZW5jaWVzIGJlZm9yZSBkaXZpbmcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBzb3VyY2UgY29kZS4gSSdtIGxvb2tpbmcgZm9yIGFueXRoaW5nIHVudXN1YWwgb3IgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIGZsYWdzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBJJ20gaW52ZXN0aWdhdGluZy4gVGhpcyBpcyBqdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGF2b2lkIHdhc3RpbmcgdGltZSBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODIzNSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA0OjA5OjQyLjg1MTYwMzQ4NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBmYWJyaWMgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQVxcbiAgIDU6XFx0XFx0c2VsZWN0IElSUV9ET01BSU5cXG4gICA2OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19FRFNBXFxuICAgNzpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfRFNBXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgbW9zdCBvZiB0aGUgTWFydmVsbCA4OEU2eHh4IG1vZGVscyBvZlxcbiAgMTA6XFx0XFx0ICBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMsIGV4Y2VwdCA4OEU2MDYwLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfUFRQXFxuICAxMzpcXHRcXHRib29sIFxcXCJQVFAgc3VwcG9ydCBmb3IgTWFydmVsbCA4OEU2eHh4XFxcIlxcbiAgMTQ6XFx0XFx0ZGVmYXVsdCBuXFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIChORVRfRFNBX01WODhFNlhYWCA9IHkgXFx1MDAyNlxcdTAwMjYgUFRQXzE1ODhfQ0xPQ0sgPSB5KSB8fCBcXFxcXFxuICAxNjpcXHRcXHQgICAgICAgICAgIChORVRfRFNBX01WODhFNlhYWCA9IG0gXFx1MDAyNlxcdTAwMjYgUFRQXzE1ODhfQ0xPQ0spXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFNheSBZIHRvIGVuYWJsZSBQVFAgaGFyZHdhcmUgdGltZXN0YW1waW5nIG9uIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2hcXG4gIDE5OlxcdFxcdCAgY2hpcHMgdGhhdCBzdXBwb3J0IGl0LlxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfTEVEU1xcbiAgMjI6XFx0XFx0Ym9vbCBcXFwiTEVEIHN1cHBvcnQgZm9yIE1hcnZlbGwgODhFNnh4eFxcXCJcXG4gIDIzOlxcdFxcdGRlZmF1bHQgeVxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01WODhFNlhYWFxcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1ORVRfRFNBX01WODhFNlhYWFxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX1RSSUdHRVJTXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFRoaXMgZW5hYmxlZCBzdXBwb3J0IGZvciBjb250cm9sbGluZyB0aGUgTEVEcyBhdHRhY2hlZCB0byB0aGVcXG4gIDI5OlxcdFxcdCAgTWFydmVsbCA4OEU2eHh4IHN3aXRjaCBjaGlwcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6NDIuODUxNjc5MDM2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgxODMzMjM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIE1vZHVsZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXZpY2UgZHJpdmVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYG12ODhlNnh4eGAsIGBiY21fc2YyYCwgYW5kIGBuZnBgIGFyZSBoYW5kbGVkIGR1cmluZyB0aGUgcHJvYmUgYW5kIGF0dGFjaCBwaGFzZS4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBkaWZmZXJlbmNlcyBhbmQgY29tbW9uYWxpdGllcyBpbiB0aGVpciBpbXBsZW1lbnRhdGlvbnMuIFNvLCBJJ2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UgY29kZS4gSSdsbCBuZWVkIHRvIHBpbnBvaW50IGV4YWN0bHkgd2hlcmUgdGhlIG1vZHVsZSdzIGluaXRpYWxpemF0aW9uIGtpY2tzIG9mZi4gSSdsbCBzZWFyY2ggZWFjaCBtb2R1bGUncyBjb2RlIGZvciBpbnN0YW5jZXMgb2YgXCJpbml0XCIgb3IgXCJwcm9iZVwiLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludHMsIHRoZSBzdGFydGluZyBwb2ludHMgZm9yIHRoZXNlIGRyaXZlcnMsIGFuZCBhbGxvdyBhIGZvY3VzZWQgYW5hbHlzaXMuIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgYW5kIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDEzLCJPdXRwdXRUb2tlbnMiOjYzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo0NS42NzAwMTQxNDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDA2NTQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdHxtb2R1bGVfbWRpb19kcml2ZXJ8bWRpb19kcml2ZXJfcmVnaXN0ZXJ8cGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyfHBjaV9yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6NDUuNzQ1NDI3NDMzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMjg2NTk1MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiBob3cgdGhlc2UgRFNBIHN3aXRjaCBjaGlwcyBhcmUgaW5pdGlhbGl6ZWQgYW5kIGludGVncmF0ZWQgaW50byB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoZSBjcnVjaWFsIHJlZ2lzdHJhdGlvbiBob29rcyBmb3IgdGhlc2UgbW9kdWxlcywgdGhlIGVudHJ5IHBvaW50cyB0aGF0IGVzc2VudGlhbGx5IHRlbGwgdGhlIGtlcm5lbCBcIkhleSwgSSdtIGhlcmUgYW5kIHJlYWR5IHRvIGNvbnRyb2wgdGhpcyBoYXJkd2FyZSxcIiBhcmUgZ29pbmcgdG8gYmUgbHVya2luZyBpbiB0aGUgZHJpdmVyIHNvdXJjZSBmaWxlcyBmb3IgdGhlc2Ugc3BlY2lmaWMgY2hpcHMuXG5cbioqTG9jYXRpbmcgRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cblNvLCBJJ20gZ29pbmcgdG8gZm9jdXMgbXkgc2VhcmNoIG9uIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jYC4gU3BlY2lmaWNhbGx5LCBJJ20gaHVudGluZyBmb3IgdGhlIHN0YW5kYXJkIG1vZHVsZSByZWdpc3RyYXRpb24gZnVuY3Rpb25zIOKAkyB0aGUgdGVsbC10YWxlIHNpZ25zIG9mIGEgZHJpdmVyJ3MgcHJlc2VuY2UuIEknbGwgYmUgbG9va2luZyBmb3IgYG1vZHVsZV9pbml0YCBjYWxscywgbGlrZWx5IHBvaW50aW5nIHRvIGEgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSBjaGlwJ3MgaW50ZXJuYWwgc3RhdGUsIHJlZ2lzdGVycyBpdCB3aXRoIHRoZSBEU0EgZnJhbWV3b3JrLCBhbmQgcGVyaGFwcyBob29rcyBpbnRvIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBwcm9iaW5nIG1lY2hhbmlzbXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTWFydmVsbCBhbmQgQnJvYWRjb20gY2hpcHMgYXJlIGNvbWluZyBvbmxpbmUuIEknbGwgYmUgaW50ZXJlc3RlZCB0byBzZWUgaG93IHRoZXkndmUgaGFuZGxlZCByZWdpc3RlcmluZyB0aGVtc2VsdmVzIGFzIERTQSBkZXZpY2VzLCBhbmQgSSBleHBlY3QgdG8gc2VlIHNwZWNpZmljIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBwcm9iYWJseSB3aXRoaW4gYG1vZHVsZV9pbml0YCBmdW5jdGlvbnMuIFRoaXMgc2VhcmNoIHNob3VsZCBwcm92aWRlIGEgY3J1Y2lhbCBnbGltcHNlIGludG8gdGhlIG92ZXJhbGwgc3lzdGVtIGluaXRpYWxpemF0aW9uIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMDQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo0OC45NzQwODk2OTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MjI3MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NzUyOT1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG12ODhlNnh4eF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTM5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1NDA6bWRpb19tb2R1bGVfZHJpdmVyKG12ODhlNnh4eF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1NDEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA0OjA5OjQ5LjA0MzMyMTIwM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjUwNzU0Nzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGRlbGl2ZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIGNvbnNpZGVyYXRpb25zOlxuXG4qKkFuYWx5emluZyB0aGUgTWFydmVsbCBTd2l0Y2ggRHJpdmVyIGFuZCBDb25zaWRlcmluZyBhIENvbXBhcmlzb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYG12ODhlNnh4eGAuIFRoYXQncyBhbiBgbWRpb19kcml2ZXJgLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIE1hcnZlbGwncyA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaGVzLiBJJ20gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoIHRoZXNlIGtpbmRzIG9mIGRyaXZlcnMsIHNvIHRoaXMgaXMgYWxsIGJyZWFkLWFuZC1idXR0ZXIgc3R1ZmYuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGhvdyBkb2VzIHRoaXMgZHJpdmVyIHN0YWNrIHVwIGFnYWluc3Qgc2ltaWxhciBpbXBsZW1lbnRhdGlvbnM/IE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgYmVuY2htYXJrIGl0IGFnYWluc3QgdGhlIGBiY21fc2YyYCBkcml2ZXIuIEkgbmVlZCB0byBnZXQgYSBwaWN0dXJlIG9mIHdoYXQgTWFydmVsbCBpcyBvZmZlcmluZyBoZXJlLCBhbmQgYSBjb21wYXJpc29uIHdpdGggdGhlIGBiY21fc2YyYCBkcml2ZXIgd2lsbCBnaXZlIG1lIGEgYmFzZWxpbmUgZm9yIGV2YWx1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MDcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo1MS4yOTQwNzk4NjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMjM1NDE3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9iY21fc2YyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo1MS4zNTYzMzY2MjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ3MjEzODk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZmlsZSBzZWFyY2g6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERyaXZlciBGaWxlcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHNvbWUgZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZHNhYCBkaXJlY3RvcnkgdGhhdCBhcmUgcmVsYXRlZCB0byBgYmNtX3NmMmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBiY21fc2YyYCBsaWtlbHkgcmVmZXJlbmNlcyBhIHNwZWNpZmljIEJyb2FkY29tIChCQ00pIFN3aXRjaCBGYWJyaWMgKFNGKSBoYXJkd2FyZSBjb21wb25lbnQuIEdpdmVuIG15IGV4cGVydGlzZSBpbiB0aGlzIGFyZWEsIGl0J3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdGhhdCBJJ20gbGlrZWx5IGRlYWxpbmcgd2l0aCBkcml2ZXIgY29kZSBmb3IgYSBuZXR3b3JrIHN3aXRjaCBvciByZWxhdGVkIGhhcmR3YXJlLiBUaGUgYGRyaXZlcnMvbmV0L2RzYWAgZGlyZWN0b3J5IGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzLCBhcyBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGlzIGEgY29tbW9uIGZyYW1ld29yayBmb3IgaW50ZWdyYXRpbmcgc3dpdGNoIGhhcmR3YXJlIGludG8gdGhlIExpbnV4IGtlcm5lbC5cblxuVGhlcmVmb3JlLCBteSBleHBlY3RhdGlvbiBpcyB0aGF0IHRoZSBmaWxlcyBJIGZpbmQgd2lsbCBjb250YWluIHRoZSBkZXZpY2UgZHJpdmVyIGNvZGUsIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCByZWdpc3RlciBkZWZpbml0aW9ucywgb3IgcG9zc2libHkgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBzcGVjaWZpYyB0byB0aGUgYGJjbV9zZjJgIGhhcmR3YXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHNvdXJjZSBjb2RlIGZpbGVzIChsaWtlbHkgQyBmaWxlcywgaGVhZGVyIGZpbGVzKSB0aGF0IHdvdWxkIGltcGxlbWVudCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUga2VybmVsIGFuZCB0aGUgc3dpdGNoIGhhcmR3YXJlLiBUaGUgc2VhcmNoIGl0c2VsZiBpcyBzaW1wbGU7IEknbGwgdXNlIHRvb2xzIGxpa2UgYGZpbmRgIGFuZCBgZ3JlcGAgb3IgbXkgcHJlZmVycmVkIElERSdzIHNlYXJjaCBmdW5jdGlvbi4gVWx0aW1hdGVseSwgSSBhbnRpY2lwYXRlIHRoaXMgc2VhcmNoIHdpbGwgbGVhZCBtZSB0byB0aGUgZHJpdmVyIHNvdXJjZSB0aGF0IHdpbGwgbGlrZWx5IGltcGxlbWVudCB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgaW50ZXJmYWNlIGZvciB0aGUgYGJjbV9zZjJgIGRldmljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwNjksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo1My44Mjg0NzgxNTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE5MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9kc2FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiYmNtX3NmMi5jXCIsXG4gICAgXCJiY21fc2YyLmhcIixcbiAgICBcImJjbV9zZjJfY2ZwLmNcIixcbiAgICBcImJjbV9zZjJfcmVncy5oXCIsXG4gICAgXCJkc2FfbG9vcC5jXCIsXG4gICAgXCJrczg5OTUuY1wiLFxuICAgIFwibGFuOTMwMy1jb3JlLmNcIixcbiAgICBcImxhbjkzMDMuaFwiLFxuICAgIFwibGFuOTMwM19pMmMuY1wiLFxuICAgIFwibGFuOTMwM19tZGlvLmNcIixcbiAgICBcIm10NzUzMC1tZGlvLmNcIixcbiAgICBcIm10NzUzMC1tbWlvLmNcIixcbiAgICBcIm10NzUzMC5jXCIsXG4gICAgXCJtdDc1MzAuaFwiLFxuICAgIFwibXQ3NjI4LmNcIixcbiAgICBcIm12ODhlNjA2MC5jXCIsXG4gICAgXCJtdjg4ZTYwNjAuaFwiLFxuICAgIFwicnpuMV9hNXBzdy5jXCIsXG4gICAgXCJyem4xX2E1cHN3LmhcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC1jb3JlLmNcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC1wbGF0Zm9ybS5jXCIsXG4gICAgXCJ2aXRlc3NlLXZzYzczeHgtc3BpLmNcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC5oXCIsXG4gICAgXCJ5dDkyMXguY1wiLFxuICAgIFwieXQ5MjF4LmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiYjUzXCIsXG4gICAgXCJoaXJzY2htYW5uXCIsXG4gICAgXCJsYW50aXFcIixcbiAgICBcIm1pY3JvY2hpcFwiLFxuICAgIFwibXY4OGU2eHh4XCIsXG4gICAgXCJteGw4NjJ4eFwiLFxuICAgIFwibmV0Y1wiLFxuICAgIFwib2NlbG90XCIsXG4gICAgXCJxY2FcIixcbiAgICBcInJlYWx0ZWtcIixcbiAgICBcInNqYTExMDVcIixcbiAgICBcInhyczcwMHhcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo1My44Mjg1ODIwOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzgyNTM3Mzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQkNNX1NGMiBEcml2ZXIqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCBjaGVjayBvdXQgaG93IHRoZSBCcm9hZGNvbSBTRjIgZHJpdmVyIGlzIGJlaW5nIHJlZ2lzdGVyZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGRyaXZlcidzIHJlZ2lzdHJhdGlvbiBpcyBmdW5jdGlvbmluZyBhcyBleHBlY3RlZCwgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBpc3N1ZXMgaW4gaXRzIGluaXRpYWxpemF0aW9uIG9yIGJpbmRpbmcgcHJvY2Vzcy4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSBoYXJkd2FyZSBpcyBiZWhhdmluZyBhcHByb3ByaWF0ZWx5LiBJJ2xsIGZvY3VzIG9uIHRoZSBjb3JlIHJlZ2lzdHJhdGlvbiBtZWNoYW5pc21zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc4OSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo1NS42MTExMjMwNDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTEzNTE1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGxhdGZvcm1fZHJpdmVyfHBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9MTYyNj1zdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMoYmNtX3NmMl9wbV9vcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTE2MjktXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxNjMwOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJjbV9zZjJfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTYzMS1cXHQucHJvYmVcXHQ9IGJjbV9zZjJfc3dfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTE2MzktfTtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjE2NDA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihiY21fc2YyX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNjQxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo1NS43MzAyNjIzN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTU5NDUxMDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYmNtX3NmMiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyAqYmNtX3NmMiogaXMgdGhlIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBPcGVuRmxvdy9wbGF0Zm9ybSBkcml2ZXIsIHRoYXQncyB0YWlsb3JlZCBmb3IgdGhlIEJyb2FkY29tIFN0YXJmaWdodGVyIDIgc3dpdGNoIHNpbGljb24uIFRoYXQncyBnb29kIGNvbnRleHQgdG8gc3RhcnQgd2l0aCDigJMgSSBjYW4gaW1tZWRpYXRlbHkgcGxhY2UgaXQgaW4gdGhlIGVjb3N5c3RlbS4gSSBrbm93IHdoYXQgdGhlIFwiYmNtXCIgcHJlZml4IHVzdWFsbHkgaW5kaWNhdGVzLCBhbmQgXCJTdGFyZmlnaHRlciAyXCIgZ2l2ZXMgbWUgYSBzb2xpZCBoYXJkd2FyZSBmb3VuZGF0aW9uIHRvIHdvcmsgZnJvbS5cblxuTm93LCBnaXZlbiB0aGF0IGl0J3MgYSBCcm9hZGNvbSBzd2l0Y2gsIG15IG5leHQgcXVlc3Rpb24gaXMgaW5ldml0YWJseSwgaG93IGlzIGl0IGRlYWxpbmcgd2l0aCB0aGUgbmV0d29yayBmb3J3YXJkaW5nIHBsYW5lIChORlApPyBEb2VzIGl0IHJ1biB0aGUgZGF0YSBwbGFuZSBkaXJlY3RseSBpbiBCcm9hZGNvbSdzIHNpbGljb24gb3IgZG9lcyBpdCBydW4gc29tZSBzb2Z0d2FyZSBwcm9jZXNzIG9uIGEgY29udHJvbCBwbGFuZSBwcm9jZXNzb3I/IFdoYXQgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIGFyZSB3ZSB0YWxraW5nIGFib3V0PyBMZXQncyBjaGVjayBORlAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjA0LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6NTcuODg5NzE3Mjk5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTA0MDEzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyfG1vZHVsZV9wY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbWFpbi5jPTk0OT1zdGF0aWMgaW50IF9faW5pdCBuZnBfbWFpbl9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9tYWluLmMtOTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYzo5NjA6XFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bmZwX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYy05NjEtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9tYWluLmMtOTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYzo5NjQ6XFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bmZwX25ldHZmX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYy05NjUtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6NTcuOTY4NzY2NDE1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyODEwMzQ1OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIERyaXZlciBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGVzZSBkcml2ZXIgY2hhbmdlcywgc3RhcnRpbmcgd2l0aCBgZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcGF0Y2guIEkgc2VlIHRoYXQgYGJjbV9zZjJfY2ZwX3J1bGVfZ2V0X2FsbGAgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiBgYmNtX3NmMl9jZnBfcnVsZV9nZXRgLiBUaGlzIHN1Z2dlc3RzIGEgZGVwZW5kZW5jeSBvciByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aG9zZSB0d28gZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGBiY21fc2YyX2NmcF9ydWxlX2dldF9hbGxgIHRvIHNlZSB3aGVyZSBlbHNlIGl0J3MgYmVpbmcgdXNlZC4gVW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBvZiB0aGF0IGZ1bmN0aW9uIGNhbGwgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyB0aGUgb3ZlcmFsbCBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEZyb20gaGVyZSBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgdXNhZ2UgYW5kIHVuZGVyc3RhbmQgaXRzIHNpZGUgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3MjAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDoxMDowMC4yNDk4MDMyNDhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMDExNzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJjbV9zZjJfY2ZwX3J1bGVfZ2V0X2FsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmM9MTA2ND1zdGF0aWMgaW50IGJjbV9zZjJfY2ZwX3J1bGVfZ2V0KHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmMtMTA4My0vKiBXZSBpbXBsZW1lbnQgdGhlIHNlYXJjaCBkb2luZyBhIFRDQU0gc2VhcmNoIG9wZXJhdGlvbiAqL1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jOjEwODQ6c3RhdGljIGludCBiY21fc2YyX2NmcF9ydWxlX2dldF9hbGwoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYy0xMDg1LVxcdFxcdFxcdFxcdCAgICBpbnQgcG9ydCwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKm5mYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jPTExMDQ9aW50IGJjbV9zZjJfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYy0xMTI0LVxcdGNhc2UgRVRIVE9PTF9HUlhDTFNSTEFMTDpcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYzoxMTI1OlxcdFxcdHJldCA9IGJjbV9zZjJfY2ZwX3J1bGVfZ2V0X2FsbChwcml2LCBwb3J0LCBuZmMsIHJ1bGVfbG9jcyk7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmMtMTEyNi1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MTA6MDAuMzQyODE5OTI0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk0NjM0MjM5MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFByb3ZpZGVkIENvZGUgQ2hhbmdlcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBzZXJpZXMgaXMgbGlrZWx5ICpub3QqIHN1aXRhYmxlIGZvciBmdXp6aW5nIGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQuIExldCdzIGRpZyBpbnRvIHRoZSBkZXRhaWxzOlxuXG5GaXJzdCwgYGJjbV9zZjJgLCB0aGUgQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBzd2l0Y2ggZHJpdmVyLiBDbGVhcmx5LCB0aGlzIGlzIGFuIFNvQyBwbGF0Zm9ybSBkcml2ZXIsIGV4cGVjdGluZyB0byBpbnRlcmFjdCB3aXRoIHNwZWNpZmljIEJyb2FkY29tIHN3aXRjaCBoYXJkd2FyZSByZWdpc3RlcnMsIGlkZW50aWZpZWQgYnkgZGV2aWNlIHRyZWUgbWF0Y2hlcy4gVGhpcyBzY3JlYW1zIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlXCIgaW4gYSB2YW5pbGxhIHg4Ni02NCBRRU1VIGVudmlyb25tZW50LiAgV2UncmUgdGFsa2luZyBhYm91dCBhbiBlbWJlZGRlZCBzd2l0Y2gsIG5vdCBzb21ldGhpbmcgZWFzaWx5IGVtdWxhdGVkLlxuXG5UaGVuIHdlIGhhdmUgYG12ODhlNnh4eGAuIFRoaXMgTWFydmVsbCBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIGlzIGFuIE1ESU8gZHJpdmVyLiAgSXQgcHJvYmVzIGZvciBwaHlzaWNhbCBzd2l0Y2ggY2hpcHMsIGlkZW50aWZpYWJsZSBieSB0aGVpciBzcGVjaWZpYyBQSFkgSURzLCBvdmVyIGFuIE1ESU8gYnVzLiAgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZXJlIGlzbid0IGEgcmVhZGlseSBhdmFpbGFibGUgbW9jayBvciBlbXVsYXRlZCBgbXY4OGU2eHh4YCBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIHN0YW5kYXJkIFFFTVUgb3IgdGhlIGtlcm5lbCBpdHNlbGYuIFdlIGhhdmUgYGRzYV9sb29wYCB3aGljaCwgd2hpbGUgYSBtb2NrIERTQSBzd2l0Y2gsIGlzIGEgc2VwYXJhdGUgZHJpdmVyLiBgbXY4OGU2eHh4YCBkaXJlY3RseSBpbnRlcmFjdHMgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZS4gTm8gZ28uXG5cbk5leHQsIGBuZnBgLiBUaGlzIGlzIGEgTmV0cm9ub21lIEZsb3cgUHJvY2Vzc29yIGRyaXZlciwgYSBQQ0llIFNtYXJ0TklDLiBUaGVzZSBhcmUgKnZlbmRvci1zcGVjaWZpYyogUENJZSBjYXJkcyDigJMgTmV0cm9ub21lIE5GUDQwMDAvTkZQNjAwMC9ORlAzODAwLiBUaGVzZSBhcmUgQVNJQ3MgdGhhdCBqdXN0IGFyZW4ndCBnb2luZyB0byBiZSBwcmVzZW50IG9yIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cC4gIEFnYWluLCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5cbk5vdywgbGV0J3Mgbm90IG92ZXJsb29rIHRoZSBjaGFuZ2UgaW4gYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC4gIFRoaXMgaXMgaW1wb3J0YW50LiBUaGUgbW9kaWZpY2F0aW9uIGlzIHB1cmVseSBhIGRvY3VtZW50YXRpb24gY29tbWVudCBhZGRlZCB0byB0aGUgYHN0cnVjdCBldGh0b29sX29wc2AuIEl0J3MgYSBjbGFyaWZpY2F0aW9uIG9uIGhvdyB0byBoYW5kbGUgdGhlIGBFVEhUT09MX0dSWENMU1JMQUxMYCBydWxlIGNvdW50LCBzcGVjaWZpY2FsbHkgdG8gcmV0dXJuIGAtRU1TR1NJWkVgIHdoZW4gdGhlIHVzZXItcHJvdmlkZWQgY291bnQgaXMgdG9vIHNtYWxsLiBCdXQgdGhpcyBpcyBhIGNvbW1lbnQsIG5vdCBleGVjdXRhYmxlIGNvZGUuXG5cbk5vdyBJJ20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIGFsbCB0aGUgZmlsZXMgdGhhdCB3ZXJlIG1vZGlmaWVkOiBgZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmNgLCBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNgLCBhbmQgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC5cblxuQWZ0ZXIgY3Jvc3MtY2hlY2tpbmcgdGhlIGRpZmYgcHJvdmlkZWQsIEkgY2FuIGNvbmZpcm0gdGhhdCB0aGUgb25seSBtb2RpZmllZCBleGVjdXRhYmxlIGNvZGUgaXMgaW5kZWVkIGluIHRoZSBkcml2ZXJzIGZvciB0aGUgYWZvcmVtZW50aW9uZWQgaGFyZHdhcmUuICBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCB1cGRhdGVzIGZsb3cgY2xhc3NpZmljYXRpb24gcnVsZXMgKGBFVEhUT09MX0dSWENMU1JMQUxMYCkgYWNyb3NzIHRoZSBkcml2ZXJzIHRvIHByZXZlbnQgYnVmZmVyIG92ZXJmbG93cywgYW5kIHRoZSBgaW5jbHVkZS9saW51eC9ldGh0b29sLmhgIGNoYW5nZSBpcyAqb25seSogYSBjb21tZW50LlxuXG5HaXZlbiBhbGwgdGhpcywgSSBjb25jbHVkZSB0aGF0IHRoZXNlIGNoYW5nZXMgZG8gbm90IGV4cG9zZSBhbnkgY29kZSB0aGF0IHdvdWxkIGJlIHJlbGV2YW50IHRvIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gVGhlIGhhcmR3YXJlIHRhcmdldHMgYXJlIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgaW4gdGhlc2Ugc2NlbmFyaW9zLCBhbmQgdGhlIG90aGVyIG1vZGlmaWNhdGlvbiBpcyBvbmx5IGEgZG9jdW1lbnRhdGlvbiBjaGFuZ2UuXG5cblRoZXJlZm9yZSwgdGhlIGZpbmFsIG91dHB1dCBpczpcblxuLSAgIFdvcnRoRnV6emluZzogZmFsc2Vcbi0gICBGb2N1c1N5bWJvbHM6IFxcWyBdXG4tICAgRW5hYmxlQ29uZmlnczogXFxbIF1cbi0gICBSZWFzb25pbmc6IFRoZSBwYXRjaCBzZXJpZXMgaXMgYWJvdXQgaW1wcm92aW5nIGBFVEhUT09MX0dSWENMU1JMQUxMYCBoYW5kbGluZyBhY3Jvc3MgdGhyZWUgZHJpdmVycyAoYGJjbV9zZjJgLCBgbXY4OGU2eHh4YCwgYG5mcGApIHRvIHByZXZlbnQgYnVmZmVyIG92ZXJmbG93cyByZWxhdGVkIHRvIHVzZXItcHJvdmlkZWQgYHJ1bGVfY250YCwgcGx1cyBhIGRvY3VtZW50YXRpb24gY29tbWVudCBpbiBgaW5jbHVkZS9saW51eC9ldGh0b29sLmhgLiAgQWxsIHRoZSBtb2RpZmllZCBleGVjdXRhYmxlIGNvZGUgaXMgaW4gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoQnJvYWRjb20gU29DIHN3aXRjaCwgTWFydmVsbCBzd2l0Y2ggY2hpcCwgYW5kIE5ldHJvbm9tZSBTbWFydE5JQykgdGhhdCBkZXBlbmQgb24gcGh5c2ljYWwgaGFyZHdhcmUgbm90IGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VL0dDRSwgYW5kIHRoZSBoZWFkZXIgY2hhbmdlIGlzIG9ubHkgZG9jdW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzNjcsIk91dHB1dFRva2VucyI6MTUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDoxMDowOS44MDYyNDYxMTJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBidWZmZXIgYm91bmRzIGNoZWNraW5nIGZvciBFVEhUT09MX0dSWENMU1JMQUxMIGluIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgKEJyb2FkY29tIFN0YXJmaWdodGVyIDIgRFNBIHN3aXRjaCwgTWFydmVsbCA4OEU2eHh4IERTQSBzd2l0Y2gsIGFuZCBOZXRyb25vbWUgTkZQIFNtYXJ0TklDKSBhbmQgdXBkYXRlcyBkb2MgY29tbWVudHMgaW4gaW5jbHVkZS9saW51eC9ldGh0b29sLmguIEFsbCBleGVjdXRhYmxlIGNvZGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gdmVuZG9yIGhhcmR3YXJlIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUNzL1NvQy9NRElPIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY2hhbmdlIHRvIGluY2x1ZGUvbGludXgvZXRodG9vbC5oIGlzIGRvY3VtZW50YXRpb24gb25seS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBhZGRzIGJ1ZmZlciBib3VuZHMgY2hlY2tpbmcgZm9yIEVUSFRPT0xfR1JYQ0xTUkxBTEwgaW4gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBEU0Egc3dpdGNoLCBNYXJ2ZWxsIDg4RTZ4eHggRFNBIHN3aXRjaCwgYW5kIE5ldHJvbm9tZSBORlAgU21hcnROSUMpIGFuZCB1cGRhdGVzIGRvYyBjb21tZW50cyBpbiBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC4gQWxsIGV4ZWN1dGFibGUgY29kZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB2ZW5kb3IgaGFyZHdhcmUgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3MvU29DL01ESU8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIHRoZSBjaGFuZ2UgdG8gaW5jbHVkZS9saW51eC9ldGh0b29sLmggaXMgZG9jdW1lbnRhdGlvbiBvbmx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MTA6MDkuODA2MjgxMDAyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkxjrv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 03:52:20 +0000 UTC FinishedAt: 2026-09-04 04:10:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgYnVmZmVyIGJvdW5kcyBjaGVja2luZyBmb3IgRVRIVE9PTF9HUlhDTFNSTEFMTCBpbiBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChCcm9hZGNvbSBTdGFyZmlnaHRlciAyIERTQSBzd2l0Y2gsIE1hcnZlbGwgODhFNnh4eCBEU0Egc3dpdGNoLCBhbmQgTmV0cm9ub21lIE5GUCBTbWFydE5JQykgYW5kIHVwZGF0ZXMgZG9jIGNvbW1lbnRzIGluIGluY2x1ZGUvbGludXgvZXRodG9vbC5oLiBBbGwgZXhlY3V0YWJsZSBjb2RlIGNoYW5nZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHZlbmRvciBoYXJkd2FyZSBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDcy9Tb0MvTURJTyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBhbmQgdGhlIGNoYW5nZSB0byBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaCBpcyBkb2N1bWVudGF0aW9uIG9ubHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzk0ZTY3ZDgzZTMyZGZiZGI5N2NkOWIwYTUwNWVlNmJhZDdjMzU4NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDQ6MDk6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmMgYi9kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuY1xuaW5kZXggNTBkM2E4MThlYjFiNy4uODRhMDg2YzNlOTliNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuY1xuQEAgLTEwODgsNiAmIzQzOzEwODgsOCBAQCBzdGF0aWMgaW50IGJjbV9zZjJfY2ZwX3J1bGVfZ2V0X2FsbChzdHJ1Y3QgYmNtX3NmMl9wcml2ICpwcml2LFxuIFx0dW5zaWduZWQgaW50IGluZGV4ID0gMSwgcnVsZXNfY250ID0gMDtcbiBcbiBcdGZvcl9lYWNoX3NldF9iaXRfZnJvbShpbmRleCwgcHJpdi1cdTAwM2VjZnAudW5pcXVlLCBwcml2LVx1MDAzZW51bV9jZnBfcnVsZXMpIHtcbiYjNDM7XHRcdGlmIChydWxlc19jbnQgPT0gbmZjLVx1MDAzZXJ1bGVfY250KVxuJiM0MztcdFx0XHRyZXR1cm4gLUVNU0dTSVpFO1xuIFx0XHRydWxlX2xvY3NbcnVsZXNfY250XSA9IGluZGV4O1xuIFx0XHRydWxlc19jbnQmIzQzOyYjNDM7O1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbmluZGV4IDgwYjg3N2M3NDUxM2QuLjdmNjhhMGM1NTgwMjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbkBAIC0yNDM4LDYgJiM0MzsyNDM4LDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHRzdHJ1Y3QgZXRodG9vbF9yeF9mbG93X3NwZWMgKmZzID0gXHUwMDI2cnhuZmMtXHUwMDNlZnM7XG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cdTAwM2Vwcml2O1xuIFx0c3RydWN0IG12ODhlNnh4eF9wb2xpY3kgKnBvbGljeTtcbiYjNDM7XHR1MzIgY250ID0gMDtcbiBcdGludCBlcnI7XG4gXHRpbnQgaWQ7XG4gXG5AQCAtMjQ2MywxMSAmIzQzOzI0NjQsMTggQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOlxuIFx0XHRyeG5mYy1cdTAwM2VkYXRhID0gMDtcbi1cdFx0cnhuZmMtXHUwMDNlcnVsZV9jbnQgPSAwO1xuLVx0XHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2Y2hpcC1cdTAwM2Vwb2xpY2llcywgcG9saWN5LCBpZClcbi1cdFx0XHRpZiAocG9saWN5LVx1MDAzZXBvcnQgPT0gcG9ydClcbi1cdFx0XHRcdHJ1bGVfbG9jc1tyeG5mYy1cdTAwM2VydWxlX2NudCYjNDM7JiM0MztdID0gaWQ7XG4gXHRcdGVyciA9IDA7XG4mIzQzO1x0XHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2Y2hpcC1cdTAwM2Vwb2xpY2llcywgcG9saWN5LCBpZCkge1xuJiM0MztcdFx0XHRpZiAocG9saWN5LVx1MDAzZXBvcnQgIT0gcG9ydClcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdFx0aWYgKGNudCA9PSByeG5mYy1cdTAwM2VydWxlX2NudCkge1xuJiM0MztcdFx0XHRcdGVyciA9IC1FTVNHU0laRTtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0XHRydWxlX2xvY3NbY250JiM0MzsmIzQzO10gPSBpZDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGlmICghZXJyKVxuJiM0MztcdFx0XHRyeG5mYy1cdTAwM2VydWxlX2NudCA9IGNudDtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRlcnIgPSAtRU9QTk9UU1VQUDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2V0aHRvb2wuY1xuaW5kZXggYTJhODlkNDhlM2NhYy4uNGU4MzYzNzcxNWUwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNcbkBAIC0xNDIxLDcgJiM0MzsxNDIxLDggQEAgc3RhdGljIGludCBuZnBfbmV0X2dldF9mc19ydWxlKHN0cnVjdCBuZnBfbmV0ICpubiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcbiBcdHJldHVybiAtRU5PRU5UO1xuIH1cbiBcbi1zdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX2xvYyhzdHJ1Y3QgbmZwX25ldCAqbm4sIHUzMiAqcnVsZV9sb2NzKVxuJiM0MztzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX2xvYyhzdHJ1Y3QgbmZwX25ldCAqbm4sIHN0cnVjdCBldGh0b29sX3J4bmZjICpjbWQsXG4mIzQzO1x0XHRcdCAgICAgIHUzMiAqcnVsZV9sb2NzKVxuIHtcbiBcdHN0cnVjdCBuZnBfZnNfZW50cnkgKmVudHJ5O1xuIFx0dTMyIGNvdW50ID0gMDtcbkBAIC0xNDI5LDggJiM0MzsxNDMwLDEyIEBAIHN0YXRpYyBpbnQgbmZwX25ldF9nZXRfZnNfbG9jKHN0cnVjdCBuZnBfbmV0ICpubiwgdTMyICpydWxlX2xvY3MpXG4gXHRpZiAoIShubi1cdTAwM2VjYXBfdzEgXHUwMDI2IE5GUF9ORVRfQ0ZHX0NUUkxfRkxPV19TVEVFUikpXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksIFx1MDAyNm5uLVx1MDAzZWZzLmxpc3QsIG5vZGUpXG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgXHUwMDI2bm4tXHUwMDNlZnMubGlzdCwgbm9kZSkge1xuJiM0MztcdFx0aWYgKGNvdW50ID09IGNtZC1cdTAwM2VydWxlX2NudClcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiBcdFx0cnVsZV9sb2NzW2NvdW50JiM0MzsmIzQzO10gPSBlbnRyeS1cdTAwM2Vsb2M7XG4mIzQzO1x0fVxuJiM0MztcdGNtZC1cdTAwM2VydWxlX2NudCA9IGNvdW50O1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTE0NTUsNyAmIzQzOzE0NjAsNyBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X3J4bmZjKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdHJldHVybiBuZnBfbmV0X2dldF9mc19ydWxlKG5uLCBjbWQpO1xuIFx0Y2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOlxuIFx0XHRjbWQtXHUwMDNlZGF0YSA9IE5GUF9GU19NQVhfRU5UUlk7XG4tXHRcdHJldHVybiBuZnBfbmV0X2dldF9mc19sb2Mobm4sIHJ1bGVfbG9jcyk7XG4mIzQzO1x0XHRyZXR1cm4gbmZwX25ldF9nZXRfZnNfbG9jKG5uLCBjbWQsIHJ1bGVfbG9jcyk7XG4gXHRkZWZhdWx0OlxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHR9XG5AQCAtMTY5OCw4ICYjNDM7MTcwMywxNCBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZnNfYWRkKHN0cnVjdCBuZnBfbmV0ICpubiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcbiBcbiBcdFx0XHRubi1cdTAwM2Vmcy5jb3VudC0tO1xuIFx0XHRcdGVyciA9IG5mcF9uZXRfZnNfYWRkX2h3KG5uLCBuZXcpO1xuLVx0XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0XHQvKiBtYm94IGJyb2tlbiwgYWRkaW5nIHRoZSBvbGQgcnVsZSBiYWNrIHdpbGxcbiYjNDM7XHRcdFx0XHQgKiBsaWtlbHkgYWxzbyBmYWlsLlxuJiM0MztcdFx0XHRcdCAqL1xuJiM0MztcdFx0XHRcdGxpc3RfZGVsKFx1MDAyNmVudHJ5LVx1MDAzZW5vZGUpO1xuJiM0MztcdFx0XHRcdGtmcmVlKGVudHJ5KTtcbiBcdFx0XHRcdGdvdG8gZXJyO1xuJiM0MztcdFx0XHR9XG4gXG4gXHRcdFx0bm4tXHUwMDNlZnMuY291bnQmIzQzOyYjNDM7O1xuIFx0XHRcdGxpc3RfcmVwbGFjZShcdTAwMjZlbnRyeS1cdTAwM2Vub2RlLCBcdTAwMjZuZXctXHUwMDNlbm9kZSk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuaW5kZXggMTI2ODNiNWQxMjVlNC4uMjUzNjAwYzBlY2NkZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuQEAgLTEwNTcsNiAmIzQzOzEwNTcsMTIgQEAgc3RydWN0IGtlcm5lbF9ldGh0b29sX3RzX2luZm8ge1xuICAqIEBnZXRfc3NldF9jb3VudDogR2V0IG51bWJlciBvZiBzdHJpbmdzIHRoYXQgQGdldF9zdHJpbmdzIHdpbGwgd3JpdGUuXG4gICogQGdldF9yeG5mYzogR2V0IFJYIGZsb3cgY2xhc3NpZmljYXRpb24gcnVsZXMuICBSZXR1cm5zIGEgbmVnYXRpdmVcbiAgKlx0ZXJyb3IgY29kZSBvciB6ZXJvLlxuJiM0MzsgKlx0Tm90ZSB0aGF0IGZvciAlRVRIVE9PTF9HUlhDTFNSTEFMTCBydWxlX2NudCBhbmQgc2l6ZSBvZiB0aGUgYXJyYXlzXG4mIzQzOyAqXHRpcyB1c2VyLXByb3ZpZGVkLCBhbmQgbm90IGd1YXJhbnRlZWQgdG8gbWF0Y2ggd2hhdCBkcml2ZXIgd291bGRcbiYjNDM7ICpcdGhhdmUgcmVwb3J0ZWQgdmlhICVFVEhUT09MX0dSWENMU1JMQ05ULiBEcml2ZXJzIG11c3QgcmV0dXJuIC0lRU1TR1NJWkVcbiYjNDM7ICpcdHdoZW4gcnVsZV9jbnQgaXMgdG9vIHNtYWxsLiBydWxlX2xvY3MgaXMgJU5VTEwgd2hlbiBydWxlX2NudCBpcyB6ZXJvLlxuJiM0MzsgKlx0T24gc3VjY2VzcyBkcml2ZXJzIG11c3Qgc2V0IHJ1bGVfY250IHRvIHRoZSBudW1iZXIgb2YgbG9jYXRpb25zIHRoZXlcbiYjNDM7ICpcdGZpbGxlZCBpbiwgdGhlIGNvcmUgY29waWVzIG91dCBleGFjdGx5IHRoYXQgbWFueS5cbiAgKiBAc2V0X3J4bmZjOiBTZXQgUlggZmxvdyBjbGFzc2lmaWNhdGlvbiBydWxlcy4gIFJldHVybnMgYSBuZWdhdGl2ZVxuICAqXHRlcnJvciBjb2RlIG9yIHplcm8uXG4gICogQGZsYXNoX2RldmljZTogV3JpdGUgYSBmaXJtd2FyZSBpbWFnZSB0byBkZXZpY2UmIzM5O3MgZmxhc2ggbWVtb3J5LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBhZGRzIGJ1ZmZlciBib3VuZHMgY2hlY2tpbmcgZm9yIEVUSFRPT0xfR1JYQ0xTUkxBTEwgaW4gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBEU0Egc3dpdGNoLCBNYXJ2ZWxsIDg4RTZ4eHggRFNBIHN3aXRjaCwgYW5kIE5ldHJvbm9tZSBORlAgU21hcnROSUMpIGFuZCB1cGRhdGVzIGRvYyBjb21tZW50cyBpbiBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC4gQWxsIGV4ZWN1dGFibGUgY29kZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB2ZW5kb3IgaGFyZHdhcmUgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3MvU29DL01ESU8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIHRoZSBjaGFuZ2UgdG8gaW5jbHVkZS9saW51eC9ldGh0b29sLmggaXMgZG9jdW1lbnRhdGlvbiBvbmx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM5NGU2N2Q4M2UzMmRmYmRiOTdjZDliMGE1MDVlZTZiYWQ3YzM1ODYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCA0IDA0OjA5OjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmMgYi9kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYwppbmRleCA1MGQzYTgxOGViMWI3Li44NGEwODZjM2U5OWI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYwpAQCAtMTA4OCw2ICYjNDM7MTA4OCw4IEBAIHN0YXRpYyBpbnQgYmNtX3NmMl9jZnBfcnVsZV9nZXRfYWxsKHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXYsCiAJdW5zaWduZWQgaW50IGluZGV4ID0gMSwgcnVsZXNfY250ID0gMDsKIAogCWZvcl9lYWNoX3NldF9iaXRfZnJvbShpbmRleCwgcHJpdi0mZ3Q7Y2ZwLnVuaXF1ZSwgcHJpdi0mZ3Q7bnVtX2NmcF9ydWxlcykgewomIzQzOwkJaWYgKHJ1bGVzX2NudCA9PSBuZmMtJmd0O3J1bGVfY250KQomIzQzOwkJCXJldHVybiAtRU1TR1NJWkU7CiAJCXJ1bGVfbG9jc1tydWxlc19jbnRdID0gaW5kZXg7CiAJCXJ1bGVzX2NudCYjNDM7JiM0Mzs7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYwppbmRleCA4MGI4NzdjNzQ1MTNkLi43ZjY4YTBjNTU4MDI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYwpAQCAtMjQzOCw2ICYjNDM7MjQzOCw3IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2dldF9yeG5mYyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCXN0cnVjdCBldGh0b29sX3J4X2Zsb3dfc3BlYyAqZnMgPSAmYW1wO3J4bmZjLSZndDtmczsKIAlzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy0mZ3Q7cHJpdjsKIAlzdHJ1Y3QgbXY4OGU2eHh4X3BvbGljeSAqcG9saWN5OwomIzQzOwl1MzIgY250ID0gMDsKIAlpbnQgZXJyOwogCWludCBpZDsKIApAQCAtMjQ2MywxMSAmIzQzOzI0NjQsMTggQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiAJCWJyZWFrOwogCWNhc2UgRVRIVE9PTF9HUlhDTFNSTEFMTDoKIAkJcnhuZmMtJmd0O2RhdGEgPSAwOwotCQlyeG5mYy0mZ3Q7cnVsZV9jbnQgPSAwOwotCQlpZHJfZm9yX2VhY2hfZW50cnkoJmFtcDtjaGlwLSZndDtwb2xpY2llcywgcG9saWN5LCBpZCkKLQkJCWlmIChwb2xpY3ktJmd0O3BvcnQgPT0gcG9ydCkKLQkJCQlydWxlX2xvY3NbcnhuZmMtJmd0O3J1bGVfY250JiM0MzsmIzQzO10gPSBpZDsKIAkJZXJyID0gMDsKJiM0MzsJCWlkcl9mb3JfZWFjaF9lbnRyeSgmYW1wO2NoaXAtJmd0O3BvbGljaWVzLCBwb2xpY3ksIGlkKSB7CiYjNDM7CQkJaWYgKHBvbGljeS0mZ3Q7cG9ydCAhPSBwb3J0KQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsJCQlpZiAoY250ID09IHJ4bmZjLSZndDtydWxlX2NudCkgewomIzQzOwkJCQllcnIgPSAtRU1TR1NJWkU7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCX0KJiM0MzsJCQlydWxlX2xvY3NbY250JiM0MzsmIzQzO10gPSBpZDsKJiM0MzsJCX0KJiM0MzsJCWlmICghZXJyKQomIzQzOwkJCXJ4bmZjLSZndDtydWxlX2NudCA9IGNudDsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZXJyID0gLUVPUE5PVFNVUFA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2V0aHRvb2wuYwppbmRleCBhMmE4OWQ0OGUzY2FjLi40ZTgzNjM3NzE1ZTAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmMKQEAgLTE0MjEsNyAmIzQzOzE0MjEsOCBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX3J1bGUoc3RydWN0IG5mcF9uZXQgKm5uLCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKQogCXJldHVybiAtRU5PRU5UOwogfQogCi1zdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX2xvYyhzdHJ1Y3QgbmZwX25ldCAqbm4sIHUzMiAqcnVsZV9sb2NzKQomIzQzO3N0YXRpYyBpbnQgbmZwX25ldF9nZXRfZnNfbG9jKHN0cnVjdCBuZnBfbmV0ICpubiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZCwKJiM0MzsJCQkgICAgICB1MzIgKnJ1bGVfbG9jcykKIHsKIAlzdHJ1Y3QgbmZwX2ZzX2VudHJ5ICplbnRyeTsKIAl1MzIgY291bnQgPSAwOwpAQCAtMTQyOSw4ICYjNDM7MTQzMCwxMiBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX2xvYyhzdHJ1Y3QgbmZwX25ldCAqbm4sIHUzMiAqcnVsZV9sb2NzKQogCWlmICghKG5uLSZndDtjYXBfdzEgJmFtcDsgTkZQX05FVF9DRkdfQ1RSTF9GTE9XX1NURUVSKSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgJmFtcDtubi0mZ3Q7ZnMubGlzdCwgbm9kZSkKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgJmFtcDtubi0mZ3Q7ZnMubGlzdCwgbm9kZSkgewomIzQzOwkJaWYgKGNvdW50ID09IGNtZC0mZ3Q7cnVsZV9jbnQpCiYjNDM7CQkJcmV0dXJuIC1FTVNHU0laRTsKIAkJcnVsZV9sb2NzW2NvdW50JiM0MzsmIzQzO10gPSBlbnRyeS0mZ3Q7bG9jOwomIzQzOwl9CiYjNDM7CWNtZC0mZ3Q7cnVsZV9jbnQgPSBjb3VudDsKIAogCXJldHVybiAwOwogfQpAQCAtMTQ1NSw3ICYjNDM7MTQ2MCw3IEBAIHN0YXRpYyBpbnQgbmZwX25ldF9nZXRfcnhuZmMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJcmV0dXJuIG5mcF9uZXRfZ2V0X2ZzX3J1bGUobm4sIGNtZCk7CiAJY2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOgogCQljbWQtJmd0O2RhdGEgPSBORlBfRlNfTUFYX0VOVFJZOwotCQlyZXR1cm4gbmZwX25ldF9nZXRfZnNfbG9jKG5uLCBydWxlX2xvY3MpOwomIzQzOwkJcmV0dXJuIG5mcF9uZXRfZ2V0X2ZzX2xvYyhubiwgY21kLCBydWxlX2xvY3MpOwogCWRlZmF1bHQ6CiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAl9CkBAIC0xNjk4LDggJiM0MzsxNzAzLDE0IEBAIHN0YXRpYyBpbnQgbmZwX25ldF9mc19hZGQoc3RydWN0IG5mcF9uZXQgKm5uLCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKQogCiAJCQlubi0mZ3Q7ZnMuY291bnQtLTsKIAkJCWVyciA9IG5mcF9uZXRfZnNfYWRkX2h3KG5uLCBuZXcpOwotCQkJaWYgKGVycikKJiM0MzsJCQlpZiAoZXJyKSB7CiYjNDM7CQkJCS8qIG1ib3ggYnJva2VuLCBhZGRpbmcgdGhlIG9sZCBydWxlIGJhY2sgd2lsbAomIzQzOwkJCQkgKiBsaWtlbHkgYWxzbyBmYWlsLgomIzQzOwkJCQkgKi8KJiM0MzsJCQkJbGlzdF9kZWwoJmFtcDtlbnRyeS0mZ3Q7bm9kZSk7CiYjNDM7CQkJCWtmcmVlKGVudHJ5KTsKIAkJCQlnb3RvIGVycjsKJiM0MzsJCQl9CiAKIAkJCW5uLSZndDtmcy5jb3VudCYjNDM7JiM0Mzs7CiAJCQlsaXN0X3JlcGxhY2UoJmFtcDtlbnRyeS0mZ3Q7bm9kZSwgJmFtcDtuZXctJmd0O25vZGUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaAppbmRleCAxMjY4M2I1ZDEyNWU0Li4yNTM2MDBjMGVjY2RmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaApAQCAtMTA1Nyw2ICYjNDM7MTA1NywxMiBAQCBzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfdHNfaW5mbyB7CiAgKiBAZ2V0X3NzZXRfY291bnQ6IEdldCBudW1iZXIgb2Ygc3RyaW5ncyB0aGF0IEBnZXRfc3RyaW5ncyB3aWxsIHdyaXRlLgogICogQGdldF9yeG5mYzogR2V0IFJYIGZsb3cgY2xhc3NpZmljYXRpb24gcnVsZXMuICBSZXR1cm5zIGEgbmVnYXRpdmUKICAqCWVycm9yIGNvZGUgb3IgemVyby4KJiM0MzsgKglOb3RlIHRoYXQgZm9yICVFVEhUT09MX0dSWENMU1JMQUxMIHJ1bGVfY250IGFuZCBzaXplIG9mIHRoZSBhcnJheXMKJiM0MzsgKglpcyB1c2VyLXByb3ZpZGVkLCBhbmQgbm90IGd1YXJhbnRlZWQgdG8gbWF0Y2ggd2hhdCBkcml2ZXIgd291bGQKJiM0MzsgKgloYXZlIHJlcG9ydGVkIHZpYSAlRVRIVE9PTF9HUlhDTFNSTENOVC4gRHJpdmVycyBtdXN0IHJldHVybiAtJUVNU0dTSVpFCiYjNDM7ICoJd2hlbiBydWxlX2NudCBpcyB0b28gc21hbGwuIHJ1bGVfbG9jcyBpcyAlTlVMTCB3aGVuIHJ1bGVfY250IGlzIHplcm8uCiYjNDM7ICoJT24gc3VjY2VzcyBkcml2ZXJzIG11c3Qgc2V0IHJ1bGVfY250IHRvIHRoZSBudW1iZXIgb2YgbG9jYXRpb25zIHRoZXkKJiM0MzsgKglmaWxsZWQgaW4sIHRoZSBjb3JlIGNvcGllcyBvdXQgZXhhY3RseSB0aGF0IG1hbnkuCiAgKiBAc2V0X3J4bmZjOiBTZXQgUlggZmxvdyBjbGFzc2lmaWNhdGlvbiBydWxlcy4gIFJldHVybnMgYSBuZWdhdGl2ZQogICoJZXJyb3IgY29kZSBvciB6ZXJvLgogICogQGZsYXNoX2RldmljZTogV3JpdGUgYSBmaXJtd2FyZSBpbWFnZSB0byBkZXZpY2UmIzM5O3MgZmxhc2ggbWVtb3J5Lgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjIxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFN5emthbGxlciBQYXRjaCBTZXJpZXMgZm9yIE5ldHdvcmsgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBzZXJpZXMgaW50ZW5kZWQgZm9yIHN5emthbGxlciBmdXp6aW5nLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2VzIGFuZCwgY3JpdGljYWxseSwgaG93IGFjY2Vzc2libGUgdGhlc2UgZHJpdmVycyBhcmUgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgdXNlciYjMzk7cyBpbnRlcmVzdCBoZXJlIGlzIHRvIGV2YWx1YXRlIHRoZSBwYXRjaCBpbiB0aGUgY29udGV4dCBvZiBoYXJkd2FyZS9yZWFjaGFiaWxpdHkuCgpMZXQmIzM5O3MgYnJlYWsgZG93biB3aGF0JiMzOTtzIGJlZW4gdG91Y2hlZDogSSBzZWUgdGhlc2UgZmlsZXM6IGBkcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuY2AsIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jYCwgYW5kIGEgc2ltcGxlIGNvbW1lbnQgdXBkYXRlIGluIGBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaGAuIE15IGltbWVkaWF0ZSByZWFjdGlvbiBpcyB0byB6ZXJvIGluIG9uIHRob3NlIGRyaXZlcnM6IEJyb2FkY29tIFN0YXJmaWdodGVyIDIsIE1hcnZlbGwgODhFNnh4eCBEU0Egc3dpdGNoZXMsIGFuZCBOZXRyb25vbWUgTkZQIG5ldHdvcmsgY2FyZC4KCk5vdyBjb21lcyB0aGUgY3J1Y2lhbCBxdWVzdGlvbi4gQXJlIHRoZXNlIGRyaXZlcnMgcmVhbGlzdGljYWxseSByZWFjaGFibGUgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZT8gQ2FuIEkgaW5zdGFudGlhdGUgdGhlbSwgZXZlbiBwYXJ0aWFsbHksIHdpdGhpbiBRRU1VIG9yIEdDRT8gT3IgZG8gdGhleSBkZXBlbmQgaGVhdmlseSBvbiBNRElPIGJ1c2VzLCBwbGF0Zm9ybSBkZXZpY2VzLCBQQ0llIEFTSUNzLCBvciBvdGhlciBoYXJkd2FyZSBkZXBlbmRlbmNpZXM/IEkgbmVlZCB0byBrbm93IGlmIHRoaXMgcGF0Y2ggY2FuIGJlIGVmZmVjdGl2ZWx5IHRlc3RlZCB3aXRoaW4gYSB0eXBpY2FsIGZ1enppbmcgc2V0dXAuCgpJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZ3JlcCB0aGUga2VybmVsIHNvdXJjZSBhbmQgY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgdGhlc2UgZHJpdmVycy4gSSB3YW50IHRvIHNlZSBob3cgdGhleSYjMzk7cmUgY29uZmlndXJlZCwgd2hhdCBkZXBlbmRlbmNpZXMgdGhleSBoYXZlLCBhbmQgaWYgdGhlcmUmIzM5O3MgYW55IGluZGljYXRpb24gb2YgZW11bGF0ZWQgc3VwcG9ydC4gVGhpcyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZlYXNpYmlsaXR5IG9mIGZ1enppbmcgdGhlc2UgZHJpdmVycyBlZmZlY3RpdmVseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCQ01fU0YyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzU3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCBkaXZpbmcgaW50byB0aGUgc3ViamVjdCBtYXR0ZXI6CgoqKktjb25maWcgSW5zcGVjdGlvbiBmb3IgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9ucyBhcmUgYmVpbmcgaGFuZGxlZCB3aXRoaW4gdGhlc2UgcGFydGljdWxhciBkcml2ZXIgc3VidHJlZXMuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyB0aGV5JiMzOTtyZSB0aGUgaGVhcnQgb2YgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGJ1aWx0IGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkLCBiYXNlZCBvbiB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbG9vayBpbnRvIGBkcml2ZXJzL25ldC9kc2FgIOKAkyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlIGRyaXZlcnMgcmVzaWRlLCBzbyBJJiMzOTttIGV4cGVjdGluZyBzb21lIGludGVyZXN0aW5nIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBhbmQgZmVhdHVyZSBzZXRzIGluIHRoZXJlLiBUaGVuIEkmIzM5O2xsIHBvcCBvdmVyIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwYC4gSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBOZXRyb25vbWUgZGV2aWNlczsgSSYjMzk7bSBleHBlY3Rpbmcgc29tZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgdGhvc2U7IEkgd2FudCB0byBzZWUgd2hhdCBvcHRpb25zIGV4aXN0IGZvciB0aGF0IHNwZWNpYWxpemVkIGhhcmR3YXJlIHBsYXRmb3JtLCBpbmNsdWRpbmcgYW55IHVuaXF1ZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb25zIG9yIGZlYXR1cmUgdG9nZ2xlcyByZWxhdGVkIHRvIHRoZSBORlAgYXJjaGl0ZWN0dXJlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZHJpdmVycyBmaXQgaW50byB0aGUgbGFyZ2VyIG5ldHdvcmsgc3RhY2sgYW5kIGlkZW50aWZ5IGFueSBjb25maWd1cmF0aW9uIHBlY3VsaWFyaXRpZXMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gVGltZSB0byBzdGFydCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JjbV9zZjJ8bXY4OGU2eHh4fE5FVF9EU0EmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yPW1lbnUgXCYjMzQ7RGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSBkcml2ZXJzXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozOlx0ZGVwZW5kcyBvbiBORVRfRFNBXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9NT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy02LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6Nzpjb25maWcgTkVUX0RTQV9CQ01fU0YyXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctOS1cdGRlcGVuZHMgb24gSEFTX0lPTUVNXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMDpcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMS1cdHNlbGVjdCBGSVhFRF9QSFlcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE5OmNvbmZpZyBORVRfRFNBX0xPT1BcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7RFNBIG1vY2stdXAgRXRoZXJuZXQgc3dpdGNoIGNoaXAgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MjE6XHRzZWxlY3QgTkVUX0RTQV9UQUdfTk9ORVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMjItXHRzZWxlY3QgRklYRURfUEhZXG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9Mjk9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NVDc1MzBcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjMzOlx0c2VsZWN0IE5FVF9EU0FfVEFHX01US1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzQtXHRzZWxlY3QgUkVHTUFQX0lSUVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzU6XHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozNjpcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01NSU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDU6XHRkZXBlbmRzIG9uIE5FVF9EU0FfTVQ3NTMwXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Ni1cdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01My1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01NS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBNTUlPIGludGVyZmFjZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU2Olx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTctXHRkZXBlbmRzIG9uIEhBU19JT01FTVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTY1LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NjY6Y29uZmlnIE5FVF9EU0FfTVQ3NjI4XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzYyOCBFbWJlZGRlZCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNjgtXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgKFNPQ19NVDc2MjAgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6Njk6XHRzZWxlY3QgTkVUX0RTQV9UQUdfTVQ3NjI4XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03MC1cdHNlbGVjdCBNRURJQVRFS19GRV9TT0NfUEhZXG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzUtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo3Njpjb25maWcgTkVUX0RTQV9NVjg4RTYwNjBcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc3LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCA4OEU2MDYwIGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc4Olx0c2VsZWN0IE5FVF9EU0FfVEFHX1RSQUlMRVJcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTgzPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTg0LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6ODU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctODYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9OTk9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEwMC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEwMTpjb25maWcgTkVUX0RTQV9SWk4xX0E1UFNXXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDItXHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFJaL04xIEE1UFNXIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDMtXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEwNDpcdHNlbGVjdCBORVRfRFNBX1RBR19SWk4xX0E1UFNXXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDUtXHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEwOS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjExMDpjb25maWcgTkVUX0RTQV9LUzg5OTVcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTExMS1cdHRyaXN0YXRlIFwmIzM0O01pY3JlbCBLUzg5OTUgZmFtaWx5IDUtcG9ydHMgMTAvMTAwIEV0aGVybmV0IHN3aXRjaGVzXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMTItXHRkZXBlbmRzIG9uIFNQSVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTEzOlx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTExNC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMTctXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMTg6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMTktXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTIwOlx0c2VsZWN0IE5FVF9EU0FfVEFHX0xBTjkzMDNcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEyMS1cdHNlbGVjdCBSRUdNQVBcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMjYtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMjc6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzX0kyQ1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTI4LVx0dHJpc3RhdGUgXCYjMzQ7U01TQy9NaWNyb2NoaXAgTEFOOTMwMyAzLXBvcnRzIDEwLzEwMCBldGhlcm5ldCBzd2l0Y2ggaW4gSTJDIG1hbmFnZWQgbW9kZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEzMC1cdGRlcGVuZHMgb24gVkxBTl84MDIxUSB8fCBWTEFOXzgwMjFRPW5cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEzMTpcdHNlbGVjdCBORVRfRFNBX1NNU0NfTEFOOTMwM1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTMyLVx0c2VsZWN0IFJFR01BUF9JMkNcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMzYtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMzc6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEzOC1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBMQU45MzAzL0xBTjkzNTQgMy1wb3J0cyAxMC8xMDAgZXRoZXJuZXQgc3dpdGNoIGluIE1ESU8gbWFuYWdlZCBtb2RlXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMzk6XHRzZWxlY3QgTkVUX0RTQV9TTVNDX0xBTjkzMDNcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0MC1cdGRlcGVuZHMgb24gVkxBTl84MDIxUSB8fCBWTEFOXzgwMjFRPW5cbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNDQtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNDU6Y29uZmlnIE5FVF9EU0FfVklURVNTRV9WU0M3M1hYXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNDYtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTQ3Olx0c2VsZWN0IE5FVF9EU0FfVEFHX1ZTQzczWFhfODAyMVFcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0OC1cdHNlbGVjdCBGSVhFRF9QSFlcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNTQtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNTU6Y29uZmlnIE5FVF9EU0FfVklURVNTRV9WU0M3M1hYX1NQSVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTU2LVx0dHJpc3RhdGUgXCYjMzQ7Vml0ZXNzZSBWU0M3Mzg1LzczODgvNzM5NS83Mzk4IFNQSSBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE1Ny1cdGRlcGVuZHMgb24gU1BJXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNTg6XHRzZWxlY3QgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE1OS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjItXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNjM6Y29uZmlnIE5FVF9EU0FfVklURVNTRV9WU0M3M1hYX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjQtXHR0cmlzdGF0ZSBcJiMzNDtWaXRlc3NlIFZTQzczODUvNzM4OC83Mzk1LzczOTggUGxhdGZvcm0gbW9kZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjUtXHRkZXBlbmRzIG9uIEhBU19JT01FTVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTY2Olx0c2VsZWN0IE5FVF9EU0FfVklURVNTRV9WU0M3M1hYXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTcyOmNvbmZpZyBORVRfRFNBX1lUOTIxWFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNzQ6XHRzZWxlY3QgTkVUX0RTQV9UQUdfWVQ5MjFYXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNzUtXHRzZWxlY3QgTkVUX0lFRUU4MDIxUV9IRUxQRVJTIGlmIERDQlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyMzUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlF1aWNrIEtjb25maWcgQ2hlY2sqKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIGdldCBhIGxheSBvZiB0aGUgbGFuZCwgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyB0aGUgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjcm9zcy1yZWZlcmVuY2UgYSBjb3VwbGUgb2Yga2V5IEtjb25maWcgZmlsZXMgdG8gc2VlIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBzdHJ1Y3R1cmVkIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL0tjb25maWdgLiBUaGlzIHNob3VsZCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcywgZmVhdHVyZXMsIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBBIHF1aWNrIHNjYW4gb2YgdGhlc2Ugc2hvdWxkIGJlIGVub3VnaCB0byBnZXQgYSBncmFzcCBvZiB0aGVpciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHJlbGF0ZWQgZGVwZW5kZW5jaWVzIGJlZm9yZSBkaXZpbmcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBzb3VyY2UgY29kZS4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB1bnVzdWFsIG9yIGFueSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBmbGFncyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgYmVoYXZpb3IgSSYjMzk7bSBpbnZlc3RpZ2F0aW5nLiBUaGlzIGlzIGp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gYXZvaWQgd2FzdGluZyB0aW1lIGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIDg4RTZ4eHggRXRoZXJuZXQgc3dpdGNoIGZhYnJpYyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FcbiAgIDU6XHRcdHNlbGVjdCBJUlFfRE9NQUlOXG4gICA2Olx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfRURTQVxuICAgNzpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX0RTQVxuICAgODpcdFx0aGVscFxuICAgOTpcdFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIG1vc3Qgb2YgdGhlIE1hcnZlbGwgODhFNnh4eCBtb2RlbHMgb2ZcbiAgMTA6XHRcdCAgRXRoZXJuZXQgc3dpdGNoIGNoaXBzLCBleGNlcHQgODhFNjA2MC5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfUFRQXG4gIDEzOlx0XHRib29sIFwmIzM0O1BUUCBzdXBwb3J0IGZvciBNYXJ2ZWxsIDg4RTZ4eHhcJiMzNDtcbiAgMTQ6XHRcdGRlZmF1bHQgblxuICAxNTpcdFx0ZGVwZW5kcyBvbiAoTkVUX0RTQV9NVjg4RTZYWFggPSB5IFx1MDAyNlx1MDAyNiBQVFBfMTU4OF9DTE9DSyA9IHkpIHx8IFxcXG4gIDE2Olx0XHQgICAgICAgICAgIChORVRfRFNBX01WODhFNlhYWCA9IG0gXHUwMDI2XHUwMDI2IFBUUF8xNTg4X0NMT0NLKVxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBTYXkgWSB0byBlbmFibGUgUFRQIGhhcmR3YXJlIHRpbWVzdGFtcGluZyBvbiBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoXG4gIDE5Olx0XHQgIGNoaXBzIHRoYXQgc3VwcG9ydCBpdC5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfTEVEU1xuICAyMjpcdFx0Ym9vbCBcJiMzNDtMRUQgc3VwcG9ydCBmb3IgTWFydmVsbCA4OEU2eHh4XCYjMzQ7XG4gIDIzOlx0XHRkZWZhdWx0IHlcbiAgMjQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NVjg4RTZYWFhcbiAgMjU6XHRcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TkVUX0RTQV9NVjg4RTZYWFhcbiAgMjY6XHRcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xuICAyNzpcdFx0aGVscFxuICAyODpcdFx0ICBUaGlzIGVuYWJsZWQgc3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIExFRHMgYXR0YWNoZWQgdG8gdGhlXG4gIDI5Olx0XHQgIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2ggY2hpcHMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAxMwoJCQkJCQkJb3V0cHV0OiA2MwoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgTW9kdWxlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXZpY2UgZHJpdmVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYG12ODhlNnh4eGAsIGBiY21fc2YyYCwgYW5kIGBuZnBgIGFyZSBoYW5kbGVkIGR1cmluZyB0aGUgcHJvYmUgYW5kIGF0dGFjaCBwaGFzZS4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBkaWZmZXJlbmNlcyBhbmQgY29tbW9uYWxpdGllcyBpbiB0aGVpciBpbXBsZW1lbnRhdGlvbnMuIFNvLCBJJiMzOTtsbCBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gcGlucG9pbnQgZXhhY3RseSB3aGVyZSB0aGUgbW9kdWxlJiMzOTtzIGluaXRpYWxpemF0aW9uIGtpY2tzIG9mZi4gSSYjMzk7bGwgc2VhcmNoIGVhY2ggbW9kdWxlJiMzOTtzIGNvZGUgZm9yIGluc3RhbmNlcyBvZiAmIzM0O2luaXQmIzM0OyBvciAmIzM0O3Byb2JlJiMzNDsuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50cywgdGhlIHN0YXJ0aW5nIHBvaW50cyBmb3IgdGhlc2UgZHJpdmVycywgYW5kIGFsbG93IGEgZm9jdXNlZCBhbmFseXNpcy4gRnJvbSB0aGVyZSwgSSBjYW4gdHJhY2UgdGhlIGNvbnRyb2wgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXR8bW9kdWxlX21kaW9fZHJpdmVyfG1kaW9fZHJpdmVyX3JlZ2lzdGVyfHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcnxwY2lfcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzMDQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiBob3cgdGhlc2UgRFNBIHN3aXRjaCBjaGlwcyBhcmUgaW5pdGlhbGl6ZWQgYW5kIGludGVncmF0ZWQgaW50byB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoZSBjcnVjaWFsIHJlZ2lzdHJhdGlvbiBob29rcyBmb3IgdGhlc2UgbW9kdWxlcywgdGhlIGVudHJ5IHBvaW50cyB0aGF0IGVzc2VudGlhbGx5IHRlbGwgdGhlIGtlcm5lbCAmIzM0O0hleSwgSSYjMzk7bSBoZXJlIGFuZCByZWFkeSB0byBjb250cm9sIHRoaXMgaGFyZHdhcmUsJiMzNDsgYXJlIGdvaW5nIHRvIGJlIGx1cmtpbmcgaW4gdGhlIGRyaXZlciBzb3VyY2UgZmlsZXMgZm9yIHRoZXNlIHNwZWNpZmljIGNoaXBzLgoKKipMb2NhdGluZyBEcml2ZXIgUmVnaXN0cmF0aW9uKioKClNvLCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG15IHNlYXJjaCBvbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNgIGFuZCBgZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuY2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBodW50aW5nIGZvciB0aGUgc3RhbmRhcmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMg4oCTIHRoZSB0ZWxsLXRhbGUgc2lnbnMgb2YgYSBkcml2ZXImIzM5O3MgcHJlc2VuY2UuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGBtb2R1bGVfaW5pdGAgY2FsbHMsIGxpa2VseSBwb2ludGluZyB0byBhIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgY2hpcCYjMzk7cyBpbnRlcm5hbCBzdGF0ZSwgcmVnaXN0ZXJzIGl0IHdpdGggdGhlIERTQSBmcmFtZXdvcmssIGFuZCBwZXJoYXBzIGhvb2tzIGludG8gYW55IHBsYXRmb3JtLXNwZWNpZmljIHByb2JpbmcgbWVjaGFuaXNtcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNYXJ2ZWxsIGFuZCBCcm9hZGNvbSBjaGlwcyBhcmUgY29taW5nIG9ubGluZS4gSSYjMzk7bGwgYmUgaW50ZXJlc3RlZCB0byBzZWUgaG93IHRoZXkmIzM5O3ZlIGhhbmRsZWQgcmVnaXN0ZXJpbmcgdGhlbXNlbHZlcyBhcyBEU0EgZGV2aWNlcywgYW5kIEkgZXhwZWN0IHRvIHNlZSBzcGVjaWZpYyBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgcHJvYmFibHkgd2l0aGluIGBtb2R1bGVfaW5pdGAgZnVuY3Rpb25zLiBUaGlzIHNlYXJjaCBzaG91bGQgcHJvdmlkZSBhIGNydWNpYWwgZ2xpbXBzZSBpbnRvIHRoZSBvdmVyYWxsIHN5c3RlbSBpbml0aWFsaXphdGlvbiBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NzUyOT1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG12ODhlNnh4eF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUzOS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1NDA6bWRpb19tb2R1bGVfZHJpdmVyKG12ODhlNnh4eF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzU0MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgwNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBkZWxpdmVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCBjb25zaWRlcmF0aW9uczoKCioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFN3aXRjaCBEcml2ZXIgYW5kIENvbnNpZGVyaW5nIGEgQ29tcGFyaXNvbioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtdjg4ZTZ4eHhgLiBUaGF0JiMzOTtzIGFuIGBtZGlvX2RyaXZlcmAsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgTWFydmVsbCYjMzk7cyA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaGVzLiBJJiMzOTttIGludGltYXRlbHkgZmFtaWxpYXIgd2l0aCB0aGVzZSBraW5kcyBvZiBkcml2ZXJzLCBzbyB0aGlzIGlzIGFsbCBicmVhZC1hbmQtYnV0dGVyIHN0dWZmLiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBob3cgZG9lcyB0aGlzIGRyaXZlciBzdGFjayB1cCBhZ2FpbnN0IHNpbWlsYXIgaW1wbGVtZW50YXRpb25zPyBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGJlbmNobWFyayBpdCBhZ2FpbnN0IHRoZSBgYmNtX3NmMmAgZHJpdmVyLiBJIG5lZWQgdG8gZ2V0IGEgcGljdHVyZSBvZiB3aGF0IE1hcnZlbGwgaXMgb2ZmZXJpbmcgaGVyZSwgYW5kIGEgY29tcGFyaXNvbiB3aXRoIHRoZSBgYmNtX3NmMmAgZHJpdmVyIHdpbGwgZ2l2ZSBtZSBhIGJhc2VsaW5lIGZvciBldmFsdWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYmNtX3NmMiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDY5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBmaWxlIHNlYXJjaDoKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERyaXZlciBGaWxlcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biBzb21lIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYWAgZGlyZWN0b3J5IHRoYXQgYXJlIHJlbGF0ZWQgdG8gYGJjbV9zZjJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgYmNtX3NmMmAgbGlrZWx5IHJlZmVyZW5jZXMgYSBzcGVjaWZpYyBCcm9hZGNvbSAoQkNNKSBTd2l0Y2ggRmFicmljIChTRikgaGFyZHdhcmUgY29tcG9uZW50LiBHaXZlbiBteSBleHBlcnRpc2UgaW4gdGhpcyBhcmVhLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBhcHBhcmVudCB0aGF0IEkmIzM5O20gbGlrZWx5IGRlYWxpbmcgd2l0aCBkcml2ZXIgY29kZSBmb3IgYSBuZXR3b3JrIHN3aXRjaCBvciByZWxhdGVkIGhhcmR3YXJlLiBUaGUgYGRyaXZlcnMvbmV0L2RzYWAgZGlyZWN0b3J5IGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzLCBhcyBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGlzIGEgY29tbW9uIGZyYW1ld29yayBmb3IgaW50ZWdyYXRpbmcgc3dpdGNoIGhhcmR3YXJlIGludG8gdGhlIExpbnV4IGtlcm5lbC4KClRoZXJlZm9yZSwgbXkgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGUgZmlsZXMgSSBmaW5kIHdpbGwgY29udGFpbiB0aGUgZGV2aWNlIGRyaXZlciBjb2RlLCBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgcmVnaXN0ZXIgZGVmaW5pdGlvbnMsIG9yIHBvc3NpYmx5IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3Mgc3BlY2lmaWMgdG8gdGhlIGBiY21fc2YyYCBoYXJkd2FyZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igc291cmNlIGNvZGUgZmlsZXMgKGxpa2VseSBDIGZpbGVzLCBoZWFkZXIgZmlsZXMpIHRoYXQgd291bGQgaW1wbGVtZW50IHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBrZXJuZWwgYW5kIHRoZSBzd2l0Y2ggaGFyZHdhcmUuIFRoZSBzZWFyY2ggaXRzZWxmIGlzIHNpbXBsZTsgSSYjMzk7bGwgdXNlIHRvb2xzIGxpa2UgYGZpbmRgIGFuZCBgZ3JlcGAgb3IgbXkgcHJlZmVycmVkIElERSYjMzk7cyBzZWFyY2ggZnVuY3Rpb24uIFVsdGltYXRlbHksIEkgYW50aWNpcGF0ZSB0aGlzIHNlYXJjaCB3aWxsIGxlYWQgbWUgdG8gdGhlIGRyaXZlciBzb3VyY2UgdGhhdCB3aWxsIGxpa2VseSBpbXBsZW1lbnQgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGludGVyZmFjZSBmb3IgdGhlIGBiY21fc2YyYCBkZXZpY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2JjbV9zZjIuYyYjMzQ7LAogICAgJiMzNDtiY21fc2YyLmgmIzM0OywKICAgICYjMzQ7YmNtX3NmMl9jZnAuYyYjMzQ7LAogICAgJiMzNDtiY21fc2YyX3JlZ3MuaCYjMzQ7LAogICAgJiMzNDtkc2FfbG9vcC5jJiMzNDssCiAgICAmIzM0O2tzODk5NS5jJiMzNDssCiAgICAmIzM0O2xhbjkzMDMtY29yZS5jJiMzNDssCiAgICAmIzM0O2xhbjkzMDMuaCYjMzQ7LAogICAgJiMzNDtsYW45MzAzX2kyYy5jJiMzNDssCiAgICAmIzM0O2xhbjkzMDNfbWRpby5jJiMzNDssCiAgICAmIzM0O210NzUzMC1tZGlvLmMmIzM0OywKICAgICYjMzQ7bXQ3NTMwLW1taW8uYyYjMzQ7LAogICAgJiMzNDttdDc1MzAuYyYjMzQ7LAogICAgJiMzNDttdDc1MzAuaCYjMzQ7LAogICAgJiMzNDttdDc2MjguYyYjMzQ7LAogICAgJiMzNDttdjg4ZTYwNjAuYyYjMzQ7LAogICAgJiMzNDttdjg4ZTYwNjAuaCYjMzQ7LAogICAgJiMzNDtyem4xX2E1cHN3LmMmIzM0OywKICAgICYjMzQ7cnpuMV9hNXBzdy5oJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmMmIzM0OywKICAgICYjMzQ7dml0ZXNzZS12c2M3M3h4LXBsYXRmb3JtLmMmIzM0OywKICAgICYjMzQ7dml0ZXNzZS12c2M3M3h4LXNwaS5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UtdnNjNzN4eC5oJiMzNDssCiAgICAmIzM0O3l0OTIxeC5jJiMzNDssCiAgICAmIzM0O3l0OTIxeC5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2I1MyYjMzQ7LAogICAgJiMzNDtoaXJzY2htYW5uJiMzNDssCiAgICAmIzM0O2xhbnRpcSYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXAmIzM0OywKICAgICYjMzQ7bXY4OGU2eHh4JiMzNDssCiAgICAmIzM0O214bDg2Mnh4JiMzNDssCiAgICAmIzM0O25ldGMmIzM0OywKICAgICYjMzQ7b2NlbG90JiMzNDssCiAgICAmIzM0O3FjYSYjMzQ7LAogICAgJiMzNDtyZWFsdGVrJiMzNDssCiAgICAmIzM0O3NqYTExMDUmIzM0OywKICAgICYjMzQ7eHJzNzAweCYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzg5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEJDTV9TRjIgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIGNoZWNrIG91dCBob3cgdGhlIEJyb2FkY29tIFNGMiBkcml2ZXIgaXMgYmVpbmcgcmVnaXN0ZXJlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbG9vayBhdCBgZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgZHJpdmVyJiMzOTtzIHJlZ2lzdHJhdGlvbiBpcyBmdW5jdGlvbmluZyBhcyBleHBlY3RlZCwgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBpc3N1ZXMgaW4gaXRzIGluaXRpYWxpemF0aW9uIG9yIGJpbmRpbmcgcHJvY2Vzcy4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSBoYXJkd2FyZSBpcyBiZWhhdmluZyBhcHByb3ByaWF0ZWx5LiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgY29yZSByZWdpc3RyYXRpb24gbWVjaGFuaXNtcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcnxwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9MTYyNj1zdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMoYmNtX3NmMl9wbV9vcHMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNjI5LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxNjMwOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJjbV9zZjJfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNjMxLVx0LnByb2JlXHQ9IGJjbV9zZjJfc3dfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNjM5LX07XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjE2NDA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihiY21fc2YyX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTE2NDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjA0CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGJjbV9zZjIgRHJpdmVyKioKCk9rYXksIHNvICpiY21fc2YyKiBpcyB0aGUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIE9wZW5GbG93L3BsYXRmb3JtIGRyaXZlciwgdGhhdCYjMzk7cyB0YWlsb3JlZCBmb3IgdGhlIEJyb2FkY29tIFN0YXJmaWdodGVyIDIgc3dpdGNoIHNpbGljb24uIFRoYXQmIzM5O3MgZ29vZCBjb250ZXh0IHRvIHN0YXJ0IHdpdGgg4oCTIEkgY2FuIGltbWVkaWF0ZWx5IHBsYWNlIGl0IGluIHRoZSBlY29zeXN0ZW0uIEkga25vdyB3aGF0IHRoZSAmIzM0O2JjbSYjMzQ7IHByZWZpeCB1c3VhbGx5IGluZGljYXRlcywgYW5kICYjMzQ7U3RhcmZpZ2h0ZXIgMiYjMzQ7IGdpdmVzIG1lIGEgc29saWQgaGFyZHdhcmUgZm91bmRhdGlvbiB0byB3b3JrIGZyb20uCgpOb3csIGdpdmVuIHRoYXQgaXQmIzM5O3MgYSBCcm9hZGNvbSBzd2l0Y2gsIG15IG5leHQgcXVlc3Rpb24gaXMgaW5ldml0YWJseSwgaG93IGlzIGl0IGRlYWxpbmcgd2l0aCB0aGUgbmV0d29yayBmb3J3YXJkaW5nIHBsYW5lIChORlApPyBEb2VzIGl0IHJ1biB0aGUgZGF0YSBwbGFuZSBkaXJlY3RseSBpbiBCcm9hZGNvbSYjMzk7cyBzaWxpY29uIG9yIGRvZXMgaXQgcnVuIHNvbWUgc29mdHdhcmUgcHJvY2VzcyBvbiBhIGNvbnRyb2wgcGxhbmUgcHJvY2Vzc29yPyBXaGF0IHNwZWNpZmljIGFyY2hpdGVjdHVyZSBhcmUgd2UgdGFsa2luZyBhYm91dD8gTGV0JiMzOTtzIGNoZWNrIE5GUC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlcnxtb2R1bGVfcGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbWFpbi5jPTk0OT1zdGF0aWMgaW50IF9faW5pdCBuZnBfbWFpbl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbWFpbi5jLTk1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYzo5NjA6XHRlcnIgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm5mcF9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYy05NjEtXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYy05NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9tYWluLmM6OTY0Olx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZuZnBfbmV0dmZfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9tYWluLmMtOTY1LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE3MjAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgRHJpdmVyIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlc2UgZHJpdmVyIGNoYW5nZXMsIHN0YXJ0aW5nIHdpdGggYGRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoLiBJIHNlZSB0aGF0IGBiY21fc2YyX2NmcF9ydWxlX2dldF9hbGxgIGlzIGJlaW5nIGNhbGxlZCB3aXRoaW4gYGJjbV9zZjJfY2ZwX3J1bGVfZ2V0YC4gVGhpcyBzdWdnZXN0cyBhIGRlcGVuZGVuY3kgb3IgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhvc2UgdHdvIGZ1bmN0aW9ucy4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBgYmNtX3NmMl9jZnBfcnVsZV9nZXRfYWxsYCB0byBzZWUgd2hlcmUgZWxzZSBpdCYjMzk7cyBiZWluZyB1c2VkLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoYXQgZnVuY3Rpb24gY2FsbCBpcyBjcml0aWNhbCBmb3IgYXNzZXNzaW5nIHRoZSBvdmVyYWxsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gRnJvbSBoZXJlIEkgbmVlZCB0byBhbmFseXplIGl0cyB1c2FnZSBhbmQgdW5kZXJzdGFuZCBpdHMgc2lkZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiY21fc2YyX2NmcF9ydWxlX2dldF9hbGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmM9MTA2ND1zdGF0aWMgaW50IGJjbV9zZjJfY2ZwX3J1bGVfZ2V0KHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXYsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jLTEwODMtLyogV2UgaW1wbGVtZW50IHRoZSBzZWFyY2ggZG9pbmcgYSBUQ0FNIHNlYXJjaCBvcGVyYXRpb24gKi9cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jOjEwODQ6c3RhdGljIGludCBiY21fc2YyX2NmcF9ydWxlX2dldF9hbGwoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jLTEwODUtXHRcdFx0XHQgICAgaW50IHBvcnQsIHN0cnVjdCBldGh0b29sX3J4bmZjICpuZmMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmM9MTEwND1pbnQgYmNtX3NmMl9nZXRfcnhuZmMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYy0xMTI0LVx0Y2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOlxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmM6MTEyNTpcdFx0cmV0ID0gYmNtX3NmMl9jZnBfcnVsZV9nZXRfYWxsKHByaXYsIHBvcnQsIG5mYywgcnVsZV9sb2NzKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jLTExMjYtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM2NwoJCQkJCQkJb3V0cHV0OiAxNTAKCQkJCQkJCXRob3VnaHRzOiAxNDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBQcm92aWRlZCBDb2RlIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBzZXJpZXMgaXMgbGlrZWx5ICpub3QqIHN1aXRhYmxlIGZvciBmdXp6aW5nIGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgZGV0YWlsczoKCkZpcnN0LCBgYmNtX3NmMmAsIHRoZSBCcm9hZGNvbSBTdGFyZmlnaHRlciAyIHN3aXRjaCBkcml2ZXIuIENsZWFybHksIHRoaXMgaXMgYW4gU29DIHBsYXRmb3JtIGRyaXZlciwgZXhwZWN0aW5nIHRvIGludGVyYWN0IHdpdGggc3BlY2lmaWMgQnJvYWRjb20gc3dpdGNoIGhhcmR3YXJlIHJlZ2lzdGVycywgaWRlbnRpZmllZCBieSBkZXZpY2UgdHJlZSBtYXRjaGVzLiBUaGlzIHNjcmVhbXMgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUmIzM0OyBpbiBhIHZhbmlsbGEgeDg2LTY0IFFFTVUgZW52aXJvbm1lbnQuICBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhbiBlbWJlZGRlZCBzd2l0Y2gsIG5vdCBzb21ldGhpbmcgZWFzaWx5IGVtdWxhdGVkLgoKVGhlbiB3ZSBoYXZlIGBtdjg4ZTZ4eHhgLiBUaGlzIE1hcnZlbGwgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciBpcyBhbiBNRElPIGRyaXZlci4gIEl0IHByb2JlcyBmb3IgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCBpZGVudGlmaWFibGUgYnkgdGhlaXIgc3BlY2lmaWMgUEhZIElEcywgb3ZlciBhbiBNRElPIGJ1cy4gIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCB0aGVyZSBpc24mIzM5O3QgYSByZWFkaWx5IGF2YWlsYWJsZSBtb2NrIG9yIGVtdWxhdGVkIGBtdjg4ZTZ4eHhgIGltcGxlbWVudGF0aW9uIHdpdGhpbiB0aGUgc3RhbmRhcmQgUUVNVSBvciB0aGUga2VybmVsIGl0c2VsZi4gV2UgaGF2ZSBgZHNhX2xvb3BgIHdoaWNoLCB3aGlsZSBhIG1vY2sgRFNBIHN3aXRjaCwgaXMgYSBzZXBhcmF0ZSBkcml2ZXIuIGBtdjg4ZTZ4eHhgIGRpcmVjdGx5IGludGVyYWN0cyB3aXRoIHNwZWNpZmljIGhhcmR3YXJlLiBObyBnby4KCk5leHQsIGBuZnBgLiBUaGlzIGlzIGEgTmV0cm9ub21lIEZsb3cgUHJvY2Vzc29yIGRyaXZlciwgYSBQQ0llIFNtYXJ0TklDLiBUaGVzZSBhcmUgKnZlbmRvci1zcGVjaWZpYyogUENJZSBjYXJkcyDigJMgTmV0cm9ub21lIE5GUDQwMDAvTkZQNjAwMC9ORlAzODAwLiBUaGVzZSBhcmUgQVNJQ3MgdGhhdCBqdXN0IGFyZW4mIzM5O3QgZ29pbmcgdG8gYmUgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAuICBBZ2Fpbiwgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKTm93LCBsZXQmIzM5O3Mgbm90IG92ZXJsb29rIHRoZSBjaGFuZ2UgaW4gYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC4gIFRoaXMgaXMgaW1wb3J0YW50LiBUaGUgbW9kaWZpY2F0aW9uIGlzIHB1cmVseSBhIGRvY3VtZW50YXRpb24gY29tbWVudCBhZGRlZCB0byB0aGUgYHN0cnVjdCBldGh0b29sX29wc2AuIEl0JiMzOTtzIGEgY2xhcmlmaWNhdGlvbiBvbiBob3cgdG8gaGFuZGxlIHRoZSBgRVRIVE9PTF9HUlhDTFNSTEFMTGAgcnVsZSBjb3VudCwgc3BlY2lmaWNhbGx5IHRvIHJldHVybiBgLUVNU0dTSVpFYCB3aGVuIHRoZSB1c2VyLXByb3ZpZGVkIGNvdW50IGlzIHRvbyBzbWFsbC4gQnV0IHRoaXMgaXMgYSBjb21tZW50LCBub3QgZXhlY3V0YWJsZSBjb2RlLgoKTm93IEkmIzM5O20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIGFsbCB0aGUgZmlsZXMgdGhhdCB3ZXJlIG1vZGlmaWVkOiBgZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmNgLCBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNgLCBhbmQgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC4KCkFmdGVyIGNyb3NzLWNoZWNraW5nIHRoZSBkaWZmIHByb3ZpZGVkLCBJIGNhbiBjb25maXJtIHRoYXQgdGhlIG9ubHkgbW9kaWZpZWQgZXhlY3V0YWJsZSBjb2RlIGlzIGluZGVlZCBpbiB0aGUgZHJpdmVycyBmb3IgdGhlIGFmb3JlbWVudGlvbmVkIGhhcmR3YXJlLiAgSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggdXBkYXRlcyBmbG93IGNsYXNzaWZpY2F0aW9uIHJ1bGVzIChgRVRIVE9PTF9HUlhDTFNSTEFMTGApIGFjcm9zcyB0aGUgZHJpdmVycyB0byBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvd3MsIGFuZCB0aGUgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYCBjaGFuZ2UgaXMgKm9ubHkqIGEgY29tbWVudC4KCkdpdmVuIGFsbCB0aGlzLCBJIGNvbmNsdWRlIHRoYXQgdGhlc2UgY2hhbmdlcyBkbyBub3QgZXhwb3NlIGFueSBjb2RlIHRoYXQgd291bGQgYmUgcmVsZXZhbnQgdG8gZnV6emluZyBpbiBhIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50LiBUaGUgaGFyZHdhcmUgdGFyZ2V0cyBhcmUgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiB0aGVzZSBzY2VuYXJpb3MsIGFuZCB0aGUgb3RoZXIgbW9kaWZpY2F0aW9uIGlzIG9ubHkgYSBkb2N1bWVudGF0aW9uIGNoYW5nZS4KClRoZXJlZm9yZSwgdGhlIGZpbmFsIG91dHB1dCBpczoKCi0gICBXb3J0aEZ1enppbmc6IGZhbHNlCi0gICBGb2N1c1N5bWJvbHM6IFxbIF0KLSAgIEVuYWJsZUNvbmZpZ3M6IFxbIF0KLSAgIFJlYXNvbmluZzogVGhlIHBhdGNoIHNlcmllcyBpcyBhYm91dCBpbXByb3ZpbmcgYEVUSFRPT0xfR1JYQ0xTUkxBTExgIGhhbmRsaW5nIGFjcm9zcyB0aHJlZSBkcml2ZXJzIChgYmNtX3NmMmAsIGBtdjg4ZTZ4eHhgLCBgbmZwYCkgdG8gcHJldmVudCBidWZmZXIgb3ZlcmZsb3dzIHJlbGF0ZWQgdG8gdXNlci1wcm92aWRlZCBgcnVsZV9jbnRgLCBwbHVzIGEgZG9jdW1lbnRhdGlvbiBjb21tZW50IGluIGBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaGAuICBBbGwgdGhlIG1vZGlmaWVkIGV4ZWN1dGFibGUgY29kZSBpcyBpbiBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChCcm9hZGNvbSBTb0Mgc3dpdGNoLCBNYXJ2ZWxsIHN3aXRjaCBjaGlwLCBhbmQgTmV0cm9ub21lIFNtYXJ0TklDKSB0aGF0IGRlcGVuZCBvbiBwaHlzaWNhbCBoYXJkd2FyZSBub3QgYXZhaWxhYmxlIGluIHN0YW5kYXJkIFFFTVUvR0NFLCBhbmQgdGhlIGhlYWRlciBjaGFuZ2UgaXMgb25seSBkb2N1bWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBhZGRzIGJ1ZmZlciBib3VuZHMgY2hlY2tpbmcgZm9yIEVUSFRPT0xfR1JYQ0xTUkxBTEwgaW4gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBEU0Egc3dpdGNoLCBNYXJ2ZWxsIDg4RTZ4eHggRFNBIHN3aXRjaCwgYW5kIE5ldHJvbm9tZSBORlAgU21hcnROSUMpIGFuZCB1cGRhdGVzIGRvYyBjb21tZW50cyBpbiBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC4gQWxsIGV4ZWN1dGFibGUgY29kZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB2ZW5kb3IgaGFyZHdhcmUgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3MvU29DL01ESU8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIHRoZSBjaGFuZ2UgdG8gaW5jbHVkZS9saW51eC9ldGh0b29sLmggaXMgZG9jdW1lbnRhdGlvbiBvbmx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgYnVmZmVyIGJvdW5kcyBjaGVja2luZyBmb3IgRVRIVE9PTF9HUlhDTFNSTEFMTCBpbiBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChCcm9hZGNvbSBTdGFyZmlnaHRlciAyIERTQSBzd2l0Y2gsIE1hcnZlbGwgODhFNnh4eCBEU0Egc3dpdGNoLCBhbmQgTmV0cm9ub21lIE5GUCBTbWFydE5JQykgYW5kIHVwZGF0ZXMgZG9jIGNvbW1lbnRzIGluIGluY2x1ZGUvbGludXgvZXRodG9vbC5oLiBBbGwgZXhlY3V0YWJsZSBjb2RlIGNoYW5nZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHZlbmRvciBoYXJkd2FyZSBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDcy9Tb0MvTURJTyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBhbmQgdGhlIGNoYW5nZSB0byBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaCBpcyBkb2N1bWVudGF0aW9uIG9ubHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNDoxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6MjQuNjY2MTkxMTA3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxNDAxMDYxODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBidWZmZXIgYm91bmRzIGNoZWNraW5nIGZvciBFVEhUT09MX0dSWENMU1JMQUxMIGluIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgKEJyb2FkY29tIFN0YXJmaWdodGVyIDIgRFNBIHN3aXRjaCwgTWFydmVsbCA4OEU2eHh4IERTQSBzd2l0Y2gsIGFuZCBOZXRyb25vbWUgTkZQIFNtYXJ0TklDKSBhbmQgdXBkYXRlcyBkb2MgY29tbWVudHMgaW4gaW5jbHVkZS9saW51eC9ldGh0b29sLmguIEFsbCBleGVjdXRhYmxlIGNvZGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gdmVuZG9yIGhhcmR3YXJlIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUNzL1NvQy9NRElPIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY2hhbmdlIHRvIGluY2x1ZGUvbGludXgvZXRodG9vbC5oIGlzIGRvY3VtZW50YXRpb24gb25seS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA0OjA5OjI0LjY2NjE5ODMyN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIyODY0ODEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzk0ZTY3ZDgzZTMyZGZiZGI5N2NkOWIwYTUwNWVlNmJhZDdjMzU4NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDA0OjA5OjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jIGIvZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmNcXG5pbmRleCA1MGQzYTgxOGViMWI3Li44NGEwODZjM2U5OWI0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmNcXG5AQCAtMTA4OCw2ICsxMDg4LDggQEAgc3RhdGljIGludCBiY21fc2YyX2NmcF9ydWxlX2dldF9hbGwoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdixcXG4gXFx0dW5zaWduZWQgaW50IGluZGV4ID0gMSwgcnVsZXNfY250ID0gMDtcXG4gXFxuIFxcdGZvcl9lYWNoX3NldF9iaXRfZnJvbShpbmRleCwgcHJpdi1cXHUwMDNlY2ZwLnVuaXF1ZSwgcHJpdi1cXHUwMDNlbnVtX2NmcF9ydWxlcykge1xcbitcXHRcXHRpZiAocnVsZXNfY250ID09IG5mYy1cXHUwMDNlcnVsZV9jbnQpXFxuK1xcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuIFxcdFxcdHJ1bGVfbG9jc1tydWxlc19jbnRdID0gaW5kZXg7XFxuIFxcdFxcdHJ1bGVzX2NudCsrO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcXG5pbmRleCA4MGI4NzdjNzQ1MTNkLi43ZjY4YTBjNTU4MDI2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcXG5AQCAtMjQzOCw2ICsyNDM4LDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuIFxcdHN0cnVjdCBldGh0b29sX3J4X2Zsb3dfc3BlYyAqZnMgPSBcXHUwMDI2cnhuZmMtXFx1MDAzZWZzO1xcbiBcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cXHUwMDNlcHJpdjtcXG4gXFx0c3RydWN0IG12ODhlNnh4eF9wb2xpY3kgKnBvbGljeTtcXG4rXFx0dTMyIGNudCA9IDA7XFxuIFxcdGludCBlcnI7XFxuIFxcdGludCBpZDtcXG4gXFxuQEAgLTI0NjMsMTEgKzI0NjQsMTggQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEVUSFRPT0xfR1JYQ0xTUkxBTEw6XFxuIFxcdFxcdHJ4bmZjLVxcdTAwM2VkYXRhID0gMDtcXG4tXFx0XFx0cnhuZmMtXFx1MDAzZXJ1bGVfY250ID0gMDtcXG4tXFx0XFx0aWRyX2Zvcl9lYWNoX2VudHJ5KFxcdTAwMjZjaGlwLVxcdTAwM2Vwb2xpY2llcywgcG9saWN5LCBpZClcXG4tXFx0XFx0XFx0aWYgKHBvbGljeS1cXHUwMDNlcG9ydCA9PSBwb3J0KVxcbi1cXHRcXHRcXHRcXHRydWxlX2xvY3NbcnhuZmMtXFx1MDAzZXJ1bGVfY250KytdID0gaWQ7XFxuIFxcdFxcdGVyciA9IDA7XFxuK1xcdFxcdGlkcl9mb3JfZWFjaF9lbnRyeShcXHUwMDI2Y2hpcC1cXHUwMDNlcG9saWNpZXMsIHBvbGljeSwgaWQpIHtcXG4rXFx0XFx0XFx0aWYgKHBvbGljeS1cXHUwMDNlcG9ydCAhPSBwb3J0KVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0XFx0aWYgKGNudCA9PSByeG5mYy1cXHUwMDNlcnVsZV9jbnQpIHtcXG4rXFx0XFx0XFx0XFx0ZXJyID0gLUVNU0dTSVpFO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRydWxlX2xvY3NbY250KytdID0gaWQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0aWYgKCFlcnIpXFxuK1xcdFxcdFxcdHJ4bmZjLVxcdTAwM2VydWxlX2NudCA9IGNudDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdGVyciA9IC1FT1BOT1RTVVBQO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2V0aHRvb2wuY1xcbmluZGV4IGEyYTg5ZDQ4ZTNjYWMuLjRlODM2Mzc3MTVlMDMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNcXG5AQCAtMTQyMSw3ICsxNDIxLDggQEAgc3RhdGljIGludCBuZnBfbmV0X2dldF9mc19ydWxlKHN0cnVjdCBuZnBfbmV0ICpubiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcXG4gXFx0cmV0dXJuIC1FTk9FTlQ7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgbmZwX25ldF9nZXRfZnNfbG9jKHN0cnVjdCBuZnBfbmV0ICpubiwgdTMyICpydWxlX2xvY3MpXFxuK3N0YXRpYyBpbnQgbmZwX25ldF9nZXRfZnNfbG9jKHN0cnVjdCBuZnBfbmV0ICpubiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZCxcXG4rXFx0XFx0XFx0ICAgICAgdTMyICpydWxlX2xvY3MpXFxuIHtcXG4gXFx0c3RydWN0IG5mcF9mc19lbnRyeSAqZW50cnk7XFxuIFxcdHUzMiBjb3VudCA9IDA7XFxuQEAgLTE0MjksOCArMTQzMCwxMiBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX2xvYyhzdHJ1Y3QgbmZwX25ldCAqbm4sIHUzMiAqcnVsZV9sb2NzKVxcbiBcXHRpZiAoIShubi1cXHUwMDNlY2FwX3cxIFxcdTAwMjYgTkZQX05FVF9DRkdfQ1RSTF9GTE9XX1NURUVSKSlcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4tXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgXFx1MDAyNm5uLVxcdTAwM2Vmcy5saXN0LCBub2RlKVxcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGVudHJ5LCBcXHUwMDI2bm4tXFx1MDAzZWZzLmxpc3QsIG5vZGUpIHtcXG4rXFx0XFx0aWYgKGNvdW50ID09IGNtZC1cXHUwMDNlcnVsZV9jbnQpXFxuK1xcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuIFxcdFxcdHJ1bGVfbG9jc1tjb3VudCsrXSA9IGVudHJ5LVxcdTAwM2Vsb2M7XFxuK1xcdH1cXG4rXFx0Y21kLVxcdTAwM2VydWxlX2NudCA9IGNvdW50O1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtMTQ1NSw3ICsxNDYwLDcgQEAgc3RhdGljIGludCBuZnBfbmV0X2dldF9yeG5mYyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRcXHRyZXR1cm4gbmZwX25ldF9nZXRfZnNfcnVsZShubiwgY21kKTtcXG4gXFx0Y2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOlxcbiBcXHRcXHRjbWQtXFx1MDAzZWRhdGEgPSBORlBfRlNfTUFYX0VOVFJZO1xcbi1cXHRcXHRyZXR1cm4gbmZwX25ldF9nZXRfZnNfbG9jKG5uLCBydWxlX2xvY3MpO1xcbitcXHRcXHRyZXR1cm4gbmZwX25ldF9nZXRfZnNfbG9jKG5uLCBjbWQsIHJ1bGVfbG9jcyk7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFx0fVxcbkBAIC0xNjk4LDggKzE3MDMsMTQgQEAgc3RhdGljIGludCBuZnBfbmV0X2ZzX2FkZChzdHJ1Y3QgbmZwX25ldCAqbm4sIHN0cnVjdCBldGh0b29sX3J4bmZjICpjbWQpXFxuIFxcbiBcXHRcXHRcXHRubi1cXHUwMDNlZnMuY291bnQtLTtcXG4gXFx0XFx0XFx0ZXJyID0gbmZwX25ldF9mc19hZGRfaHcobm4sIG5ldyk7XFxuLVxcdFxcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdGlmIChlcnIpIHtcXG4rXFx0XFx0XFx0XFx0LyogbWJveCBicm9rZW4sIGFkZGluZyB0aGUgb2xkIHJ1bGUgYmFjayB3aWxsXFxuK1xcdFxcdFxcdFxcdCAqIGxpa2VseSBhbHNvIGZhaWwuXFxuK1xcdFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2ZW50cnktXFx1MDAzZW5vZGUpO1xcbitcXHRcXHRcXHRcXHRrZnJlZShlbnRyeSk7XFxuIFxcdFxcdFxcdFxcdGdvdG8gZXJyO1xcbitcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRubi1cXHUwMDNlZnMuY291bnQrKztcXG4gXFx0XFx0XFx0bGlzdF9yZXBsYWNlKFxcdTAwMjZlbnRyeS1cXHUwMDNlbm9kZSwgXFx1MDAyNm5ldy1cXHUwMDNlbm9kZSk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcXG5pbmRleCAxMjY4M2I1ZDEyNWU0Li4yNTM2MDBjMGVjY2RmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcXG5AQCAtMTA1Nyw2ICsxMDU3LDEyIEBAIHN0cnVjdCBrZXJuZWxfZXRodG9vbF90c19pbmZvIHtcXG4gICogQGdldF9zc2V0X2NvdW50OiBHZXQgbnVtYmVyIG9mIHN0cmluZ3MgdGhhdCBAZ2V0X3N0cmluZ3Mgd2lsbCB3cml0ZS5cXG4gICogQGdldF9yeG5mYzogR2V0IFJYIGZsb3cgY2xhc3NpZmljYXRpb24gcnVsZXMuICBSZXR1cm5zIGEgbmVnYXRpdmVcXG4gICpcXHRlcnJvciBjb2RlIG9yIHplcm8uXFxuKyAqXFx0Tm90ZSB0aGF0IGZvciAlRVRIVE9PTF9HUlhDTFNSTEFMTCBydWxlX2NudCBhbmQgc2l6ZSBvZiB0aGUgYXJyYXlzXFxuKyAqXFx0aXMgdXNlci1wcm92aWRlZCwgYW5kIG5vdCBndWFyYW50ZWVkIHRvIG1hdGNoIHdoYXQgZHJpdmVyIHdvdWxkXFxuKyAqXFx0aGF2ZSByZXBvcnRlZCB2aWEgJUVUSFRPT0xfR1JYQ0xTUkxDTlQuIERyaXZlcnMgbXVzdCByZXR1cm4gLSVFTVNHU0laRVxcbisgKlxcdHdoZW4gcnVsZV9jbnQgaXMgdG9vIHNtYWxsLiBydWxlX2xvY3MgaXMgJU5VTEwgd2hlbiBydWxlX2NudCBpcyB6ZXJvLlxcbisgKlxcdE9uIHN1Y2Nlc3MgZHJpdmVycyBtdXN0IHNldCBydWxlX2NudCB0byB0aGUgbnVtYmVyIG9mIGxvY2F0aW9ucyB0aGV5XFxuKyAqXFx0ZmlsbGVkIGluLCB0aGUgY29yZSBjb3BpZXMgb3V0IGV4YWN0bHkgdGhhdCBtYW55LlxcbiAgKiBAc2V0X3J4bmZjOiBTZXQgUlggZmxvdyBjbGFzc2lmaWNhdGlvbiBydWxlcy4gIFJldHVybnMgYSBuZWdhdGl2ZVxcbiAgKlxcdGVycm9yIGNvZGUgb3IgemVyby5cXG4gICogQGZsYXNoX2RldmljZTogV3JpdGUgYSBmaXJtd2FyZSBpbWFnZSB0byBkZXZpY2UncyBmbGFzaCBtZW1vcnkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA0OjA5OjI1LjI5MTIwMTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ0NTE1MDc2MDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBidWZmZXIgYm91bmRzIGNoZWNraW5nIGZvciBFVEhUT09MX0dSWENMU1JMQUxMIGluIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgKEJyb2FkY29tIFN0YXJmaWdodGVyIDIgRFNBIHN3aXRjaCwgTWFydmVsbCA4OEU2eHh4IERTQSBzd2l0Y2gsIGFuZCBOZXRyb25vbWUgTkZQIFNtYXJ0TklDKSBhbmQgdXBkYXRlcyBkb2MgY29tbWVudHMgaW4gaW5jbHVkZS9saW51eC9ldGh0b29sLmguIEFsbCBleGVjdXRhYmxlIGNvZGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gdmVuZG9yIGhhcmR3YXJlIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUNzL1NvQy9NRElPIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY2hhbmdlIHRvIGluY2x1ZGUvbGludXgvZXRodG9vbC5oIGlzIGRvY3VtZW50YXRpb24gb25seS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzk0ZTY3ZDgzZTMyZGZiZGI5N2NkOWIwYTUwNWVlNmJhZDdjMzU4NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDQ6MDk6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYyBiL2RyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jXG5pbmRleCA1MGQzYTgxOGViMWI3Li44NGEwODZjM2U5OWI0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jXG5AQCAtMTA4OCw2ICsxMDg4LDggQEAgc3RhdGljIGludCBiY21fc2YyX2NmcF9ydWxlX2dldF9hbGwoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdixcbiBcdHVuc2lnbmVkIGludCBpbmRleCA9IDEsIHJ1bGVzX2NudCA9IDA7XG4gXG4gXHRmb3JfZWFjaF9zZXRfYml0X2Zyb20oaW5kZXgsIHByaXYtXHUwMDNlY2ZwLnVuaXF1ZSwgcHJpdi1cdTAwM2VudW1fY2ZwX3J1bGVzKSB7XG4rXHRcdGlmIChydWxlc19jbnQgPT0gbmZjLVx1MDAzZXJ1bGVfY250KVxuK1x0XHRcdHJldHVybiAtRU1TR1NJWkU7XG4gXHRcdHJ1bGVfbG9jc1tydWxlc19jbnRdID0gaW5kZXg7XG4gXHRcdHJ1bGVzX2NudCsrO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbmluZGV4IDgwYjg3N2M3NDUxM2QuLjdmNjhhMGM1NTgwMjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbkBAIC0yNDM4LDYgKzI0MzgsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9nZXRfcnhuZmMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdHN0cnVjdCBldGh0b29sX3J4X2Zsb3dfc3BlYyAqZnMgPSBcdTAwMjZyeG5mYy1cdTAwM2VmcztcbiBcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVx1MDAzZXByaXY7XG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X3BvbGljeSAqcG9saWN5O1xuK1x0dTMyIGNudCA9IDA7XG4gXHRpbnQgZXJyO1xuIFx0aW50IGlkO1xuIFxuQEAgLTI0NjMsMTEgKzI0NjQsMTggQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOlxuIFx0XHRyeG5mYy1cdTAwM2VkYXRhID0gMDtcbi1cdFx0cnhuZmMtXHUwMDNlcnVsZV9jbnQgPSAwO1xuLVx0XHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2Y2hpcC1cdTAwM2Vwb2xpY2llcywgcG9saWN5LCBpZClcbi1cdFx0XHRpZiAocG9saWN5LVx1MDAzZXBvcnQgPT0gcG9ydClcbi1cdFx0XHRcdHJ1bGVfbG9jc1tyeG5mYy1cdTAwM2VydWxlX2NudCsrXSA9IGlkO1xuIFx0XHRlcnIgPSAwO1xuK1x0XHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2Y2hpcC1cdTAwM2Vwb2xpY2llcywgcG9saWN5LCBpZCkge1xuK1x0XHRcdGlmIChwb2xpY3ktXHUwMDNlcG9ydCAhPSBwb3J0KVxuK1x0XHRcdFx0Y29udGludWU7XG4rXHRcdFx0aWYgKGNudCA9PSByeG5mYy1cdTAwM2VydWxlX2NudCkge1xuK1x0XHRcdFx0ZXJyID0gLUVNU0dTSVpFO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0fVxuK1x0XHRcdHJ1bGVfbG9jc1tjbnQrK10gPSBpZDtcbitcdFx0fVxuK1x0XHRpZiAoIWVycilcbitcdFx0XHRyeG5mYy1cdTAwM2VydWxlX2NudCA9IGNudDtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRlcnIgPSAtRU9QTk9UU1VQUDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2V0aHRvb2wuY1xuaW5kZXggYTJhODlkNDhlM2NhYy4uNGU4MzYzNzcxNWUwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNcbkBAIC0xNDIxLDcgKzE0MjEsOCBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X2ZzX3J1bGUoc3RydWN0IG5mcF9uZXQgKm5uLCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKVxuIFx0cmV0dXJuIC1FTk9FTlQ7XG4gfVxuIFxuLXN0YXRpYyBpbnQgbmZwX25ldF9nZXRfZnNfbG9jKHN0cnVjdCBuZnBfbmV0ICpubiwgdTMyICpydWxlX2xvY3MpXG4rc3RhdGljIGludCBuZnBfbmV0X2dldF9mc19sb2Moc3RydWN0IG5mcF9uZXQgKm5uLCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kLFxuK1x0XHRcdCAgICAgIHUzMiAqcnVsZV9sb2NzKVxuIHtcbiBcdHN0cnVjdCBuZnBfZnNfZW50cnkgKmVudHJ5O1xuIFx0dTMyIGNvdW50ID0gMDtcbkBAIC0xNDI5LDggKzE0MzAsMTIgQEAgc3RhdGljIGludCBuZnBfbmV0X2dldF9mc19sb2Moc3RydWN0IG5mcF9uZXQgKm5uLCB1MzIgKnJ1bGVfbG9jcylcbiBcdGlmICghKG5uLVx1MDAzZWNhcF93MSBcdTAwMjYgTkZQX05FVF9DRkdfQ1RSTF9GTE9XX1NURUVSKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgXHUwMDI2bm4tXHUwMDNlZnMubGlzdCwgbm9kZSlcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksIFx1MDAyNm5uLVx1MDAzZWZzLmxpc3QsIG5vZGUpIHtcbitcdFx0aWYgKGNvdW50ID09IGNtZC1cdTAwM2VydWxlX2NudClcbitcdFx0XHRyZXR1cm4gLUVNU0dTSVpFO1xuIFx0XHRydWxlX2xvY3NbY291bnQrK10gPSBlbnRyeS1cdTAwM2Vsb2M7XG4rXHR9XG4rXHRjbWQtXHUwMDNlcnVsZV9jbnQgPSBjb3VudDtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0xNDU1LDcgKzE0NjAsNyBAQCBzdGF0aWMgaW50IG5mcF9uZXRfZ2V0X3J4bmZjKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdHJldHVybiBuZnBfbmV0X2dldF9mc19ydWxlKG5uLCBjbWQpO1xuIFx0Y2FzZSBFVEhUT09MX0dSWENMU1JMQUxMOlxuIFx0XHRjbWQtXHUwMDNlZGF0YSA9IE5GUF9GU19NQVhfRU5UUlk7XG4tXHRcdHJldHVybiBuZnBfbmV0X2dldF9mc19sb2Mobm4sIHJ1bGVfbG9jcyk7XG4rXHRcdHJldHVybiBuZnBfbmV0X2dldF9mc19sb2Mobm4sIGNtZCwgcnVsZV9sb2NzKTtcbiBcdGRlZmF1bHQ6XG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdH1cbkBAIC0xNjk4LDggKzE3MDMsMTQgQEAgc3RhdGljIGludCBuZnBfbmV0X2ZzX2FkZChzdHJ1Y3QgbmZwX25ldCAqbm4sIHN0cnVjdCBldGh0b29sX3J4bmZjICpjbWQpXG4gXG4gXHRcdFx0bm4tXHUwMDNlZnMuY291bnQtLTtcbiBcdFx0XHRlcnIgPSBuZnBfbmV0X2ZzX2FkZF9odyhubiwgbmV3KTtcbi1cdFx0XHRpZiAoZXJyKVxuK1x0XHRcdGlmIChlcnIpIHtcbitcdFx0XHRcdC8qIG1ib3ggYnJva2VuLCBhZGRpbmcgdGhlIG9sZCBydWxlIGJhY2sgd2lsbFxuK1x0XHRcdFx0ICogbGlrZWx5IGFsc28gZmFpbC5cbitcdFx0XHRcdCAqL1xuK1x0XHRcdFx0bGlzdF9kZWwoXHUwMDI2ZW50cnktXHUwMDNlbm9kZSk7XG4rXHRcdFx0XHRrZnJlZShlbnRyeSk7XG4gXHRcdFx0XHRnb3RvIGVycjtcbitcdFx0XHR9XG4gXG4gXHRcdFx0bm4tXHUwMDNlZnMuY291bnQrKztcbiBcdFx0XHRsaXN0X3JlcGxhY2UoXHUwMDI2ZW50cnktXHUwMDNlbm9kZSwgXHUwMDI2bmV3LVx1MDAzZW5vZGUpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcbmluZGV4IDEyNjgzYjVkMTI1ZTQuLjI1MzYwMGMwZWNjZGYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuKysrIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcbkBAIC0xMDU3LDYgKzEwNTcsMTIgQEAgc3RydWN0IGtlcm5lbF9ldGh0b29sX3RzX2luZm8ge1xuICAqIEBnZXRfc3NldF9jb3VudDogR2V0IG51bWJlciBvZiBzdHJpbmdzIHRoYXQgQGdldF9zdHJpbmdzIHdpbGwgd3JpdGUuXG4gICogQGdldF9yeG5mYzogR2V0IFJYIGZsb3cgY2xhc3NpZmljYXRpb24gcnVsZXMuICBSZXR1cm5zIGEgbmVnYXRpdmVcbiAgKlx0ZXJyb3IgY29kZSBvciB6ZXJvLlxuKyAqXHROb3RlIHRoYXQgZm9yICVFVEhUT09MX0dSWENMU1JMQUxMIHJ1bGVfY250IGFuZCBzaXplIG9mIHRoZSBhcnJheXNcbisgKlx0aXMgdXNlci1wcm92aWRlZCwgYW5kIG5vdCBndWFyYW50ZWVkIHRvIG1hdGNoIHdoYXQgZHJpdmVyIHdvdWxkXG4rICpcdGhhdmUgcmVwb3J0ZWQgdmlhICVFVEhUT09MX0dSWENMU1JMQ05ULiBEcml2ZXJzIG11c3QgcmV0dXJuIC0lRU1TR1NJWkVcbisgKlx0d2hlbiBydWxlX2NudCBpcyB0b28gc21hbGwuIHJ1bGVfbG9jcyBpcyAlTlVMTCB3aGVuIHJ1bGVfY250IGlzIHplcm8uXG4rICpcdE9uIHN1Y2Nlc3MgZHJpdmVycyBtdXN0IHNldCBydWxlX2NudCB0byB0aGUgbnVtYmVyIG9mIGxvY2F0aW9ucyB0aGV5XG4rICpcdGZpbGxlZCBpbiwgdGhlIGNvcmUgY29waWVzIG91dCBleGFjdGx5IHRoYXQgbWFueS5cbiAgKiBAc2V0X3J4bmZjOiBTZXQgUlggZmxvdyBjbGFzc2lmaWNhdGlvbiBydWxlcy4gIFJldHVybnMgYSBuZWdhdGl2ZVxuICAqXHRlcnJvciBjb2RlIG9yIHplcm8uXG4gICogQGZsYXNoX2RldmljZTogV3JpdGUgYSBmaXJtd2FyZSBpbWFnZSB0byBkZXZpY2UncyBmbGFzaCBtZW1vcnkuXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOToyNS4yOTEyMDU3OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEzMDQ3NDEzMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFN5emthbGxlciBQYXRjaCBTZXJpZXMgZm9yIE5ldHdvcmsgRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggc2VyaWVzIGludGVuZGVkIGZvciBzeXprYWxsZXIgZnV6emluZy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcyBhbmQsIGNyaXRpY2FsbHksIGhvdyBhY2Nlc3NpYmxlIHRoZXNlIGRyaXZlcnMgYXJlIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIHVzZXIncyBpbnRlcmVzdCBoZXJlIGlzIHRvIGV2YWx1YXRlIHRoZSBwYXRjaCBpbiB0aGUgY29udGV4dCBvZiBoYXJkd2FyZS9yZWFjaGFiaWxpdHkuXG5cbkxldCdzIGJyZWFrIGRvd24gd2hhdCdzIGJlZW4gdG91Y2hlZDogSSBzZWUgdGhlc2UgZmlsZXM6IGBkcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuY2AsIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfZXRodG9vbC5jYCwgYW5kIGEgc2ltcGxlIGNvbW1lbnQgdXBkYXRlIGluIGBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaGAuIE15IGltbWVkaWF0ZSByZWFjdGlvbiBpcyB0byB6ZXJvIGluIG9uIHRob3NlIGRyaXZlcnM6IEJyb2FkY29tIFN0YXJmaWdodGVyIDIsIE1hcnZlbGwgODhFNnh4eCBEU0Egc3dpdGNoZXMsIGFuZCBOZXRyb25vbWUgTkZQIG5ldHdvcmsgY2FyZC5cblxuTm93IGNvbWVzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uLiBBcmUgdGhlc2UgZHJpdmVycyByZWFsaXN0aWNhbGx5IHJlYWNoYWJsZSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlPyBDYW4gSSBpbnN0YW50aWF0ZSB0aGVtLCBldmVuIHBhcnRpYWxseSwgd2l0aGluIFFFTVUgb3IgR0NFPyBPciBkbyB0aGV5IGRlcGVuZCBoZWF2aWx5IG9uIE1ESU8gYnVzZXMsIHBsYXRmb3JtIGRldmljZXMsIFBDSWUgQVNJQ3MsIG9yIG90aGVyIGhhcmR3YXJlIGRlcGVuZGVuY2llcz8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBwYXRjaCBjYW4gYmUgZWZmZWN0aXZlbHkgdGVzdGVkIHdpdGhpbiBhIHR5cGljYWwgZnV6emluZyBzZXR1cC5cblxuSSdtIGdvaW5nIHRvIHF1aWNrbHkgZ3JlcCB0aGUga2VybmVsIHNvdXJjZSBhbmQgY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgdGhlc2UgZHJpdmVycy4gSSB3YW50IHRvIHNlZSBob3cgdGhleSdyZSBjb25maWd1cmVkLCB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IGhhdmUsIGFuZCBpZiB0aGVyZSdzIGFueSBpbmRpY2F0aW9uIG9mIGVtdWxhdGVkIHN1cHBvcnQuIFRoaXMgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmZWFzaWJpbGl0eSBvZiBmdXp6aW5nIHRoZXNlIGRyaXZlcnMgZWZmZWN0aXZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MjEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTozOC4zMzg2MjE3OThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM0MjE5NTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCQ01fU0YyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6MzguNDMyMDQ5OTE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE5Nzk2OTc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQgZGl2aW5nIGludG8gdGhlIHN1YmplY3QgbWF0dGVyOlxuXG4qKktjb25maWcgSW5zcGVjdGlvbiBmb3IgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbnMgYXJlIGJlaW5nIGhhbmRsZWQgd2l0aGluIHRoZXNlIHBhcnRpY3VsYXIgZHJpdmVyIHN1YnRyZWVzLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdGhlIGBLY29uZmlnYCBmaWxlcyDigJMgdGhleSdyZSB0aGUgaGVhcnQgb2YgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGJ1aWx0IGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkLCBiYXNlZCBvbiB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBsb29rIGludG8gYGRyaXZlcnMvbmV0L2RzYWAg4oCTIHRoYXQncyB3aGVyZSB0aGUgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSBkcml2ZXJzIHJlc2lkZSwgc28gSSdtIGV4cGVjdGluZyBzb21lIGludGVyZXN0aW5nIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBhbmQgZmVhdHVyZSBzZXRzIGluIHRoZXJlLiBUaGVuIEknbGwgcG9wIG92ZXIgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnBgLiBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgTmV0cm9ub21lIGRldmljZXM7IEknbSBleHBlY3Rpbmcgc29tZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgdGhvc2U7IEkgd2FudCB0byBzZWUgd2hhdCBvcHRpb25zIGV4aXN0IGZvciB0aGF0IHNwZWNpYWxpemVkIGhhcmR3YXJlIHBsYXRmb3JtLCBpbmNsdWRpbmcgYW55IHVuaXF1ZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb25zIG9yIGZlYXR1cmUgdG9nZ2xlcyByZWxhdGVkIHRvIHRoZSBORlAgYXJjaGl0ZWN0dXJlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZHJpdmVycyBmaXQgaW50byB0aGUgbGFyZ2VyIG5ldHdvcmsgc3RhY2sgYW5kIGlkZW50aWZ5IGFueSBjb25maWd1cmF0aW9uIHBlY3VsaWFyaXRpZXMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gVGltZSB0byBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzU3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6NDAuNjMwMDIxMjkxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjc5OTk0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiY21fc2YyfG12ODhlNnh4eHxORVRfRFNBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTI9bWVudSBcXFwiRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSBkcml2ZXJzXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjM6XFx0ZGVwZW5kcyBvbiBORVRfRFNBXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZz01PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTYtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6Nzpjb25maWcgTkVUX0RTQV9CQ01fU0YyXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy05LVxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTA6XFx0c2VsZWN0IE5FVF9EU0FfVEFHX0JSQ01cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMS1cXHRzZWxlY3QgRklYRURfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxOTpjb25maWcgTkVUX0RTQV9MT09QXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIkRTQSBtb2NrLXVwIEV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MjE6XFx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0yMi1cXHRzZWxlY3QgRklYRURfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NVDc1MzBcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzM6XFx0c2VsZWN0IE5FVF9EU0FfVEFHX01US1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM0LVxcdHNlbGVjdCBSRUdNQVBfSVJRXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzU6XFx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjM2OlxcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01NSU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zNy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo0Mzpjb25maWcgTkVUX0RTQV9NVDc1MzBfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgTURJTyBpbnRlcmZhY2UgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQ1OlxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Ni1cXHRzZWxlY3QgTUVESUFURUtfR0VfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01My1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU2OlxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01Ny1cXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NjY6Y29uZmlnIE5FVF9EU0FfTVQ3NjI4XFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzYyOCBFbWJlZGRlZCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy02OC1cXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiAoU09DX01UNzYyMCB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6Njk6XFx0c2VsZWN0IE5FVF9EU0FfVEFHX01UNzYyOFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTcwLVxcdHNlbGVjdCBNRURJQVRFS19GRV9TT0NfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03NS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo3Njpjb25maWcgTkVUX0RTQV9NVjg4RTYwNjBcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03Ny1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCA4OEU2MDYwIGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6Nzg6XFx0c2VsZWN0IE5FVF9EU0FfVEFHX1RSQUlMRVJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZz04Mz1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy04NC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo4NTpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy04Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTk5PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDAtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTAxOmNvbmZpZyBORVRfRFNBX1JaTjFfQTVQU1dcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDItXFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovTjEgQTVQU1cgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTAzLVxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUlpOMSB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTA0OlxcdHNlbGVjdCBORVRfRFNBX1RBR19SWk4xX0E1UFNXXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTA1LVxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDktXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTEwOmNvbmZpZyBORVRfRFNBX0tTODk5NVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTExMS1cXHR0cmlzdGF0ZSBcXFwiTWljcmVsIEtTODk5NSBmYW1pbHkgNS1wb3J0cyAxMC8xMDAgRXRoZXJuZXQgc3dpdGNoZXNcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTEyLVxcdGRlcGVuZHMgb24gU1BJXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTEzOlxcdHNlbGVjdCBORVRfRFNBX1RBR19OT05FXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTE0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTExNy1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMTg6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTE5LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTIwOlxcdHNlbGVjdCBORVRfRFNBX1RBR19MQU45MzAzXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTIxLVxcdHNlbGVjdCBSRUdNQVBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEyNi1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMjc6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzX0kyQ1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEyOC1cXHR0cmlzdGF0ZSBcXFwiU01TQy9NaWNyb2NoaXAgTEFOOTMwMyAzLXBvcnRzIDEwLzEwMCBldGhlcm5ldCBzd2l0Y2ggaW4gSTJDIG1hbmFnZWQgbW9kZVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEzMC1cXHRkZXBlbmRzIG9uIFZMQU5fODAyMVEgfHwgVkxBTl84MDIxUT1uXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTMxOlxcdHNlbGVjdCBORVRfRFNBX1NNU0NfTEFOOTMwM1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEzMi1cXHRzZWxlY3QgUkVHTUFQX0kyQ1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTM2LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEzNzpjb25maWcgTkVUX0RTQV9TTVNDX0xBTjkzMDNfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEzOC1cXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIExBTjkzMDMvTEFOOTM1NCAzLXBvcnRzIDEwLzEwMCBldGhlcm5ldCBzd2l0Y2ggaW4gTURJTyBtYW5hZ2VkIG1vZGVcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTM5OlxcdHNlbGVjdCBORVRfRFNBX1NNU0NfTEFOOTMwM1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0MC1cXHRkZXBlbmRzIG9uIFZMQU5fODAyMVEgfHwgVkxBTl84MDIxUT1uXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNDQtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTQ1OmNvbmZpZyBORVRfRFNBX1ZJVEVTU0VfVlNDNzNYWFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0Ni1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE0NzpcXHRzZWxlY3QgTkVUX0RTQV9UQUdfVlNDNzNYWF84MDIxUVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0OC1cXHRzZWxlY3QgRklYRURfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNTQtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTU1OmNvbmZpZyBORVRfRFNBX1ZJVEVTU0VfVlNDNzNYWF9TUElcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNTYtXFx0dHJpc3RhdGUgXFxcIlZpdGVzc2UgVlNDNzM4NS83Mzg4LzczOTUvNzM5OCBTUEkgbW9kZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE1Ny1cXHRkZXBlbmRzIG9uIFNQSVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE1ODpcXHRzZWxlY3QgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNTktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTYyLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE2Mzpjb25maWcgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjQtXFx0dHJpc3RhdGUgXFxcIlZpdGVzc2UgVlNDNzM4NS83Mzg4LzczOTUvNzM5OCBQbGF0Zm9ybSBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTY1LVxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTY2OlxcdHNlbGVjdCBORVRfRFNBX1ZJVEVTU0VfVlNDNzNYWFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE2Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTcyOmNvbmZpZyBORVRfRFNBX1lUOTIxWFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE3NDpcXHRzZWxlY3QgTkVUX0RTQV9UQUdfWVQ5MjFYXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTc1LVxcdHNlbGVjdCBORVRfSUVFRTgwMjFRX0hFTFBFUlMgaWYgRENCXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA0OjA5OjQwLjczNjgyNTQ2NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxMTQ3NzY0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUXVpY2sgS2NvbmZpZyBDaGVjayoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIG5ldHdvcmsgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY3Jvc3MtcmVmZXJlbmNlIGEgY291cGxlIG9mIGtleSBLY29uZmlnIGZpbGVzIHRvIHNlZSBob3cgdGhlc2UgZHJpdmVycyBhcmUgc3RydWN0dXJlZCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL0tjb25maWdgLiBUaGlzIHNob3VsZCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcywgZmVhdHVyZXMsIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBBIHF1aWNrIHNjYW4gb2YgdGhlc2Ugc2hvdWxkIGJlIGVub3VnaCB0byBnZXQgYSBncmFzcCBvZiB0aGVpciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHJlbGF0ZWQgZGVwZW5kZW5jaWVzIGJlZm9yZSBkaXZpbmcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBzb3VyY2UgY29kZS4gSSdtIGxvb2tpbmcgZm9yIGFueXRoaW5nIHVudXN1YWwgb3IgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIGZsYWdzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBJJ20gaW52ZXN0aWdhdGluZy4gVGhpcyBpcyBqdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGF2b2lkIHdhc3RpbmcgdGltZSBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODIzNSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA0OjA5OjQyLjg1MTYwMzQ4NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBmYWJyaWMgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQVxcbiAgIDU6XFx0XFx0c2VsZWN0IElSUV9ET01BSU5cXG4gICA2OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19FRFNBXFxuICAgNzpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfRFNBXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgbW9zdCBvZiB0aGUgTWFydmVsbCA4OEU2eHh4IG1vZGVscyBvZlxcbiAgMTA6XFx0XFx0ICBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMsIGV4Y2VwdCA4OEU2MDYwLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfUFRQXFxuICAxMzpcXHRcXHRib29sIFxcXCJQVFAgc3VwcG9ydCBmb3IgTWFydmVsbCA4OEU2eHh4XFxcIlxcbiAgMTQ6XFx0XFx0ZGVmYXVsdCBuXFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIChORVRfRFNBX01WODhFNlhYWCA9IHkgXFx1MDAyNlxcdTAwMjYgUFRQXzE1ODhfQ0xPQ0sgPSB5KSB8fCBcXFxcXFxuICAxNjpcXHRcXHQgICAgICAgICAgIChORVRfRFNBX01WODhFNlhYWCA9IG0gXFx1MDAyNlxcdTAwMjYgUFRQXzE1ODhfQ0xPQ0spXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFNheSBZIHRvIGVuYWJsZSBQVFAgaGFyZHdhcmUgdGltZXN0YW1waW5nIG9uIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2hcXG4gIDE5OlxcdFxcdCAgY2hpcHMgdGhhdCBzdXBwb3J0IGl0LlxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfTEVEU1xcbiAgMjI6XFx0XFx0Ym9vbCBcXFwiTEVEIHN1cHBvcnQgZm9yIE1hcnZlbGwgODhFNnh4eFxcXCJcXG4gIDIzOlxcdFxcdGRlZmF1bHQgeVxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01WODhFNlhYWFxcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1ORVRfRFNBX01WODhFNlhYWFxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX1RSSUdHRVJTXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFRoaXMgZW5hYmxlZCBzdXBwb3J0IGZvciBjb250cm9sbGluZyB0aGUgTEVEcyBhdHRhY2hlZCB0byB0aGVcXG4gIDI5OlxcdFxcdCAgTWFydmVsbCA4OEU2eHh4IHN3aXRjaCBjaGlwcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6NDIuODUxNjc5MDM2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgxODMzMjM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIE1vZHVsZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXZpY2UgZHJpdmVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYG12ODhlNnh4eGAsIGBiY21fc2YyYCwgYW5kIGBuZnBgIGFyZSBoYW5kbGVkIGR1cmluZyB0aGUgcHJvYmUgYW5kIGF0dGFjaCBwaGFzZS4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBkaWZmZXJlbmNlcyBhbmQgY29tbW9uYWxpdGllcyBpbiB0aGVpciBpbXBsZW1lbnRhdGlvbnMuIFNvLCBJJ2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UgY29kZS4gSSdsbCBuZWVkIHRvIHBpbnBvaW50IGV4YWN0bHkgd2hlcmUgdGhlIG1vZHVsZSdzIGluaXRpYWxpemF0aW9uIGtpY2tzIG9mZi4gSSdsbCBzZWFyY2ggZWFjaCBtb2R1bGUncyBjb2RlIGZvciBpbnN0YW5jZXMgb2YgXCJpbml0XCIgb3IgXCJwcm9iZVwiLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludHMsIHRoZSBzdGFydGluZyBwb2ludHMgZm9yIHRoZXNlIGRyaXZlcnMsIGFuZCBhbGxvdyBhIGZvY3VzZWQgYW5hbHlzaXMuIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgYW5kIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDEzLCJPdXRwdXRUb2tlbnMiOjYzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo0NS42NzAwMTQxNDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDA2NTQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdHxtb2R1bGVfbWRpb19kcml2ZXJ8bWRpb19kcml2ZXJfcmVnaXN0ZXJ8cGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyfHBjaV9yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6NDUuNzQ1NDI3NDMzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMjg2NTk1MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiBob3cgdGhlc2UgRFNBIHN3aXRjaCBjaGlwcyBhcmUgaW5pdGlhbGl6ZWQgYW5kIGludGVncmF0ZWQgaW50byB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoZSBjcnVjaWFsIHJlZ2lzdHJhdGlvbiBob29rcyBmb3IgdGhlc2UgbW9kdWxlcywgdGhlIGVudHJ5IHBvaW50cyB0aGF0IGVzc2VudGlhbGx5IHRlbGwgdGhlIGtlcm5lbCBcIkhleSwgSSdtIGhlcmUgYW5kIHJlYWR5IHRvIGNvbnRyb2wgdGhpcyBoYXJkd2FyZSxcIiBhcmUgZ29pbmcgdG8gYmUgbHVya2luZyBpbiB0aGUgZHJpdmVyIHNvdXJjZSBmaWxlcyBmb3IgdGhlc2Ugc3BlY2lmaWMgY2hpcHMuXG5cbioqTG9jYXRpbmcgRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cblNvLCBJJ20gZ29pbmcgdG8gZm9jdXMgbXkgc2VhcmNoIG9uIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jYC4gU3BlY2lmaWNhbGx5LCBJJ20gaHVudGluZyBmb3IgdGhlIHN0YW5kYXJkIG1vZHVsZSByZWdpc3RyYXRpb24gZnVuY3Rpb25zIOKAkyB0aGUgdGVsbC10YWxlIHNpZ25zIG9mIGEgZHJpdmVyJ3MgcHJlc2VuY2UuIEknbGwgYmUgbG9va2luZyBmb3IgYG1vZHVsZV9pbml0YCBjYWxscywgbGlrZWx5IHBvaW50aW5nIHRvIGEgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSBjaGlwJ3MgaW50ZXJuYWwgc3RhdGUsIHJlZ2lzdGVycyBpdCB3aXRoIHRoZSBEU0EgZnJhbWV3b3JrLCBhbmQgcGVyaGFwcyBob29rcyBpbnRvIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBwcm9iaW5nIG1lY2hhbmlzbXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTWFydmVsbCBhbmQgQnJvYWRjb20gY2hpcHMgYXJlIGNvbWluZyBvbmxpbmUuIEknbGwgYmUgaW50ZXJlc3RlZCB0byBzZWUgaG93IHRoZXkndmUgaGFuZGxlZCByZWdpc3RlcmluZyB0aGVtc2VsdmVzIGFzIERTQSBkZXZpY2VzLCBhbmQgSSBleHBlY3QgdG8gc2VlIHNwZWNpZmljIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBwcm9iYWJseSB3aXRoaW4gYG1vZHVsZV9pbml0YCBmdW5jdGlvbnMuIFRoaXMgc2VhcmNoIHNob3VsZCBwcm92aWRlIGEgY3J1Y2lhbCBnbGltcHNlIGludG8gdGhlIG92ZXJhbGwgc3lzdGVtIGluaXRpYWxpemF0aW9uIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMDQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo0OC45NzQwODk2OTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MjI3MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NzUyOT1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG12ODhlNnh4eF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTM5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1NDA6bWRpb19tb2R1bGVfZHJpdmVyKG12ODhlNnh4eF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1NDEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA0OjA5OjQ5LjA0MzMyMTIwM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjUwNzU0Nzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGRlbGl2ZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIGNvbnNpZGVyYXRpb25zOlxuXG4qKkFuYWx5emluZyB0aGUgTWFydmVsbCBTd2l0Y2ggRHJpdmVyIGFuZCBDb25zaWRlcmluZyBhIENvbXBhcmlzb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYG12ODhlNnh4eGAuIFRoYXQncyBhbiBgbWRpb19kcml2ZXJgLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIE1hcnZlbGwncyA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaGVzLiBJJ20gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoIHRoZXNlIGtpbmRzIG9mIGRyaXZlcnMsIHNvIHRoaXMgaXMgYWxsIGJyZWFkLWFuZC1idXR0ZXIgc3R1ZmYuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGhvdyBkb2VzIHRoaXMgZHJpdmVyIHN0YWNrIHVwIGFnYWluc3Qgc2ltaWxhciBpbXBsZW1lbnRhdGlvbnM/IE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgYmVuY2htYXJrIGl0IGFnYWluc3QgdGhlIGBiY21fc2YyYCBkcml2ZXIuIEkgbmVlZCB0byBnZXQgYSBwaWN0dXJlIG9mIHdoYXQgTWFydmVsbCBpcyBvZmZlcmluZyBoZXJlLCBhbmQgYSBjb21wYXJpc29uIHdpdGggdGhlIGBiY21fc2YyYCBkcml2ZXIgd2lsbCBnaXZlIG1lIGEgYmFzZWxpbmUgZm9yIGV2YWx1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MDcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo1MS4yOTQwNzk4NjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMjM1NDE3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9iY21fc2YyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo1MS4zNTYzMzY2MjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ3MjEzODk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZmlsZSBzZWFyY2g6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERyaXZlciBGaWxlcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHNvbWUgZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZHNhYCBkaXJlY3RvcnkgdGhhdCBhcmUgcmVsYXRlZCB0byBgYmNtX3NmMmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBiY21fc2YyYCBsaWtlbHkgcmVmZXJlbmNlcyBhIHNwZWNpZmljIEJyb2FkY29tIChCQ00pIFN3aXRjaCBGYWJyaWMgKFNGKSBoYXJkd2FyZSBjb21wb25lbnQuIEdpdmVuIG15IGV4cGVydGlzZSBpbiB0aGlzIGFyZWEsIGl0J3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdGhhdCBJJ20gbGlrZWx5IGRlYWxpbmcgd2l0aCBkcml2ZXIgY29kZSBmb3IgYSBuZXR3b3JrIHN3aXRjaCBvciByZWxhdGVkIGhhcmR3YXJlLiBUaGUgYGRyaXZlcnMvbmV0L2RzYWAgZGlyZWN0b3J5IGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzLCBhcyBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGlzIGEgY29tbW9uIGZyYW1ld29yayBmb3IgaW50ZWdyYXRpbmcgc3dpdGNoIGhhcmR3YXJlIGludG8gdGhlIExpbnV4IGtlcm5lbC5cblxuVGhlcmVmb3JlLCBteSBleHBlY3RhdGlvbiBpcyB0aGF0IHRoZSBmaWxlcyBJIGZpbmQgd2lsbCBjb250YWluIHRoZSBkZXZpY2UgZHJpdmVyIGNvZGUsIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCByZWdpc3RlciBkZWZpbml0aW9ucywgb3IgcG9zc2libHkgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBzcGVjaWZpYyB0byB0aGUgYGJjbV9zZjJgIGhhcmR3YXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHNvdXJjZSBjb2RlIGZpbGVzIChsaWtlbHkgQyBmaWxlcywgaGVhZGVyIGZpbGVzKSB0aGF0IHdvdWxkIGltcGxlbWVudCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUga2VybmVsIGFuZCB0aGUgc3dpdGNoIGhhcmR3YXJlLiBUaGUgc2VhcmNoIGl0c2VsZiBpcyBzaW1wbGU7IEknbGwgdXNlIHRvb2xzIGxpa2UgYGZpbmRgIGFuZCBgZ3JlcGAgb3IgbXkgcHJlZmVycmVkIElERSdzIHNlYXJjaCBmdW5jdGlvbi4gVWx0aW1hdGVseSwgSSBhbnRpY2lwYXRlIHRoaXMgc2VhcmNoIHdpbGwgbGVhZCBtZSB0byB0aGUgZHJpdmVyIHNvdXJjZSB0aGF0IHdpbGwgbGlrZWx5IGltcGxlbWVudCB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgaW50ZXJmYWNlIGZvciB0aGUgYGJjbV9zZjJgIGRldmljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwNjksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo1My44Mjg0NzgxNTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE5MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9kc2FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiYmNtX3NmMi5jXCIsXG4gICAgXCJiY21fc2YyLmhcIixcbiAgICBcImJjbV9zZjJfY2ZwLmNcIixcbiAgICBcImJjbV9zZjJfcmVncy5oXCIsXG4gICAgXCJkc2FfbG9vcC5jXCIsXG4gICAgXCJrczg5OTUuY1wiLFxuICAgIFwibGFuOTMwMy1jb3JlLmNcIixcbiAgICBcImxhbjkzMDMuaFwiLFxuICAgIFwibGFuOTMwM19pMmMuY1wiLFxuICAgIFwibGFuOTMwM19tZGlvLmNcIixcbiAgICBcIm10NzUzMC1tZGlvLmNcIixcbiAgICBcIm10NzUzMC1tbWlvLmNcIixcbiAgICBcIm10NzUzMC5jXCIsXG4gICAgXCJtdDc1MzAuaFwiLFxuICAgIFwibXQ3NjI4LmNcIixcbiAgICBcIm12ODhlNjA2MC5jXCIsXG4gICAgXCJtdjg4ZTYwNjAuaFwiLFxuICAgIFwicnpuMV9hNXBzdy5jXCIsXG4gICAgXCJyem4xX2E1cHN3LmhcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC1jb3JlLmNcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC1wbGF0Zm9ybS5jXCIsXG4gICAgXCJ2aXRlc3NlLXZzYzczeHgtc3BpLmNcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC5oXCIsXG4gICAgXCJ5dDkyMXguY1wiLFxuICAgIFwieXQ5MjF4LmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiYjUzXCIsXG4gICAgXCJoaXJzY2htYW5uXCIsXG4gICAgXCJsYW50aXFcIixcbiAgICBcIm1pY3JvY2hpcFwiLFxuICAgIFwibXY4OGU2eHh4XCIsXG4gICAgXCJteGw4NjJ4eFwiLFxuICAgIFwibmV0Y1wiLFxuICAgIFwib2NlbG90XCIsXG4gICAgXCJxY2FcIixcbiAgICBcInJlYWx0ZWtcIixcbiAgICBcInNqYTExMDVcIixcbiAgICBcInhyczcwMHhcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo1My44Mjg1ODIwOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzgyNTM3Mzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQkNNX1NGMiBEcml2ZXIqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCBjaGVjayBvdXQgaG93IHRoZSBCcm9hZGNvbSBTRjIgZHJpdmVyIGlzIGJlaW5nIHJlZ2lzdGVyZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGRyaXZlcidzIHJlZ2lzdHJhdGlvbiBpcyBmdW5jdGlvbmluZyBhcyBleHBlY3RlZCwgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBpc3N1ZXMgaW4gaXRzIGluaXRpYWxpemF0aW9uIG9yIGJpbmRpbmcgcHJvY2Vzcy4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSBoYXJkd2FyZSBpcyBiZWhhdmluZyBhcHByb3ByaWF0ZWx5LiBJJ2xsIGZvY3VzIG9uIHRoZSBjb3JlIHJlZ2lzdHJhdGlvbiBtZWNoYW5pc21zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc4OSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo1NS42MTExMjMwNDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTEzNTE1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGxhdGZvcm1fZHJpdmVyfHBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9MTYyNj1zdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMoYmNtX3NmMl9wbV9vcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTE2MjktXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxNjMwOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJjbV9zZjJfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTYzMS1cXHQucHJvYmVcXHQ9IGJjbV9zZjJfc3dfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTE2MzktfTtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjE2NDA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihiY21fc2YyX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNjQxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDowOTo1NS43MzAyNjIzN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTU5NDUxMDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYmNtX3NmMiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyAqYmNtX3NmMiogaXMgdGhlIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBPcGVuRmxvdy9wbGF0Zm9ybSBkcml2ZXIsIHRoYXQncyB0YWlsb3JlZCBmb3IgdGhlIEJyb2FkY29tIFN0YXJmaWdodGVyIDIgc3dpdGNoIHNpbGljb24uIFRoYXQncyBnb29kIGNvbnRleHQgdG8gc3RhcnQgd2l0aCDigJMgSSBjYW4gaW1tZWRpYXRlbHkgcGxhY2UgaXQgaW4gdGhlIGVjb3N5c3RlbS4gSSBrbm93IHdoYXQgdGhlIFwiYmNtXCIgcHJlZml4IHVzdWFsbHkgaW5kaWNhdGVzLCBhbmQgXCJTdGFyZmlnaHRlciAyXCIgZ2l2ZXMgbWUgYSBzb2xpZCBoYXJkd2FyZSBmb3VuZGF0aW9uIHRvIHdvcmsgZnJvbS5cblxuTm93LCBnaXZlbiB0aGF0IGl0J3MgYSBCcm9hZGNvbSBzd2l0Y2gsIG15IG5leHQgcXVlc3Rpb24gaXMgaW5ldml0YWJseSwgaG93IGlzIGl0IGRlYWxpbmcgd2l0aCB0aGUgbmV0d29yayBmb3J3YXJkaW5nIHBsYW5lIChORlApPyBEb2VzIGl0IHJ1biB0aGUgZGF0YSBwbGFuZSBkaXJlY3RseSBpbiBCcm9hZGNvbSdzIHNpbGljb24gb3IgZG9lcyBpdCBydW4gc29tZSBzb2Z0d2FyZSBwcm9jZXNzIG9uIGEgY29udHJvbCBwbGFuZSBwcm9jZXNzb3I/IFdoYXQgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIGFyZSB3ZSB0YWxraW5nIGFib3V0PyBMZXQncyBjaGVjayBORlAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjA0LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6NTcuODg5NzE3Mjk5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTA0MDEzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyfG1vZHVsZV9wY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbWFpbi5jPTk0OT1zdGF0aWMgaW50IF9faW5pdCBuZnBfbWFpbl9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9tYWluLmMtOTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYzo5NjA6XFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bmZwX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYy05NjEtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9tYWluLmMtOTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYzo5NjQ6XFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bmZwX25ldHZmX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX21haW4uYy05NjUtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MDk6NTcuOTY4NzY2NDE1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyODEwMzQ1OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIERyaXZlciBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGVzZSBkcml2ZXIgY2hhbmdlcywgc3RhcnRpbmcgd2l0aCBgZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcGF0Y2guIEkgc2VlIHRoYXQgYGJjbV9zZjJfY2ZwX3J1bGVfZ2V0X2FsbGAgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiBgYmNtX3NmMl9jZnBfcnVsZV9nZXRgLiBUaGlzIHN1Z2dlc3RzIGEgZGVwZW5kZW5jeSBvciByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aG9zZSB0d28gZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGBiY21fc2YyX2NmcF9ydWxlX2dldF9hbGxgIHRvIHNlZSB3aGVyZSBlbHNlIGl0J3MgYmVpbmcgdXNlZC4gVW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBvZiB0aGF0IGZ1bmN0aW9uIGNhbGwgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyB0aGUgb3ZlcmFsbCBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEZyb20gaGVyZSBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgdXNhZ2UgYW5kIHVuZGVyc3RhbmQgaXRzIHNpZGUgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3MjAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDoxMDowMC4yNDk4MDMyNDhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMDExNzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJjbV9zZjJfY2ZwX3J1bGVfZ2V0X2FsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmM9MTA2ND1zdGF0aWMgaW50IGJjbV9zZjJfY2ZwX3J1bGVfZ2V0KHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmMtMTA4My0vKiBXZSBpbXBsZW1lbnQgdGhlIHNlYXJjaCBkb2luZyBhIFRDQU0gc2VhcmNoIG9wZXJhdGlvbiAqL1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jOjEwODQ6c3RhdGljIGludCBiY21fc2YyX2NmcF9ydWxlX2dldF9hbGwoc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYy0xMDg1LVxcdFxcdFxcdFxcdCAgICBpbnQgcG9ydCwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKm5mYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyX2NmcC5jPTExMDQ9aW50IGJjbV9zZjJfZ2V0X3J4bmZjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYy0xMTI0LVxcdGNhc2UgRVRIVE9PTF9HUlhDTFNSTEFMTDpcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMl9jZnAuYzoxMTI1OlxcdFxcdHJldCA9IGJjbV9zZjJfY2ZwX3J1bGVfZ2V0X2FsbChwcml2LCBwb3J0LCBuZmMsIHJ1bGVfbG9jcyk7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmMtMTEyNi1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MTA6MDAuMzQyODE5OTI0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk0NjM0MjM5MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFByb3ZpZGVkIENvZGUgQ2hhbmdlcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBzZXJpZXMgaXMgbGlrZWx5ICpub3QqIHN1aXRhYmxlIGZvciBmdXp6aW5nIGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQuIExldCdzIGRpZyBpbnRvIHRoZSBkZXRhaWxzOlxuXG5GaXJzdCwgYGJjbV9zZjJgLCB0aGUgQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBzd2l0Y2ggZHJpdmVyLiBDbGVhcmx5LCB0aGlzIGlzIGFuIFNvQyBwbGF0Zm9ybSBkcml2ZXIsIGV4cGVjdGluZyB0byBpbnRlcmFjdCB3aXRoIHNwZWNpZmljIEJyb2FkY29tIHN3aXRjaCBoYXJkd2FyZSByZWdpc3RlcnMsIGlkZW50aWZpZWQgYnkgZGV2aWNlIHRyZWUgbWF0Y2hlcy4gVGhpcyBzY3JlYW1zIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlXCIgaW4gYSB2YW5pbGxhIHg4Ni02NCBRRU1VIGVudmlyb25tZW50LiAgV2UncmUgdGFsa2luZyBhYm91dCBhbiBlbWJlZGRlZCBzd2l0Y2gsIG5vdCBzb21ldGhpbmcgZWFzaWx5IGVtdWxhdGVkLlxuXG5UaGVuIHdlIGhhdmUgYG12ODhlNnh4eGAuIFRoaXMgTWFydmVsbCBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIGlzIGFuIE1ESU8gZHJpdmVyLiAgSXQgcHJvYmVzIGZvciBwaHlzaWNhbCBzd2l0Y2ggY2hpcHMsIGlkZW50aWZpYWJsZSBieSB0aGVpciBzcGVjaWZpYyBQSFkgSURzLCBvdmVyIGFuIE1ESU8gYnVzLiAgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZXJlIGlzbid0IGEgcmVhZGlseSBhdmFpbGFibGUgbW9jayBvciBlbXVsYXRlZCBgbXY4OGU2eHh4YCBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIHN0YW5kYXJkIFFFTVUgb3IgdGhlIGtlcm5lbCBpdHNlbGYuIFdlIGhhdmUgYGRzYV9sb29wYCB3aGljaCwgd2hpbGUgYSBtb2NrIERTQSBzd2l0Y2gsIGlzIGEgc2VwYXJhdGUgZHJpdmVyLiBgbXY4OGU2eHh4YCBkaXJlY3RseSBpbnRlcmFjdHMgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZS4gTm8gZ28uXG5cbk5leHQsIGBuZnBgLiBUaGlzIGlzIGEgTmV0cm9ub21lIEZsb3cgUHJvY2Vzc29yIGRyaXZlciwgYSBQQ0llIFNtYXJ0TklDLiBUaGVzZSBhcmUgKnZlbmRvci1zcGVjaWZpYyogUENJZSBjYXJkcyDigJMgTmV0cm9ub21lIE5GUDQwMDAvTkZQNjAwMC9ORlAzODAwLiBUaGVzZSBhcmUgQVNJQ3MgdGhhdCBqdXN0IGFyZW4ndCBnb2luZyB0byBiZSBwcmVzZW50IG9yIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cC4gIEFnYWluLCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5cbk5vdywgbGV0J3Mgbm90IG92ZXJsb29rIHRoZSBjaGFuZ2UgaW4gYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC4gIFRoaXMgaXMgaW1wb3J0YW50LiBUaGUgbW9kaWZpY2F0aW9uIGlzIHB1cmVseSBhIGRvY3VtZW50YXRpb24gY29tbWVudCBhZGRlZCB0byB0aGUgYHN0cnVjdCBldGh0b29sX29wc2AuIEl0J3MgYSBjbGFyaWZpY2F0aW9uIG9uIGhvdyB0byBoYW5kbGUgdGhlIGBFVEhUT09MX0dSWENMU1JMQUxMYCBydWxlIGNvdW50LCBzcGVjaWZpY2FsbHkgdG8gcmV0dXJuIGAtRU1TR1NJWkVgIHdoZW4gdGhlIHVzZXItcHJvdmlkZWQgY291bnQgaXMgdG9vIHNtYWxsLiBCdXQgdGhpcyBpcyBhIGNvbW1lbnQsIG5vdCBleGVjdXRhYmxlIGNvZGUuXG5cbk5vdyBJJ20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIGFsbCB0aGUgZmlsZXMgdGhhdCB3ZXJlIG1vZGlmaWVkOiBgZHJpdmVycy9uZXQvZHNhL2JjbV9zZjJfY2ZwLmNgLCBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9ldGh0b29sLmNgLCBhbmQgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC5cblxuQWZ0ZXIgY3Jvc3MtY2hlY2tpbmcgdGhlIGRpZmYgcHJvdmlkZWQsIEkgY2FuIGNvbmZpcm0gdGhhdCB0aGUgb25seSBtb2RpZmllZCBleGVjdXRhYmxlIGNvZGUgaXMgaW5kZWVkIGluIHRoZSBkcml2ZXJzIGZvciB0aGUgYWZvcmVtZW50aW9uZWQgaGFyZHdhcmUuICBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCB1cGRhdGVzIGZsb3cgY2xhc3NpZmljYXRpb24gcnVsZXMgKGBFVEhUT09MX0dSWENMU1JMQUxMYCkgYWNyb3NzIHRoZSBkcml2ZXJzIHRvIHByZXZlbnQgYnVmZmVyIG92ZXJmbG93cywgYW5kIHRoZSBgaW5jbHVkZS9saW51eC9ldGh0b29sLmhgIGNoYW5nZSBpcyAqb25seSogYSBjb21tZW50LlxuXG5HaXZlbiBhbGwgdGhpcywgSSBjb25jbHVkZSB0aGF0IHRoZXNlIGNoYW5nZXMgZG8gbm90IGV4cG9zZSBhbnkgY29kZSB0aGF0IHdvdWxkIGJlIHJlbGV2YW50IHRvIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gVGhlIGhhcmR3YXJlIHRhcmdldHMgYXJlIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgaW4gdGhlc2Ugc2NlbmFyaW9zLCBhbmQgdGhlIG90aGVyIG1vZGlmaWNhdGlvbiBpcyBvbmx5IGEgZG9jdW1lbnRhdGlvbiBjaGFuZ2UuXG5cblRoZXJlZm9yZSwgdGhlIGZpbmFsIG91dHB1dCBpczpcblxuLSAgIFdvcnRoRnV6emluZzogZmFsc2Vcbi0gICBGb2N1c1N5bWJvbHM6IFxcWyBdXG4tICAgRW5hYmxlQ29uZmlnczogXFxbIF1cbi0gICBSZWFzb25pbmc6IFRoZSBwYXRjaCBzZXJpZXMgaXMgYWJvdXQgaW1wcm92aW5nIGBFVEhUT09MX0dSWENMU1JMQUxMYCBoYW5kbGluZyBhY3Jvc3MgdGhyZWUgZHJpdmVycyAoYGJjbV9zZjJgLCBgbXY4OGU2eHh4YCwgYG5mcGApIHRvIHByZXZlbnQgYnVmZmVyIG92ZXJmbG93cyByZWxhdGVkIHRvIHVzZXItcHJvdmlkZWQgYHJ1bGVfY250YCwgcGx1cyBhIGRvY3VtZW50YXRpb24gY29tbWVudCBpbiBgaW5jbHVkZS9saW51eC9ldGh0b29sLmhgLiAgQWxsIHRoZSBtb2RpZmllZCBleGVjdXRhYmxlIGNvZGUgaXMgaW4gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoQnJvYWRjb20gU29DIHN3aXRjaCwgTWFydmVsbCBzd2l0Y2ggY2hpcCwgYW5kIE5ldHJvbm9tZSBTbWFydE5JQykgdGhhdCBkZXBlbmQgb24gcGh5c2ljYWwgaGFyZHdhcmUgbm90IGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VL0dDRSwgYW5kIHRoZSBoZWFkZXIgY2hhbmdlIGlzIG9ubHkgZG9jdW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzNjcsIk91dHB1dFRva2VucyI6MTUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNDoxMDowOS44MDYyNDYxMTJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBidWZmZXIgYm91bmRzIGNoZWNraW5nIGZvciBFVEhUT09MX0dSWENMU1JMQUxMIGluIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgKEJyb2FkY29tIFN0YXJmaWdodGVyIDIgRFNBIHN3aXRjaCwgTWFydmVsbCA4OEU2eHh4IERTQSBzd2l0Y2gsIGFuZCBOZXRyb25vbWUgTkZQIFNtYXJ0TklDKSBhbmQgdXBkYXRlcyBkb2MgY29tbWVudHMgaW4gaW5jbHVkZS9saW51eC9ldGh0b29sLmguIEFsbCBleGVjdXRhYmxlIGNvZGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gdmVuZG9yIGhhcmR3YXJlIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUNzL1NvQy9NRElPIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY2hhbmdlIHRvIGluY2x1ZGUvbGludXgvZXRodG9vbC5oIGlzIGRvY3VtZW50YXRpb24gb25seS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBhZGRzIGJ1ZmZlciBib3VuZHMgY2hlY2tpbmcgZm9yIEVUSFRPT0xfR1JYQ0xTUkxBTEwgaW4gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBEU0Egc3dpdGNoLCBNYXJ2ZWxsIDg4RTZ4eHggRFNBIHN3aXRjaCwgYW5kIE5ldHJvbm9tZSBORlAgU21hcnROSUMpIGFuZCB1cGRhdGVzIGRvYyBjb21tZW50cyBpbiBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC4gQWxsIGV4ZWN1dGFibGUgY29kZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB2ZW5kb3IgaGFyZHdhcmUgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3MvU29DL01ESU8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIHRoZSBjaGFuZ2UgdG8gaW5jbHVkZS9saW51eC9ldGh0b29sLmggaXMgZG9jdW1lbnRhdGlvbiBvbmx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDQ6MTA6MDkuODA2MjgxMDAyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkxjrv[1] Phase: Running StartedAt: 2026-09-04 04:10:20 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkxjrv[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-04 04:10:20 +0000 UTC FinishedAt: 2026-09-04 04:10:25 +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,}