Name: series-workflow2j8ss Phase: Failed StartedAt: 2026-09-14 08:41:57 +0000 UTC FinishedAt: 2026-09-14 08:45:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2j8ss[0] Phase: Succeeded StartedAt: 2026-09-14 08:41:57 +0000 UTC FinishedAt: 2026-09-14 08:45:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2j8ss[0].run-triage Phase: Succeeded StartedAt: 2026-09-14 08:41:57 +0000 UTC FinishedAt: 2026-09-14 08:45:46 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGVyaW9kaWMgb3V0cHV0IGhhbmRsaW5nIChrc3pfcHRwX2VuYWJsZV9wZXJvdXQgYW5kIGtzel9wdHBfcmVzdGFydF9wZXJvdXQpIGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1pY3JvY2hpcCBLU1o4eHh4L0tTWjl4eHgvTEFOOTM3eCBzd2l0Y2ggaGFyZHdhcmUgKGludGVyZmFjZWQgdmlhIFNQSSwgSTJDLCBvciBTTUkpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwODo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGI2NzY1YTM4ZDE2MDk4MGNhNGM0NDUyZjlhY2ZiMTA1YzgwNjQzMWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAwODo0MzozMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jXG5pbmRleCAzOWNjNzBkNjU5MDBiLi40ZjkyNGRmOWUzMmJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jXG5AQCAtMjIyLDYgJiM0MzsyMjIsOCBAQCBzdGF0aWMgaW50IGtzel9wdHBfZW5hYmxlX3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbiYjNDM7XHRwdHBfZGF0YS1cdTAwM2VwZXJvdXRfZmxhZ3MgPSByZXF1ZXN0LVx1MDAzZWZsYWdzO1xuJiM0MztcdHB0cF9kYXRhLVx1MDAzZXBlcm91dF9pbmRleCA9IHJlcXVlc3QtXHUwMDNlaW5kZXg7XG4gXHRwdHBfZGF0YS1cdTAwM2VwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3QudHZfc2VjICA9IHJlcXVlc3QtXHUwMDNlc3RhcnQuc2VjO1xuIFx0cHRwX2RhdGEtXHUwMDNlcGVyb3V0X3RhcmdldF90aW1lX2ZpcnN0LnR2X25zZWMgPSByZXF1ZXN0LVx1MDAzZXN0YXJ0Lm5zZWM7XG4gXG5AQCAtNzk1LDggJiM0Mzs3OTcsOCBAQCBzdGF0aWMgaW50IGtzel9wdHBfcmVzdGFydF9wZXJvdXQoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbiBcdHJlcXVlc3Quc3RhcnQubnNlYyA9IG5leHQudHZfbnNlYztcbiBcdHJlcXVlc3QucGVyaW9kLnNlYyAgPSBwdHBfZGF0YS1cdTAwM2VwZXJvdXRfcGVyaW9kLnR2X3NlYztcbiBcdHJlcXVlc3QucGVyaW9kLm5zZWMgPSBwdHBfZGF0YS1cdTAwM2VwZXJvdXRfcGVyaW9kLnR2X25zZWM7XG4tXHRyZXF1ZXN0LmluZGV4ID0gMDtcbi1cdHJlcXVlc3QuZmxhZ3MgPSAwO1xuJiM0MztcdHJlcXVlc3QuaW5kZXggPSBwdHBfZGF0YS1cdTAwM2VwZXJvdXRfaW5kZXg7XG4mIzQzO1x0cmVxdWVzdC5mbGFncyA9IHB0cF9kYXRhLVx1MDAzZXBlcm91dF9mbGFncztcbiBcbiBcdHJldHVybiBrc3pfcHRwX2VuYWJsZV9wZXJvdXQoZGV2LCBcdTAwMjZyZXF1ZXN0LCAxKTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaFxuaW5kZXggNzA2N2VjOWJkMWU2Zi4uZGE2YTJlZmIyM2Q3MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaFxuQEAgLTMxLDYgJiM0MzszMSw4IEBAIHN0cnVjdCBrc3pfcHRwX2RhdGEge1xuIFx0ZW51bSBrc3pfcHRwX3RvdV9tb2RlIHRvdV9tb2RlO1xuIFx0c3RydWN0IHRpbWVzcGVjNjQgcGVyb3V0X3RhcmdldF90aW1lX2ZpcnN0OyAgLyogc3RhcnQgb2YgZmlyc3QgcHVsc2UgKi9cbiBcdHN0cnVjdCB0aW1lc3BlYzY0IHBlcm91dF9wZXJpb2Q7XG4mIzQzO1x0dW5zaWduZWQgaW50IHBlcm91dF9mbGFncztcbiYjNDM7XHR1bnNpZ25lZCBpbnQgcGVyb3V0X2luZGV4O1xuIH07XG4gXG4gaW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwODo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwZXJpb2RpYyBvdXRwdXQgaGFuZGxpbmcgKGtzel9wdHBfZW5hYmxlX3Blcm91dCBhbmQga3N6X3B0cF9yZXN0YXJ0X3Blcm91dCkgaW4gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWljcm9jaGlwIEtTWjh4eHgvS1NaOXh4eC9MQU45Mzd4IHN3aXRjaCBoYXJkd2FyZSAoaW50ZXJmYWNlZCB2aWEgU1BJLCBJMkMsIG9yIFNNSSkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjY3NjVhMzhkMTYwOTgwY2E0YzQ0NTJmOWFjZmIxMDVjODA2NDMxYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDE0IDA4OjQzOjMwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYwppbmRleCAzOWNjNzBkNjU5MDBiLi40ZjkyNGRmOWUzMmJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYwpAQCAtMjIyLDYgJiM0MzsyMjIsOCBAQCBzdGF0aWMgaW50IGtzel9wdHBfZW5hYmxlX3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LAogCQlyZXR1cm4gMDsKIAl9CiAKJiM0MzsJcHRwX2RhdGEtJmd0O3Blcm91dF9mbGFncyA9IHJlcXVlc3QtJmd0O2ZsYWdzOwomIzQzOwlwdHBfZGF0YS0mZ3Q7cGVyb3V0X2luZGV4ID0gcmVxdWVzdC0mZ3Q7aW5kZXg7CiAJcHRwX2RhdGEtJmd0O3Blcm91dF90YXJnZXRfdGltZV9maXJzdC50dl9zZWMgID0gcmVxdWVzdC0mZ3Q7c3RhcnQuc2VjOwogCXB0cF9kYXRhLSZndDtwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3QudHZfbnNlYyA9IHJlcXVlc3QtJmd0O3N0YXJ0Lm5zZWM7CiAKQEAgLTc5NSw4ICYjNDM7Nzk3LDggQEAgc3RhdGljIGludCBrc3pfcHRwX3Jlc3RhcnRfcGVyb3V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpCiAJcmVxdWVzdC5zdGFydC5uc2VjID0gbmV4dC50dl9uc2VjOwogCXJlcXVlc3QucGVyaW9kLnNlYyAgPSBwdHBfZGF0YS0mZ3Q7cGVyb3V0X3BlcmlvZC50dl9zZWM7CiAJcmVxdWVzdC5wZXJpb2QubnNlYyA9IHB0cF9kYXRhLSZndDtwZXJvdXRfcGVyaW9kLnR2X25zZWM7Ci0JcmVxdWVzdC5pbmRleCA9IDA7Ci0JcmVxdWVzdC5mbGFncyA9IDA7CiYjNDM7CXJlcXVlc3QuaW5kZXggPSBwdHBfZGF0YS0mZ3Q7cGVyb3V0X2luZGV4OwomIzQzOwlyZXF1ZXN0LmZsYWdzID0gcHRwX2RhdGEtJmd0O3Blcm91dF9mbGFnczsKIAogCXJldHVybiBrc3pfcHRwX2VuYWJsZV9wZXJvdXQoZGV2LCAmYW1wO3JlcXVlc3QsIDEpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaAppbmRleCA3MDY3ZWM5YmQxZTZmLi5kYTZhMmVmYjIzZDcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaApAQCAtMzEsNiAmIzQzOzMxLDggQEAgc3RydWN0IGtzel9wdHBfZGF0YSB7CiAJZW51bSBrc3pfcHRwX3RvdV9tb2RlIHRvdV9tb2RlOwogCXN0cnVjdCB0aW1lc3BlYzY0IHBlcm91dF90YXJnZXRfdGltZV9maXJzdDsgIC8qIHN0YXJ0IG9mIGZpcnN0IHB1bHNlICovCiAJc3RydWN0IHRpbWVzcGVjNjQgcGVyb3V0X3BlcmlvZDsKJiM0MzsJdW5zaWduZWQgaW50IHBlcm91dF9mbGFnczsKJiM0MzsJdW5zaWduZWQgaW50IHBlcm91dF9pbmRleDsKIH07CiAKIGludCBrc3pfcHRwX2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWljcm9jaGlwIEtTWiBEU0EgU3dpdGNoIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgcGF0Y2ggdG91Y2hlcyBga3N6X3B0cC5jYCBhbmQgYGtzel9wdHAuaGAgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9gIGRpcmVjdG9yeS4gUmlnaHQsIHRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbG9va2luZyBhdCB0aGUgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgaW1wbGVtZW50YXRpb24gd2l0aGluIHRoYXQgZHJpdmVyLCBzaW5jZSBpdCYjMzk7cyBga3N6X3B0cC4qYCBmaWxlcy4KCk15IG5leHQgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeS4gRG9lcyB0aGlzIGZ1bmN0aW9uYWxpdHkgcmVseSBvbiBzcGVjaWZpYyBNaWNyb2NoaXAgS1NaIHN3aXRjaCBoYXJkd2FyZT8gQ2FuIEkgZXZlbiB0ZXN0IHRoaXMgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBvciBtYXliZSBhY2Nlc3NpYmxlIHRocm91Z2ggYSB2aXJ0dWFsIGJ1cyBvciBVU0IgY29ubmVjdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBpbiBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9gIHRvIHNlZSBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZCBhbmQgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUuIEkmIzM5O2xsIHVzZSBncmVwIG9yIGNvZGUgc2VhcmNoIHRvIHBpbnBvaW50IHJlbGV2YW50IGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2tzel9wdHAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MDUgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU9OD1pZmRlZiBDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo5Omtzel9zd2l0Y2gtb2JqcyAmIzQzOz0ga3N6X3B0cC5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTEwLWVuZGlmXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjM4NT1zdGF0aWMgaW50IGtzejg0NjNfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0ODAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDgxOlx0XHRyZXQgPSBrc3pfcHRwX2Nsb2NrX3JlZ2lzdGVyKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0ODItXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTA2LVx0aWYgKGRldi1cdTAwM2VpcnEgXHUwMDNlIDApXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTA3Olx0XHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjUwOC1mcmVlX3B0cF9pcnE6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjUxOD1zdGF0aWMgdm9pZCBrc3o4NDYzX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTIyLVx0aWYgKGRldi1cdTAwM2VpcnEgXHUwMDNlIDApIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI1MjM6XHRcdGtzel9wdHBfY2xvY2tfdW5yZWdpc3Rlcihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTI0LVx0XHRrc3o4NDYzX3B0cF9pcnFfZnJlZShkcyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjY0NT1zdGF0aWMgaW50IGtzejhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3NjktXHRcdFx0aWYgKGRldi1cdTAwM2VpbmZvLVx1MDAzZXB0cF9jYXBhYmxlKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNzcwOlx0XHRcdFx0cmV0ID0ga3N6X3B0cF9pcnFfc2V0dXAoZHMsIGRwLVx1MDAzZWluZGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3NzEtXHRcdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3NzctXHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI3Nzg6XHRcdHJldCA9IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjc3OS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI4MDMtXHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyODA0Olx0XHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjgwNS1wb3J0X3JlbGVhc2U6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjgwOC1cdFx0XHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyODA5Olx0XHRcdFx0a3N6X3B0cF9pcnFfZnJlZShkcywgZHAtXHUwMDNlaW5kZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjgxMC1waXJxX3JlbGVhc2U6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MTY3MD1zdGF0aWMgaW50IGtzejk0Nzdfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE3NzUtXHRcdFx0aWYgKGRldi1cdTAwM2VpbmZvLVx1MDAzZXB0cF9jYXBhYmxlKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzoxNzc2Olx0XHRcdFx0cmV0ID0ga3N6X3B0cF9pcnFfc2V0dXAoZHMsIGRwLVx1MDAzZWluZGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE3NzctXHRcdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE3ODMtXHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjE3ODQ6XHRcdHJldCA9IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTc4NS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE4MDktXHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzoxODEwOlx0XHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTgxMS1wb3J0X3JlbGVhc2U6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTgxNC1cdFx0XHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzoxODE1Olx0XHRcdFx0a3N6X3B0cF9pcnFfZnJlZShkcywgZHAtXHUwMDNlaW5kZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTgxNi1waXJxX3JlbGVhc2U6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzItI2luY2x1ZGUgXCYjMzQ7a3N6X2RjYi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMzojaW5jbHVkZSBcJiMzNDtrc3pfcHRwLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM0LSNpbmNsdWRlIFwmIzM0O2tzejguaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTI1Njc9dm9pZCBrc3pfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1NzItXHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNTczOlx0XHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjU3NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTc3LVx0XHRcdGlmIChkZXYtXHUwMDNlaW5mby1cdTAwM2VwdHBfY2FwYWJsZSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjI1Nzg6XHRcdFx0XHRrc3pfcHRwX2lycV9mcmVlKGRzLCBkcC1cdTAwM2VpbmRleCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTc5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTIxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6MjI6I2luY2x1ZGUgXCYjMzQ7a3N6X3B0cC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD0xNDQ9c3RydWN0IGtzel9pcnEge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTE1NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjE1NjpzdHJ1Y3Qga3N6X3B0cF9pcnEge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMTU3LVx0c3RydWN0IGtzel9wb3J0ICpwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTE2OT1zdHJ1Y3Qga3N6X3BvcnQge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTE5OC1cdHN0cnVjdCBrc3pfaXJxIHB0cGlycTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjE5OTpcdHN0cnVjdCBrc3pfcHRwX2lycSBwdHBtc2dfaXJxWzNdO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjAwLVx0a3RpbWVfdCB0c3RhbXBfbXNnO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTIwNj1zdHJ1Y3Qga3N6X2RldmljZSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjQ1LVx0c3RydWN0IGtzel9pcnEgZ2lycTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjI0NjpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgcHRwX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yNDctXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTUtI2luY2x1ZGUgXCYjMzQ7a3N6X2NvbW1vbi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNjojaW5jbHVkZSBcJiMzNDtrc3pfcHRwLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE3OiNpbmNsdWRlIFwmIzM0O2tzel9wdHBfcmVnLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTk6I2RlZmluZSBwdHBfY2Fwc190b19kYXRhKGQpIGNvbnRhaW5lcl9vZigoZCksIHN0cnVjdCBrc3pfcHRwX2RhdGEsIGNhcHMpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yMC0jZGVmaW5lIHB0cF9kYXRhX3RvX2tzel9kZXYoZCkgY29udGFpbmVyX29mKChkKSwgc3RydWN0IGtzel9kZXZpY2UsIHB0cF9kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTQzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NDQ6c3RhdGljIGludCBrc3pfcHRwX3RvdV9ncGlvKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy00NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNjUtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo2NjpzdGF0aWMgaW50IGtzel9wdHBfdG91X3Jlc2V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHU4IHVuaXQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy02Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODgtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4OTpzdGF0aWMgaW50IGtzel9wdHBfdG91X3B1bHNlX3ZlcmlmeSh1NjQgcHVsc2VfbnMpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy05MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTAzOnN0YXRpYyBpbnQga3N6X3B0cF90b3VfdGFyZ2V0X3RpbWVfc2V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDQtXHRcdFx0XHQgICAgICAgc3RydWN0IHRpbWVzcGVjNjQgY29uc3QgKnRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMzpzdGF0aWMgaW50IGtzel9wdHBfdG91X3N0YXJ0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHU4IHVuaXQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE1MDpzdGF0aWMgaW50IGtzel9wdHBfY29uZmlndXJlX3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTUxLVx0XHRcdFx0ICAgIHUzMiBjeWNsZV93aWR0aF9ucywgdTMyIHB1bHNlX3dpZHRoX25zLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE3OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE3OTpcdHJldCA9IGtzel9wdHBfdG91X3RhcmdldF90aW1lX3NldChkZXYsIHRhcmdldF90aW1lKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE4MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTg1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTg2OnN0YXRpYyBpbnQga3N6X3B0cF9lbmFibGVfcGVyb3V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xODctXHRcdFx0XHQgc3RydWN0IHB0cF9wZXJvdXRfcmVxdWVzdCBjb25zdCAqcmVxdWVzdCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xODkte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTkwOlx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBcdTAwMjZkZXYtXHUwMDNlcHRwX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xOTEtXHR1NjQgcmVxX3B1bHNlX3dpZHRoX25zO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTIxNS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjIxNjpcdHJldCA9IGtzel9wdHBfdG91X3Jlc2V0KGRldiwgcmVxdWVzdC1cdTAwM2VpbmRleCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yMTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI0OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjI1MDpcdHJldCA9IGtzel9wdHBfdG91X3B1bHNlX3ZlcmlmeShwdWxzZV93aWR0aF9ucyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNTEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI1My1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjI1NDpcdHJldCA9IGtzel9wdHBfY29uZmlndXJlX3Blcm91dChkZXYsIGN5Y2xlX3dpZHRoX25zLCBwdWxzZV93aWR0aF9ucyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI1NS1cdFx0XHRcdCAgICAgICBcdTAwMjZwdHBfZGF0YS1cdTAwM2VwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3QsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjU5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MjYwOlx0cmV0ID0ga3N6X3B0cF90b3VfZ3BpbyhkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjYxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNjMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoyNjQ6XHRyZXQgPSBrc3pfcHRwX3RvdV9zdGFydChkZXYsIHJlcXVlc3QtXHUwMDNlaW5kZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjY1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNzItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoyNzM6c3RhdGljIGludCBrc3pfcHRwX2VuYWJsZV9tb2RlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNzQte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjc1LVx0c3RydWN0IGtzel90YWdnZXJfZGF0YSAqdGFnZ2VyX2RhdGEgPSBrc3pfdGFnZ2VyX2RhdGEoZGV2LVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjI3NjpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhID0gXHUwMDI2ZGV2LVx1MDAzZXB0cF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjc3LVx0Y29uc3QgdTE2ICpyZWdzID0gZGV2LVx1MDAzZWluZm8tXHUwMDNlcmVncztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz0zMDI9aW50IGtzejg0NjNfZ2V0X3RzX2luZm8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0zMDUtXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjMwNjpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMzA3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTMzMD1pbnQga3N6X2dldF90c19pbmZvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBrZXJuZWxfZXRodG9vbF90c19pbmZvICp0cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0zMzItXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjMzMzpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMzM0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTM3MT1zdGF0aWMgaW50IGtzejg0NjNfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTQxNC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjQxNTpcdHJldHVybiBrc3pfcHRwX2VuYWJsZV9tb2RlKGRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy00MTYtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTQzNz1zdGF0aWMgaW50IGtzel9zZXRfaHd0c3RhbXBfY29uZmlnKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNTA2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NTA3Olx0cmV0dXJuIGtzel9wdHBfZW5hYmxlX21vZGUoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTUwOC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9NTI5PXN0YXRpYyBrdGltZV90IGtzel90c3RhbXBfcmVjb25zdHJ1Y3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldiwga3RpbWVfdCB0c3RhbXApXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNTMxLVx0c3RydWN0IHRpbWVzcGVjNjQgcHRwX2Nsb2NrX3RpbWU7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo1MzI6XHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTUzMy1cdHN0cnVjdCB0aW1lc3BlYzY0IGRpZmY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9NTk4PXZvaWQga3N6X3BvcnRfdHh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy02NDgtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo2NDk6c3RhdGljIHZvaWQga3N6X3B0cF90eHRzdGFtcF9za2Ioc3RydWN0IGtzel9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTY1MC1cdFx0XHRcdCBzdHJ1Y3Qga3N6X3BvcnQgKnBydCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz02OTI9dm9pZCBrc3pfcG9ydF9kZWZlcnJlZF94bWl0KHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzExLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzEyOlx0a3N6X3B0cF90eHRzdGFtcF9za2IoZGV2LCBwcnQsIGNsb25lKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTcxMy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03MTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo3MTc6c3RhdGljIGludCBfa3N6X3B0cF9nZXR0aW1lKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTcxOC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzQ3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzQ4OnN0YXRpYyBpbnQga3N6X3B0cF9nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03NDkte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzUwOlx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03NTEtXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gcHRwX2RhdGFfdG9fa3N6X2RldihwdHBfZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzU0LVx0bXV0ZXhfbG9jayhcdTAwMjZwdHBfZGF0YS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjc1NTpcdHJldCA9IF9rc3pfcHRwX2dldHRpbWUoZGV2LCB0cyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03NTYtXHRtdXRleF91bmxvY2soXHUwMDI2cHRwX2RhdGEtXHUwMDNlbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzYwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzYxOnN0YXRpYyBpbnQga3N6X3B0cF9yZXN0YXJ0X3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzYyLXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjc2MzpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhID0gXHUwMDI2ZGV2LVx1MDAzZXB0cF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzY0LVx0czY0IG5vd19ucywgZmlyc3RfbnMsIHBlcmlvZF9ucywgbmV4dF9ucztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03NzItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo3NzM6XHRyZXQgPSBfa3N6X3B0cF9nZXR0aW1lKGRldiwgXHUwMDI2bm93KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTc3NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODAyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6ODAzOlx0cmV0dXJuIGtzel9wdHBfZW5hYmxlX3Blcm91dChkZXYsIFx1MDAyNnJlcXVlc3QsIDEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODA0LX1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTgwNS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjgwNjpzdGF0aWMgaW50IGtzel9wdHBfc2V0dGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTgwNy1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04MDgte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6ODA5Olx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04MTAtXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gcHRwX2RhdGFfdG9fa3N6X2RldihwdHBfZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODM3LVx0Y2FzZSBLU1pfUFRQX1RPVV9QRVJPVVQ6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4Mzg6XHRcdHJldCA9IGtzel9wdHBfcmVzdGFydF9wZXJvdXQoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTgzOS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04NTQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4NTU6c3RhdGljIGludCBrc3pfcHRwX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg1Ni17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4NTc6XHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YSA9IHB0cF9jYXBzX3RvX2RhdGEocHRwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg1OC1cdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04OTQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4OTU6c3RhdGljIGludCBrc3pfcHRwX2FkanRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg5Ni17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4OTc6XHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YSA9IHB0cF9jYXBzX3RvX2RhdGEocHRwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg5OC1cdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy05NDAtXHRjYXNlIEtTWl9QVFBfVE9VX1BFUk9VVDpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjk0MTpcdFx0cmV0ID0ga3N6X3B0cF9yZXN0YXJ0X3Blcm91dChkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTQyLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk1Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjk1NzpzdGF0aWMgaW50IGtzel9wdHBfZW5hYmxlKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTU4LVx0XHRcdCAgc3RydWN0IHB0cF9jbG9ja19yZXF1ZXN0ICpyZXEsIGludCBvbilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk1OS17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo5NjA6XHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YSA9IHB0cF9jYXBzX3RvX2RhdGEocHRwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk2MS1cdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy05NjYtXHRcdG11dGV4X2xvY2soXHUwMDI2cHRwX2RhdGEtXHUwMDNlbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo5Njc6XHRcdHJldCA9IGtzel9wdHBfZW5hYmxlX3Blcm91dChkZXYsIFx1MDAyNnJlcS1cdTAwM2VwZXJvdXQsIG9uKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk2OC1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnB0cF9kYXRhLVx1MDAzZWxvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk3Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjk3NzpzdGF0aWMgaW50IGtzel9wdHBfdmVyaWZ5X3BpbihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgdW5zaWduZWQgaW50IHBpbixcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk3OC1cdFx0XHQgICAgICBlbnVtIHB0cF9waW5fZnVuY3Rpb24gZnVuYywgdW5zaWduZWQgaW50IGNoYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTk0LS8qICBGdW5jdGlvbiBpcyBwb2ludGVyIHRvIHRoZSBkb19hdXhfd29yayBpbiB0aGUgcHRwX2Nsb2NrIGNhcGFiaWxpdHkgKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjk5NTpzdGF0aWMgbG9uZyBrc3pfcHRwX2RvX2F1eF93b3JrKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTk2LXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjk5NzpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhID0gcHRwX2NhcHNfdG9fZGF0YShwdHApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTk4LVx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IHB0cF9kYXRhX3RvX2tzel9kZXYocHRwX2RhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwMDItXHRtdXRleF9sb2NrKFx1MDAyNnB0cF9kYXRhLVx1MDAzZWxvY2spO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTAwMzpcdHJldCA9IF9rc3pfcHRwX2dldHRpbWUoZGV2LCBcdTAwMjZ0cyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDA0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDE2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTAxNzpzdGF0aWMgaW50IGtzel9wdHBfc3RhcnRfY2xvY2soc3RydWN0IGtzel9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwMTgte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTAxOTpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhID0gXHUwMDI2ZGV2LVx1MDAzZXB0cF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAyMC1cdGNvbnN0IHUxNiAqcmVncyA9IGRldi1cdTAwM2VpbmZvLVx1MDAzZXJlZ3M7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAzMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwMzM6aW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAzNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAzNi1cdGNvbnN0IHUxNiAqcmVncyA9IGRldi1cdTAwM2VpbmZvLVx1MDAzZXJlZ3M7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDM3Olx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDM4LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDQ3LVx0cHRwX2RhdGEtXHUwMDNlY2Fwcy5tYXhfYWRqXHRcdD0gS1NaX01BWF9EUklGVF9DT1JSO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA0ODpcdHB0cF9kYXRhLVx1MDAzZWNhcHMuZ2V0dGltZTY0XHQ9IGtzel9wdHBfZ2V0dGltZTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwNDk6XHRwdHBfZGF0YS1cdTAwM2VjYXBzLnNldHRpbWU2NFx0PSBrc3pfcHRwX3NldHRpbWU7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDUwOlx0cHRwX2RhdGEtXHUwMDNlY2Fwcy5hZGpmaW5lXHRcdD0ga3N6X3B0cF9hZGpmaW5lO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA1MTpcdHB0cF9kYXRhLVx1MDAzZWNhcHMuYWRqdGltZVx0XHQ9IGtzel9wdHBfYWRqdGltZTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwNTI6XHRwdHBfZGF0YS1cdTAwM2VjYXBzLmRvX2F1eF93b3JrXHQ9IGtzel9wdHBfZG9fYXV4X3dvcms7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDUzOlx0cHRwX2RhdGEtXHUwMDNlY2Fwcy5lbmFibGVcdFx0PSBrc3pfcHRwX2VuYWJsZTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwNTQ6XHRwdHBfZGF0YS1cdTAwM2VjYXBzLnZlcmlmeVx0XHQ9IGtzel9wdHBfdmVyaWZ5X3BpbjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwNTUtXHRwdHBfZGF0YS1cdTAwM2VjYXBzLm5fcGluc1x0XHQ9IEtTWl9QVFBfTl9HUElPO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwNTctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDU4Olx0cmV0ID0ga3N6X3B0cF9zdGFydF9jbG9jayhkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA1OS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA2NS1cdFx0c25wcmludGYocHRwX3Bpbi1cdTAwM2VuYW1lLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA2NjpcdFx0XHQgc2l6ZW9mKHB0cF9waW4tXHUwMDNlbmFtZSksIFwmIzM0O2tzel9wdHBfcGluXyUwMmRcJiMzNDssIGkpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA2Ny1cdFx0cHRwX3Bpbi1cdTAwM2VpbmRleCA9IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA4OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwODk6dm9pZCBrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA5MC17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDkxLVx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDkyOlx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDkzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTExMDA9c3RhdGljIGludCBrc3pfcmVhZF90cyhzdHJ1Y3Qga3N6X3BvcnQgKnBvcnQsIHUxNiByZWcsIHUzMiAqdHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTExOS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjExMjA6c3RhdGljIGlycXJldHVybl90IGtzel9wdHBfbXNnX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTIxLXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjExMjI6XHRzdHJ1Y3Qga3N6X3B0cF9pcnEgKnB0cG1zZ19pcnEgPSBkZXZfaWQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTIzLVx0c3RydWN0IGtzel9kZXZpY2UgKmRldjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTQ2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTE0NzpzdGF0aWMgaXJxcmV0dXJuX3Qga3N6X3B0cF9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExNDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExNzktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMTgwOnN0YXRpYyB2b2lkIGtzel9wdHBfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTE4MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTE4Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjExODc6c3RhdGljIHZvaWQga3N6X3B0cF9pcnFfdW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExODgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExOTMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMTk0OnN0YXRpYyB2b2lkIGtzel9wdHBfaXJxX2J1c19sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExOTUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMDAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjAxOnN0YXRpYyB2b2lkIGtzel9wdHBfaXJxX2J1c19zeW5jX3VubG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjAyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjEzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIxNDpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9jaGlwIGtzel9wdHBfaXJxX2NoaXAgPSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjE1LVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O2tzei1pcnFcJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjE2Olx0LmlycV9tYXNrXHRcdD0ga3N6X3B0cF9pcnFfbWFzayxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMTc6XHQuaXJxX3VubWFza1x0XHQ9IGtzel9wdHBfaXJxX3VubWFzayxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMTg6XHQuaXJxX2J1c19sb2NrXHRcdD0ga3N6X3B0cF9pcnFfYnVzX2xvY2ssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjE5Olx0LmlycV9idXNfc3luY191bmxvY2tcdD0ga3N6X3B0cF9pcnFfYnVzX3N5bmNfdW5sb2NrLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyMC19O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyMS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMjI6c3RhdGljIGludCBrc3pfcHRwX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyMy1cdFx0XHRcdCAgdW5zaWduZWQgaW50IGlycSwgaXJxX2h3X251bWJlcl90IGh3aXJxKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMjUtXHRpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGQtXHUwMDNlaG9zdF9kYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMjY6XHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcdTAwMjZrc3pfcHRwX2lycV9jaGlwLCBoYW5kbGVfbGV2ZWxfaXJxKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMjctXHRpcnFfc2V0X25vcHJvYmUoaXJxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjMxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIzMjpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIGtzel9wdHBfaXJxX2RvbWFpbl9vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjMzOlx0Lm1hcFx0PSBrc3pfcHRwX2lycV9kb21haW5fbWFwLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIzNC1cdC54bGF0ZVx0PSBpcnFfZG9tYWluX3hsYXRlX3R3b2NlbGwsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIzNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMzc6c3RhdGljIHZvaWQga3N6X3B0cF9tc2dfaXJxX2ZyZWUoc3RydWN0IGtzel9wb3J0ICpwb3J0LCB1OCBuKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIzOC17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjM5Olx0c3RydWN0IGtzel9wdHBfaXJxICpwdHBtc2dfaXJxO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTI0MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjQ2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTI0NzpzdGF0aWMgaW50IGtzel9wdHBfbXNnX2lycV9zZXR1cChzdHJ1Y3Qga3N6X3BvcnQgKnBvcnQsIHU4IG4pXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjQ4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjU2LVx0c3RydWN0IGtzel9pcnEgKnB0cGlycSA9IFx1MDAyNnBvcnQtXHUwMDNlcHRwaXJxO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTI1NzpcdHN0cnVjdCBrc3pfcHRwX2lycSAqcHRwbXNnX2lycTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyNTgtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyNzAtXHRyZXQgPSByZXF1ZXN0X3RocmVhZGVkX2lycShwdHBtc2dfaXJxLVx1MDAzZW51bSwgTlVMTCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyNzE6XHRcdFx0XHQgICBrc3pfcHRwX21zZ190aHJlYWRfZm4sIElSUUZfT05FU0hPVCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyNzItXHRcdFx0XHQgICBwdHBtc2dfaXJxLVx1MDAzZW5hbWUsIHB0cG1zZ19pcnEpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTEyNzk9c3RhdGljIGludCBrc3o4NDYzX3B0cF9wb3J0X2lycV9zZXR1cChzdHJ1Y3Qga3N6X2lycSAqcHRwaXJxLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyODQtXHRjb25zdCBzdHJ1Y3Qga3N6X2Rldl9vcHMgKm9wcyA9IHBvcnQtXHUwMDNla3N6X2Rldi1cdTAwM2VkZXZfb3BzO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTI4NTpcdHN0cnVjdCBrc3pfcHRwX2lycSAqcHRwbXNnX2lycTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyODYtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMDUtXHRcdHJldCA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKHB0cG1zZ19pcnEtXHUwMDNlbnVtLCBOVUxMLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTMwNjpcdFx0XHRcdFx0ICAga3N6X3B0cF9tc2dfdGhyZWFkX2ZuLCBJUlFGX09ORVNIT1QsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzA3LVx0XHRcdFx0XHQgICBwdHBtc2dfaXJxLVx1MDAzZW5hbWUsIHB0cG1zZ19pcnEpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMTctXHR3aGlsZSAoaS0tKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTMxODpcdFx0a3N6X3B0cF9tc2dfaXJxX2ZyZWUocG9ydCwgaSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzE5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTEzMjM9c3RhdGljIHZvaWQga3N6ODQ2M19wdHBfcG9ydF9pcnFfdGVhcmRvd24oc3RydWN0IGtzel9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMjctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAyOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEzMjg6XHRcdGtzel9wdHBfbXNnX2lycV9mcmVlKHBvcnQsIGkpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTMyOS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9MTMzMT1pbnQga3N6ODQ2M19wdHBfaXJxX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzU1LVx0XHRcdFx0XHRcdCAgcHRwaXJxLVx1MDAzZW5pcnFzLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTM1NjpcdFx0XHRcdFx0XHQgIFx1MDAyNmtzel9wdHBfaXJxX2RvbWFpbl9vcHMsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzU3LVx0XHRcdFx0XHRcdCAgcHRwaXJxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzcwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTM3MTpcdHJldCA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKHB0cGlycS1cdTAwM2VpcnFfbnVtLCBOVUxMLCBrc3pfcHRwX2lycV90aHJlYWRfZm4sXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzcyLVx0XHRcdFx0ICAgSVJRRl9PTkVTSE9ULCBwdHBpcnEtXHUwMDNlbmFtZSwgcHRwaXJxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz0xMzg4PXZvaWQga3N6ODQ2M19wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0MDAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNDAxOmludCBrc3pfcHRwX2lycV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHU4IHApXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xNDAyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xNDIyLVx0cHRwaXJxLVx1MDAzZWRvbWFpbiA9IGlycV9kb21haW5fY3JlYXRlX2xpbmVhcihkZXZfZndub2RlKGRldi1cdTAwM2VkZXYpLCBwdHBpcnEtXHUwMDNlbmlycXMsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNDIzOlx0XHRcdFx0XHRcdCAgXHUwMDI2a3N6X3B0cF9pcnFfZG9tYWluX29wcywgcHRwaXJxKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0MjQtXHRpZiAoIXB0cGlycS1cdTAwM2Vkb21haW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQzMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE0MzM6XHRyZXQgPSByZXF1ZXN0X3RocmVhZGVkX2lycShwdHBpcnEtXHUwMDNlaXJxX251bSwgTlVMTCwga3N6X3B0cF9pcnFfdGhyZWFkX2ZuLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQzNC1cdFx0XHRcdCAgIElSUUZfT05FU0hPVCwgcHRwaXJxLVx1MDAzZW5hbWUsIHB0cGlycSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQzOC1cdGZvciAoaXJxID0gMDsgaXJxIFx1MDAzYyBwdHBpcnEtXHUwMDNlbmlycXM7IGlycSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE0Mzk6XHRcdHJldCA9IGtzel9wdHBfbXNnX2lycV9zZXR1cChwb3J0LCBpcnEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQ0MC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xNDU3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTQ1ODp2b2lkIGtzel9wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCB1OCBwKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQ1OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQ2NS1cdGZvciAobiA9IDA7IG4gXHUwMDNjIHB0cGlycS1cdTAwM2VuaXJxczsgbiYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNDY2Olx0XHRrc3pfcHRwX21zZ19pcnFfZnJlZShwb3J0LCBuKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0NjctXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDoxNzplbnVtIGtzel9wdHBfdG91X21vZGUge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTgtXHRLU1pfUFRQX1RPVV9JRExFLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTIxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6MjI6c3RydWN0IGtzel9wdHBfZGF0YSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC0yMy1cdHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBjYXBzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTMwLVx0c3RydWN0IHRpbWVzcGVjNjQgY2xvY2tfdGltZTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjMxOlx0ZW51bSBrc3pfcHRwX3RvdV9tb2RlIHRvdV9tb2RlO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMzItXHRzdHJ1Y3QgdGltZXNwZWM2NCBwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3Q7ICAvKiBzdGFydCBvZiBmaXJzdCBwdWxzZSAqL1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTM3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6Mzg6aW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTM5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6NDA6dm9pZCBrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTQxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oPTU2PWJvb2wga3N6X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTU3LVx0XHQgICAgICAgdW5zaWduZWQgaW50IHR5cGUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6NTg6aW50IGtzel9wdHBfaXJxX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgdTggcCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDo1OTp2b2lkIGtzel9wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCB1OCBwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTYwLWludCBrc3o4NDYzX3B0cF9pcnFfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oPTYxPXZvaWQga3N6ODQ2M19wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC02NC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjY1OnN0cnVjdCBrc3pfcHRwX2RhdGEge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtNjYtXHQvKiBTZXJpYWxpemVzIGFsbCBvcGVyYXRpb25zIG9uIHRoZSBQVFAgaGFyZHdhcmUgY2xvY2sgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC02OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjcwOnN0YXRpYyBpbmxpbmUgaW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtNzEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTc0LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6NzU6c3RhdGljIGlubGluZSB2b2lkIGtzel9wdHBfY2xvY2tfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpIHsgfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtNzYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDo3NzpzdGF0aWMgaW5saW5lIGludCBrc3pfcHRwX2lycV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHU4IHApXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC03OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtODEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDo4MjpzdGF0aWMgaW5saW5lIHZvaWQga3N6X3B0cF9pcnFfZnJlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHU4IHApIHt9XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC04My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTc2OD1zdGF0aWMgaW50IGxhbjkzN3hfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtODYzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo4NjQ6XHRcdFx0cmV0ID0ga3N6X3B0cF9pcnFfc2V0dXAoZHMsIGRwLVx1MDAzZWluZGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtODY1LVx0XHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy04NjktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjg3MDpcdHJldCA9IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy04NzEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy04OTMtb3V0X3B0cF9jbG9ja191bnJlZ2lzdGVyOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo4OTQ6XHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcwNTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIE1pY3JvY2hpcCBLU1ogU3dpdGNoIEJ1cyBBdHRhY2htZW50KioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYnVzZXMgdGhlc2UgTWljcm9jaGlwIEtTWiBzd2l0Y2hlcyBhcmUgdHlwaWNhbGx5IGF0dGFjaGVkIHRvLiBMZXQmIzM5O3MgZGlnIGluLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgdGhlIHJlbGV2YW50IGtlcm5lbCBzb3VyY2Ug4oCTIHNwZWNpZmljYWxseSwgSSYjMzk7bGwgZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGVgIGFuZCBgS2NvbmZpZ2AgZmlsZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGluaXRpYWwgb3ZlcnZpZXcgb2YgdGhlIGFyY2hpdGVjdHVyZSBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gaG93IHRoZXNlIHN3aXRjaGVzIGFyZSBpbnRlZ3JhdGVkLiBJIGV4cGVjdCB0byBmaW5kIGNsdWVzIGFib3V0IHN1cHBvcnRlZCBidXMgdHlwZXMgYW5kIGFueSBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIHNldHRpbmdzLiBUaGlzIGlzIGEgY29tbW9uIHN0YXJ0aW5nIHBvaW50IGZvciByZXZlcnNlIGVuZ2luZWVyaW5nIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRtZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBLU1o4WFhYL0tTWjlYWFgvTEFOOTM3WCBzZXJpZXMgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQVxuICAgNTpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX0tTWlxuICAgNjpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcbiAgIDc6XHRcdHNlbGVjdCBORVRfSUVFRTgwMjFRX0hFTFBFUlNcbiAgIDg6XHRcdHNlbGVjdCBEQ0JcbiAgIDk6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIE1pY3JvY2hpcCBLU1o4LCBLU1o5IGFuZFxuICAxMjpcdFx0ICBMQU45MzdYIHNlcmllcyBzd2l0Y2ggY2hpcHMsIGJlaW5nIEtTWjg4NjMvODg3MyxcbiAgMTM6XHRcdCAgS1NaODg5NS84ODY0LCBLU1o4Nzk0Lzg3OTUvODc2NSxcbiAgMTQ6XHRcdCAgS1NaOTQ3Ny85ODk3Lzk4OTYvOTU2Ny84NTY3LCBLU1o5ODkzLzk1NjMvODU2MyBhbmRcbiAgMTU6XHRcdCAgTEFOOTM3MC85MzcxLzkzNzIvOTM3My85Mzc0LlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQ1xuICAxODpcdFx0dHJpc3RhdGUgXCYjMzQ7S1NaIHNlcmllcyBJMkMgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcdTAwMjZcdTAwMjYgSTJDXG4gIDIwOlx0XHRzZWxlY3QgUkVHTUFQX0kyQ1xuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaCBJMkMuXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcbiAgMjU6XHRcdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDI2Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXHUwMDI2XHUwMDI2IFNQSVxuICAyNzpcdFx0c2VsZWN0IFJFR01BUF9TUElcbiAgMjg6XHRcdGhlbHBcbiAgMjk6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2ggU1BJLlxuICAzMDpcdFxuICAzMTpcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXG4gIDMyOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBQVFAgY2xvY2sgb24gdGhlIEtTWjk1NjMvTEFOOTM3eCBFdGhlcm5ldCBTd2l0Y2hcJiMzNDtcbiAgMzM6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcdTAwMjZcdTAwMjYgUFRQXzE1ODhfQ0xPQ0tcbiAgMzQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTj1tIHx8IFBUUF8xNTg4X0NMT0NLPXlcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aW1lc3RhbXBpbmcgXHUwMDI2IFBUUCBjbG9jayBtYW5pcHVsYXRpb24gaW5cbiAgMzc6XHRcdCAgS1NaODU2My9LU1o5NTYzL0xBTjkzN3ggc2VyaWVzIG9mIHN3aXRjaGVzLiBLU1o5NTYzL0tTWjg1NjMgc3VwcG9ydHNcbiAgMzg6XHRcdCAgb25seSBvbmUgc3RlcCB0aW1lc3RhbXBpbmcuIExBTjkzN3ggc3dpdGNoIHN1cHBvcnRzIGJvdGggb25lIHN0ZXAgYW5kXG4gIDM5Olx0XHQgIHR3byBzdGVwIHRpbWVzdGFtcGluZy5cbiAgNDA6XHRcbiAgNDE6XHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcbiAgNDI6XHRcdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDQzOlx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbiAgNDQ6XHRcdHNlbGVjdCBNRElPX0JJVEJBTkdcbiAgNDU6XHRcdGhlbHBcbiAgNDY6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2hcbiAgNDc6XHRcdCAgTWljcm9jaGlwIFNNSS4gSXQgc3VwcG9ydHMgdGhlIEtTWjg4NjMgYW5kIEtTWjg4NzMgc3dpdGNoLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MTc4CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBNaWNyb2NoaXAgRFNBIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OYCBhbmQgaW1tZWRpYXRlbHkgc2VlIHdlJiMzOTt2ZSBnb3QgYSBkZWNlbnQgc3ByZWFkIHJlcHJlc2VudGVkIGhlcmU6IEkyQywgU1BJLCBhbmQgU01JIGludGVyZmFjZXMgYXJlIGFsbCBjb3ZlcmVkIGZvciB0aGUgS1NaIHNlcmllcy4gVGhhdCYjMzk7cyBhIHNvbGlkIHN0YXJ0LiBXZSYjMzk7cmUgaGl0dGluZyBhIGZldyBvZiB0aGUgbW9yZSBjb21tb24gaW50ZXJjb25uZWN0cyBmb3IgdGhlc2UgdHlwZXMgb2Ygc3dpdGNoZXMsIHRoZSBLU1o5NDc3X0kyQywgS1NaX1NQSSBhbmQgS1NaODg2M19TTUkgaW1wbGVtZW50YXRpb25zLiBJdCYjMzk7cyBnb29kIHRvIHNlZSBzb21lIGJhc2ljIGRyaXZlciBzdXBwb3J0IGZvciB0aG9zZSBkZXZpY2VzLgoKTm93LCB0aG91Z2gsIEkgbmVlZCB0byBnZXQgYSBicm9hZGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgcGljdHVyZS4gQmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgY29tcGxldGVuZXNzLCBJIHNob3VsZCBxdWlja2x5IGRvIGEgc2FuaXR5IGNoZWNrIGluIHRoZSBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9gIGRpcmVjdG9yeS4gVGhlcmUgY291bGQgdmVyeSB3ZWxsIGJlIG90aGVyIE1pY3JvY2hpcCBkZXZpY2VzIG9yIGJ1cyBhdHRhY2htZW50cyBzdXBwb3J0ZWQgdGhlcmUgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBjb3JuZXIgY2FzZS4gSSBoYXZlIHRvIGxvb2sgZGVlcGVyIHRvIGJlIGNlcnRhaW4gSSBoYXZlIHRoZSBsYXkgb2YgdGhlIGxhbmQuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtrc3o4LmMmIzM0OywKICAgICYjMzQ7a3N6OC5oJiMzNDssCiAgICAmIzM0O2tzejg4NjNfc21pLmMmIzM0OywKICAgICYjMzQ7a3N6OF9yZWcuaCYjMzQ7LAogICAgJiMzNDtrc3o5NDc3LmMmIzM0OywKICAgICYjMzQ7a3N6OTQ3Ny5oJiMzNDssCiAgICAmIzM0O2tzejk0NzdfYWNsLmMmIzM0OywKICAgICYjMzQ7a3N6OTQ3N19pMmMuYyYjMzQ7LAogICAgJiMzNDtrc3o5NDc3X3JlZy5oJiMzNDssCiAgICAmIzM0O2tzejk0NzdfdGNfZmxvd2VyLmMmIzM0OywKICAgICYjMzQ7a3N6X2NvbW1vbi5jJiMzNDssCiAgICAmIzM0O2tzel9jb21tb24uaCYjMzQ7LAogICAgJiMzNDtrc3pfZGNiLmMmIzM0OywKICAgICYjMzQ7a3N6X2RjYi5oJiMzNDssCiAgICAmIzM0O2tzel9wdHAuYyYjMzQ7LAogICAgJiMzNDtrc3pfcHRwLmgmIzM0OywKICAgICYjMzQ7a3N6X3B0cF9yZWcuaCYjMzQ7LAogICAgJiMzNDtrc3pfc3BpLmMmIzM0OywKICAgICYjMzQ7bGFuOTM3eC5oJiMzNDssCiAgICAmIzM0O2xhbjkzN3hfbWFpbi5jJiMzNDssCiAgICAmIzM0O2xhbjkzN3hfcmVnLmgmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzcwCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBTd2l0Y2ggUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGNhbiBJIGdldCBhIGhhbmRsZSBvbiB0aGVzZSBzd2l0Y2hlcyB3aXRob3V0IG5lZWRpbmcgYWN0dWFsIGhhcmR3YXJlPyBDYW4gSSBpbnRlcmFjdCB3aXRoIHRoZW0gdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBJMkMgdXNlciBjbGllbnRzLCBhIG1vY2tlZCBidXMsIGRldmljZSB0cmVlIGVudHJpZXMsIEFDUEksIG9yIGV2ZW4gYSB2aXJ0dWFsIGJ1cz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZXZlbiBiZWdpbiB0byBwcm9iZSBvciBpbnN0YW50aWF0ZSB0aGVtIHdpdGhvdXQgcGh5c2ljYWxseSBpbnRlcmFjdGluZyB3aXRoIHRoZW0uCgpIYW5nIG9uIGEgc2Vjb25kLCBsZXQmIzM5O3MgZ28gYmFjayBhbmQgY2hlY2sgdGhlIHN5emthbGxlciBjYXBhYmlsaXRpZXMgYW5kIGdlbmVyYWwgcmVhY2hhYmlsaXR5IGNyaXRlcmlhLiBJIGhhdmUgdG8gbWFrZSBzdXJlIHRoaXMgaXMgZXZlbiB3b3J0aCBteSB0aW1lLiBUaGlzIHBhcnQgaXMgY3JpdGljYWwuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgd2hlbiB0aGUgZnV6emVyIHdvdWxkIHRlbGwgbWUgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0Oy4gSSBuZWVkIHRvIGtub3cgd2hlbiBJIGNhbiBza2lwIHRoZXNlIGRldmljZXMuIEl0IHNheXMgdGhhdCB0aGUgcmV0dXJuIHNob3VsZCBiZSAmIzM0O2ZhbHNlJiMzNDsgT05MWSBpZiB0aGUgY2hhbmdlcyBmYWxsIGludG8gb25lIG9yIG1vcmUgY2F0ZWdvcmllczogbm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcywgb3Igc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCBuZWVkIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyB0aGF0IGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gQWxzbywgdGhlIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyAtLSBkcml2ZXJzIHRlYXJkb3duIGNhbGxiYWNrcyAocmVtb3ZlLCBzaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSB0aGF0IGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyBob3QtdW5wbHVnIG9mIFBDSSBvciBkcml2ZXIgdW5iaW5kaW5nLCBvciBjb2RlIHBhdGhzIGZvciBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgpSaWdodCwgc28gY2FuIEkyQyBvciBTUEkgZGV2aWNlcyBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkgZnJvbSB1c2VyIHNwYWNlLCBtYXliZSB1c2luZyBzb21ldGhpbmcgbGlrZSBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLSovbmV3X2RldmljZWA/IFRoYXQgd291bGQgYmUgdXNlZnVsLgoKSG1tLCBldmVuIGlmIEkgKmNhbiogaW5zdGFudGlhdGUgYW4gSTJDIGRldmljZSB3aXRoIGBuZXdfZGV2aWNlYCwgRFNBIHN3aXRjaGVzIHNlZW0gdG8gcmVxdWlyZSBhIERTQSB0cmVlL3BsYXRmb3JtIGRhdGEgb3IgRGV2aWNlIFRyZWUgLyBPRiBub2RlIGJpbmRpbmcgdG8gYW4gZXRoZXJuZXQgbWFzdGVyIGRldmljZSB2aWEgYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgISBJIG11c3QgdW5kZXJzdGFuZCB0aGF0IGJpbmRpbmcgdG8gc3RhcnQuCgpXYWl0LCB3aGF0IGRvZXMgYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgIGFjdHVhbGx5ICpkbyo/IEFuZCB3aGF0IGFib3V0IGBrc3pfcHRwX2VuYWJsZV9wZXJvdXRgPyBUaGF0IGxvb2tzIHJlbGV2YW50IHRvby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdC4KCkFuZCBjYW4gYGtzejk0NzdfaTJjYCBhY3R1YWxseSBiZSBwcm9iZWQgdXNpbmcgYG5ld19kZXZpY2VgPyBUaGF0JiMzOTtzIHdoYXQgSSByZWFsbHkgbmVlZCB0byBrbm93LgoKSSBndWVzcyBJJiMzOTtsbCBjaGVjayBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jYCBhcyB3ZWxsIGFzIGBrc3pfc3BpLmNgIGFuZCBga3N6X2NvbW1vbi5jYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBoZXJlLiBJIG11c3QgcmV2aWV3IHRoZXNlIGRyaXZlcnMgaW4gZGV0YWlsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBNaWNyb2NoaXAgS1NaOTQ3NyBzZXJpZXMgcmVnaXN0ZXIgYWNjZXNzIHRocm91Z2ggSTJDXG4gICA0Olx0ICpcbiAgIDU6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNCBNaWNyb2NoaXAgVGVjaG5vbG9neSBJbmMuXG4gICA2Olx0ICovXG4gICA3Olx0XG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvaTJjLmhcdTAwM2VcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICAxMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvcmVnbWFwLmhcdTAwM2VcbiAgMTI6XHRcbiAgMTM6XHQjaW5jbHVkZSBcJiMzNDtrc3pfY29tbW9uLmhcJiMzNDtcbiAgMTQ6XHRcbiAgMTU6XHRLU1pfUkVHTUFQX1RBQkxFKGtzejk0NzcsIG5vdF91c2VkLCAxNiwgMCwgMCk7XG4gIDE2Olx0XG4gIDE3Olx0c3RhdGljIGludCBrc3o5NDc3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuICAxODpcdHtcbiAgMTk6XHRcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICpjaGlwO1xuICAyMDpcdFx0c3RydWN0IGRldmljZSAqZGRldiA9IFx1MDAyNmkyYy1cdTAwM2VkZXY7XG4gIDIxOlx0XHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYztcbiAgMjI6XHRcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XG4gIDIzOlx0XHRpbnQgaSwgcmV0O1xuICAyNDpcdFxuICAyNTpcdFx0Y2hpcCA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KTtcbiAgMjY6XHRcdGlmICghY2hpcClcbiAgMjc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gIDI4Olx0XG4gIDI5Olx0XHRkZXYgPSBrc3pfc3dpdGNoX2FsbG9jKFx1MDAyNmkyYy1cdTAwM2VkZXYsIGNoaXAsIGkyYyk7XG4gIDMwOlx0XHRpZiAoIWRldilcbiAgMzE6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gIDMyOlx0XG4gIDMzOlx0XHQvKiBTYXZlIGNoaXAgaWQgdG8gZG8gc3BlY2lhbCBpbml0aWFsaXphdGlvbiB3aGVuIHByb2JpbmcuICovXG4gIDM0Olx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IGNoaXAtXHUwMDNlY2hpcF9pZDtcbiAgMzU6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIF9fS1NaX05VTV9SRUdNQVBTOyBpJiM0MzsmIzQzOykge1xuICAzNjpcdFx0XHRyYyA9IGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXTtcbiAgMzc6XHRcdFx0cmMubG9ja19hcmcgPSBcdTAwMjZkZXYtXHUwMDNlcmVnbWFwX211dGV4O1xuICAzODpcdFx0XHRkZXYtXHUwMDNlcmVnbWFwW2ldID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoaTJjLCBcdTAwMjZyYyk7XG4gIDM5Olx0XHRcdGlmIChJU19FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSkpIHtcbiAgNDA6XHRcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZpMmMtXHUwMDNlZGV2LCBQVFJfRVJSKGRldi1cdTAwM2VyZWdtYXBbaV0pLFxuICA0MTpcdFx0XHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxuXCYjMzQ7LFxuICA0MjpcdFx0XHRcdFx0XHQgICAgIGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXS52YWxfYml0cyk7XG4gIDQzOlx0XHRcdH1cbiAgNDQ6XHRcdH1cbiAgNDU6XHRcbiAgNDY6XHRcdGlmIChpMmMtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEpXG4gIDQ3Olx0XHRcdGRldi1cdTAwM2VwZGF0YSA9IGkyYy1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbiAgNDg6XHRcbiAgNDk6XHRcdGRldi1cdTAwM2VpcnEgPSBpMmMtXHUwMDNlaXJxO1xuICA1MDpcdFxuICA1MTpcdFx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuICA1MjpcdFxuICA1MzpcdFx0LyogTWFpbiBEU0EgZHJpdmVyIG1heSBub3QgYmUgc3RhcnRlZCB5ZXQuICovXG4gIDU0Olx0XHRpZiAocmV0KVxuICA1NTpcdFx0XHRyZXR1cm4gcmV0O1xuICA1NjpcdFxuICA1NzpcdFx0aTJjX3NldF9jbGllbnRkYXRhKGkyYywgZGV2KTtcbiAgNTg6XHRcbiAgNTk6XHRcdHJldHVybiAwO1xuICA2MDpcdH1cbiAgNjE6XHRcbiAgNjI6XHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcbiAgNjM6XHR7XG4gIDY0Olx0XHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGkyYyk7XG4gIDY1Olx0XG4gIDY2Olx0XHRpZiAoZGV2KVxuICA2NzpcdFx0XHRrc3pfc3dpdGNoX3JlbW92ZShkZXYpO1xuICA2ODpcdH1cbiAgNjk6XHRcbiAgNzA6XHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19zaHV0ZG93bihzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuICA3MTpcdHtcbiAgNzI6XHRcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcbiAgNzM6XHRcbiAgNzQ6XHRcdGlmICghZGV2KVxuICA3NTpcdFx0XHRyZXR1cm47XG4gIDc2Olx0XG4gIDc3Olx0XHRrc3pfc3dpdGNoX3NodXRkb3duKGRldik7XG4gIDc4Olx0XG4gIDc5Olx0XHRpMmNfc2V0X2NsaWVudGRhdGEoaTJjLCBOVUxMKTtcbiAgODA6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTExCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERldmljZSBNYXRjaGluZyBpbiB0aGUgS1NaOTQ3NyBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIExpbmUgMjUgb2YgdGhlIGNvZGU6IGBjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO2AgYW5kIHRoZW4gdGhlIGltbWVkaWF0ZSBjaGVjayBgaWYgKCFjaGlwKSByZXR1cm4gLUVJTlZBTDtgLiBDbGFzc2ljIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gcGF0dGVybi4gSSYjMzk7bSBhc3N1bWluZyBgZGRldmAgaXMgdGhlIGRldmljZSBzdHJ1Y3R1cmUgcGFzc2VkIHRvIHRoZSBwcm9iZSBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKClgIGNhbGwuIEl0JiMzOTtzIGZldGNoaW5nIHRoZSByZWxldmFudCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWF0Y2hpbmcgZW50cnkgZnJvbSB0aGUgZHJpdmVyJiMzOTtzIGRldmljZSB0YWJsZS4gU28sIHRvIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGFuZCB3aGVyZSB0aGlzIGBjaGlwYCB2YXJpYWJsZSBpcyBwb3B1bGF0ZWQsIEkgbmVlZCB0byBzZWUgdGhlIG1hdGNoIHRhYmxlIGl0c2VsZi4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZ28gbG9vayBhdCBga3N6OTQ3N19pMmMuY2Ag4oCTIHNwZWNpZmljYWxseSB0aGUgZGV2aWNlIHRhYmxlIGRlZmluaXRpb24uIFRoYXQgd2lsbCB0ZWxsIG1lIHdoaWNoIGRldmljZXMgdGhpcyBkcml2ZXIgY2xhaW1zIHRvIHN1cHBvcnQgYW5kLCBjcml0aWNhbGx5LCB3aGF0IGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggb2YgdGhvc2Ugc3VwcG9ydGVkIGRldmljZXMsIHdoaWNoIGlzIHdoYXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgaXMgcmV0cmlldmluZy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGRldmljZSBpcyBpZGVudGlmaWVkIGR1cmluZyBwcm9iZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgxOlx0XG4gIDgyOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGtzejk0NzdfaTJjX2lkW10gPSB7XG4gIDgzOlx0XHR7IC5uYW1lID0gXCYjMzQ7a3N6OTQ3Ny1zd2l0Y2hcJiMzNDsgfSxcbiAgODQ6XHRcdHsgfVxuICA4NTpcdH07XG4gIDg2Olx0XG4gIDg3Olx0TU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGtzejk0NzdfaTJjX2lkKTtcbiAgODg6XHRcbiAgODk6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBrc3o5NDc3X2R0X2lkc1tdID0ge1xuICA5MDpcdFx0e1xuICA5MTpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5NDc3XCYjMzQ7LFxuICA5MjpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTQ3N11cbiAgOTM6XHRcdH0sXG4gIDk0Olx0XHR7XG4gIDk1Olx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejk4OTZcJiMzNDssXG4gIDk2Olx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk2XVxuICA5NzpcdFx0fSxcbiAgOTg6XHRcdHtcbiAgOTk6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTg5N1wmIzM0OyxcbiAxMDA6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk4OTddXG4gMTAxOlx0XHR9LFxuIDEwMjpcdFx0e1xuIDEwMzpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5ODkzXCYjMzQ7LFxuIDEwNDpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5M11cbiAxMDU6XHRcdH0sXG4gMTA2Olx0XHR7XG4gMTA3Olx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejk1NjNcJiMzNDssXG4gMTA4Olx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTYzXVxuIDEwOTpcdFx0fSxcbiAxMTA6XHRcdHtcbiAxMTE6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6ODU2M1wmIzM0OyxcbiAxMTI6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjg1NjNdXG4gMTEzOlx0XHR9LFxuIDExNDpcdFx0e1xuIDExNTpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4NTY3XCYjMzQ7LFxuIDExNjpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODU2N11cbiAxMTc6XHRcdH0sXG4gMTE4Olx0XHR7XG4gMTE5Olx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejk1NjdcJiMzNDssXG4gMTIwOlx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTY3XVxuIDEyMTpcdFx0fSxcbiAxMjI6XHRcdHtcbiAxMjM6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsbGFuOTY0NlwmIzM0OyxcbiAxMjQ6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0xBTjk2NDZdXG4gMTI1Olx0XHR9LFxuIDEyNjpcdFx0e30sXG4gMTI3Olx0fTtcbiAxMjg6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBrc3o5NDc3X2R0X2lkcyk7XG4gMTI5Olx0XG4gMTMwOlx0c3RhdGljIERFRklORV9TSU1QTEVfREVWX1BNX09QUyhrc3pfaTJjX3BtX29wcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwMDgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBrc3o5NDc3LXN3aXRjaCBEcml2ZXIgSW5zdGFudGlhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBga3N6OTQ3N19pMmNfaWRgIHN0cnVjdHVyZS4gSG1tLCBpdCYjMzk7cyBkZWZpbmVkIGFzIGB7IC5uYW1lID0gJiMzNDtrc3o5NDc3LXN3aXRjaCYjMzQ7IH1gLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyBob3cgdGhpcyBkZXZpY2UgaXMgaW5zdGFudGlhdGVkIHZpYSBJMkMgdXNpbmcgYG5ld19kZXZpY2VgLiBSaWdodCwgaWYgaXQmIzM5O3MgKm5vdCogdXNpbmcgYW4gT0Ygb3IgQUNQSSBzeXN0ZW0sIHRoZSBjb2RlIGRlZmF1bHRzIHRvIHVzaW5nIGBpMmNfbWF0Y2hfZGV2aWNlYCB3aXRoaW4gYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KWAuIEJ1dCBoZXJlJiMzOTtzIHRoZSBraWNrZXI6IGBrc3o5NDc3X2kyY19pZGAgKmRvZXNuJiMzOTt0KiBoYXZlIGEgYC5kcml2ZXJfZGF0YWAgZmllbGQgc2V0IChvciBpdCYjMzk7cyBzZXQgdG8gMCwgd2hpY2ggZnVuY3Rpb25hbGx5IGFtb3VudHMgdG8gdGhlIHNhbWUgdGhpbmcpLgoKVGhpcyBtZWFucywgd2hlbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBpcyBjYWxsZWQsIGl0IHNob3VsZCByZXR1cm4gTlVMTCBiZWNhdXNlIG5vIG1hdGNoIGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGFydGljdWxhciBJMkMgSUQuIFdhaXQsIHRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IHNob3VsZCBoYXBwZW4hIElmIHRoZSBtYXRjaCBkYXRhIGlzbiYjMzk7dCBzZXQsIGl0IHJldHVybnMgTlVMTC4KCkhvd2V2ZXIsIHRoZSBtb3JlIHByZXNzaW5nIHF1ZXN0aW9uIGlzOiB3aGF0IGFjdHVhbGx5IGhhcHBlbnMgZHVyaW5nIHRoZSBjYWxsIHRvIGBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldilgPyBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIG1hZ2ljIGhhcHBlbnMuLi4gb3IgZG9lc24mIzM5O3QhIEkgbmVlZCB0byBkaWcgaW50byBga3N6X2NvbW1vbi5jYCB0byBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBkZXZpY2UsIGdpdmVuIHRoaXMgaW5pdGlhbCBpZGVudGlmaWNhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM4ODk9c3RhdGljIGludCBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM4OTMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozODk0OmludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zODk1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD00Mjc9c3RydWN0IGtzel9kZXZpY2UgKmtzel9zd2l0Y2hfYWxsb2Moc3RydWN0IGRldmljZSAqYmFzZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC00MjktXHRcdFx0XHQgICAgdm9pZCAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo0MzA6aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC00MzEtdm9pZCBrc3pfc3dpdGNoX3JlbW92ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4MDQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgIGZ1bmN0aW9uIGRlZmluaXRpb24uIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBob3cgdGhlc2UgTWljcm9jaGlwIEtTWiBzd2l0Y2hlcyBhcmUgaGFuZGxlZCBpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jYCBmaWxlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIHJlZ2lzdHJhdGlvbiBsb2dpYyBzaG91bGQgYmUgZGVmaW5lZCwgc28gbGV0JiMzOTtzIHN0YXJ0IHRoZXJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgaG93IHRoZSBzd2l0Y2ggaXMgaW5pdGlhbGl6ZWQsIHByb2JlZCwgYW5kIGludGVncmF0ZWQgd2l0aCB0aGUgRFNBIGZyYW1ld29yay4gSG9wZWZ1bGx5LCB0aGlzIGZ1bmN0aW9uIHJldmVhbHMgdGhlIGNyaXRpY2FsIHBhcnRzIG9mIHdoYXQgbWFrZXMgdGhlc2Ugc3BlY2lmaWMgY2hpcHMgdGljayB3aXRoaW4gdGhlIGxhcmdlciBuZXR3b3JrIHN0YWNrLiBVbmRlcnN0YW5kaW5nIHRoaXMgcmVnaXN0cmF0aW9uIHByb2Nlc3MgaXMgZXNzZW50aWFsIGZvciBtZSB0byBmdWxseSBncmFzcCB0aGUgZHJpdmVyJiMzOTtzIG92ZXJhbGwgZGVzaWduIGFuZCB3aGVyZSBJIG1pZ2h0IGNvbnRyaWJ1dGUsIG9yIHRyb3VibGVzaG9vdCwgaWYgbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwODo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzg5NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszODk0Olx0aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbjM4OTU6XHR7XG4zODk2Olx0XHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqaW5mbztcbjM4OTc6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydHM7XG4zODk4Olx0XHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlO1xuMzg5OTpcdFx0dW5zaWduZWQgaW50IHBvcnRfbnVtO1xuMzkwMDpcdFx0aW50IHJldDtcbjM5MDE6XHRcdGludCBpO1xuMzkwMjpcdFxuMzkwMzpcdFx0ZGV2LVx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYtXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OyxcbjM5MDQ6XHRcdFx0XHRcdFx0XHQgIEdQSU9EX09VVF9MT1cpO1xuMzkwNTpcdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVzZXRfZ3BpbykpXG4zOTA2Olx0XHRcdHJldHVybiBQVFJfRVJSKGRldi1cdTAwM2VyZXNldF9ncGlvKTtcbjM5MDc6XHRcbjM5MDg6XHRcdGlmIChkZXYtXHUwMDNlcmVzZXRfZ3Bpbykge1xuMzkwOTpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttaWNyb2NoaXAsa3N6ODQ2M1wmIzM0OykpIHtcbjM5MTA6XHRcdFx0XHRyZXQgPSBrc3o4NDYzX2NvbmZpZ3VyZV9zdHJhcHNfc3BpKGRldik7XG4zOTExOlx0XHRcdFx0aWYgKHJldClcbjM5MTI6XHRcdFx0XHRcdHJldHVybiByZXQ7XG4zOTEzOlx0XHRcdH1cbjM5MTQ6XHRcbjM5MTU6XHRcdFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cdTAwM2VyZXNldF9ncGlvLCAxKTtcbjM5MTY6XHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAwLCAxMjAwMCk7XG4zOTE3Olx0XHRcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChkZXYtXHUwMDNlcmVzZXRfZ3BpbywgMCk7XG4zOTE4Olx0XHRcdG1zbGVlcCgxMDApO1xuMzkxOTpcdFxuMzkyMDpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttaWNyb2NoaXAsa3N6ODQ2M1wmIzM0OykpIHtcbjM5MjE6XHRcdFx0XHRyZXQgPSBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShkZXYpO1xuMzkyMjpcdFx0XHRcdGlmIChyZXQpXG4zOTIzOlx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuMzkyNDpcdFx0XHR9XG4zOTI1Olx0XHR9XG4zOTI2Olx0XG4zOTI3Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VkZXZfbXV0ZXgpO1xuMzkyODpcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlcmVnbWFwX211dGV4KTtcbjM5Mjk6XHRcdG11dGV4X2luaXQoXHUwMDI2ZGV2LVx1MDAzZWFsdV9tdXRleCk7XG4zOTMwOlx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2V2bGFuX211dGV4KTtcbjM5MzE6XHRcbjM5MzI6XHRcdHJldCA9IGtzel9zd2l0Y2hfZGV0ZWN0KGRldik7XG4zOTMzOlx0XHRpZiAocmV0KVxuMzkzNDpcdFx0XHRyZXR1cm4gcmV0O1xuMzkzNTpcdFxuMzkzNjpcdFx0aW5mbyA9IGtzel9sb29rdXBfaW5mbyhkZXYtXHUwMDNlY2hpcF9pZCk7XG4zOTM3Olx0XHRpZiAoIWluZm8pXG4zOTM4Olx0XHRcdHJldHVybiAtRU5PREVWO1xuMzkzOTpcdFxuMzk0MDpcdFx0LyogVXBkYXRlIHRoZSBjb21wYXRpYmxlIGluZm8gd2l0aCB0aGUgcHJvYmVkIG9uZSAqL1xuMzk0MTpcdFx0ZGV2LVx1MDAzZWluZm8gPSBpbmZvO1xuMzk0MjpcdFxuMzk0MzpcdFx0ZGV2X2luZm8oZGV2LVx1MDAzZWRldiwgXCYjMzQ7Zm91bmQgc3dpdGNoOiAlcywgcmV2ICVpXFxuXCYjMzQ7LFxuMzk0NDpcdFx0XHQgZGV2LVx1MDAzZWluZm8tXHUwMDNlZGV2X25hbWUsIGRldi1cdTAwM2VjaGlwX3Jldik7XG4zOTQ1Olx0XG4zOTQ2Olx0XHRyZXQgPSBrc3pfY2hlY2tfZGV2aWNlX2lkKGRldik7XG4zOTQ3Olx0XHRpZiAocmV0KVxuMzk0ODpcdFx0XHRyZXR1cm4gcmV0O1xuMzk0OTpcdFxuMzk1MDpcdFx0ZGV2LVx1MDAzZWRldl9vcHMgPSBkZXYtXHUwMDNlaW5mby1cdTAwM2VvcHM7XG4zOTUxOlx0XG4zOTUyOlx0XHRyZXQgPSBkZXYtXHUwMDNlZGV2X29wcy1cdTAwM2Vpbml0KGRldik7XG4zOTUzOlx0XHRpZiAocmV0KVxuMzk1NDpcdFx0XHRyZXR1cm4gcmV0O1xuMzk1NTpcdFxuMzk1NjpcdFx0ZGV2LVx1MDAzZXBvcnRzID0gZGV2bV9remFsbG9jKGRldi1cdTAwM2VkZXYsXG4zOTU3Olx0XHRcdFx0XHQgIGRldi1cdTAwM2VpbmZvLVx1MDAzZXBvcnRfY250ICogc2l6ZW9mKHN0cnVjdCBrc3pfcG9ydCksXG4zOTU4Olx0XHRcdFx0XHQgIEdGUF9LRVJORUwpO1xuMzk1OTpcdFx0aWYgKCFkZXYtXHUwMDNlcG9ydHMpXG4zOTYwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzk2MTpcdFxuMzk2MjpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZGV2LVx1MDAzZWluZm8tXHUwMDNlcG9ydF9jbnQ7IGkmIzQzOyYjNDM7KSB7XG4zOTYzOlx0XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRldi1cdTAwM2Vwb3J0c1tpXS5taWIuc3RhdHM2NF9sb2NrKTtcbjM5NjQ6XHRcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlcG9ydHNbaV0ubWliLmNudF9tdXRleCk7XG4zOTY1Olx0XHRcdGRldi1cdTAwM2Vwb3J0c1tpXS5taWIuY291bnRlcnMgPVxuMzk2NjpcdFx0XHRcdGRldm1fa3phbGxvYyhkZXYtXHUwMDNlZGV2LFxuMzk2NzpcdFx0XHRcdFx0ICAgICBzaXplb2YodTY0KSAqIChkZXYtXHUwMDNlaW5mby1cdTAwM2VtaWJfY250ICYjNDM7IDEpLFxuMzk2ODpcdFx0XHRcdFx0ICAgICBHRlBfS0VSTkVMKTtcbjM5Njk6XHRcdFx0aWYgKCFkZXYtXHUwMDNlcG9ydHNbaV0ubWliLmNvdW50ZXJzKVxuMzk3MDpcdFx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzk3MTpcdFxuMzk3MjpcdFx0XHRkZXYtXHUwMDNlcG9ydHNbaV0ua3N6X2RldiA9IGRldjtcbjM5NzM6XHRcdFx0ZGV2LVx1MDAzZXBvcnRzW2ldLm51bSA9IGk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MjcxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGNvZGUgc25pcHBldDoKCioqRGl2aW5nIGludG8gdGhlIFN3aXRjaCBEZXRlY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgYHJldCA9IGtzel9zd2l0Y2hfZGV0ZWN0KGRldik7YCAtIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgaW1tZWRpYXRlbHkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIHRoYXQgYGtzel9zd2l0Y2hfZGV0ZWN0YCBmdW5jdGlvbi4gR2l2ZW4gdGhlIG5hbWluZywgaXQmIzM5O3Mgb2J2aW91c2x5IGludm9sdmVkIGluIHNvbWUgc29ydCBvZiBzd2l0Y2ggZGV0ZWN0aW9uIGZvciB0aGUgZGV2aWNlLCBgZGV2YC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCBleGFjdGx5IGhvdyBpdCBhY2hpZXZlcyB0aGlzIGRldGVjdGlvbi4gSSBuZWVkIHRvIHNlZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGtzel9zd2l0Y2hfZGV0ZWN0YCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYywgYW55IHJlZ2lzdGVycyBpdCBtaWdodCBiZSByZWFkaW5nIG9yIHdyaXRpbmcsIGFuZCB0aGUgc3BlY2lmaWMgY3JpdGVyaWEgaXQmIzM5O3MgdXNpbmcgdG8gZGV0ZXJtaW5lIHRoZSBzd2l0Y2ggc3RhdHVzLiBJcyBpdCBwb2xsaW5nIHNvbWV0aGluZz8gQW4gaW50ZXJydXB0PyBJcyBpdCBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9uPyBXaGF0IGFyZSB0aGUgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBhbmQgd2hhdCBkbyB0aGV5IHNpZ25pZnk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gZGV0ZXJtaW5lIGhvdyByb2J1c3QgYW5kIHJlbGlhYmxlIHRoaXMgZGV0ZWN0aW9uIG1lY2hhbmlzbSBpcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2tzel9zd2l0Y2hfZGV0ZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yODk0PXZvaWQga3N6X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yOTA1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjkwNjpzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yOTA3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zODk0PWludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzkzMS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM5MzI6XHRyZXQgPSBrc3pfc3dpdGNoX2RldGVjdChkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzkzMy1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0ODAzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgJiMzNDtMZXQmIzM5O3MgcmVhZCBga3N6X3N3aXRjaF9kZXRlY3RgLCYjMzQ7IHN1bW1hcml6ZWQgYXMgYSBmaXJzdC1wZXJzb24gdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipEaXZpbmcgaW50byB0aGUgQ29kZToga3N6X3N3aXRjaF9kZXRlY3QqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIEkgc2VlIGBrc3pfc3dpdGNoX2RldGVjdGAgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGEgc3dpdGNoIGRldGVjdGlvbiBmdW5jdGlvbi4gTGlrZWx5IGRlYWxpbmcgd2l0aCBwaHlzaWNhbCBsYXllciAoUEhZKSBjaGFyYWN0ZXJpc3RpY3MsIG9yIHBlcmhhcHMgYSBsYXllciBjbG9zZXIgdG8gdGhlIE1BQyBpbiBhIHR5cGljYWwgc3dpdGNoIGRyaXZlciBmb3IgYSBLU1ogY2hpcHNldC4mIzM0OyBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZ1bmN0aW9uIHRvIGJlIHRoZSBnYXRld2F5IGZvciBmaWd1cmluZyBvdXQgdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIEl0IGNvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciBpZGVudGlmeWluZyB0aGUgc3BlY2lmaWMgS1NaIHN3aXRjaCBtb2RlbCBvciB2YXJpYW50IGJlaW5nIHVzZWQuIEkmIzM5O20gaW1hZ2luaW5nIGl0JiMzOTtsbCBiZSBsb29raW5nIGZvciBzcGVjaWZpYyByZWdpc3RlciB2YWx1ZXMsIGJpdCBwYXR0ZXJucywgb3IgcGVyaGFwcyBwcm9iaW5nIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgdG8gZGV0ZXJtaW5lIHRoZSBwcmVzZW5jZSBvZiBhIHN3aXRjaCBhbmQgaXRzIHJlbGV2YW50IGZlYXR1cmVzLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXJlIHdpbGwgYmUgYSByZWxpYW5jZSBvbiBoYXJkd2FyZSBzcGVjaWZpY3MsIHNvIEkgbmVlZCB0byBiZSByZWFkeSBmb3IgdmVuZG9yLXNwZWNpZmljIHF1aXJrcy4gSXQmIzM5O3MgcHJvYmFibHkgZ29pbmcgdG8gaW52b2x2ZSBhIHNlcmllcyBvZiByZWdpc3RlciByZWFkcyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIHRvIG1ha2UgaXRzIGFzc2Vzc21lbnRzLiBJIGFudGljaXBhdGUgYSBmYWlyIGJpdCBvZiBjb25kaXRpb25hbCBsb2dpYyB3aXRoaW4gdG8gaGFuZGxlIGRpZmZlcmVudCBzd2l0Y2ggcmV2aXNpb25zIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCYjMzk7cyBzZWUgaWYgbXkgaW5pdGlhbCBhc3N1bXB0aW9ucyBhcmUgY29ycmVjdCEgVGhpcyBzaG91bGQgYmUgaW50ZXJlc3Rpbmc7IEkgYWx3YXlzIGVuam95IGdldHRpbmcgaW50byB0aGUgbG93LWxldmVsIGRldGFpbHMgb2YgaGFyZHdhcmUgaW50ZXJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTA2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI5MDY6XHRzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4yOTA3Olx0e1xuMjkwODpcdFx0dTggaWQxLCBpZDIsIGlkNDtcbjI5MDk6XHRcdHUxNiBpZDE2O1xuMjkxMDpcdFx0dTMyIGlkMzI7XG4yOTExOlx0XHRpbnQgcmV0O1xuMjkxMjpcdFxuMjkxMzpcdFx0LyogcmVhZCBjaGlwIGlkICovXG4yOTE0Olx0XHRyZXQgPSBrc3pfcmVhZDE2KGRldiwgUkVHX0NISVBfSUQwLCBcdTAwMjZpZDE2KTtcbjI5MTU6XHRcdGlmIChyZXQpXG4yOTE2Olx0XHRcdHJldHVybiByZXQ7XG4yOTE3Olx0XG4yOTE4Olx0XHRpZDEgPSBGSUVMRF9HRVQoU1dfRkFNSUxZX0lEX00sIGlkMTYpO1xuMjkxOTpcdFx0aWQyID0gRklFTERfR0VUKFNXX0NISVBfSURfTSwgaWQxNik7XG4yOTIwOlx0XG4yOTIxOlx0XHRzd2l0Y2ggKGlkMSkge1xuMjkyMjpcdFx0Y2FzZSBLU1o4NF9GQU1JTFlfSUQ6XG4yOTIzOlx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaODQ2M19DSElQX0lEO1xuMjkyNDpcdFx0XHRicmVhaztcbjI5MjU6XHRcdGNhc2UgS1NaODdfRkFNSUxZX0lEOlxuMjkyNjpcdFx0XHRpZiAoaWQyID09IEtTWjg3X0NISVBfSURfOTUpIHtcbjI5Mjc6XHRcdFx0XHR1OCB2YWw7XG4yOTI4Olx0XG4yOTI5Olx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4Nzk1X0NISVBfSUQ7XG4yOTMwOlx0XG4yOTMxOlx0XHRcdFx0a3N6X3JlYWQ4KGRldiwgS1NaOF9QT1JUX1NUQVRVU18wLCBcdTAwMjZ2YWwpO1xuMjkzMjpcdFx0XHRcdGlmICh2YWwgXHUwMDI2IEtTWjhfUE9SVF9GSUJFUl9NT0RFKVxuMjkzMzpcdFx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4NzY1X0NISVBfSUQ7XG4yOTM0Olx0XHRcdH0gZWxzZSBpZiAoaWQyID09IEtTWjg3X0NISVBfSURfOTQpIHtcbjI5MzU6XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjg3OTRfQ0hJUF9JRDtcbjI5MzY6XHRcdFx0fSBlbHNlIHtcbjI5Mzc6XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjI5Mzg6XHRcdFx0fVxuMjkzOTpcdFx0XHRicmVhaztcbjI5NDA6XHRcdGNhc2UgS1NaODhfRkFNSUxZX0lEOlxuMjk0MTpcdFx0XHRpZiAoaWQyID09IEtTWjg4X0NISVBfSURfNjMpXG4yOTQyOlx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4OFgzX0NISVBfSUQ7XG4yOTQzOlx0XHRcdGVsc2VcbjI5NDQ6XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjI5NDU6XHRcdFx0YnJlYWs7XG4yOTQ2Olx0XHRjYXNlIEtTWjg4OTVfRkFNSUxZX0lEOlxuMjk0NzpcdFx0XHRpZiAoaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NSB8fFxuMjk0ODpcdFx0XHQgICAgaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NVIpXG4yOTQ5Olx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4ODk1X0NISVBfSUQ7XG4yOTUwOlx0XHRcdGVsc2VcbjI5NTE6XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjI5NTI6XHRcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0tTWjg4NjRfQ0hJUF9JRCwgXHUwMDI2aWQ0KTtcbjI5NTM6XHRcdFx0aWYgKHJldClcbjI5NTQ6XHRcdFx0XHRyZXR1cm4gcmV0O1xuMjk1NTpcdFx0XHRpZiAoaWQ0IFx1MDAyNiBTV19LU1o4ODY0KVxuMjk1NjpcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaODg2NF9DSElQX0lEO1xuMjk1NzpcdFx0XHRicmVhaztcbjI5NTg6XHRcdGRlZmF1bHQ6XG4yOTU5Olx0XHRcdHJldCA9IGtzel9yZWFkMzIoZGV2LCBSRUdfQ0hJUF9JRDAsIFx1MDAyNmlkMzIpO1xuMjk2MDpcdFx0XHRpZiAocmV0KVxuMjk2MTpcdFx0XHRcdHJldHVybiByZXQ7XG4yOTYyOlx0XG4yOTYzOlx0XHRcdGRldi1cdTAwM2VjaGlwX3JldiA9IEZJRUxEX0dFVChTV19SRVZfSURfTSwgaWQzMik7XG4yOTY0Olx0XHRcdGlkMzIgXHUwMDI2PSB+MHhGRjtcbjI5NjU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYxNDQKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBTd2l0Y2ggRGV0ZWN0aW9uICZhbXA7IEZ1enppbmcgQ2hhbGxlbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBrc3pfc3dpdGNoX2RldGVjdGAgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcGh5c2ljYWwgc3dpdGNoLiBJdCYjMzk7cyByZWFkaW5nIHJlZ2lzdGVycyB1c2luZyBga3N6X3JlYWQxNmAgYW5kIGBrc3pfcmVhZDMyYCBvdmVyIEkyQy9TUEksIHJpZ2h0PyBBbmQgaWYgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCB0aGVyZSwgaXQmIzM5O3Mgc3VwcG9zZWQgdG8gZmFpbCBhbmQgcmV0dXJuIC1FTk9ERVYuIFN0YW5kYXJkIHN0dWZmLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGZ1enppbmcgdGhpcywgYW5kIHRoYXQmIzM5O3Mgd2hlcmUgdGhpbmdzIGdldCB0cmlja3kuCgpDYW4gSSBldmVuICpyZWFjaCogdGhpcyBEU0EtcmVsYXRlZCBjb2RlLCBvciBhbnkgRFNBIHN3aXRjaCBkcml2ZXIgZm9yIHRoYXQgbWF0dGVyLCBpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAgbGlrZSBRRU1VIG9yIGV2ZW4gR29vZ2xlIENvbXB1dGUgRW5naW5lPyBBbmQgSSYjMzk7bSBzdGFydGluZyB0byBnZXQgYSBzaW5raW5nIGZlZWxpbmcgdGhhdCB0aGUgYW5zd2VyIGlzIG5vLiBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGFueSBEU0Egc3dpdGNoIGRyaXZlcnMgZW11bGF0ZWQgd2l0aGluIFFFTVUuIFRoYXQmIzM5O3MgYSBtYWpvciByb2FkYmxvY2suCgpTbywgaWYgaGFyZHdhcmUgZW11bGF0aW9uIGlzIG91dCwgd2hhdCBhYm91dCBhIHZpcnR1YWwgb3IgbW9jayBEU0EgZHJpdmVyPyBEb2VzIHRoZSBMaW51eCBrZXJuZWwgZXZlbiBoYXZlIGEgYmFzaWMsIHRlc3QtZm9jdXNlZCBtb2NrIGRyaXZlciBmb3IgRFNBIHNwZWNpZmljYWxseT8gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9kc2EvYCBkaXJlY3RvcnkuIEdvdHRhIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLiBJJiMzOTttIGdvaW5nIHRvIG5lZWQgdG8gZGlnIGRlZXBlciBpbiB0aGF0IGRpcmVjdG9yeSB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlcmUgZXhpc3RzIGEgd2F5IHRvIHRlc3QgdGhpcyB3aXRob3V0IGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwODo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtiY21fc2YyLmMmIzM0OywKICAgICYjMzQ7YmNtX3NmMi5oJiMzNDssCiAgICAmIzM0O2JjbV9zZjJfY2ZwLmMmIzM0OywKICAgICYjMzQ7YmNtX3NmMl9yZWdzLmgmIzM0OywKICAgICYjMzQ7ZHNhX2xvb3AuYyYjMzQ7LAogICAgJiMzNDtrczg5OTUuYyYjMzQ7LAogICAgJiMzNDtsYW45MzAzLWNvcmUuYyYjMzQ7LAogICAgJiMzNDtsYW45MzAzLmgmIzM0OywKICAgICYjMzQ7bGFuOTMwM19pMmMuYyYjMzQ7LAogICAgJiMzNDtsYW45MzAzX21kaW8uYyYjMzQ7LAogICAgJiMzNDttdDc1MzAtbWRpby5jJiMzNDssCiAgICAmIzM0O210NzUzMC1tbWlvLmMmIzM0OywKICAgICYjMzQ7bXQ3NTMwLmMmIzM0OywKICAgICYjMzQ7bXQ3NTMwLmgmIzM0OywKICAgICYjMzQ7bXQ3NjI4LmMmIzM0OywKICAgICYjMzQ7bXY4OGU2MDYwLmMmIzM0OywKICAgICYjMzQ7bXY4OGU2MDYwLmgmIzM0OywKICAgICYjMzQ7cnpuMV9hNXBzdy5jJiMzNDssCiAgICAmIzM0O3J6bjFfYTVwc3cuaCYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLXZzYzczeHgtY29yZS5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UtdnNjNzN4eC1wbGF0Zm9ybS5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UtdnNjNzN4eC1zcGkuYyYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLXZzYzczeHguaCYjMzQ7LAogICAgJiMzNDt5dDkyMXguYyYjMzQ7LAogICAgJiMzNDt5dDkyMXguaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDtiNTMmIzM0OywKICAgICYjMzQ7aGlyc2NobWFubiYjMzQ7LAogICAgJiMzNDtsYW50aXEmIzM0OywKICAgICYjMzQ7bWljcm9jaGlwJiMzNDssCiAgICAmIzM0O212ODhlNnh4eCYjMzQ7LAogICAgJiMzNDtteGw4NjJ4eCYjMzQ7LAogICAgJiMzNDtuZXRjJiMzNDssCiAgICAmIzM0O29jZWxvdCYjMzQ7LAogICAgJiMzNDtxY2EmIzM0OywKICAgICYjMzQ7cmVhbHRlayYjMzQ7LAogICAgJiMzNDtzamExMTA1JiMzNDssCiAgICAmIzM0O3hyczcwMHgmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwODo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjk5MQoJCQkJCQkJb3V0cHV0OiAxNDgKCQkJCQkJCXRob3VnaHRzOiA4MDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgTWljcm9jaGlwIEtTWiBQVFAgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmNgLCB3aGljaCBpcyB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggUFRQIGRyaXZlci4gVGhpcyBpc24mIzM5O3QgdGhlIGxvb3BiYWNrIGRyaXZlciAoYGRzYV9sb29wLmNgKSwgYnV0IHNwZWNpZmljYWxseSB0YXJnZXRzIGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQYC4gVGhpcyBpcyBvbmx5IGJ1aWx0IGZvciBNaWNyb2NoaXAgS1NaIHN3aXRjaGVzLCB0aGUgS1NaOHh4eCwgS1NaOXh4eCwgYW5kIExBTjkzN3ggZmFtaWxpZXMuIFRoZXNlIGFyZSBoYXJkd2FyZSBldGhlcm5ldCBzd2l0Y2ggY2hpcHMsIGFuZCB0aGV5IG5lZWQgYSByZWFsIFNQSSwgSTJDLCBvciBTTUkgY29ubmVjdGlvbiB0byB0aGUgQVNJQy4KCk5vdywgbGV0JiMzOTtzIGdvIHRocm91Z2ggdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTcGVjaWZpY2FsbHksIFNlY3Rpb24gMiwgdGhlICYjMzQ7V0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgcGFydC4gVGhpcyBpcyBrZXkuIFdlIG9ubHkgcmV0dXJuIGBmYWxzZWAgaWYgdGhlIGNvZGUgY2hhbmdlIGZhbGxzICpzdHJpY3RseSogaW50byBvbmUgb2YgdGhvc2UgbmVnYXRpdmUgY3JpdGVyaWEuIExldCYjMzk7cyBzZWUuLi4KCklzIGl0IG5vbi1rZXJuZWwgb3Igbm9uLWV4ZWN1dGFibGU/IE5vLgoKU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlPyBCaW5nbyEgVGhpcyBsb29rcyBsaWtlIGl0LiBNaWNyb2NoaXAgc3dpdGNoZXMgYXJlIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIG5lZWRpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGlzIHNlZW1zIHRvIGJlIHRoZSBjYXNlIGhlcmUuCgpVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM/IE5vLCB0aGlzIGNvZGUgaXMgbm90IHRpZWQgdG8gYSBkcml2ZXIgdGVhcmRvd24gb3IgdW51c3VhbCBhcmNoaXRlY3R1cmUuCgpCdXQgd2FpdCwgd2hhdCBhYm91dCB0aG9zZSB2aXJ0dWFsIGJ1c2VzIGluIHN5emthbGxlcj8gVGhlIHBoaWxvc29waHkgbWVudGlvbnMgZHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzIGFyZSB3b3J0aCBmdXp6aW5nLiBPa2F5LCBzbyBLU1ogc3dpdGNoZXMgdXNlIEkyQywgU1BJLCBvciBTTUkuIENhbiBhbnkgb2YgdGhvc2UgYnVzZXMgYmUgcmVhY2hlZCB0aHJvdWdoIGEgVVNCIGdhZGdldCBpbiBzeXprYWxsZXI/IE5vLiBUaGlzIGlzIGFuIGV0aGVybmV0IHN3aXRjaCBjaGlwIGNvbm5lY3RlZCB0byBhbiBTb0MgdmlhIGFuIEkyQyBvciBTUEkgYnVzLiBFdmVuIGlmIHRoZXJlIHdhcyBhbiBJMkMgZGV2aWNlIG5vZGUgY3JlYXRlZCBpbiBhIHN5emthbGxlciBWTSwgYGtzel9zd2l0Y2hfZGV0ZWN0YCBhdHRlbXB0cyB0byByZWFkIHJlZ2lzdGVycyBkaXJlY3RseSBmcm9tIHRoZSBwaHlzaWNhbCBjaGlwIGFuZCB3aWxsIGZhaWwsIHNpbmNlIHRoZXJlJiMzOTtzIG5vIGVtdWxhdGVkIEtTWiBoYXJkd2FyZS4gVGhpcyBpcyBhIGRlYWQgZW5kLiBGdXJ0aGVybW9yZSwgdGhlIFBUUCBjbG9jayByZWdpc3RyYXRpb24gYW5kIHRoZSBwYXRjaGVkIGNvZGUgYXJlIG9ubHkgcmVhY2hhYmxlIGFmdGVyIHN1Y2Nlc3NmdWwgc3dpdGNoIHNldHVwLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSB0aGUgRFNBIGNvcmUgd2hlbiB0aGUgc3dpdGNoIGlzIGJvdW5kIHRvIGEgbWFzdGVyIG5ldHdvcmsgZGV2aWNlIC0gc29tZXRoaW5nIHRoYXQgaXMgdXN1YWxseSBkZWZpbmVkIGJ5IGEgRGV2aWNlIFRyZWUgYW5kIHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZS4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIGFyZSB0aGVyZSBhbnkgbW9jayBvciB0ZXN0IGhhcm5lc3NlcyBmb3IgS1NaIGRldmljZXM/IE5vcGUuIE5vdGhpbmcgdXNlZnVsIGhlcmUuCgpTbywgdGhlIGNvbmNsdXNpb24gaXMgcHJldHR5IGNsZWFyLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgaW4gYGtzel9wdHAuY2AgZm9yIE1pY3JvY2hpcCBLU1ogc3dpdGNoZXMuIFRoaXMgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBRRU1VIGFuZCBHQ0UsIGFzIGZhciBhcyBJIGtub3csIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIGhhcmR3YXJlIHN3aXRjaCBjaGlwcy4gVGhlcmVmb3JlLCBpdCYjMzk7cyBhIGBXb3J0aEZ1enppbmc9ZmFsc2VgIHNpdHVhdGlvbi4KCkp1c3QgdG8gZG91YmxlIGNoZWNrIG15c2VsZiwgdGhlIHBhdGNoIG1vZGlmaWVzIFBUUCBwZXJpb2RpYyBvdXRwdXQgaGFuZGxpbmcgKGBrc3pfcHRwX2VuYWJsZV9wZXJvdXRgLCBga3N6X3B0cF9yZXN0YXJ0X3Blcm91dGApIGluIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHJlYWwgaGFyZHdhcmUgY29ubmVjdGVkIGJ5IFNQSSwgSTJDLCBvciBTTUksIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBRRU1VIG9yIGNsb3VkIFZNcywgbWFraW5nIHRoaXMgY29kZSB1bnJlYWNoYWJsZS4KCkV2ZXJ5dGhpbmcgbG9va3MgZ29vZCBhbmQgY29uc2lzdGVudCB3aXRoIHRoZSBpbnN0cnVjdGlvbnMuCkxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGVyaW9kaWMgb3V0cHV0IGhhbmRsaW5nIChrc3pfcHRwX2VuYWJsZV9wZXJvdXQgYW5kIGtzel9wdHBfcmVzdGFydF9wZXJvdXQpIGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1pY3JvY2hpcCBLU1o4eHh4L0tTWjl4eHgvTEFOOTM3eCBzd2l0Y2ggaGFyZHdhcmUgKGludGVyZmFjZWQgdmlhIFNQSSwgSTJDLCBvciBTTUkpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGVyaW9kaWMgb3V0cHV0IGhhbmRsaW5nIChrc3pfcHRwX2VuYWJsZV9wZXJvdXQgYW5kIGtzel9wdHBfcmVzdGFydF9wZXJvdXQpIGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1pY3JvY2hpcCBLU1o4eHh4L0tTWjl4eHgvTEFOOTM3eCBzd2l0Y2ggaGFyZHdhcmUgKGludGVyZmFjZWQgdmlhIFNQSSwgSTJDLCBvciBTTUkpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjMxLjI3OTc3NDMyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDY5MjM3NDA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBlcmlvZGljIG91dHB1dCBoYW5kbGluZyAoa3N6X3B0cF9lbmFibGVfcGVyb3V0IGFuZCBrc3pfcHRwX3Jlc3RhcnRfcGVyb3V0KSBpbiB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNaWNyb2NoaXAgS1NaOHh4eC9LU1o5eHh4L0xBTjkzN3ggc3dpdGNoIGhhcmR3YXJlIChpbnRlcmZhY2VkIHZpYSBTUEksIEkyQywgb3IgU01JKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsIGVudmlyb25tZW50cywgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjMxLjI3OTc3OTM5N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwMjcwMDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjY3NjVhMzhkMTYwOTgwY2E0YzQ0NTJmOWFjZmIxMDVjODA2NDMxY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCAxNCAwODo0MzozMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jXFxuaW5kZXggMzljYzcwZDY1OTAwYi4uNGY5MjRkZjllMzJiZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jXFxuQEAgLTIyMiw2ICsyMjIsOCBAQCBzdGF0aWMgaW50IGtzel9wdHBfZW5hYmxlX3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcbiBcXG4rXFx0cHRwX2RhdGEtXFx1MDAzZXBlcm91dF9mbGFncyA9IHJlcXVlc3QtXFx1MDAzZWZsYWdzO1xcbitcXHRwdHBfZGF0YS1cXHUwMDNlcGVyb3V0X2luZGV4ID0gcmVxdWVzdC1cXHUwMDNlaW5kZXg7XFxuIFxcdHB0cF9kYXRhLVxcdTAwM2VwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3QudHZfc2VjICA9IHJlcXVlc3QtXFx1MDAzZXN0YXJ0LnNlYztcXG4gXFx0cHRwX2RhdGEtXFx1MDAzZXBlcm91dF90YXJnZXRfdGltZV9maXJzdC50dl9uc2VjID0gcmVxdWVzdC1cXHUwMDNlc3RhcnQubnNlYztcXG4gXFxuQEAgLTc5NSw4ICs3OTcsOCBAQCBzdGF0aWMgaW50IGtzel9wdHBfcmVzdGFydF9wZXJvdXQoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4gXFx0cmVxdWVzdC5zdGFydC5uc2VjID0gbmV4dC50dl9uc2VjO1xcbiBcXHRyZXF1ZXN0LnBlcmlvZC5zZWMgID0gcHRwX2RhdGEtXFx1MDAzZXBlcm91dF9wZXJpb2QudHZfc2VjO1xcbiBcXHRyZXF1ZXN0LnBlcmlvZC5uc2VjID0gcHRwX2RhdGEtXFx1MDAzZXBlcm91dF9wZXJpb2QudHZfbnNlYztcXG4tXFx0cmVxdWVzdC5pbmRleCA9IDA7XFxuLVxcdHJlcXVlc3QuZmxhZ3MgPSAwO1xcbitcXHRyZXF1ZXN0LmluZGV4ID0gcHRwX2RhdGEtXFx1MDAzZXBlcm91dF9pbmRleDtcXG4rXFx0cmVxdWVzdC5mbGFncyA9IHB0cF9kYXRhLVxcdTAwM2VwZXJvdXRfZmxhZ3M7XFxuIFxcbiBcXHRyZXR1cm4ga3N6X3B0cF9lbmFibGVfcGVyb3V0KGRldiwgXFx1MDAyNnJlcXVlc3QsIDEpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmhcXG5pbmRleCA3MDY3ZWM5YmQxZTZmLi5kYTZhMmVmYjIzZDcyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmhcXG5AQCAtMzEsNiArMzEsOCBAQCBzdHJ1Y3Qga3N6X3B0cF9kYXRhIHtcXG4gXFx0ZW51bSBrc3pfcHRwX3RvdV9tb2RlIHRvdV9tb2RlO1xcbiBcXHRzdHJ1Y3QgdGltZXNwZWM2NCBwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3Q7ICAvKiBzdGFydCBvZiBmaXJzdCBwdWxzZSAqL1xcbiBcXHRzdHJ1Y3QgdGltZXNwZWM2NCBwZXJvdXRfcGVyaW9kO1xcbitcXHR1bnNpZ25lZCBpbnQgcGVyb3V0X2ZsYWdzO1xcbitcXHR1bnNpZ25lZCBpbnQgcGVyb3V0X2luZGV4O1xcbiB9O1xcbiBcXG4gaW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDg6NDM6MzEuNzQwNjI0NzlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEyNDIzMTUwMjkwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGVyaW9kaWMgb3V0cHV0IGhhbmRsaW5nIChrc3pfcHRwX2VuYWJsZV9wZXJvdXQgYW5kIGtzel9wdHBfcmVzdGFydF9wZXJvdXQpIGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1pY3JvY2hpcCBLU1o4eHh4L0tTWjl4eHgvTEFOOTM3eCBzd2l0Y2ggaGFyZHdhcmUgKGludGVyZmFjZWQgdmlhIFNQSSwgSTJDLCBvciBTTUkpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNjc2NWEzOGQxNjA5ODBjYTRjNDQ1MmY5YWNmYjEwNWM4MDY0MzFjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgMTQgMDg6NDM6MzAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jXG5pbmRleCAzOWNjNzBkNjU5MDBiLi40ZjkyNGRmOWUzMmJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jXG5AQCAtMjIyLDYgKzIyMiw4IEBAIHN0YXRpYyBpbnQga3N6X3B0cF9lbmFibGVfcGVyb3V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuK1x0cHRwX2RhdGEtXHUwMDNlcGVyb3V0X2ZsYWdzID0gcmVxdWVzdC1cdTAwM2VmbGFncztcbitcdHB0cF9kYXRhLVx1MDAzZXBlcm91dF9pbmRleCA9IHJlcXVlc3QtXHUwMDNlaW5kZXg7XG4gXHRwdHBfZGF0YS1cdTAwM2VwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3QudHZfc2VjICA9IHJlcXVlc3QtXHUwMDNlc3RhcnQuc2VjO1xuIFx0cHRwX2RhdGEtXHUwMDNlcGVyb3V0X3RhcmdldF90aW1lX2ZpcnN0LnR2X25zZWMgPSByZXF1ZXN0LVx1MDAzZXN0YXJ0Lm5zZWM7XG4gXG5AQCAtNzk1LDggKzc5Nyw4IEBAIHN0YXRpYyBpbnQga3N6X3B0cF9yZXN0YXJ0X3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0cmVxdWVzdC5zdGFydC5uc2VjID0gbmV4dC50dl9uc2VjO1xuIFx0cmVxdWVzdC5wZXJpb2Quc2VjICA9IHB0cF9kYXRhLVx1MDAzZXBlcm91dF9wZXJpb2QudHZfc2VjO1xuIFx0cmVxdWVzdC5wZXJpb2QubnNlYyA9IHB0cF9kYXRhLVx1MDAzZXBlcm91dF9wZXJpb2QudHZfbnNlYztcbi1cdHJlcXVlc3QuaW5kZXggPSAwO1xuLVx0cmVxdWVzdC5mbGFncyA9IDA7XG4rXHRyZXF1ZXN0LmluZGV4ID0gcHRwX2RhdGEtXHUwMDNlcGVyb3V0X2luZGV4O1xuK1x0cmVxdWVzdC5mbGFncyA9IHB0cF9kYXRhLVx1MDAzZXBlcm91dF9mbGFncztcbiBcbiBcdHJldHVybiBrc3pfcHRwX2VuYWJsZV9wZXJvdXQoZGV2LCBcdTAwMjZyZXF1ZXN0LCAxKTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaFxuaW5kZXggNzA2N2VjOWJkMWU2Zi4uZGE2YTJlZmIyM2Q3MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaFxuQEAgLTMxLDYgKzMxLDggQEAgc3RydWN0IGtzel9wdHBfZGF0YSB7XG4gXHRlbnVtIGtzel9wdHBfdG91X21vZGUgdG91X21vZGU7XG4gXHRzdHJ1Y3QgdGltZXNwZWM2NCBwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3Q7ICAvKiBzdGFydCBvZiBmaXJzdCBwdWxzZSAqL1xuIFx0c3RydWN0IHRpbWVzcGVjNjQgcGVyb3V0X3BlcmlvZDtcbitcdHVuc2lnbmVkIGludCBwZXJvdXRfZmxhZ3M7XG4rXHR1bnNpZ25lZCBpbnQgcGVyb3V0X2luZGV4O1xuIH07XG4gXG4gaW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjMxLjc0MDYyNjQxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NzE0OTkzNjMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNaWNyb2NoaXAgS1NaIERTQSBTd2l0Y2ggRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhlIHBhdGNoIHRvdWNoZXMgYGtzel9wdHAuY2AgYW5kIGBrc3pfcHRwLmhgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvYCBkaXJlY3RvcnkuIFJpZ2h0LCB0aGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gU3BlY2lmaWNhbGx5LCBJJ20gbG9va2luZyBhdCB0aGUgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgaW1wbGVtZW50YXRpb24gd2l0aGluIHRoYXQgZHJpdmVyLCBzaW5jZSBpdCdzIGBrc3pfcHRwLipgIGZpbGVzLlxuXG5NeSBuZXh0IHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kuIERvZXMgdGhpcyBmdW5jdGlvbmFsaXR5IHJlbHkgb24gc3BlY2lmaWMgTWljcm9jaGlwIEtTWiBzd2l0Y2ggaGFyZHdhcmU/IENhbiBJIGV2ZW4gdGVzdCB0aGlzIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmU/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0J3MgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBvciBtYXliZSBhY2Nlc3NpYmxlIHRocm91Z2ggYSB2aXJ0dWFsIGJ1cyBvciBVU0IgY29ubmVjdGlvbi4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGluIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2AgdG8gc2VlIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkIGFuZCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZS4gSSdsbCB1c2UgZ3JlcCBvciBjb2RlIHNlYXJjaCB0byBwaW5wb2ludCByZWxldmFudCBpbmZvcm1hdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMyOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjM4Ljg5MDU2NTM2OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjM1OTk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrc3pfcHRwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MDUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU9OD1pZmRlZiBDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6OTprc3pfc3dpdGNoLW9ianMgKz0ga3N6X3B0cC5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS0xMC1lbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjM4NT1zdGF0aWMgaW50IGtzejg0NjNfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQ4MC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDgxOlxcdFxcdHJldCA9IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0ODItXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjUwNi1cXHRpZiAoZGV2LVxcdTAwM2VpcnEgXFx1MDAzZSAwKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI1MDc6XFx0XFx0a3N6X3B0cF9jbG9ja191bnJlZ2lzdGVyKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTA4LWZyZWVfcHRwX2lycTpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTI1MTg9c3RhdGljIHZvaWQga3N6ODQ2M190ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTIyLVxcdGlmIChkZXYtXFx1MDAzZWlycSBcXHUwMDNlIDApIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTIzOlxcdFxcdGtzel9wdHBfY2xvY2tfdW5yZWdpc3Rlcihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjUyNC1cXHRcXHRrc3o4NDYzX3B0cF9pcnFfZnJlZShkcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yNjQ1PXN0YXRpYyBpbnQga3N6OF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzY5LVxcdFxcdFxcdGlmIChkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXB0cF9jYXBhYmxlKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjc3MDpcXHRcXHRcXHRcXHRyZXQgPSBrc3pfcHRwX2lycV9zZXR1cChkcywgZHAtXFx1MDAzZWluZGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzcxLVxcdFxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzc3LVxcdGlmIChkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXB0cF9jYXBhYmxlKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjc3ODpcXHRcXHRyZXQgPSBrc3pfcHRwX2Nsb2NrX3JlZ2lzdGVyKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzc5LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI4MDMtXFx0aWYgKGRldi1cXHUwMDNlaW5mby1cXHUwMDNlcHRwX2NhcGFibGUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjgwNDpcXHRcXHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI4MDUtcG9ydF9yZWxlYXNlOlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjgwOC1cXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VwdHBfY2FwYWJsZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyODA5OlxcdFxcdFxcdFxcdGtzel9wdHBfaXJxX2ZyZWUoZHMsIGRwLVxcdTAwM2VpbmRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjgxMC1waXJxX3JlbGVhc2U6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0xNjcwPXN0YXRpYyBpbnQga3N6OTQ3N19zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xNzc1LVxcdFxcdFxcdGlmIChkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXB0cF9jYXBhYmxlKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MTc3NjpcXHRcXHRcXHRcXHRyZXQgPSBrc3pfcHRwX2lycV9zZXR1cChkcywgZHAtXFx1MDAzZWluZGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xNzc3LVxcdFxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xNzgzLVxcdGlmIChkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXB0cF9jYXBhYmxlKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MTc4NDpcXHRcXHRyZXQgPSBrc3pfcHRwX2Nsb2NrX3JlZ2lzdGVyKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xNzg1LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE4MDktXFx0aWYgKGRldi1cXHUwMDNlaW5mby1cXHUwMDNlcHRwX2NhcGFibGUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MTgxMDpcXHRcXHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE4MTEtcG9ydF9yZWxlYXNlOlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTgxNC1cXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VwdHBfY2FwYWJsZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzoxODE1OlxcdFxcdFxcdFxcdGtzel9wdHBfaXJxX2ZyZWUoZHMsIGRwLVxcdTAwM2VpbmRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTgxNi1waXJxX3JlbGVhc2U6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zMi0jaW5jbHVkZSBcXFwia3N6X2RjYi5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjMzOiNpbmNsdWRlIFxcXCJrc3pfcHRwLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzQtI2luY2x1ZGUgXFxcImtzejguaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTI1Njc9dm9pZCBrc3pfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjU3Mi1cXHRpZiAoZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VwdHBfY2FwYWJsZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNTczOlxcdFxcdGtzel9wdHBfY2xvY2tfdW5yZWdpc3Rlcihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjU3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1NzctXFx0XFx0XFx0aWYgKGRldi1cXHUwMDNlaW5mby1cXHUwMDNlcHRwX2NhcGFibGUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjU3ODpcXHRcXHRcXHRcXHRrc3pfcHRwX2lycV9mcmVlKGRzLCBkcC1cXHUwMDNlaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1NzktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoyMjojaW5jbHVkZSBcXFwia3N6X3B0cC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9MTQ0PXN0cnVjdCBrc3pfaXJxIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTE1NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoxNTY6c3RydWN0IGtzel9wdHBfaXJxIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0xNTctXFx0c3RydWN0IGtzel9wb3J0ICpwb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9MTY5PXN0cnVjdCBrc3pfcG9ydCB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0xOTgtXFx0c3RydWN0IGtzel9pcnEgcHRwaXJxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjE5OTpcXHRzdHJ1Y3Qga3N6X3B0cF9pcnEgcHRwbXNnX2lycVszXTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMDAtXFx0a3RpbWVfdCB0c3RhbXBfbXNnO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9MjA2PXN0cnVjdCBrc3pfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTI0NS1cXHRzdHJ1Y3Qga3N6X2lycSBnaXJxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjI0NjpcXHRzdHJ1Y3Qga3N6X3B0cF9kYXRhIHB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTI0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE1LSNpbmNsdWRlIFxcXCJrc3pfY29tbW9uLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTY6I2luY2x1ZGUgXFxcImtzel9wdHAuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNzojaW5jbHVkZSBcXFwia3N6X3B0cF9yZWcuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xOC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxOTojZGVmaW5lIHB0cF9jYXBzX3RvX2RhdGEoZCkgY29udGFpbmVyX29mKChkKSwgc3RydWN0IGtzel9wdHBfZGF0YSwgY2FwcylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yMC0jZGVmaW5lIHB0cF9kYXRhX3RvX2tzel9kZXYoZCkgY29udGFpbmVyX29mKChkKSwgc3RydWN0IGtzel9kZXZpY2UsIHB0cF9kYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNDMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NDQ6c3RhdGljIGludCBrc3pfcHRwX3RvdV9ncGlvKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNjUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NjY6c3RhdGljIGludCBrc3pfcHRwX3RvdV9yZXNldChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1OCB1bml0KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg4LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjg5OnN0YXRpYyBpbnQga3N6X3B0cF90b3VfcHVsc2VfdmVyaWZ5KHU2NCBwdWxzZV9ucylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy05MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTAzOnN0YXRpYyBpbnQga3N6X3B0cF90b3VfdGFyZ2V0X3RpbWVfc2V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdGltZXNwZWM2NCBjb25zdCAqdHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIzOnN0YXRpYyBpbnQga3N6X3B0cF90b3Vfc3RhcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggdW5pdClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE1MDpzdGF0aWMgaW50IGtzel9wdHBfY29uZmlndXJlX3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE1MS1cXHRcXHRcXHRcXHQgICAgdTMyIGN5Y2xlX3dpZHRoX25zLCB1MzIgcHVsc2Vfd2lkdGhfbnMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xNzgtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTc5OlxcdHJldCA9IGtzel9wdHBfdG91X3RhcmdldF90aW1lX3NldChkZXYsIHRhcmdldF90aW1lKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xODAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE4NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxODY6c3RhdGljIGludCBrc3pfcHRwX2VuYWJsZV9wZXJvdXQoc3RydWN0IGtzel9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xODctXFx0XFx0XFx0XFx0IHN0cnVjdCBwdHBfcGVyb3V0X3JlcXVlc3QgY29uc3QgKnJlcXVlc3QsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xODkte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE5MDpcXHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YSA9IFxcdTAwMjZkZXYtXFx1MDAzZXB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE5MS1cXHR1NjQgcmVxX3B1bHNlX3dpZHRoX25zO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjE1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjIxNjpcXHRyZXQgPSBrc3pfcHRwX3RvdV9yZXNldChkZXYsIHJlcXVlc3QtXFx1MDAzZWluZGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yMTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI0OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoyNTA6XFx0cmV0ID0ga3N6X3B0cF90b3VfcHVsc2VfdmVyaWZ5KHB1bHNlX3dpZHRoX25zKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNTEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI1My1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoyNTQ6XFx0cmV0ID0ga3N6X3B0cF9jb25maWd1cmVfcGVyb3V0KGRldiwgY3ljbGVfd2lkdGhfbnMsIHB1bHNlX3dpZHRoX25zLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI1NS1cXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNnB0cF9kYXRhLVxcdTAwM2VwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3QsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNTktXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MjYwOlxcdHJldCA9IGtzel9wdHBfdG91X2dwaW8oZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNjEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI2My1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoyNjQ6XFx0cmV0ID0ga3N6X3B0cF90b3Vfc3RhcnQoZGV2LCByZXF1ZXN0LVxcdTAwM2VpbmRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjY1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNzItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MjczOnN0YXRpYyBpbnQga3N6X3B0cF9lbmFibGVfbW9kZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI3NC17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjc1LVxcdHN0cnVjdCBrc3pfdGFnZ2VyX2RhdGEgKnRhZ2dlcl9kYXRhID0ga3N6X3RhZ2dlcl9kYXRhKGRldi1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjI3NjpcXHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YSA9IFxcdTAwMjZkZXYtXFx1MDAzZXB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI3Ny1cXHRjb25zdCB1MTYgKnJlZ3MgPSBkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXJlZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz0zMDI9aW50IGtzejg0NjNfZ2V0X3RzX2luZm8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTMwNS1cXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MzA2OlxcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTMwNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTMzMD1pbnQga3N6X2dldF90c19pbmZvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBrZXJuZWxfZXRodG9vbF90c19pbmZvICp0cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTMzMi1cXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MzMzOlxcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTMzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTM3MT1zdGF0aWMgaW50IGtzejg0NjNfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNDE0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjQxNTpcXHRyZXR1cm4ga3N6X3B0cF9lbmFibGVfbW9kZShkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTQxNi19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz00Mzc9c3RhdGljIGludCBrc3pfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNTA2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjUwNzpcXHRyZXR1cm4ga3N6X3B0cF9lbmFibGVfbW9kZShkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTUwOC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz01Mjk9c3RhdGljIGt0aW1lX3Qga3N6X3RzdGFtcF9yZWNvbnN0cnVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBrdGltZV90IHRzdGFtcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTUzMS1cXHRzdHJ1Y3QgdGltZXNwZWM2NCBwdHBfY2xvY2tfdGltZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo1MzI6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNTMzLVxcdHN0cnVjdCB0aW1lc3BlYzY0IGRpZmY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz01OTg9dm9pZCBrc3pfcG9ydF90eHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNjQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjY0OTpzdGF0aWMgdm9pZCBrc3pfcHRwX3R4dHN0YW1wX3NrYihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTY1MC1cXHRcXHRcXHRcXHQgc3RydWN0IGtzel9wb3J0ICpwcnQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz02OTI9dm9pZCBrc3pfcG9ydF9kZWZlcnJlZF94bWl0KHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03MTEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzEyOlxcdGtzel9wdHBfdHh0c3RhbXBfc2tiKGRldiwgcHJ0LCBjbG9uZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzE2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjcxNzpzdGF0aWMgaW50IF9rc3pfcHRwX2dldHRpbWUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgc3RydWN0IHRpbWVzcGVjNjQgKnRzKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTcxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03NDctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzQ4OnN0YXRpYyBpbnQga3N6X3B0cF9nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzQ5LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo3NTA6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzUxLVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTc1NC1cXHRtdXRleF9sb2NrKFxcdTAwMjZwdHBfZGF0YS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzU1OlxcdHJldCA9IF9rc3pfcHRwX2dldHRpbWUoZGV2LCB0cyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzU2LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cHRwX2RhdGEtXFx1MDAzZWxvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzYwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjc2MTpzdGF0aWMgaW50IGtzel9wdHBfcmVzdGFydF9wZXJvdXQoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03NjIte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjc2MzpcXHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YSA9IFxcdTAwMjZkZXYtXFx1MDAzZXB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTc2NC1cXHRzNjQgbm93X25zLCBmaXJzdF9ucywgcGVyaW9kX25zLCBuZXh0X25zO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzcyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjc3MzpcXHRyZXQgPSBfa3N6X3B0cF9nZXR0aW1lKGRldiwgXFx1MDAyNm5vdyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzc0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04MDItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6ODAzOlxcdHJldHVybiBrc3pfcHRwX2VuYWJsZV9wZXJvdXQoZGV2LCBcXHUwMDI2cmVxdWVzdCwgMSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODA0LX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04MDUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6ODA2OnN0YXRpYyBpbnQga3N6X3B0cF9zZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTgwNy1cXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODA4LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4MDk6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODEwLVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTgzNy1cXHRjYXNlIEtTWl9QVFBfVE9VX1BFUk9VVDpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4Mzg6XFx0XFx0cmV0ID0ga3N6X3B0cF9yZXN0YXJ0X3Blcm91dChkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTgzOS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODU0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjg1NTpzdGF0aWMgaW50IGtzel9wdHBfYWRqZmluZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg1Ni17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6ODU3OlxcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhID0gcHRwX2NhcHNfdG9fZGF0YShwdHApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg1OC1cXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gcHRwX2RhdGFfdG9fa3N6X2RldihwdHBfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04OTQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6ODk1OnN0YXRpYyBpbnQga3N6X3B0cF9hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODk2LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4OTc6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODk4LVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk0MC1cXHRjYXNlIEtTWl9QVFBfVE9VX1BFUk9VVDpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo5NDE6XFx0XFx0cmV0ID0ga3N6X3B0cF9yZXN0YXJ0X3Blcm91dChkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk0Mi1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTU2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjk1NzpzdGF0aWMgaW50IGtzel9wdHBfZW5hYmxlKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk1OC1cXHRcXHRcXHQgIHN0cnVjdCBwdHBfY2xvY2tfcmVxdWVzdCAqcmVxLCBpbnQgb24pXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTU5LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo5NjA6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTYxLVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk2Ni1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwdHBfZGF0YS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6OTY3OlxcdFxcdHJldCA9IGtzel9wdHBfZW5hYmxlX3Blcm91dChkZXYsIFxcdTAwMjZyZXEtXFx1MDAzZXBlcm91dCwgb24pO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk2OC1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnB0cF9kYXRhLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk3Ni1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo5Nzc6c3RhdGljIGludCBrc3pfcHRwX3ZlcmlmeV9waW4oc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHVuc2lnbmVkIGludCBwaW4sXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTc4LVxcdFxcdFxcdCAgICAgIGVudW0gcHRwX3Bpbl9mdW5jdGlvbiBmdW5jLCB1bnNpZ25lZCBpbnQgY2hhbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk5NC0vKiAgRnVuY3Rpb24gaXMgcG9pbnRlciB0byB0aGUgZG9fYXV4X3dvcmsgaW4gdGhlIHB0cF9jbG9jayBjYXBhYmlsaXR5ICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6OTk1OnN0YXRpYyBsb25nIGtzel9wdHBfZG9fYXV4X3dvcmsoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHApXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTk2LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo5OTc6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTk4LVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwMDItXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHRwX2RhdGEtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwMDM6XFx0cmV0ID0gX2tzel9wdHBfZ2V0dGltZShkZXYsIFxcdTAwMjZ0cyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAwNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAxNi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDE3OnN0YXRpYyBpbnQga3N6X3B0cF9zdGFydF9jbG9jayhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwMTgte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwMTk6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBcXHUwMDI2ZGV2LVxcdTAwM2VwdHBfZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDIwLVxcdGNvbnN0IHUxNiAqcmVncyA9IGRldi1cXHUwMDNlaW5mby1cXHUwMDNlcmVncztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwMzItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTAzMzppbnQga3N6X3B0cF9jbG9ja19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDM2LVxcdGNvbnN0IHUxNiAqcmVncyA9IGRldi1cXHUwMDNlaW5mby1cXHUwMDNlcmVncztcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDM3OlxcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwMzgtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwNDctXFx0cHRwX2RhdGEtXFx1MDAzZWNhcHMubWF4X2FkalxcdFxcdD0gS1NaX01BWF9EUklGVF9DT1JSO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwNDg6XFx0cHRwX2RhdGEtXFx1MDAzZWNhcHMuZ2V0dGltZTY0XFx0PSBrc3pfcHRwX2dldHRpbWU7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA0OTpcXHRwdHBfZGF0YS1cXHUwMDNlY2Fwcy5zZXR0aW1lNjRcXHQ9IGtzel9wdHBfc2V0dGltZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDUwOlxcdHB0cF9kYXRhLVxcdTAwM2VjYXBzLmFkamZpbmVcXHRcXHQ9IGtzel9wdHBfYWRqZmluZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDUxOlxcdHB0cF9kYXRhLVxcdTAwM2VjYXBzLmFkanRpbWVcXHRcXHQ9IGtzel9wdHBfYWRqdGltZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDUyOlxcdHB0cF9kYXRhLVxcdTAwM2VjYXBzLmRvX2F1eF93b3JrXFx0PSBrc3pfcHRwX2RvX2F1eF93b3JrO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwNTM6XFx0cHRwX2RhdGEtXFx1MDAzZWNhcHMuZW5hYmxlXFx0XFx0PSBrc3pfcHRwX2VuYWJsZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDU0OlxcdHB0cF9kYXRhLVxcdTAwM2VjYXBzLnZlcmlmeVxcdFxcdD0ga3N6X3B0cF92ZXJpZnlfcGluO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwNTUtXFx0cHRwX2RhdGEtXFx1MDAzZWNhcHMubl9waW5zXFx0XFx0PSBLU1pfUFRQX05fR1BJTztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwNTctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA1ODpcXHRyZXQgPSBrc3pfcHRwX3N0YXJ0X2Nsb2NrKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA1OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA2NS1cXHRcXHRzbnByaW50ZihwdHBfcGluLVxcdTAwM2VuYW1lLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwNjY6XFx0XFx0XFx0IHNpemVvZihwdHBfcGluLVxcdTAwM2VuYW1lKSwgXFxcImtzel9wdHBfcGluXyUwMmRcXFwiLCBpKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDY3LVxcdFxcdHB0cF9waW4tXFx1MDAzZWluZGV4ID0gaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwODgtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA4OTp2b2lkIGtzel9wdHBfY2xvY2tfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA5MC17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA5MS1cXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA5MjpcXHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9MTEwMD1zdGF0aWMgaW50IGtzel9yZWFkX3RzKHN0cnVjdCBrc3pfcG9ydCAqcG9ydCwgdTE2IHJlZywgdTMyICp0cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExMTktXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTEyMDpzdGF0aWMgaXJxcmV0dXJuX3Qga3N6X3B0cF9tc2dfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTIxLXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMTIyOlxcdHN0cnVjdCBrc3pfcHRwX2lycSAqcHRwbXNnX2lycSA9IGRldl9pZDtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTIzLVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjExNDc6c3RhdGljIGlycXJldHVybl90IGtzel9wdHBfaXJxX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTE0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTc5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjExODA6c3RhdGljIHZvaWQga3N6X3B0cF9pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTE4MS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTg2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjExODc6c3RhdGljIHZvaWQga3N6X3B0cF9pcnFfdW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExOTMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTE5NDpzdGF0aWMgdm9pZCBrc3pfcHRwX2lycV9idXNfbG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTE5NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjAwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMDE6c3RhdGljIHZvaWQga3N6X3B0cF9pcnFfYnVzX3N5bmNfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMTMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIxNDpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9jaGlwIGtzel9wdHBfaXJxX2NoaXAgPSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIxNS1cXHQubmFtZVxcdFxcdFxcdD0gXFxcImtzei1pcnFcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMTY6XFx0LmlycV9tYXNrXFx0XFx0PSBrc3pfcHRwX2lycV9tYXNrLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMTc6XFx0LmlycV91bm1hc2tcXHRcXHQ9IGtzel9wdHBfaXJxX3VubWFzayxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjE4OlxcdC5pcnFfYnVzX2xvY2tcXHRcXHQ9IGtzel9wdHBfaXJxX2J1c19sb2NrLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMTk6XFx0LmlycV9idXNfc3luY191bmxvY2tcXHQ9IGtzel9wdHBfaXJxX2J1c19zeW5jX3VubG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjIwLX07XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyMS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjIyOnN0YXRpYyBpbnQga3N6X3B0cF9pcnFfZG9tYWluX21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjIzLVxcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IGlycSwgaXJxX2h3X251bWJlcl90IGh3aXJxKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyNS1cXHRpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGQtXFx1MDAzZWhvc3RfZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIyNjpcXHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcXHUwMDI2a3N6X3B0cF9pcnFfY2hpcCwgaGFuZGxlX2xldmVsX2lycSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyNy1cXHRpcnFfc2V0X25vcHJvYmUoaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMzEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIzMjpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIGtzel9wdHBfaXJxX2RvbWFpbl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIzMzpcXHQubWFwXFx0PSBrc3pfcHRwX2lycV9kb21haW5fbWFwLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMzQtXFx0LnhsYXRlXFx0PSBpcnFfZG9tYWluX3hsYXRlX3R3b2NlbGwsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjM2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMzc6c3RhdGljIHZvaWQga3N6X3B0cF9tc2dfaXJxX2ZyZWUoc3RydWN0IGtzel9wb3J0ICpwb3J0LCB1OCBuKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMzgte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMzk6XFx0c3RydWN0IGtzel9wdHBfaXJxICpwdHBtc2dfaXJxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyNDAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyNDc6c3RhdGljIGludCBrc3pfcHRwX21zZ19pcnFfc2V0dXAoc3RydWN0IGtzel9wb3J0ICpwb3J0LCB1OCBuKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTI1Ni1cXHRzdHJ1Y3Qga3N6X2lycSAqcHRwaXJxID0gXFx1MDAyNnBvcnQtXFx1MDAzZXB0cGlycTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjU3OlxcdHN0cnVjdCBrc3pfcHRwX2lycSAqcHRwbXNnX2lycTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjU4LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjcwLVxcdHJldCA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKHB0cG1zZ19pcnEtXFx1MDAzZW51bSwgTlVMTCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjcxOlxcdFxcdFxcdFxcdCAgIGtzel9wdHBfbXNnX3RocmVhZF9mbiwgSVJRRl9PTkVTSE9ULFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyNzItXFx0XFx0XFx0XFx0ICAgcHRwbXNnX2lycS1cXHUwMDNlbmFtZSwgcHRwbXNnX2lycSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz0xMjc5PXN0YXRpYyBpbnQga3N6ODQ2M19wdHBfcG9ydF9pcnFfc2V0dXAoc3RydWN0IGtzel9pcnEgKnB0cGlycSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyODQtXFx0Y29uc3Qgc3RydWN0IGtzel9kZXZfb3BzICpvcHMgPSBwb3J0LVxcdTAwM2Vrc3pfZGV2LVxcdTAwM2VkZXZfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyODU6XFx0c3RydWN0IGtzel9wdHBfaXJxICpwdHBtc2dfaXJxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyODYtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMDUtXFx0XFx0cmV0ID0gcmVxdWVzdF90aHJlYWRlZF9pcnEocHRwbXNnX2lycS1cXHUwMDNlbnVtLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEzMDY6XFx0XFx0XFx0XFx0XFx0ICAga3N6X3B0cF9tc2dfdGhyZWFkX2ZuLCBJUlFGX09ORVNIT1QsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTMwNy1cXHRcXHRcXHRcXHRcXHQgICBwdHBtc2dfaXJxLVxcdTAwM2VuYW1lLCBwdHBtc2dfaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMTctXFx0d2hpbGUgKGktLSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMzE4OlxcdFxcdGtzel9wdHBfbXNnX2lycV9mcmVlKHBvcnQsIGkpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz0xMzIzPXN0YXRpYyB2b2lkIGtzejg0NjNfcHRwX3BvcnRfaXJxX3RlYXJkb3duKHN0cnVjdCBrc3pfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMjctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDI7IGkrKylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMzI4OlxcdFxcdGtzel9wdHBfbXNnX2lycV9mcmVlKHBvcnQsIGkpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMjktfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9MTMzMT1pbnQga3N6ODQ2M19wdHBfaXJxX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzNTUtXFx0XFx0XFx0XFx0XFx0XFx0ICBwdHBpcnEtXFx1MDAzZW5pcnFzLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEzNTY6XFx0XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2a3N6X3B0cF9pcnFfZG9tYWluX29wcyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzU3LVxcdFxcdFxcdFxcdFxcdFxcdCAgcHRwaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzNzAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTM3MTpcXHRyZXQgPSByZXF1ZXN0X3RocmVhZGVkX2lycShwdHBpcnEtXFx1MDAzZWlycV9udW0sIE5VTEwsIGtzel9wdHBfaXJxX3RocmVhZF9mbixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzcyLVxcdFxcdFxcdFxcdCAgIElSUUZfT05FU0hPVCwgcHRwaXJxLVxcdTAwM2VuYW1lLCBwdHBpcnEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9MTM4OD12b2lkIGtzejg0NjNfcHRwX2lycV9mcmVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0MDAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTQwMTppbnQga3N6X3B0cF9pcnFfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCB1OCBwKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0MDIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQyMi1cXHRwdHBpcnEtXFx1MDAzZWRvbWFpbiA9IGlycV9kb21haW5fY3JlYXRlX2xpbmVhcihkZXZfZndub2RlKGRldi1cXHUwMDNlZGV2KSwgcHRwaXJxLVxcdTAwM2VuaXJxcyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNDIzOlxcdFxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmtzel9wdHBfaXJxX2RvbWFpbl9vcHMsIHB0cGlycSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQyNC1cXHRpZiAoIXB0cGlycS1cXHUwMDNlZG9tYWluKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQzMi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNDMzOlxcdHJldCA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKHB0cGlycS1cXHUwMDNlaXJxX251bSwgTlVMTCwga3N6X3B0cF9pcnFfdGhyZWFkX2ZuLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0MzQtXFx0XFx0XFx0XFx0ICAgSVJRRl9PTkVTSE9ULCBwdHBpcnEtXFx1MDAzZW5hbWUsIHB0cGlycSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xNDM4LVxcdGZvciAoaXJxID0gMDsgaXJxIFxcdTAwM2MgcHRwaXJxLVxcdTAwM2VuaXJxczsgaXJxKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNDM5OlxcdFxcdHJldCA9IGtzel9wdHBfbXNnX2lycV9zZXR1cChwb3J0LCBpcnEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0NDAtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0NTctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTQ1ODp2b2lkIGtzel9wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCB1OCBwKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQ2NS1cXHRmb3IgKG4gPSAwOyBuIFxcdTAwM2MgcHRwaXJxLVxcdTAwM2VuaXJxczsgbisrKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE0NjY6XFx0XFx0a3N6X3B0cF9tc2dfaXJxX2ZyZWUocG9ydCwgbik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQ2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTE2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjE3OmVudW0ga3N6X3B0cF90b3VfbW9kZSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTgtXFx0S1NaX1BUUF9UT1VfSURMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTIxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjIyOnN0cnVjdCBrc3pfcHRwX2RhdGEge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTIzLVxcdHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBjYXBzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMzAtXFx0c3RydWN0IHRpbWVzcGVjNjQgY2xvY2tfdGltZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDozMTpcXHRlbnVtIGtzel9wdHBfdG91X21vZGUgdG91X21vZGU7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMzItXFx0c3RydWN0IHRpbWVzcGVjNjQgcGVyb3V0X3RhcmdldF90aW1lX2ZpcnN0OyAgLyogc3RhcnQgb2YgZmlyc3QgcHVsc2UgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjM4OmludCBrc3pfcHRwX2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMzktXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6NDA6dm9pZCBrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC00MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oPTU2PWJvb2wga3N6X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC01Ny1cXHRcXHQgICAgICAgdW5zaWduZWQgaW50IHR5cGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjU4OmludCBrc3pfcHRwX2lycV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHU4IHApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjU5OnZvaWQga3N6X3B0cF9pcnFfZnJlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHU4IHApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTYwLWludCBrc3o4NDYzX3B0cF9pcnFfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaD02MT12b2lkIGtzejg0NjNfcHRwX2lycV9mcmVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC02NC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDo2NTpzdHJ1Y3Qga3N6X3B0cF9kYXRhIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC02Ni1cXHQvKiBTZXJpYWxpemVzIGFsbCBvcGVyYXRpb25zIG9uIHRoZSBQVFAgaGFyZHdhcmUgY2xvY2sgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTY5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjcwOnN0YXRpYyBpbmxpbmUgaW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTc0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjc1OnN0YXRpYyBpbmxpbmUgdm9pZCBrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKSB7IH1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC03Ni1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDo3NzpzdGF0aWMgaW5saW5lIGludCBrc3pfcHRwX2lycV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHU4IHApXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtNzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtODEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6ODI6c3RhdGljIGlubGluZSB2b2lkIGtzel9wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCB1OCBwKSB7fVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTgzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz03Njg9c3RhdGljIGludCBsYW45Mzd4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtODYzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6ODY0OlxcdFxcdFxcdHJldCA9IGtzel9wdHBfaXJxX3NldHVwKGRzLCBkcC1cXHUwMDNlaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtODY1LVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTg2OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjg3MDpcXHRyZXQgPSBrc3pfcHRwX2Nsb2NrX3JlZ2lzdGVyKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTg3MS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTg5My1vdXRfcHRwX2Nsb2NrX3VucmVnaXN0ZXI6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo4OTQ6XFx0a3N6X3B0cF9jbG9ja191bnJlZ2lzdGVyKGRzKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDg6NDM6MzguOTQyOTI5MDg3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTEwMTE4MDA2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE1pY3JvY2hpcCBLU1ogU3dpdGNoIEJ1cyBBdHRhY2htZW50KipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBidXNlcyB0aGVzZSBNaWNyb2NoaXAgS1NaIHN3aXRjaGVzIGFyZSB0eXBpY2FsbHkgYXR0YWNoZWQgdG8uIExldCdzIGRpZyBpbi4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgdGhlIHJlbGV2YW50IGtlcm5lbCBzb3VyY2Ug4oCTIHNwZWNpZmljYWxseSwgSSdsbCBleGFtaW5lIHRoZSBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBvdmVydmlldyBvZiB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBob3cgdGhlc2Ugc3dpdGNoZXMgYXJlIGludGVncmF0ZWQuIEkgZXhwZWN0IHRvIGZpbmQgY2x1ZXMgYWJvdXQgc3VwcG9ydGVkIGJ1cyB0eXBlcyBhbmQgYW55IGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuIFRoaXMgaXMgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQgZm9yIHJldmVyc2UgZW5naW5lZXJpbmcgdGhlIGhhcmR3YXJlIGludGVyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcwNTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwODo0Mzo0NC4wNDQxMTA4NTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnVjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBLU1o4WFhYL0tTWjlYWFgvTEFOOTM3WCBzZXJpZXMgc3dpdGNoIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FcXG4gICA1OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19LU1pcXG4gICA2OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19OT05FXFxuICAgNzpcXHRcXHRzZWxlY3QgTkVUX0lFRUU4MDIxUV9IRUxQRVJTXFxuICAgODpcXHRcXHRzZWxlY3QgRENCXFxuICAgOTpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBNaWNyb2NoaXAgS1NaOCwgS1NaOSBhbmRcXG4gIDEyOlxcdFxcdCAgTEFOOTM3WCBzZXJpZXMgc3dpdGNoIGNoaXBzLCBiZWluZyBLU1o4ODYzLzg4NzMsXFxuICAxMzpcXHRcXHQgIEtTWjg4OTUvODg2NCwgS1NaODc5NC84Nzk1Lzg3NjUsXFxuICAxNDpcXHRcXHQgIEtTWjk0NzcvOTg5Ny85ODk2Lzk1NjcvODU2NywgS1NaOTg5My85NTYzLzg1NjMgYW5kXFxuICAxNTpcXHRcXHQgIExBTjkzNzAvOTM3MS85MzcyLzkzNzMvOTM3NC5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXFxuICAxODpcXHRcXHR0cmlzdGF0ZSBcXFwiS1NaIHNlcmllcyBJMkMgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXFx1MDAyNlxcdTAwMjYgSTJDXFxuICAyMDpcXHRcXHRzZWxlY3QgUkVHTUFQX0kyQ1xcbiAgMjE6XFx0XFx0aGVscFxcbiAgMjI6XFx0XFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaCBJMkMuXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJXFxuICAyNTpcXHRcXHR0cmlzdGF0ZSBcXFwiS1NaIHNlcmllcyBTUEkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuICAyNjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXFx1MDAyNlxcdTAwMjYgU1BJXFxuICAyNzpcXHRcXHRzZWxlY3QgUkVHTUFQX1NQSVxcbiAgMjg6XFx0XFx0aGVscFxcbiAgMjk6XFx0XFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaCBTUEkuXFxuICAzMDpcXHRcXG4gIDMxOlxcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXFxuICAzMjpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgUFRQIGNsb2NrIG9uIHRoZSBLU1o5NTYzL0xBTjkzN3ggRXRoZXJuZXQgU3dpdGNoXFxcIlxcbiAgMzM6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IFBUUF8xNTg4X0NMT0NLXFxuICAzNDpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT049bSB8fCBQVFBfMTU4OF9DTE9DSz15XFxuICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGltZXN0YW1waW5nIFxcdTAwMjYgUFRQIGNsb2NrIG1hbmlwdWxhdGlvbiBpblxcbiAgMzc6XFx0XFx0ICBLU1o4NTYzL0tTWjk1NjMvTEFOOTM3eCBzZXJpZXMgb2Ygc3dpdGNoZXMuIEtTWjk1NjMvS1NaODU2MyBzdXBwb3J0c1xcbiAgMzg6XFx0XFx0ICBvbmx5IG9uZSBzdGVwIHRpbWVzdGFtcGluZy4gTEFOOTM3eCBzd2l0Y2ggc3VwcG9ydHMgYm90aCBvbmUgc3RlcCBhbmRcXG4gIDM5OlxcdFxcdCAgdHdvIHN0ZXAgdGltZXN0YW1waW5nLlxcbiAgNDA6XFx0XFxuICA0MTpcXHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcXG4gIDQyOlxcdFxcdHRyaXN0YXRlIFxcXCJLU1ogc2VyaWVzIFNNSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDQzOlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTlxcbiAgNDQ6XFx0XFx0c2VsZWN0IE1ESU9fQklUQkFOR1xcbiAgNDU6XFx0XFx0aGVscFxcbiAgNDY6XFx0XFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaFxcbiAgNDc6XFx0XFx0ICBNaWNyb2NoaXAgU01JLiBJdCBzdXBwb3J0cyB0aGUgS1NaODg2MyBhbmQgS1NaODg3MyBzd2l0Y2guXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjQ0LjA0NDE4NTExN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjEwNDE4NzQ3ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTWljcm9jaGlwIERTQSBEcml2ZXIgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05gIGFuZCBpbW1lZGlhdGVseSBzZWUgd2UndmUgZ290IGEgZGVjZW50IHNwcmVhZCByZXByZXNlbnRlZCBoZXJlOiBJMkMsIFNQSSwgYW5kIFNNSSBpbnRlcmZhY2VzIGFyZSBhbGwgY292ZXJlZCBmb3IgdGhlIEtTWiBzZXJpZXMuIFRoYXQncyBhIHNvbGlkIHN0YXJ0LiBXZSdyZSBoaXR0aW5nIGEgZmV3IG9mIHRoZSBtb3JlIGNvbW1vbiBpbnRlcmNvbm5lY3RzIGZvciB0aGVzZSB0eXBlcyBvZiBzd2l0Y2hlcywgdGhlIEtTWjk0NzdfSTJDLCBLU1pfU1BJIGFuZCBLU1o4ODYzX1NNSSBpbXBsZW1lbnRhdGlvbnMuIEl0J3MgZ29vZCB0byBzZWUgc29tZSBiYXNpYyBkcml2ZXIgc3VwcG9ydCBmb3IgdGhvc2UgZGV2aWNlcy5cblxuTm93LCB0aG91Z2gsIEkgbmVlZCB0byBnZXQgYSBicm9hZGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgcGljdHVyZS4gQmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgY29tcGxldGVuZXNzLCBJIHNob3VsZCBxdWlja2x5IGRvIGEgc2FuaXR5IGNoZWNrIGluIHRoZSBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9gIGRpcmVjdG9yeS4gVGhlcmUgY291bGQgdmVyeSB3ZWxsIGJlIG90aGVyIE1pY3JvY2hpcCBkZXZpY2VzIG9yIGJ1cyBhdHRhY2htZW50cyBzdXBwb3J0ZWQgdGhlcmUgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhIGNvcm5lciBjYXNlLiBJIGhhdmUgdG8gbG9vayBkZWVwZXIgdG8gYmUgY2VydGFpbiBJIGhhdmUgdGhlIGxheSBvZiB0aGUgbGFuZC4gSXQncyB0aW1lIHRvIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxNzgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjU0LjQ2MjkzNTkyNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImtzejguY1wiLFxuICAgIFwia3N6OC5oXCIsXG4gICAgXCJrc3o4ODYzX3NtaS5jXCIsXG4gICAgXCJrc3o4X3JlZy5oXCIsXG4gICAgXCJrc3o5NDc3LmNcIixcbiAgICBcImtzejk0NzcuaFwiLFxuICAgIFwia3N6OTQ3N19hY2wuY1wiLFxuICAgIFwia3N6OTQ3N19pMmMuY1wiLFxuICAgIFwia3N6OTQ3N19yZWcuaFwiLFxuICAgIFwia3N6OTQ3N190Y19mbG93ZXIuY1wiLFxuICAgIFwia3N6X2NvbW1vbi5jXCIsXG4gICAgXCJrc3pfY29tbW9uLmhcIixcbiAgICBcImtzel9kY2IuY1wiLFxuICAgIFwia3N6X2RjYi5oXCIsXG4gICAgXCJrc3pfcHRwLmNcIixcbiAgICBcImtzel9wdHAuaFwiLFxuICAgIFwia3N6X3B0cF9yZWcuaFwiLFxuICAgIFwia3N6X3NwaS5jXCIsXG4gICAgXCJsYW45Mzd4LmhcIixcbiAgICBcImxhbjkzN3hfbWFpbi5jXCIsXG4gICAgXCJsYW45Mzd4X3JlZy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjU0LjQ2MzAwMTg0NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjUwNjEzOTU4MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFN3aXRjaCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIGNhbiBJIGdldCBhIGhhbmRsZSBvbiB0aGVzZSBzd2l0Y2hlcyB3aXRob3V0IG5lZWRpbmcgYWN0dWFsIGhhcmR3YXJlPyBDYW4gSSBpbnRlcmFjdCB3aXRoIHRoZW0gdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBJMkMgdXNlciBjbGllbnRzLCBhIG1vY2tlZCBidXMsIGRldmljZSB0cmVlIGVudHJpZXMsIEFDUEksIG9yIGV2ZW4gYSB2aXJ0dWFsIGJ1cz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZXZlbiBiZWdpbiB0byBwcm9iZSBvciBpbnN0YW50aWF0ZSB0aGVtIHdpdGhvdXQgcGh5c2ljYWxseSBpbnRlcmFjdGluZyB3aXRoIHRoZW0uXG5cbkhhbmcgb24gYSBzZWNvbmQsIGxldCdzIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBzeXprYWxsZXIgY2FwYWJpbGl0aWVzIGFuZCBnZW5lcmFsIHJlYWNoYWJpbGl0eSBjcml0ZXJpYS4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGV2ZW4gd29ydGggbXkgdGltZS4gVGhpcyBwYXJ0IGlzIGNyaXRpY2FsLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IHdoZW4gdGhlIGZ1enplciB3b3VsZCB0ZWxsIG1lIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuIEkgbmVlZCB0byBrbm93IHdoZW4gSSBjYW4gc2tpcCB0aGVzZSBkZXZpY2VzLiBJdCBzYXlzIHRoYXQgdGhlIHJldHVybiBzaG91bGQgYmUgXCJmYWxzZVwiIE9OTFkgaWYgdGhlIGNoYW5nZXMgZmFsbCBpbnRvIG9uZSBvciBtb3JlIGNhdGVnb3JpZXM6IG5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMsIG9yIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyAobWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgbmVlZCBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgdGhhdCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gQWxzbywgdGhlIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyAtLSBkcml2ZXJzIHRlYXJkb3duIGNhbGxiYWNrcyAocmVtb3ZlLCBzaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSB0aGF0IGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyBob3QtdW5wbHVnIG9mIFBDSSBvciBkcml2ZXIgdW5iaW5kaW5nLCBvciBjb2RlIHBhdGhzIGZvciBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cblJpZ2h0LCBzbyBjYW4gSTJDIG9yIFNQSSBkZXZpY2VzIGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseSBmcm9tIHVzZXIgc3BhY2UsIG1heWJlIHVzaW5nIHNvbWV0aGluZyBsaWtlIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtKi9uZXdfZGV2aWNlYD8gVGhhdCB3b3VsZCBiZSB1c2VmdWwuXG5cbkhtbSwgZXZlbiBpZiBJICpjYW4qIGluc3RhbnRpYXRlIGFuIEkyQyBkZXZpY2Ugd2l0aCBgbmV3X2RldmljZWAsIERTQSBzd2l0Y2hlcyBzZWVtIHRvIHJlcXVpcmUgYSBEU0EgdHJlZS9wbGF0Zm9ybSBkYXRhIG9yIERldmljZSBUcmVlIC8gT0Ygbm9kZSBiaW5kaW5nIHRvIGFuIGV0aGVybmV0IG1hc3RlciBkZXZpY2UgdmlhIGBkc2FfcmVnaXN0ZXJfc3dpdGNoYCEgSSBtdXN0IHVuZGVyc3RhbmQgdGhhdCBiaW5kaW5nIHRvIHN0YXJ0LlxuXG5XYWl0LCB3aGF0IGRvZXMgYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgIGFjdHVhbGx5ICpkbyo/IEFuZCB3aGF0IGFib3V0IGBrc3pfcHRwX2VuYWJsZV9wZXJvdXRgPyBUaGF0IGxvb2tzIHJlbGV2YW50IHRvby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdC5cblxuQW5kIGNhbiBga3N6OTQ3N19pMmNgIGFjdHVhbGx5IGJlIHByb2JlZCB1c2luZyBgbmV3X2RldmljZWA/IFRoYXQncyB3aGF0IEkgcmVhbGx5IG5lZWQgdG8ga25vdy5cblxuSSBndWVzcyBJJ2xsIGNoZWNrIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmNgIGFzIHdlbGwgYXMgYGtzel9zcGkuY2AgYW5kIGBrc3pfY29tbW9uLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIGhlcmUuIEkgbXVzdCByZXZpZXcgdGhlc2UgZHJpdmVycyBpbiBkZXRhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NzcwLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE1LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwODo0Mzo1OS41MjQzOTk3MTZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBNaWNyb2NoaXAgS1NaOTQ3NyBzZXJpZXMgcmVnaXN0ZXIgYWNjZXNzIHRocm91Z2ggSTJDXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjQgTWljcm9jaGlwIFRlY2hub2xvZ3kgSW5jLlxcbiAgIDY6XFx0ICovXFxuICAgNzpcXHRcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9pMmMuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4gIDEyOlxcdFxcbiAgMTM6XFx0I2luY2x1ZGUgXFxcImtzel9jb21tb24uaFxcXCJcXG4gIDE0OlxcdFxcbiAgMTU6XFx0S1NaX1JFR01BUF9UQUJMRShrc3o5NDc3LCBub3RfdXNlZCwgMTYsIDAsIDApO1xcbiAgMTY6XFx0XFxuICAxNzpcXHRzdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuICAxODpcXHR7XFxuICAxOTpcXHRcXHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqY2hpcDtcXG4gIDIwOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBcXHUwMDI2aTJjLVxcdTAwM2VkZXY7XFxuICAyMTpcXHRcXHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYztcXG4gIDIyOlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XFxuICAyMzpcXHRcXHRpbnQgaSwgcmV0O1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHRjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO1xcbiAgMjY6XFx0XFx0aWYgKCFjaGlwKVxcbiAgMjc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdGRldiA9IGtzel9zd2l0Y2hfYWxsb2MoXFx1MDAyNmkyYy1cXHUwMDNlZGV2LCBjaGlwLCBpMmMpO1xcbiAgMzA6XFx0XFx0aWYgKCFkZXYpXFxuICAzMTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0LyogU2F2ZSBjaGlwIGlkIHRvIGRvIHNwZWNpYWwgaW5pdGlhbGl6YXRpb24gd2hlbiBwcm9iaW5nLiAqL1xcbiAgMzQ6XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gY2hpcC1cXHUwMDNlY2hpcF9pZDtcXG4gIDM1OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBfX0tTWl9OVU1fUkVHTUFQUzsgaSsrKSB7XFxuICAzNjpcXHRcXHRcXHRyYyA9IGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXTtcXG4gIDM3OlxcdFxcdFxcdHJjLmxvY2tfYXJnID0gXFx1MDAyNmRldi1cXHUwMDNlcmVnbWFwX211dGV4O1xcbiAgMzg6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWdtYXBbaV0gPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhpMmMsIFxcdTAwMjZyYyk7XFxuICAzOTpcXHRcXHRcXHRpZiAoSVNfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSkge1xcbiAgNDA6XFx0XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNmkyYy1cXHUwMDNlZGV2LCBQVFJfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSxcXG4gIDQxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxcXG5cXFwiLFxcbiAgNDI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBrc3o5NDc3X3JlZ21hcF9jb25maWdbaV0udmFsX2JpdHMpO1xcbiAgNDM6XFx0XFx0XFx0fVxcbiAgNDQ6XFx0XFx0fVxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHRpZiAoaTJjLVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YSlcXG4gIDQ3OlxcdFxcdFxcdGRldi1cXHUwMDNlcGRhdGEgPSBpMmMtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbiAgNDg6XFx0XFxuICA0OTpcXHRcXHRkZXYtXFx1MDAzZWlycSA9IGkyYy1cXHUwMDNlaXJxO1xcbiAgNTA6XFx0XFxuICA1MTpcXHRcXHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdC8qIE1haW4gRFNBIGRyaXZlciBtYXkgbm90IGJlIHN0YXJ0ZWQgeWV0LiAqL1xcbiAgNTQ6XFx0XFx0aWYgKHJldClcXG4gIDU1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuICA1NjpcXHRcXG4gIDU3OlxcdFxcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIGRldik7XFxuICA1ODpcXHRcXG4gIDU5OlxcdFxcdHJldHVybiAwO1xcbiAgNjA6XFx0fVxcbiAgNjE6XFx0XFxuICA2MjpcXHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4gIDYzOlxcdHtcXG4gIDY0OlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0aWYgKGRldilcXG4gIDY3OlxcdFxcdFxcdGtzel9zd2l0Y2hfcmVtb3ZlKGRldik7XFxuICA2ODpcXHR9XFxuICA2OTpcXHRcXG4gIDcwOlxcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuICA3MTpcXHR7XFxuICA3MjpcXHRcXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGkyYyk7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdGlmICghZGV2KVxcbiAgNzU6XFx0XFx0XFx0cmV0dXJuO1xcbiAgNzY6XFx0XFxuICA3NzpcXHRcXHRrc3pfc3dpdGNoX3NodXRkb3duKGRldik7XFxuICA3ODpcXHRcXG4gIDc5OlxcdFxcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIE5VTEwpO1xcbiAgODA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwODo0Mzo1OS41MjQ0ODA4MzZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDk4NjQ3MzgwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRGV2aWNlIE1hdGNoaW5nIGluIHRoZSBLU1o5NDc3IERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIExpbmUgMjUgb2YgdGhlIGNvZGU6IGBjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO2AgYW5kIHRoZW4gdGhlIGltbWVkaWF0ZSBjaGVjayBgaWYgKCFjaGlwKSByZXR1cm4gLUVJTlZBTDtgLiBDbGFzc2ljIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gcGF0dGVybi4gSSdtIGFzc3VtaW5nIGBkZGV2YCBpcyB0aGUgZGV2aWNlIHN0cnVjdHVyZSBwYXNzZWQgdG8gdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoKWAgY2FsbC4gSXQncyBmZXRjaGluZyB0aGUgcmVsZXZhbnQgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIG1hdGNoaW5nIGVudHJ5IGZyb20gdGhlIGRyaXZlcidzIGRldmljZSB0YWJsZS4gU28sIHRvIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYW5kIHdoZXJlIHRoaXMgYGNoaXBgIHZhcmlhYmxlIGlzIHBvcHVsYXRlZCwgSSBuZWVkIHRvIHNlZSB0aGUgbWF0Y2ggdGFibGUgaXRzZWxmLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBnbyBsb29rIGF0IGBrc3o5NDc3X2kyYy5jYCDigJMgc3BlY2lmaWNhbGx5IHRoZSBkZXZpY2UgdGFibGUgZGVmaW5pdGlvbi4gVGhhdCB3aWxsIHRlbGwgbWUgd2hpY2ggZGV2aWNlcyB0aGlzIGRyaXZlciBjbGFpbXMgdG8gc3VwcG9ydCBhbmQsIGNyaXRpY2FsbHksIHdoYXQgZGF0YSBpcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBvZiB0aG9zZSBzdXBwb3J0ZWQgZGV2aWNlcywgd2hpY2ggaXMgd2hhdCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBpcyByZXRyaWV2aW5nLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZGV2aWNlIGlzIGlkZW50aWZpZWQgZHVyaW5nIHByb2JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkxMSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDg6NDQ6MDQuNTEwOTU2NDg4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MTpcXHRcXG4gIDgyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBrc3o5NDc3X2kyY19pZFtdID0ge1xcbiAgODM6XFx0XFx0eyAubmFtZSA9IFxcXCJrc3o5NDc3LXN3aXRjaFxcXCIgfSxcXG4gIDg0OlxcdFxcdHsgfVxcbiAgODU6XFx0fTtcXG4gIDg2OlxcdFxcbiAgODc6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGtzejk0NzdfaTJjX2lkKTtcXG4gIDg4OlxcdFxcbiAgODk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQga3N6OTQ3N19kdF9pZHNbXSA9IHtcXG4gIDkwOlxcdFxcdHtcXG4gIDkxOlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5NDc3XFxcIixcXG4gIDkyOlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTQ3N11cXG4gIDkzOlxcdFxcdH0sXFxuICA5NDpcXHRcXHR7XFxuICA5NTpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6OTg5NlxcXCIsXFxuICA5NjpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk4OTZdXFxuICA5NzpcXHRcXHR9LFxcbiAgOTg6XFx0XFx0e1xcbiAgOTk6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk4OTdcXFwiLFxcbiAxMDA6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk3XVxcbiAxMDE6XFx0XFx0fSxcXG4gMTAyOlxcdFxcdHtcXG4gMTAzOlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5ODkzXFxcIixcXG4gMTA0OlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5M11cXG4gMTA1OlxcdFxcdH0sXFxuIDEwNjpcXHRcXHR7XFxuIDEwNzpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6OTU2M1xcXCIsXFxuIDEwODpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk1NjNdXFxuIDEwOTpcXHRcXHR9LFxcbiAxMTA6XFx0XFx0e1xcbiAxMTE6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejg1NjNcXFwiLFxcbiAxMTI6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTYzXVxcbiAxMTM6XFx0XFx0fSxcXG4gMTE0OlxcdFxcdHtcXG4gMTE1OlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4NTY3XFxcIixcXG4gMTE2OlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODU2N11cXG4gMTE3OlxcdFxcdH0sXFxuIDExODpcXHRcXHR7XFxuIDExOTpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6OTU2N1xcXCIsXFxuIDEyMDpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk1NjddXFxuIDEyMTpcXHRcXHR9LFxcbiAxMjI6XFx0XFx0e1xcbiAxMjM6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjk2NDZcXFwiLFxcbiAxMjQ6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45NjQ2XVxcbiAxMjU6XFx0XFx0fSxcXG4gMTI2OlxcdFxcdHt9LFxcbiAxMjc6XFx0fTtcXG4gMTI4OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGtzejk0NzdfZHRfaWRzKTtcXG4gMTI5OlxcdFxcbiAxMzA6XFx0c3RhdGljIERFRklORV9TSU1QTEVfREVWX1BNX09QUyhrc3pfaTJjX3BtX29wcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDg6NDQ6MDQuNTExMDU0NzI4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjc2MjIxMjQ3MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBrc3o5NDc3LXN3aXRjaCBEcml2ZXIgSW5zdGFudGlhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGtzejk0NzdfaTJjX2lkYCBzdHJ1Y3R1cmUuIEhtbSwgaXQncyBkZWZpbmVkIGFzIGB7IC5uYW1lID0gXCJrc3o5NDc3LXN3aXRjaFwiIH1gLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyBob3cgdGhpcyBkZXZpY2UgaXMgaW5zdGFudGlhdGVkIHZpYSBJMkMgdXNpbmcgYG5ld19kZXZpY2VgLiBSaWdodCwgaWYgaXQncyAqbm90KiB1c2luZyBhbiBPRiBvciBBQ1BJIHN5c3RlbSwgdGhlIGNvZGUgZGVmYXVsdHMgdG8gdXNpbmcgYGkyY19tYXRjaF9kZXZpY2VgIHdpdGhpbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpYC4gQnV0IGhlcmUncyB0aGUga2lja2VyOiBga3N6OTQ3N19pMmNfaWRgICpkb2Vzbid0KiBoYXZlIGEgYC5kcml2ZXJfZGF0YWAgZmllbGQgc2V0IChvciBpdCdzIHNldCB0byAwLCB3aGljaCBmdW5jdGlvbmFsbHkgYW1vdW50cyB0byB0aGUgc2FtZSB0aGluZykuXG5cblRoaXMgbWVhbnMsIHdoZW4gYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgaXMgY2FsbGVkLCBpdCBzaG91bGQgcmV0dXJuIE5VTEwgYmVjYXVzZSBubyBtYXRjaCBkYXRhIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhcnRpY3VsYXIgSTJDIElELiBXYWl0LCB0aGF0J3MgZXhhY3RseSB3aGF0IHNob3VsZCBoYXBwZW4hIElmIHRoZSBtYXRjaCBkYXRhIGlzbid0IHNldCwgaXQgcmV0dXJucyBOVUxMLlxuXG5Ib3dldmVyLCB0aGUgbW9yZSBwcmVzc2luZyBxdWVzdGlvbiBpczogd2hhdCBhY3R1YWxseSBoYXBwZW5zIGR1cmluZyB0aGUgY2FsbCB0byBga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpYD8gVGhhdCdzIHdoZXJlIHRoZSByZWFsIG1hZ2ljIGhhcHBlbnMuLi4gb3IgZG9lc24ndCEgSSBuZWVkIHRvIGRpZyBpbnRvIGBrc3pfY29tbW9uLmNgIHRvIHNlZSBob3cgdGhpcyBhbGwgY29ubmVjdHMuIExldCdzIHNlZSBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgZGV2aWNlLCBnaXZlbiB0aGlzIGluaXRpYWwgaWRlbnRpZmljYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDA4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDg6NDQ6MTIuMTMzMTgxMzQ5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY2Mjk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQga3N6X3N3aXRjaF9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM4ODk9c3RhdGljIGludCBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzg5My1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozODk0OmludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzg5NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD00Mjc9c3RydWN0IGtzel9kZXZpY2UgKmtzel9zd2l0Y2hfYWxsb2Moc3RydWN0IGRldmljZSAqYmFzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQyOS1cXHRcXHRcXHRcXHQgICAgdm9pZCAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDMwOmludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMS12b2lkIGtzel9zd2l0Y2hfcmVtb3ZlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwODo0NDoxMi4xNzg4NTE0MjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTU5MjA0MjAwMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCBga3N6X3N3aXRjaF9yZWdpc3RlcmAgZnVuY3Rpb24gZGVmaW5pdGlvbi4gSSdtIGludGVyZXN0ZWQgaW4gaG93IHRoZXNlIE1pY3JvY2hpcCBLU1ogc3dpdGNoZXMgYXJlIGhhbmRsZWQgaW4gdGhlIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY2AgZmlsZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSByZWdpc3RyYXRpb24gbG9naWMgc2hvdWxkIGJlIGRlZmluZWQsIHNvIGxldCdzIHN0YXJ0IHRoZXJlLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBob3cgdGhlIHN3aXRjaCBpcyBpbml0aWFsaXplZCwgcHJvYmVkLCBhbmQgaW50ZWdyYXRlZCB3aXRoIHRoZSBEU0EgZnJhbWV3b3JrLiBIb3BlZnVsbHksIHRoaXMgZnVuY3Rpb24gcmV2ZWFscyB0aGUgY3JpdGljYWwgcGFydHMgb2Ygd2hhdCBtYWtlcyB0aGVzZSBzcGVjaWZpYyBjaGlwcyB0aWNrIHdpdGhpbiB0aGUgbGFyZ2VyIG5ldHdvcmsgc3RhY2suIFVuZGVyc3RhbmRpbmcgdGhpcyByZWdpc3RyYXRpb24gcHJvY2VzcyBpcyBlc3NlbnRpYWwgZm9yIG1lIHRvIGZ1bGx5IGdyYXNwIHRoZSBkcml2ZXIncyBvdmVyYWxsIGRlc2lnbiBhbmQgd2hlcmUgSSBtaWdodCBjb250cmlidXRlLCBvciB0cm91Ymxlc2hvb3QsIGlmIG5lZWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MDQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwODo0NDoyOC4wOTkyNzM0NTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM4OTQsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM4OTQ6XFx0aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4zODk1OlxcdHtcXG4zODk2OlxcdFxcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICppbmZvO1xcbjM4OTc6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpwb3J0cztcXG4zODk4OlxcdFxcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7XFxuMzg5OTpcXHRcXHR1bnNpZ25lZCBpbnQgcG9ydF9udW07XFxuMzkwMDpcXHRcXHRpbnQgcmV0O1xcbjM5MDE6XFx0XFx0aW50IGk7XFxuMzkwMjpcXHRcXG4zOTAzOlxcdFxcdGRldi1cXHUwMDNlcmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldi1cXHUwMDNlZGV2LCBcXFwicmVzZXRcXFwiLFxcbjM5MDQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBHUElPRF9PVVRfTE9XKTtcXG4zOTA1OlxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZXNldF9ncGlvKSlcXG4zOTA2OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGRldi1cXHUwMDNlcmVzZXRfZ3Bpbyk7XFxuMzkwNzpcXHRcXG4zOTA4OlxcdFxcdGlmIChkZXYtXFx1MDAzZXJlc2V0X2dwaW8pIHtcXG4zOTA5OlxcdFxcdFxcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShkZXYtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcIm1pY3JvY2hpcCxrc3o4NDYzXFxcIikpIHtcXG4zOTEwOlxcdFxcdFxcdFxcdHJldCA9IGtzejg0NjNfY29uZmlndXJlX3N0cmFwc19zcGkoZGV2KTtcXG4zOTExOlxcdFxcdFxcdFxcdGlmIChyZXQpXFxuMzkxMjpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjM5MTM6XFx0XFx0XFx0fVxcbjM5MTQ6XFx0XFxuMzkxNTpcXHRcXHRcXHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoZGV2LVxcdTAwM2VyZXNldF9ncGlvLCAxKTtcXG4zOTE2OlxcdFxcdFxcdHVzbGVlcF9yYW5nZSgxMDAwMCwgMTIwMDApO1xcbjM5MTc6XFx0XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cXHUwMDNlcmVzZXRfZ3BpbywgMCk7XFxuMzkxODpcXHRcXHRcXHRtc2xlZXAoMTAwKTtcXG4zOTE5OlxcdFxcbjM5MjA6XFx0XFx0XFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGRldi1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwibWljcm9jaGlwLGtzejg0NjNcXFwiKSkge1xcbjM5MjE6XFx0XFx0XFx0XFx0cmV0ID0ga3N6ODQ2M19yZWxlYXNlX3N0cmFwc19zcGkoZGV2KTtcXG4zOTIyOlxcdFxcdFxcdFxcdGlmIChyZXQpXFxuMzkyMzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjM5MjQ6XFx0XFx0XFx0fVxcbjM5MjU6XFx0XFx0fVxcbjM5MjY6XFx0XFxuMzkyNzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWRldl9tdXRleCk7XFxuMzkyODpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXJlZ21hcF9tdXRleCk7XFxuMzkyOTpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuMzkzMDpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXZsYW5fbXV0ZXgpO1xcbjM5MzE6XFx0XFxuMzkzMjpcXHRcXHRyZXQgPSBrc3pfc3dpdGNoX2RldGVjdChkZXYpO1xcbjM5MzM6XFx0XFx0aWYgKHJldClcXG4zOTM0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzkzNTpcXHRcXG4zOTM2OlxcdFxcdGluZm8gPSBrc3pfbG9va3VwX2luZm8oZGV2LVxcdTAwM2VjaGlwX2lkKTtcXG4zOTM3OlxcdFxcdGlmICghaW5mbylcXG4zOTM4OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjM5Mzk6XFx0XFxuMzk0MDpcXHRcXHQvKiBVcGRhdGUgdGhlIGNvbXBhdGlibGUgaW5mbyB3aXRoIHRoZSBwcm9iZWQgb25lICovXFxuMzk0MTpcXHRcXHRkZXYtXFx1MDAzZWluZm8gPSBpbmZvO1xcbjM5NDI6XFx0XFxuMzk0MzpcXHRcXHRkZXZfaW5mbyhkZXYtXFx1MDAzZWRldiwgXFxcImZvdW5kIHN3aXRjaDogJXMsIHJldiAlaVxcXFxuXFxcIixcXG4zOTQ0OlxcdFxcdFxcdCBkZXYtXFx1MDAzZWluZm8tXFx1MDAzZWRldl9uYW1lLCBkZXYtXFx1MDAzZWNoaXBfcmV2KTtcXG4zOTQ1OlxcdFxcbjM5NDY6XFx0XFx0cmV0ID0ga3N6X2NoZWNrX2RldmljZV9pZChkZXYpO1xcbjM5NDc6XFx0XFx0aWYgKHJldClcXG4zOTQ4OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzk0OTpcXHRcXG4zOTUwOlxcdFxcdGRldi1cXHUwMDNlZGV2X29wcyA9IGRldi1cXHUwMDNlaW5mby1cXHUwMDNlb3BzO1xcbjM5NTE6XFx0XFxuMzk1MjpcXHRcXHRyZXQgPSBkZXYtXFx1MDAzZWRldl9vcHMtXFx1MDAzZWluaXQoZGV2KTtcXG4zOTUzOlxcdFxcdGlmIChyZXQpXFxuMzk1NDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjM5NTU6XFx0XFxuMzk1NjpcXHRcXHRkZXYtXFx1MDAzZXBvcnRzID0gZGV2bV9remFsbG9jKGRldi1cXHUwMDNlZGV2LFxcbjM5NTc6XFx0XFx0XFx0XFx0XFx0ICBkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXBvcnRfY250ICogc2l6ZW9mKHN0cnVjdCBrc3pfcG9ydCksXFxuMzk1ODpcXHRcXHRcXHRcXHRcXHQgIEdGUF9LRVJORUwpO1xcbjM5NTk6XFx0XFx0aWYgKCFkZXYtXFx1MDAzZXBvcnRzKVxcbjM5NjA6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMzk2MTpcXHRcXG4zOTYyOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXBvcnRfY250OyBpKyspIHtcXG4zOTYzOlxcdFxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXBvcnRzW2ldLm1pYi5zdGF0czY0X2xvY2spO1xcbjM5NjQ6XFx0XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2Vwb3J0c1tpXS5taWIuY250X211dGV4KTtcXG4zOTY1OlxcdFxcdFxcdGRldi1cXHUwMDNlcG9ydHNbaV0ubWliLmNvdW50ZXJzID1cXG4zOTY2OlxcdFxcdFxcdFxcdGRldm1fa3phbGxvYyhkZXYtXFx1MDAzZWRldixcXG4zOTY3OlxcdFxcdFxcdFxcdFxcdCAgICAgc2l6ZW9mKHU2NCkgKiAoZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VtaWJfY250ICsgMSksXFxuMzk2ODpcXHRcXHRcXHRcXHRcXHQgICAgIEdGUF9LRVJORUwpO1xcbjM5Njk6XFx0XFx0XFx0aWYgKCFkZXYtXFx1MDAzZXBvcnRzW2ldLm1pYi5jb3VudGVycylcXG4zOTcwOlxcdFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjM5NzE6XFx0XFxuMzk3MjpcXHRcXHRcXHRkZXYtXFx1MDAzZXBvcnRzW2ldLmtzel9kZXYgPSBkZXY7XFxuMzk3MzpcXHRcXHRcXHRkZXYtXFx1MDAzZXBvcnRzW2ldLm51bSA9IGk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ0OjI4LjA5OTQzMjU1OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxODgxNTc4NzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgY29kZSBzbmlwcGV0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTd2l0Y2ggRGV0ZWN0aW9uKipcblxuT2theSwgc28gSSdtIHNlZWluZyBgcmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtgIC0gdGhhdCdzIGludGVyZXN0aW5nLiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24gd2l0aGluIHRoYXQgYGtzel9zd2l0Y2hfZGV0ZWN0YCBmdW5jdGlvbi4gR2l2ZW4gdGhlIG5hbWluZywgaXQncyBvYnZpb3VzbHkgaW52b2x2ZWQgaW4gc29tZSBzb3J0IG9mIHN3aXRjaCBkZXRlY3Rpb24gZm9yIHRoZSBkZXZpY2UsIGBkZXZgLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgaXQgYWNoaWV2ZXMgdGhpcyBkZXRlY3Rpb24uIEkgbmVlZCB0byBzZWUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBrc3pfc3dpdGNoX2RldGVjdGAgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMsIGFueSByZWdpc3RlcnMgaXQgbWlnaHQgYmUgcmVhZGluZyBvciB3cml0aW5nLCBhbmQgdGhlIHNwZWNpZmljIGNyaXRlcmlhIGl0J3MgdXNpbmcgdG8gZGV0ZXJtaW5lIHRoZSBzd2l0Y2ggc3RhdHVzLiBJcyBpdCBwb2xsaW5nIHNvbWV0aGluZz8gQW4gaW50ZXJydXB0PyBJcyBpdCBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9uPyBXaGF0IGFyZSB0aGUgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBhbmQgd2hhdCBkbyB0aGV5IHNpZ25pZnk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gZGV0ZXJtaW5lIGhvdyByb2J1c3QgYW5kIHJlbGlhYmxlIHRoaXMgZGV0ZWN0aW9uIG1lY2hhbmlzbSBpcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MjcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwODo0NDoyOS45ODEwMTM0N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxODA2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6X3N3aXRjaF9kZXRlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yODk0PXZvaWQga3N6X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI5MDUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjkwNjpzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjkwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zODk0PWludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTMxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM5MzI6XFx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTMzLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ0OjMwLjAyNjIwODg3OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozODgxODM4MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgXCJMZXQncyByZWFkIGBrc3pfc3dpdGNoX2RldGVjdGAsXCIgc3VtbWFyaXplZCBhcyBhIGZpcnN0LXBlcnNvbiB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIENvZGU6IGtzel9zd2l0Y2hfZGV0ZWN0KipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIEkgc2VlIGBrc3pfc3dpdGNoX2RldGVjdGAgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGEgc3dpdGNoIGRldGVjdGlvbiBmdW5jdGlvbi4gTGlrZWx5IGRlYWxpbmcgd2l0aCBwaHlzaWNhbCBsYXllciAoUEhZKSBjaGFyYWN0ZXJpc3RpY3MsIG9yIHBlcmhhcHMgYSBsYXllciBjbG9zZXIgdG8gdGhlIE1BQyBpbiBhIHR5cGljYWwgc3dpdGNoIGRyaXZlciBmb3IgYSBLU1ogY2hpcHNldC5cIiBJJ20gZXhwZWN0aW5nIHRoaXMgZnVuY3Rpb24gdG8gYmUgdGhlIGdhdGV3YXkgZm9yIGZpZ3VyaW5nIG91dCB0aGUgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4gSXQgY291bGQgYmUgcmVzcG9uc2libGUgZm9yIGlkZW50aWZ5aW5nIHRoZSBzcGVjaWZpYyBLU1ogc3dpdGNoIG1vZGVsIG9yIHZhcmlhbnQgYmVpbmcgdXNlZC4gSSdtIGltYWdpbmluZyBpdCdsbCBiZSBsb29raW5nIGZvciBzcGVjaWZpYyByZWdpc3RlciB2YWx1ZXMsIGJpdCBwYXR0ZXJucywgb3IgcGVyaGFwcyBwcm9iaW5nIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgdG8gZGV0ZXJtaW5lIHRoZSBwcmVzZW5jZSBvZiBhIHN3aXRjaCBhbmQgaXRzIHJlbGV2YW50IGZlYXR1cmVzLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXJlIHdpbGwgYmUgYSByZWxpYW5jZSBvbiBoYXJkd2FyZSBzcGVjaWZpY3MsIHNvIEkgbmVlZCB0byBiZSByZWFkeSBmb3IgdmVuZG9yLXNwZWNpZmljIHF1aXJrcy4gSXQncyBwcm9iYWJseSBnb2luZyB0byBpbnZvbHZlIGEgc2VyaWVzIG9mIHJlZ2lzdGVyIHJlYWRzIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMgdG8gbWFrZSBpdHMgYXNzZXNzbWVudHMuIEkgYW50aWNpcGF0ZSBhIGZhaXIgYml0IG9mIGNvbmRpdGlvbmFsIGxvZ2ljIHdpdGhpbiB0byBoYW5kbGUgZGlmZmVyZW50IHN3aXRjaCByZXZpc2lvbnMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0J3Mgc2VlIGlmIG15IGluaXRpYWwgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QhIFRoaXMgc2hvdWxkIGJlIGludGVyZXN0aW5nOyBJIGFsd2F5cyBlbmpveSBnZXR0aW5nIGludG8gdGhlIGxvdy1sZXZlbCBkZXRhaWxzIG9mIGhhcmR3YXJlIGludGVyYWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDgwMywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ0OjMzLjkwODA0OTYwOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjk1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjkwNixcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjkwNjpcXHRzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuMjkwNzpcXHR7XFxuMjkwODpcXHRcXHR1OCBpZDEsIGlkMiwgaWQ0O1xcbjI5MDk6XFx0XFx0dTE2IGlkMTY7XFxuMjkxMDpcXHRcXHR1MzIgaWQzMjtcXG4yOTExOlxcdFxcdGludCByZXQ7XFxuMjkxMjpcXHRcXG4yOTEzOlxcdFxcdC8qIHJlYWQgY2hpcCBpZCAqL1xcbjI5MTQ6XFx0XFx0cmV0ID0ga3N6X3JlYWQxNihkZXYsIFJFR19DSElQX0lEMCwgXFx1MDAyNmlkMTYpO1xcbjI5MTU6XFx0XFx0aWYgKHJldClcXG4yOTE2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjkxNzpcXHRcXG4yOTE4OlxcdFxcdGlkMSA9IEZJRUxEX0dFVChTV19GQU1JTFlfSURfTSwgaWQxNik7XFxuMjkxOTpcXHRcXHRpZDIgPSBGSUVMRF9HRVQoU1dfQ0hJUF9JRF9NLCBpZDE2KTtcXG4yOTIwOlxcdFxcbjI5MjE6XFx0XFx0c3dpdGNoIChpZDEpIHtcXG4yOTIyOlxcdFxcdGNhc2UgS1NaODRfRkFNSUxZX0lEOlxcbjI5MjM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gS1NaODQ2M19DSElQX0lEO1xcbjI5MjQ6XFx0XFx0XFx0YnJlYWs7XFxuMjkyNTpcXHRcXHRjYXNlIEtTWjg3X0ZBTUlMWV9JRDpcXG4yOTI2OlxcdFxcdFxcdGlmIChpZDIgPT0gS1NaODdfQ0hJUF9JRF85NSkge1xcbjI5Mjc6XFx0XFx0XFx0XFx0dTggdmFsO1xcbjI5Mjg6XFx0XFxuMjkyOTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4Nzk1X0NISVBfSUQ7XFxuMjkzMDpcXHRcXG4yOTMxOlxcdFxcdFxcdFxcdGtzel9yZWFkOChkZXYsIEtTWjhfUE9SVF9TVEFUVVNfMCwgXFx1MDAyNnZhbCk7XFxuMjkzMjpcXHRcXHRcXHRcXHRpZiAodmFsIFxcdTAwMjYgS1NaOF9QT1JUX0ZJQkVSX01PREUpXFxuMjkzMzpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4NzY1X0NISVBfSUQ7XFxuMjkzNDpcXHRcXHRcXHR9IGVsc2UgaWYgKGlkMiA9PSBLU1o4N19DSElQX0lEXzk0KSB7XFxuMjkzNTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4Nzk0X0NISVBfSUQ7XFxuMjkzNjpcXHRcXHRcXHR9IGVsc2Uge1xcbjI5Mzc6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMjkzODpcXHRcXHRcXHR9XFxuMjkzOTpcXHRcXHRcXHRicmVhaztcXG4yOTQwOlxcdFxcdGNhc2UgS1NaODhfRkFNSUxZX0lEOlxcbjI5NDE6XFx0XFx0XFx0aWYgKGlkMiA9PSBLU1o4OF9DSElQX0lEXzYzKVxcbjI5NDI6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gS1NaODhYM19DSElQX0lEO1xcbjI5NDM6XFx0XFx0XFx0ZWxzZVxcbjI5NDQ6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMjk0NTpcXHRcXHRcXHRicmVhaztcXG4yOTQ2OlxcdFxcdGNhc2UgS1NaODg5NV9GQU1JTFlfSUQ6XFxuMjk0NzpcXHRcXHRcXHRpZiAoaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NSB8fFxcbjI5NDg6XFx0XFx0XFx0ICAgIGlkMiA9PSBLU1o4ODk1X0NISVBfSURfOTVSKVxcbjI5NDk6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gS1NaODg5NV9DSElQX0lEO1xcbjI5NTA6XFx0XFx0XFx0ZWxzZVxcbjI5NTE6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMjk1MjpcXHRcXHRcXHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBSRUdfS1NaODg2NF9DSElQX0lELCBcXHUwMDI2aWQ0KTtcXG4yOTUzOlxcdFxcdFxcdGlmIChyZXQpXFxuMjk1NDpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI5NTU6XFx0XFx0XFx0aWYgKGlkNCBcXHUwMDI2IFNXX0tTWjg4NjQpXFxuMjk1NjpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4ODY0X0NISVBfSUQ7XFxuMjk1NzpcXHRcXHRcXHRicmVhaztcXG4yOTU4OlxcdFxcdGRlZmF1bHQ6XFxuMjk1OTpcXHRcXHRcXHRyZXQgPSBrc3pfcmVhZDMyKGRldiwgUkVHX0NISVBfSUQwLCBcXHUwMDI2aWQzMik7XFxuMjk2MDpcXHRcXHRcXHRpZiAocmV0KVxcbjI5NjE6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yOTYyOlxcdFxcbjI5NjM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX3JldiA9IEZJRUxEX0dFVChTV19SRVZfSURfTSwgaWQzMik7XFxuMjk2NDpcXHRcXHRcXHRpZDMyIFxcdTAwMjY9IH4weEZGO1xcbjI5NjU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ0OjMzLjkwODQyMjI4OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0NTA2NjMyNDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgU3dpdGNoIERldGVjdGlvbiBcdTAwMjYgRnV6emluZyBDaGFsbGVuZ2VzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBrc3pfc3dpdGNoX2RldGVjdGAgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcGh5c2ljYWwgc3dpdGNoLiBJdCdzIHJlYWRpbmcgcmVnaXN0ZXJzIHVzaW5nIGBrc3pfcmVhZDE2YCBhbmQgYGtzel9yZWFkMzJgIG92ZXIgSTJDL1NQSSwgcmlnaHQ/IEFuZCBpZiB0aGUgaGFyZHdhcmUgaXNuJ3QgdGhlcmUsIGl0J3Mgc3VwcG9zZWQgdG8gZmFpbCBhbmQgcmV0dXJuIC1FTk9ERVYuIFN0YW5kYXJkIHN0dWZmLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBJJ20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzLCBhbmQgdGhhdCdzIHdoZXJlIHRoaW5ncyBnZXQgdHJpY2t5LlxuXG5DYW4gSSBldmVuICpyZWFjaCogdGhpcyBEU0EtcmVsYXRlZCBjb2RlLCBvciBhbnkgRFNBIHN3aXRjaCBkcml2ZXIgZm9yIHRoYXQgbWF0dGVyLCBpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAgbGlrZSBRRU1VIG9yIGV2ZW4gR29vZ2xlIENvbXB1dGUgRW5naW5lPyBBbmQgSSdtIHN0YXJ0aW5nIHRvIGdldCBhIHNpbmtpbmcgZmVlbGluZyB0aGF0IHRoZSBhbnN3ZXIgaXMgbm8uIEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBhbnkgRFNBIHN3aXRjaCBkcml2ZXJzIGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBUaGF0J3MgYSBtYWpvciByb2FkYmxvY2suXG5cblNvLCBpZiBoYXJkd2FyZSBlbXVsYXRpb24gaXMgb3V0LCB3aGF0IGFib3V0IGEgdmlydHVhbCBvciBtb2NrIERTQSBkcml2ZXI/IERvZXMgdGhlIExpbnV4IGtlcm5lbCBldmVuIGhhdmUgYSBiYXNpYywgdGVzdC1mb2N1c2VkIG1vY2sgZHJpdmVyIGZvciBEU0Egc3BlY2lmaWNhbGx5PyBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L2RzYS9gIGRpcmVjdG9yeS4gR290dGEgc2VlIHdoYXQncyBpbiB0aGVyZS4gSSdtIGdvaW5nIHRvIG5lZWQgdG8gZGlnIGRlZXBlciBpbiB0aGF0IGRpcmVjdG9yeSB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlcmUgZXhpc3RzIGEgd2F5IHRvIHRlc3QgdGhpcyB3aXRob3V0IGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjE0NCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ0OjM4LjQxNTA1OTAyOFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L2RzYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJiY21fc2YyLmNcIixcbiAgICBcImJjbV9zZjIuaFwiLFxuICAgIFwiYmNtX3NmMl9jZnAuY1wiLFxuICAgIFwiYmNtX3NmMl9yZWdzLmhcIixcbiAgICBcImRzYV9sb29wLmNcIixcbiAgICBcImtzODk5NS5jXCIsXG4gICAgXCJsYW45MzAzLWNvcmUuY1wiLFxuICAgIFwibGFuOTMwMy5oXCIsXG4gICAgXCJsYW45MzAzX2kyYy5jXCIsXG4gICAgXCJsYW45MzAzX21kaW8uY1wiLFxuICAgIFwibXQ3NTMwLW1kaW8uY1wiLFxuICAgIFwibXQ3NTMwLW1taW8uY1wiLFxuICAgIFwibXQ3NTMwLmNcIixcbiAgICBcIm10NzUzMC5oXCIsXG4gICAgXCJtdDc2MjguY1wiLFxuICAgIFwibXY4OGU2MDYwLmNcIixcbiAgICBcIm12ODhlNjA2MC5oXCIsXG4gICAgXCJyem4xX2E1cHN3LmNcIixcbiAgICBcInJ6bjFfYTVwc3cuaFwiLFxuICAgIFwidml0ZXNzZS12c2M3M3h4LWNvcmUuY1wiLFxuICAgIFwidml0ZXNzZS12c2M3M3h4LXBsYXRmb3JtLmNcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC1zcGkuY1wiLFxuICAgIFwidml0ZXNzZS12c2M3M3h4LmhcIixcbiAgICBcInl0OTIxeC5jXCIsXG4gICAgXCJ5dDkyMXguaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJiNTNcIixcbiAgICBcImhpcnNjaG1hbm5cIixcbiAgICBcImxhbnRpcVwiLFxuICAgIFwibWljcm9jaGlwXCIsXG4gICAgXCJtdjg4ZTZ4eHhcIixcbiAgICBcIm14bDg2Mnh4XCIsXG4gICAgXCJuZXRjXCIsXG4gICAgXCJvY2Vsb3RcIixcbiAgICBcInFjYVwiLFxuICAgIFwicmVhbHRla1wiLFxuICAgIFwic2phMTEwNVwiLFxuICAgIFwieHJzNzAweFwiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ0OjM4LjQxNTIwNjU3OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1NzU1Njg3OTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBNaWNyb2NoaXAgS1NaIFBUUCBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmNgLCB3aGljaCBpcyB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggUFRQIGRyaXZlci4gVGhpcyBpc24ndCB0aGUgbG9vcGJhY2sgZHJpdmVyIChgZHNhX2xvb3AuY2ApLCBidXQgc3BlY2lmaWNhbGx5IHRhcmdldHMgYE5FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFBgLiBUaGlzIGlzIG9ubHkgYnVpbHQgZm9yIE1pY3JvY2hpcCBLU1ogc3dpdGNoZXMsIHRoZSBLU1o4eHh4LCBLU1o5eHh4LCBhbmQgTEFOOTM3eCBmYW1pbGllcy4gVGhlc2UgYXJlIGhhcmR3YXJlIGV0aGVybmV0IHN3aXRjaCBjaGlwcywgYW5kIHRoZXkgbmVlZCBhIHJlYWwgU1BJLCBJMkMsIG9yIFNNSSBjb25uZWN0aW9uIHRvIHRoZSBBU0lDLlxuXG5Ob3csIGxldCdzIGdvIHRocm91Z2ggdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTcGVjaWZpY2FsbHksIFNlY3Rpb24gMiwgdGhlIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlXCIgcGFydC4gVGhpcyBpcyBrZXkuIFdlIG9ubHkgcmV0dXJuIGBmYWxzZWAgaWYgdGhlIGNvZGUgY2hhbmdlIGZhbGxzICpzdHJpY3RseSogaW50byBvbmUgb2YgdGhvc2UgbmVnYXRpdmUgY3JpdGVyaWEuIExldCdzIHNlZS4uLlxuXG5JcyBpdCBub24ta2VybmVsIG9yIG5vbi1leGVjdXRhYmxlPyBOby5cblxuU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlPyBCaW5nbyEgVGhpcyBsb29rcyBsaWtlIGl0LiBNaWNyb2NoaXAgc3dpdGNoZXMgYXJlIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIG5lZWRpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGlzIHNlZW1zIHRvIGJlIHRoZSBjYXNlIGhlcmUuXG5cblVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocz8gTm8sIHRoaXMgY29kZSBpcyBub3QgdGllZCB0byBhIGRyaXZlciB0ZWFyZG93biBvciB1bnVzdWFsIGFyY2hpdGVjdHVyZS5cblxuQnV0IHdhaXQsIHdoYXQgYWJvdXQgdGhvc2UgdmlydHVhbCBidXNlcyBpbiBzeXprYWxsZXI/IFRoZSBwaGlsb3NvcGh5IG1lbnRpb25zIGRyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBhcmUgd29ydGggZnV6emluZy4gT2theSwgc28gS1NaIHN3aXRjaGVzIHVzZSBJMkMsIFNQSSwgb3IgU01JLiBDYW4gYW55IG9mIHRob3NlIGJ1c2VzIGJlIHJlYWNoZWQgdGhyb3VnaCBhIFVTQiBnYWRnZXQgaW4gc3l6a2FsbGVyPyBOby4gVGhpcyBpcyBhbiBldGhlcm5ldCBzd2l0Y2ggY2hpcCBjb25uZWN0ZWQgdG8gYW4gU29DIHZpYSBhbiBJMkMgb3IgU1BJIGJ1cy4gRXZlbiBpZiB0aGVyZSB3YXMgYW4gSTJDIGRldmljZSBub2RlIGNyZWF0ZWQgaW4gYSBzeXprYWxsZXIgVk0sIGBrc3pfc3dpdGNoX2RldGVjdGAgYXR0ZW1wdHMgdG8gcmVhZCByZWdpc3RlcnMgZGlyZWN0bHkgZnJvbSB0aGUgcGh5c2ljYWwgY2hpcCBhbmQgd2lsbCBmYWlsLCBzaW5jZSB0aGVyZSdzIG5vIGVtdWxhdGVkIEtTWiBoYXJkd2FyZS4gVGhpcyBpcyBhIGRlYWQgZW5kLiBGdXJ0aGVybW9yZSwgdGhlIFBUUCBjbG9jayByZWdpc3RyYXRpb24gYW5kIHRoZSBwYXRjaGVkIGNvZGUgYXJlIG9ubHkgcmVhY2hhYmxlIGFmdGVyIHN1Y2Nlc3NmdWwgc3dpdGNoIHNldHVwLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSB0aGUgRFNBIGNvcmUgd2hlbiB0aGUgc3dpdGNoIGlzIGJvdW5kIHRvIGEgbWFzdGVyIG5ldHdvcmsgZGV2aWNlIC0gc29tZXRoaW5nIHRoYXQgaXMgdXN1YWxseSBkZWZpbmVkIGJ5IGEgRGV2aWNlIFRyZWUgYW5kIHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgYXJlIHRoZXJlIGFueSBtb2NrIG9yIHRlc3QgaGFybmVzc2VzIGZvciBLU1ogZGV2aWNlcz8gTm9wZS4gTm90aGluZyB1c2VmdWwgaGVyZS5cblxuU28sIHRoZSBjb25jbHVzaW9uIGlzIHByZXR0eSBjbGVhci4gVGhpcyBwYXRjaCBtb2RpZmllcyBjb2RlIGluIGBrc3pfcHRwLmNgIGZvciBNaWNyb2NoaXAgS1NaIHN3aXRjaGVzLiBUaGlzIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gUUVNVSBhbmQgR0NFLCBhcyBmYXIgYXMgSSBrbm93LCBkbyBub3QgZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBoYXJkd2FyZSBzd2l0Y2ggY2hpcHMuIFRoZXJlZm9yZSwgaXQncyBhIGBXb3J0aEZ1enppbmc9ZmFsc2VgIHNpdHVhdGlvbi5cblxuSnVzdCB0byBkb3VibGUgY2hlY2sgbXlzZWxmLCB0aGUgcGF0Y2ggbW9kaWZpZXMgUFRQIHBlcmlvZGljIG91dHB1dCBoYW5kbGluZyAoYGtzel9wdHBfZW5hYmxlX3Blcm91dGAsIGBrc3pfcHRwX3Jlc3RhcnRfcGVyb3V0YCkgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcmVhbCBoYXJkd2FyZSBjb25uZWN0ZWQgYnkgU1BJLCBJMkMsIG9yIFNNSSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIFFFTVUgb3IgY2xvdWQgVk1zLCBtYWtpbmcgdGhpcyBjb2RlIHVucmVhY2hhYmxlLlxuXG5FdmVyeXRoaW5nIGxvb2tzIGdvb2QgYW5kIGNvbnNpc3RlbnQgd2l0aCB0aGUgaW5zdHJ1Y3Rpb25zLlxuTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjk5MSwiT3V0cHV0VG9rZW5zIjoxNDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MDEsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ1OjM1Ljk3MjA5MDM0OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBlcmlvZGljIG91dHB1dCBoYW5kbGluZyAoa3N6X3B0cF9lbmFibGVfcGVyb3V0IGFuZCBrc3pfcHRwX3Jlc3RhcnRfcGVyb3V0KSBpbiB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNaWNyb2NoaXAgS1NaOHh4eC9LU1o5eHh4L0xBTjkzN3ggc3dpdGNoIGhhcmR3YXJlIChpbnRlcmZhY2VkIHZpYSBTUEksIEkyQywgb3IgU01JKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsIGVudmlyb25tZW50cywgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBlcmlvZGljIG91dHB1dCBoYW5kbGluZyAoa3N6X3B0cF9lbmFibGVfcGVyb3V0IGFuZCBrc3pfcHRwX3Jlc3RhcnRfcGVyb3V0KSBpbiB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNaWNyb2NoaXAgS1NaOHh4eC9LU1o5eHh4L0xBTjkzN3ggc3dpdGNoIGhhcmR3YXJlIChpbnRlcmZhY2VkIHZpYSBTUEksIEkyQywgb3IgU01JKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsIGVudmlyb25tZW50cywgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ1OjM1Ljk3MjEzMTA0OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2j8ss[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-14 08:41:57 +0000 UTC FinishedAt: 2026-09-14 08:45:36 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGVyaW9kaWMgb3V0cHV0IGhhbmRsaW5nIChrc3pfcHRwX2VuYWJsZV9wZXJvdXQgYW5kIGtzel9wdHBfcmVzdGFydF9wZXJvdXQpIGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1pY3JvY2hpcCBLU1o4eHh4L0tTWjl4eHgvTEFOOTM3eCBzd2l0Y2ggaGFyZHdhcmUgKGludGVyZmFjZWQgdmlhIFNQSSwgSTJDLCBvciBTTUkpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwODo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGI2NzY1YTM4ZDE2MDk4MGNhNGM0NDUyZjlhY2ZiMTA1YzgwNjQzMWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAwODo0MzozMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jXG5pbmRleCAzOWNjNzBkNjU5MDBiLi40ZjkyNGRmOWUzMmJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jXG5AQCAtMjIyLDYgJiM0MzsyMjIsOCBAQCBzdGF0aWMgaW50IGtzel9wdHBfZW5hYmxlX3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbiYjNDM7XHRwdHBfZGF0YS1cdTAwM2VwZXJvdXRfZmxhZ3MgPSByZXF1ZXN0LVx1MDAzZWZsYWdzO1xuJiM0MztcdHB0cF9kYXRhLVx1MDAzZXBlcm91dF9pbmRleCA9IHJlcXVlc3QtXHUwMDNlaW5kZXg7XG4gXHRwdHBfZGF0YS1cdTAwM2VwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3QudHZfc2VjICA9IHJlcXVlc3QtXHUwMDNlc3RhcnQuc2VjO1xuIFx0cHRwX2RhdGEtXHUwMDNlcGVyb3V0X3RhcmdldF90aW1lX2ZpcnN0LnR2X25zZWMgPSByZXF1ZXN0LVx1MDAzZXN0YXJ0Lm5zZWM7XG4gXG5AQCAtNzk1LDggJiM0Mzs3OTcsOCBAQCBzdGF0aWMgaW50IGtzel9wdHBfcmVzdGFydF9wZXJvdXQoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbiBcdHJlcXVlc3Quc3RhcnQubnNlYyA9IG5leHQudHZfbnNlYztcbiBcdHJlcXVlc3QucGVyaW9kLnNlYyAgPSBwdHBfZGF0YS1cdTAwM2VwZXJvdXRfcGVyaW9kLnR2X3NlYztcbiBcdHJlcXVlc3QucGVyaW9kLm5zZWMgPSBwdHBfZGF0YS1cdTAwM2VwZXJvdXRfcGVyaW9kLnR2X25zZWM7XG4tXHRyZXF1ZXN0LmluZGV4ID0gMDtcbi1cdHJlcXVlc3QuZmxhZ3MgPSAwO1xuJiM0MztcdHJlcXVlc3QuaW5kZXggPSBwdHBfZGF0YS1cdTAwM2VwZXJvdXRfaW5kZXg7XG4mIzQzO1x0cmVxdWVzdC5mbGFncyA9IHB0cF9kYXRhLVx1MDAzZXBlcm91dF9mbGFncztcbiBcbiBcdHJldHVybiBrc3pfcHRwX2VuYWJsZV9wZXJvdXQoZGV2LCBcdTAwMjZyZXF1ZXN0LCAxKTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaFxuaW5kZXggNzA2N2VjOWJkMWU2Zi4uZGE2YTJlZmIyM2Q3MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaFxuQEAgLTMxLDYgJiM0MzszMSw4IEBAIHN0cnVjdCBrc3pfcHRwX2RhdGEge1xuIFx0ZW51bSBrc3pfcHRwX3RvdV9tb2RlIHRvdV9tb2RlO1xuIFx0c3RydWN0IHRpbWVzcGVjNjQgcGVyb3V0X3RhcmdldF90aW1lX2ZpcnN0OyAgLyogc3RhcnQgb2YgZmlyc3QgcHVsc2UgKi9cbiBcdHN0cnVjdCB0aW1lc3BlYzY0IHBlcm91dF9wZXJpb2Q7XG4mIzQzO1x0dW5zaWduZWQgaW50IHBlcm91dF9mbGFncztcbiYjNDM7XHR1bnNpZ25lZCBpbnQgcGVyb3V0X2luZGV4O1xuIH07XG4gXG4gaW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwODo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwZXJpb2RpYyBvdXRwdXQgaGFuZGxpbmcgKGtzel9wdHBfZW5hYmxlX3Blcm91dCBhbmQga3N6X3B0cF9yZXN0YXJ0X3Blcm91dCkgaW4gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWljcm9jaGlwIEtTWjh4eHgvS1NaOXh4eC9MQU45Mzd4IHN3aXRjaCBoYXJkd2FyZSAoaW50ZXJmYWNlZCB2aWEgU1BJLCBJMkMsIG9yIFNNSSkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjY3NjVhMzhkMTYwOTgwY2E0YzQ0NTJmOWFjZmIxMDVjODA2NDMxYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDE0IDA4OjQzOjMwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYwppbmRleCAzOWNjNzBkNjU5MDBiLi40ZjkyNGRmOWUzMmJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYwpAQCAtMjIyLDYgJiM0MzsyMjIsOCBAQCBzdGF0aWMgaW50IGtzel9wdHBfZW5hYmxlX3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LAogCQlyZXR1cm4gMDsKIAl9CiAKJiM0MzsJcHRwX2RhdGEtJmd0O3Blcm91dF9mbGFncyA9IHJlcXVlc3QtJmd0O2ZsYWdzOwomIzQzOwlwdHBfZGF0YS0mZ3Q7cGVyb3V0X2luZGV4ID0gcmVxdWVzdC0mZ3Q7aW5kZXg7CiAJcHRwX2RhdGEtJmd0O3Blcm91dF90YXJnZXRfdGltZV9maXJzdC50dl9zZWMgID0gcmVxdWVzdC0mZ3Q7c3RhcnQuc2VjOwogCXB0cF9kYXRhLSZndDtwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3QudHZfbnNlYyA9IHJlcXVlc3QtJmd0O3N0YXJ0Lm5zZWM7CiAKQEAgLTc5NSw4ICYjNDM7Nzk3LDggQEAgc3RhdGljIGludCBrc3pfcHRwX3Jlc3RhcnRfcGVyb3V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpCiAJcmVxdWVzdC5zdGFydC5uc2VjID0gbmV4dC50dl9uc2VjOwogCXJlcXVlc3QucGVyaW9kLnNlYyAgPSBwdHBfZGF0YS0mZ3Q7cGVyb3V0X3BlcmlvZC50dl9zZWM7CiAJcmVxdWVzdC5wZXJpb2QubnNlYyA9IHB0cF9kYXRhLSZndDtwZXJvdXRfcGVyaW9kLnR2X25zZWM7Ci0JcmVxdWVzdC5pbmRleCA9IDA7Ci0JcmVxdWVzdC5mbGFncyA9IDA7CiYjNDM7CXJlcXVlc3QuaW5kZXggPSBwdHBfZGF0YS0mZ3Q7cGVyb3V0X2luZGV4OwomIzQzOwlyZXF1ZXN0LmZsYWdzID0gcHRwX2RhdGEtJmd0O3Blcm91dF9mbGFnczsKIAogCXJldHVybiBrc3pfcHRwX2VuYWJsZV9wZXJvdXQoZGV2LCAmYW1wO3JlcXVlc3QsIDEpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaAppbmRleCA3MDY3ZWM5YmQxZTZmLi5kYTZhMmVmYjIzZDcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaApAQCAtMzEsNiAmIzQzOzMxLDggQEAgc3RydWN0IGtzel9wdHBfZGF0YSB7CiAJZW51bSBrc3pfcHRwX3RvdV9tb2RlIHRvdV9tb2RlOwogCXN0cnVjdCB0aW1lc3BlYzY0IHBlcm91dF90YXJnZXRfdGltZV9maXJzdDsgIC8qIHN0YXJ0IG9mIGZpcnN0IHB1bHNlICovCiAJc3RydWN0IHRpbWVzcGVjNjQgcGVyb3V0X3BlcmlvZDsKJiM0MzsJdW5zaWduZWQgaW50IHBlcm91dF9mbGFnczsKJiM0MzsJdW5zaWduZWQgaW50IHBlcm91dF9pbmRleDsKIH07CiAKIGludCBrc3pfcHRwX2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWljcm9jaGlwIEtTWiBEU0EgU3dpdGNoIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgcGF0Y2ggdG91Y2hlcyBga3N6X3B0cC5jYCBhbmQgYGtzel9wdHAuaGAgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9gIGRpcmVjdG9yeS4gUmlnaHQsIHRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbG9va2luZyBhdCB0aGUgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgaW1wbGVtZW50YXRpb24gd2l0aGluIHRoYXQgZHJpdmVyLCBzaW5jZSBpdCYjMzk7cyBga3N6X3B0cC4qYCBmaWxlcy4KCk15IG5leHQgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeS4gRG9lcyB0aGlzIGZ1bmN0aW9uYWxpdHkgcmVseSBvbiBzcGVjaWZpYyBNaWNyb2NoaXAgS1NaIHN3aXRjaCBoYXJkd2FyZT8gQ2FuIEkgZXZlbiB0ZXN0IHRoaXMgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBvciBtYXliZSBhY2Nlc3NpYmxlIHRocm91Z2ggYSB2aXJ0dWFsIGJ1cyBvciBVU0IgY29ubmVjdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBpbiBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9gIHRvIHNlZSBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZCBhbmQgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUuIEkmIzM5O2xsIHVzZSBncmVwIG9yIGNvZGUgc2VhcmNoIHRvIHBpbnBvaW50IHJlbGV2YW50IGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2tzel9wdHAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MDUgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU9OD1pZmRlZiBDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo5Omtzel9zd2l0Y2gtb2JqcyAmIzQzOz0ga3N6X3B0cC5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTEwLWVuZGlmXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjM4NT1zdGF0aWMgaW50IGtzejg0NjNfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0ODAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDgxOlx0XHRyZXQgPSBrc3pfcHRwX2Nsb2NrX3JlZ2lzdGVyKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0ODItXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTA2LVx0aWYgKGRldi1cdTAwM2VpcnEgXHUwMDNlIDApXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTA3Olx0XHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjUwOC1mcmVlX3B0cF9pcnE6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjUxOD1zdGF0aWMgdm9pZCBrc3o4NDYzX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTIyLVx0aWYgKGRldi1cdTAwM2VpcnEgXHUwMDNlIDApIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI1MjM6XHRcdGtzel9wdHBfY2xvY2tfdW5yZWdpc3Rlcihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTI0LVx0XHRrc3o4NDYzX3B0cF9pcnFfZnJlZShkcyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjY0NT1zdGF0aWMgaW50IGtzejhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3NjktXHRcdFx0aWYgKGRldi1cdTAwM2VpbmZvLVx1MDAzZXB0cF9jYXBhYmxlKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNzcwOlx0XHRcdFx0cmV0ID0ga3N6X3B0cF9pcnFfc2V0dXAoZHMsIGRwLVx1MDAzZWluZGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3NzEtXHRcdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3NzctXHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI3Nzg6XHRcdHJldCA9IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjc3OS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI4MDMtXHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyODA0Olx0XHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjgwNS1wb3J0X3JlbGVhc2U6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjgwOC1cdFx0XHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyODA5Olx0XHRcdFx0a3N6X3B0cF9pcnFfZnJlZShkcywgZHAtXHUwMDNlaW5kZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjgxMC1waXJxX3JlbGVhc2U6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MTY3MD1zdGF0aWMgaW50IGtzejk0Nzdfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE3NzUtXHRcdFx0aWYgKGRldi1cdTAwM2VpbmZvLVx1MDAzZXB0cF9jYXBhYmxlKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzoxNzc2Olx0XHRcdFx0cmV0ID0ga3N6X3B0cF9pcnFfc2V0dXAoZHMsIGRwLVx1MDAzZWluZGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE3NzctXHRcdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE3ODMtXHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjE3ODQ6XHRcdHJldCA9IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTc4NS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE4MDktXHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzoxODEwOlx0XHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTgxMS1wb3J0X3JlbGVhc2U6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTgxNC1cdFx0XHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzoxODE1Olx0XHRcdFx0a3N6X3B0cF9pcnFfZnJlZShkcywgZHAtXHUwMDNlaW5kZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTgxNi1waXJxX3JlbGVhc2U6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzItI2luY2x1ZGUgXCYjMzQ7a3N6X2RjYi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMzojaW5jbHVkZSBcJiMzNDtrc3pfcHRwLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM0LSNpbmNsdWRlIFwmIzM0O2tzejguaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTI1Njc9dm9pZCBrc3pfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1NzItXHRpZiAoZGV2LVx1MDAzZWluZm8tXHUwMDNlcHRwX2NhcGFibGUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNTczOlx0XHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjU3NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTc3LVx0XHRcdGlmIChkZXYtXHUwMDNlaW5mby1cdTAwM2VwdHBfY2FwYWJsZSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjI1Nzg6XHRcdFx0XHRrc3pfcHRwX2lycV9mcmVlKGRzLCBkcC1cdTAwM2VpbmRleCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNTc5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTIxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6MjI6I2luY2x1ZGUgXCYjMzQ7a3N6X3B0cC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD0xNDQ9c3RydWN0IGtzel9pcnEge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTE1NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjE1NjpzdHJ1Y3Qga3N6X3B0cF9pcnEge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMTU3LVx0c3RydWN0IGtzel9wb3J0ICpwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTE2OT1zdHJ1Y3Qga3N6X3BvcnQge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTE5OC1cdHN0cnVjdCBrc3pfaXJxIHB0cGlycTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjE5OTpcdHN0cnVjdCBrc3pfcHRwX2lycSBwdHBtc2dfaXJxWzNdO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjAwLVx0a3RpbWVfdCB0c3RhbXBfbXNnO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTIwNj1zdHJ1Y3Qga3N6X2RldmljZSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjQ1LVx0c3RydWN0IGtzel9pcnEgZ2lycTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjI0NjpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgcHRwX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yNDctXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTUtI2luY2x1ZGUgXCYjMzQ7a3N6X2NvbW1vbi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNjojaW5jbHVkZSBcJiMzNDtrc3pfcHRwLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE3OiNpbmNsdWRlIFwmIzM0O2tzel9wdHBfcmVnLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTk6I2RlZmluZSBwdHBfY2Fwc190b19kYXRhKGQpIGNvbnRhaW5lcl9vZigoZCksIHN0cnVjdCBrc3pfcHRwX2RhdGEsIGNhcHMpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yMC0jZGVmaW5lIHB0cF9kYXRhX3RvX2tzel9kZXYoZCkgY29udGFpbmVyX29mKChkKSwgc3RydWN0IGtzel9kZXZpY2UsIHB0cF9kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTQzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NDQ6c3RhdGljIGludCBrc3pfcHRwX3RvdV9ncGlvKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy00NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNjUtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo2NjpzdGF0aWMgaW50IGtzel9wdHBfdG91X3Jlc2V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHU4IHVuaXQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy02Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODgtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4OTpzdGF0aWMgaW50IGtzel9wdHBfdG91X3B1bHNlX3ZlcmlmeSh1NjQgcHVsc2VfbnMpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy05MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTAzOnN0YXRpYyBpbnQga3N6X3B0cF90b3VfdGFyZ2V0X3RpbWVfc2V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDQtXHRcdFx0XHQgICAgICAgc3RydWN0IHRpbWVzcGVjNjQgY29uc3QgKnRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMzpzdGF0aWMgaW50IGtzel9wdHBfdG91X3N0YXJ0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHU4IHVuaXQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE1MDpzdGF0aWMgaW50IGtzel9wdHBfY29uZmlndXJlX3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTUxLVx0XHRcdFx0ICAgIHUzMiBjeWNsZV93aWR0aF9ucywgdTMyIHB1bHNlX3dpZHRoX25zLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE3OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE3OTpcdHJldCA9IGtzel9wdHBfdG91X3RhcmdldF90aW1lX3NldChkZXYsIHRhcmdldF90aW1lKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE4MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTg1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTg2OnN0YXRpYyBpbnQga3N6X3B0cF9lbmFibGVfcGVyb3V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xODctXHRcdFx0XHQgc3RydWN0IHB0cF9wZXJvdXRfcmVxdWVzdCBjb25zdCAqcmVxdWVzdCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xODkte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTkwOlx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBcdTAwMjZkZXYtXHUwMDNlcHRwX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xOTEtXHR1NjQgcmVxX3B1bHNlX3dpZHRoX25zO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTIxNS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjIxNjpcdHJldCA9IGtzel9wdHBfdG91X3Jlc2V0KGRldiwgcmVxdWVzdC1cdTAwM2VpbmRleCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yMTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI0OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjI1MDpcdHJldCA9IGtzel9wdHBfdG91X3B1bHNlX3ZlcmlmeShwdWxzZV93aWR0aF9ucyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNTEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI1My1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjI1NDpcdHJldCA9IGtzel9wdHBfY29uZmlndXJlX3Blcm91dChkZXYsIGN5Y2xlX3dpZHRoX25zLCBwdWxzZV93aWR0aF9ucyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI1NS1cdFx0XHRcdCAgICAgICBcdTAwMjZwdHBfZGF0YS1cdTAwM2VwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3QsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjU5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MjYwOlx0cmV0ID0ga3N6X3B0cF90b3VfZ3BpbyhkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjYxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNjMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoyNjQ6XHRyZXQgPSBrc3pfcHRwX3RvdV9zdGFydChkZXYsIHJlcXVlc3QtXHUwMDNlaW5kZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjY1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNzItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoyNzM6c3RhdGljIGludCBrc3pfcHRwX2VuYWJsZV9tb2RlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNzQte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjc1LVx0c3RydWN0IGtzel90YWdnZXJfZGF0YSAqdGFnZ2VyX2RhdGEgPSBrc3pfdGFnZ2VyX2RhdGEoZGV2LVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjI3NjpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhID0gXHUwMDI2ZGV2LVx1MDAzZXB0cF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjc3LVx0Y29uc3QgdTE2ICpyZWdzID0gZGV2LVx1MDAzZWluZm8tXHUwMDNlcmVncztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz0zMDI9aW50IGtzejg0NjNfZ2V0X3RzX2luZm8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0zMDUtXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjMwNjpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMzA3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTMzMD1pbnQga3N6X2dldF90c19pbmZvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBrZXJuZWxfZXRodG9vbF90c19pbmZvICp0cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0zMzItXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjMzMzpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMzM0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTM3MT1zdGF0aWMgaW50IGtzejg0NjNfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTQxNC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjQxNTpcdHJldHVybiBrc3pfcHRwX2VuYWJsZV9tb2RlKGRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy00MTYtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTQzNz1zdGF0aWMgaW50IGtzel9zZXRfaHd0c3RhbXBfY29uZmlnKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNTA2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NTA3Olx0cmV0dXJuIGtzel9wdHBfZW5hYmxlX21vZGUoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTUwOC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9NTI5PXN0YXRpYyBrdGltZV90IGtzel90c3RhbXBfcmVjb25zdHJ1Y3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldiwga3RpbWVfdCB0c3RhbXApXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNTMxLVx0c3RydWN0IHRpbWVzcGVjNjQgcHRwX2Nsb2NrX3RpbWU7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo1MzI6XHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTUzMy1cdHN0cnVjdCB0aW1lc3BlYzY0IGRpZmY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9NTk4PXZvaWQga3N6X3BvcnRfdHh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy02NDgtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo2NDk6c3RhdGljIHZvaWQga3N6X3B0cF90eHRzdGFtcF9za2Ioc3RydWN0IGtzel9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTY1MC1cdFx0XHRcdCBzdHJ1Y3Qga3N6X3BvcnQgKnBydCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz02OTI9dm9pZCBrc3pfcG9ydF9kZWZlcnJlZF94bWl0KHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzExLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzEyOlx0a3N6X3B0cF90eHRzdGFtcF9za2IoZGV2LCBwcnQsIGNsb25lKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTcxMy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03MTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo3MTc6c3RhdGljIGludCBfa3N6X3B0cF9nZXR0aW1lKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTcxOC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzQ3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzQ4OnN0YXRpYyBpbnQga3N6X3B0cF9nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03NDkte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzUwOlx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03NTEtXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gcHRwX2RhdGFfdG9fa3N6X2RldihwdHBfZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzU0LVx0bXV0ZXhfbG9jayhcdTAwMjZwdHBfZGF0YS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjc1NTpcdHJldCA9IF9rc3pfcHRwX2dldHRpbWUoZGV2LCB0cyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03NTYtXHRtdXRleF91bmxvY2soXHUwMDI2cHRwX2RhdGEtXHUwMDNlbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzYwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzYxOnN0YXRpYyBpbnQga3N6X3B0cF9yZXN0YXJ0X3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzYyLXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjc2MzpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhID0gXHUwMDI2ZGV2LVx1MDAzZXB0cF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzY0LVx0czY0IG5vd19ucywgZmlyc3RfbnMsIHBlcmlvZF9ucywgbmV4dF9ucztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03NzItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo3NzM6XHRyZXQgPSBfa3N6X3B0cF9nZXR0aW1lKGRldiwgXHUwMDI2bm93KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTc3NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODAyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6ODAzOlx0cmV0dXJuIGtzel9wdHBfZW5hYmxlX3Blcm91dChkZXYsIFx1MDAyNnJlcXVlc3QsIDEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODA0LX1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTgwNS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjgwNjpzdGF0aWMgaW50IGtzel9wdHBfc2V0dGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTgwNy1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04MDgte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6ODA5Olx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04MTAtXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gcHRwX2RhdGFfdG9fa3N6X2RldihwdHBfZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODM3LVx0Y2FzZSBLU1pfUFRQX1RPVV9QRVJPVVQ6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4Mzg6XHRcdHJldCA9IGtzel9wdHBfcmVzdGFydF9wZXJvdXQoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTgzOS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04NTQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4NTU6c3RhdGljIGludCBrc3pfcHRwX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg1Ni17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4NTc6XHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YSA9IHB0cF9jYXBzX3RvX2RhdGEocHRwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg1OC1cdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04OTQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4OTU6c3RhdGljIGludCBrc3pfcHRwX2FkanRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg5Ni17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4OTc6XHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YSA9IHB0cF9jYXBzX3RvX2RhdGEocHRwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg5OC1cdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy05NDAtXHRjYXNlIEtTWl9QVFBfVE9VX1BFUk9VVDpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjk0MTpcdFx0cmV0ID0ga3N6X3B0cF9yZXN0YXJ0X3Blcm91dChkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTQyLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk1Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjk1NzpzdGF0aWMgaW50IGtzel9wdHBfZW5hYmxlKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTU4LVx0XHRcdCAgc3RydWN0IHB0cF9jbG9ja19yZXF1ZXN0ICpyZXEsIGludCBvbilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk1OS17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo5NjA6XHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YSA9IHB0cF9jYXBzX3RvX2RhdGEocHRwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk2MS1cdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy05NjYtXHRcdG11dGV4X2xvY2soXHUwMDI2cHRwX2RhdGEtXHUwMDNlbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo5Njc6XHRcdHJldCA9IGtzel9wdHBfZW5hYmxlX3Blcm91dChkZXYsIFx1MDAyNnJlcS1cdTAwM2VwZXJvdXQsIG9uKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk2OC1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnB0cF9kYXRhLVx1MDAzZWxvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk3Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjk3NzpzdGF0aWMgaW50IGtzel9wdHBfdmVyaWZ5X3BpbihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgdW5zaWduZWQgaW50IHBpbixcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk3OC1cdFx0XHQgICAgICBlbnVtIHB0cF9waW5fZnVuY3Rpb24gZnVuYywgdW5zaWduZWQgaW50IGNoYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTk0LS8qICBGdW5jdGlvbiBpcyBwb2ludGVyIHRvIHRoZSBkb19hdXhfd29yayBpbiB0aGUgcHRwX2Nsb2NrIGNhcGFiaWxpdHkgKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjk5NTpzdGF0aWMgbG9uZyBrc3pfcHRwX2RvX2F1eF93b3JrKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTk2LXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjk5NzpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhID0gcHRwX2NhcHNfdG9fZGF0YShwdHApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTk4LVx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IHB0cF9kYXRhX3RvX2tzel9kZXYocHRwX2RhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwMDItXHRtdXRleF9sb2NrKFx1MDAyNnB0cF9kYXRhLVx1MDAzZWxvY2spO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTAwMzpcdHJldCA9IF9rc3pfcHRwX2dldHRpbWUoZGV2LCBcdTAwMjZ0cyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDA0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDE2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTAxNzpzdGF0aWMgaW50IGtzel9wdHBfc3RhcnRfY2xvY2soc3RydWN0IGtzel9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwMTgte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTAxOTpcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhID0gXHUwMDI2ZGV2LVx1MDAzZXB0cF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAyMC1cdGNvbnN0IHUxNiAqcmVncyA9IGRldi1cdTAwM2VpbmZvLVx1MDAzZXJlZ3M7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAzMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwMzM6aW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAzNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAzNi1cdGNvbnN0IHUxNiAqcmVncyA9IGRldi1cdTAwM2VpbmZvLVx1MDAzZXJlZ3M7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDM3Olx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDM4LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDQ3LVx0cHRwX2RhdGEtXHUwMDNlY2Fwcy5tYXhfYWRqXHRcdD0gS1NaX01BWF9EUklGVF9DT1JSO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA0ODpcdHB0cF9kYXRhLVx1MDAzZWNhcHMuZ2V0dGltZTY0XHQ9IGtzel9wdHBfZ2V0dGltZTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwNDk6XHRwdHBfZGF0YS1cdTAwM2VjYXBzLnNldHRpbWU2NFx0PSBrc3pfcHRwX3NldHRpbWU7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDUwOlx0cHRwX2RhdGEtXHUwMDNlY2Fwcy5hZGpmaW5lXHRcdD0ga3N6X3B0cF9hZGpmaW5lO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA1MTpcdHB0cF9kYXRhLVx1MDAzZWNhcHMuYWRqdGltZVx0XHQ9IGtzel9wdHBfYWRqdGltZTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwNTI6XHRwdHBfZGF0YS1cdTAwM2VjYXBzLmRvX2F1eF93b3JrXHQ9IGtzel9wdHBfZG9fYXV4X3dvcms7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDUzOlx0cHRwX2RhdGEtXHUwMDNlY2Fwcy5lbmFibGVcdFx0PSBrc3pfcHRwX2VuYWJsZTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwNTQ6XHRwdHBfZGF0YS1cdTAwM2VjYXBzLnZlcmlmeVx0XHQ9IGtzel9wdHBfdmVyaWZ5X3BpbjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwNTUtXHRwdHBfZGF0YS1cdTAwM2VjYXBzLm5fcGluc1x0XHQ9IEtTWl9QVFBfTl9HUElPO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwNTctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDU4Olx0cmV0ID0ga3N6X3B0cF9zdGFydF9jbG9jayhkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA1OS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA2NS1cdFx0c25wcmludGYocHRwX3Bpbi1cdTAwM2VuYW1lLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA2NjpcdFx0XHQgc2l6ZW9mKHB0cF9waW4tXHUwMDNlbmFtZSksIFwmIzM0O2tzel9wdHBfcGluXyUwMmRcJiMzNDssIGkpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA2Ny1cdFx0cHRwX3Bpbi1cdTAwM2VpbmRleCA9IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA4OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwODk6dm9pZCBrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA5MC17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDkxLVx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDkyOlx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDkzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTExMDA9c3RhdGljIGludCBrc3pfcmVhZF90cyhzdHJ1Y3Qga3N6X3BvcnQgKnBvcnQsIHUxNiByZWcsIHUzMiAqdHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTExOS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjExMjA6c3RhdGljIGlycXJldHVybl90IGtzel9wdHBfbXNnX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTIxLXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjExMjI6XHRzdHJ1Y3Qga3N6X3B0cF9pcnEgKnB0cG1zZ19pcnEgPSBkZXZfaWQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTIzLVx0c3RydWN0IGtzel9kZXZpY2UgKmRldjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTQ2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTE0NzpzdGF0aWMgaXJxcmV0dXJuX3Qga3N6X3B0cF9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExNDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExNzktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMTgwOnN0YXRpYyB2b2lkIGtzel9wdHBfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTE4MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTE4Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjExODc6c3RhdGljIHZvaWQga3N6X3B0cF9pcnFfdW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExODgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExOTMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMTk0OnN0YXRpYyB2b2lkIGtzel9wdHBfaXJxX2J1c19sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExOTUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMDAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjAxOnN0YXRpYyB2b2lkIGtzel9wdHBfaXJxX2J1c19zeW5jX3VubG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjAyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjEzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIxNDpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9jaGlwIGtzel9wdHBfaXJxX2NoaXAgPSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjE1LVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O2tzei1pcnFcJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjE2Olx0LmlycV9tYXNrXHRcdD0ga3N6X3B0cF9pcnFfbWFzayxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMTc6XHQuaXJxX3VubWFza1x0XHQ9IGtzel9wdHBfaXJxX3VubWFzayxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMTg6XHQuaXJxX2J1c19sb2NrXHRcdD0ga3N6X3B0cF9pcnFfYnVzX2xvY2ssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjE5Olx0LmlycV9idXNfc3luY191bmxvY2tcdD0ga3N6X3B0cF9pcnFfYnVzX3N5bmNfdW5sb2NrLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyMC19O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyMS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMjI6c3RhdGljIGludCBrc3pfcHRwX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyMy1cdFx0XHRcdCAgdW5zaWduZWQgaW50IGlycSwgaXJxX2h3X251bWJlcl90IGh3aXJxKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMjUtXHRpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGQtXHUwMDNlaG9zdF9kYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMjY6XHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcdTAwMjZrc3pfcHRwX2lycV9jaGlwLCBoYW5kbGVfbGV2ZWxfaXJxKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMjctXHRpcnFfc2V0X25vcHJvYmUoaXJxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjMxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIzMjpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIGtzel9wdHBfaXJxX2RvbWFpbl9vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjMzOlx0Lm1hcFx0PSBrc3pfcHRwX2lycV9kb21haW5fbWFwLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIzNC1cdC54bGF0ZVx0PSBpcnFfZG9tYWluX3hsYXRlX3R3b2NlbGwsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIzNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMzc6c3RhdGljIHZvaWQga3N6X3B0cF9tc2dfaXJxX2ZyZWUoc3RydWN0IGtzel9wb3J0ICpwb3J0LCB1OCBuKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIzOC17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjM5Olx0c3RydWN0IGtzel9wdHBfaXJxICpwdHBtc2dfaXJxO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTI0MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjQ2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTI0NzpzdGF0aWMgaW50IGtzel9wdHBfbXNnX2lycV9zZXR1cChzdHJ1Y3Qga3N6X3BvcnQgKnBvcnQsIHU4IG4pXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjQ4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjU2LVx0c3RydWN0IGtzel9pcnEgKnB0cGlycSA9IFx1MDAyNnBvcnQtXHUwMDNlcHRwaXJxO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTI1NzpcdHN0cnVjdCBrc3pfcHRwX2lycSAqcHRwbXNnX2lycTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyNTgtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyNzAtXHRyZXQgPSByZXF1ZXN0X3RocmVhZGVkX2lycShwdHBtc2dfaXJxLVx1MDAzZW51bSwgTlVMTCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyNzE6XHRcdFx0XHQgICBrc3pfcHRwX21zZ190aHJlYWRfZm4sIElSUUZfT05FU0hPVCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyNzItXHRcdFx0XHQgICBwdHBtc2dfaXJxLVx1MDAzZW5hbWUsIHB0cG1zZ19pcnEpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTEyNzk9c3RhdGljIGludCBrc3o4NDYzX3B0cF9wb3J0X2lycV9zZXR1cChzdHJ1Y3Qga3N6X2lycSAqcHRwaXJxLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyODQtXHRjb25zdCBzdHJ1Y3Qga3N6X2Rldl9vcHMgKm9wcyA9IHBvcnQtXHUwMDNla3N6X2Rldi1cdTAwM2VkZXZfb3BzO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTI4NTpcdHN0cnVjdCBrc3pfcHRwX2lycSAqcHRwbXNnX2lycTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyODYtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMDUtXHRcdHJldCA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKHB0cG1zZ19pcnEtXHUwMDNlbnVtLCBOVUxMLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTMwNjpcdFx0XHRcdFx0ICAga3N6X3B0cF9tc2dfdGhyZWFkX2ZuLCBJUlFGX09ORVNIT1QsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzA3LVx0XHRcdFx0XHQgICBwdHBtc2dfaXJxLVx1MDAzZW5hbWUsIHB0cG1zZ19pcnEpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMTctXHR3aGlsZSAoaS0tKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTMxODpcdFx0a3N6X3B0cF9tc2dfaXJxX2ZyZWUocG9ydCwgaSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzE5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTEzMjM9c3RhdGljIHZvaWQga3N6ODQ2M19wdHBfcG9ydF9pcnFfdGVhcmRvd24oc3RydWN0IGtzel9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMjctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAyOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEzMjg6XHRcdGtzel9wdHBfbXNnX2lycV9mcmVlKHBvcnQsIGkpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTMyOS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9MTMzMT1pbnQga3N6ODQ2M19wdHBfaXJxX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzU1LVx0XHRcdFx0XHRcdCAgcHRwaXJxLVx1MDAzZW5pcnFzLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTM1NjpcdFx0XHRcdFx0XHQgIFx1MDAyNmtzel9wdHBfaXJxX2RvbWFpbl9vcHMsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzU3LVx0XHRcdFx0XHRcdCAgcHRwaXJxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzcwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTM3MTpcdHJldCA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKHB0cGlycS1cdTAwM2VpcnFfbnVtLCBOVUxMLCBrc3pfcHRwX2lycV90aHJlYWRfZm4sXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzcyLVx0XHRcdFx0ICAgSVJRRl9PTkVTSE9ULCBwdHBpcnEtXHUwMDNlbmFtZSwgcHRwaXJxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz0xMzg4PXZvaWQga3N6ODQ2M19wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0MDAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNDAxOmludCBrc3pfcHRwX2lycV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHU4IHApXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xNDAyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xNDIyLVx0cHRwaXJxLVx1MDAzZWRvbWFpbiA9IGlycV9kb21haW5fY3JlYXRlX2xpbmVhcihkZXZfZndub2RlKGRldi1cdTAwM2VkZXYpLCBwdHBpcnEtXHUwMDNlbmlycXMsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNDIzOlx0XHRcdFx0XHRcdCAgXHUwMDI2a3N6X3B0cF9pcnFfZG9tYWluX29wcywgcHRwaXJxKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0MjQtXHRpZiAoIXB0cGlycS1cdTAwM2Vkb21haW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQzMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE0MzM6XHRyZXQgPSByZXF1ZXN0X3RocmVhZGVkX2lycShwdHBpcnEtXHUwMDNlaXJxX251bSwgTlVMTCwga3N6X3B0cF9pcnFfdGhyZWFkX2ZuLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQzNC1cdFx0XHRcdCAgIElSUUZfT05FU0hPVCwgcHRwaXJxLVx1MDAzZW5hbWUsIHB0cGlycSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQzOC1cdGZvciAoaXJxID0gMDsgaXJxIFx1MDAzYyBwdHBpcnEtXHUwMDNlbmlycXM7IGlycSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE0Mzk6XHRcdHJldCA9IGtzel9wdHBfbXNnX2lycV9zZXR1cChwb3J0LCBpcnEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQ0MC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xNDU3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTQ1ODp2b2lkIGtzel9wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCB1OCBwKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQ1OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQ2NS1cdGZvciAobiA9IDA7IG4gXHUwMDNjIHB0cGlycS1cdTAwM2VuaXJxczsgbiYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNDY2Olx0XHRrc3pfcHRwX21zZ19pcnFfZnJlZShwb3J0LCBuKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0NjctXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDoxNzplbnVtIGtzel9wdHBfdG91X21vZGUge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTgtXHRLU1pfUFRQX1RPVV9JRExFLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTIxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6MjI6c3RydWN0IGtzel9wdHBfZGF0YSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC0yMy1cdHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBjYXBzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTMwLVx0c3RydWN0IHRpbWVzcGVjNjQgY2xvY2tfdGltZTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjMxOlx0ZW51bSBrc3pfcHRwX3RvdV9tb2RlIHRvdV9tb2RlO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMzItXHRzdHJ1Y3QgdGltZXNwZWM2NCBwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3Q7ICAvKiBzdGFydCBvZiBmaXJzdCBwdWxzZSAqL1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTM3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6Mzg6aW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTM5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6NDA6dm9pZCBrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTQxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oPTU2PWJvb2wga3N6X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTU3LVx0XHQgICAgICAgdW5zaWduZWQgaW50IHR5cGUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6NTg6aW50IGtzel9wdHBfaXJxX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgdTggcCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDo1OTp2b2lkIGtzel9wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCB1OCBwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTYwLWludCBrc3o4NDYzX3B0cF9pcnFfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oPTYxPXZvaWQga3N6ODQ2M19wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC02NC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjY1OnN0cnVjdCBrc3pfcHRwX2RhdGEge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtNjYtXHQvKiBTZXJpYWxpemVzIGFsbCBvcGVyYXRpb25zIG9uIHRoZSBQVFAgaGFyZHdhcmUgY2xvY2sgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC02OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjcwOnN0YXRpYyBpbmxpbmUgaW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtNzEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTc0LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6NzU6c3RhdGljIGlubGluZSB2b2lkIGtzel9wdHBfY2xvY2tfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpIHsgfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtNzYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDo3NzpzdGF0aWMgaW5saW5lIGludCBrc3pfcHRwX2lycV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHU4IHApXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC03OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtODEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDo4MjpzdGF0aWMgaW5saW5lIHZvaWQga3N6X3B0cF9pcnFfZnJlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHU4IHApIHt9XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC04My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTc2OD1zdGF0aWMgaW50IGxhbjkzN3hfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtODYzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo4NjQ6XHRcdFx0cmV0ID0ga3N6X3B0cF9pcnFfc2V0dXAoZHMsIGRwLVx1MDAzZWluZGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtODY1LVx0XHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy04NjktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjg3MDpcdHJldCA9IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy04NzEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy04OTMtb3V0X3B0cF9jbG9ja191bnJlZ2lzdGVyOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo4OTQ6XHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcwNTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIE1pY3JvY2hpcCBLU1ogU3dpdGNoIEJ1cyBBdHRhY2htZW50KioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYnVzZXMgdGhlc2UgTWljcm9jaGlwIEtTWiBzd2l0Y2hlcyBhcmUgdHlwaWNhbGx5IGF0dGFjaGVkIHRvLiBMZXQmIzM5O3MgZGlnIGluLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgdGhlIHJlbGV2YW50IGtlcm5lbCBzb3VyY2Ug4oCTIHNwZWNpZmljYWxseSwgSSYjMzk7bGwgZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGVgIGFuZCBgS2NvbmZpZ2AgZmlsZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGluaXRpYWwgb3ZlcnZpZXcgb2YgdGhlIGFyY2hpdGVjdHVyZSBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gaG93IHRoZXNlIHN3aXRjaGVzIGFyZSBpbnRlZ3JhdGVkLiBJIGV4cGVjdCB0byBmaW5kIGNsdWVzIGFib3V0IHN1cHBvcnRlZCBidXMgdHlwZXMgYW5kIGFueSBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIHNldHRpbmdzLiBUaGlzIGlzIGEgY29tbW9uIHN0YXJ0aW5nIHBvaW50IGZvciByZXZlcnNlIGVuZ2luZWVyaW5nIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRtZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBLU1o4WFhYL0tTWjlYWFgvTEFOOTM3WCBzZXJpZXMgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQVxuICAgNTpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX0tTWlxuICAgNjpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcbiAgIDc6XHRcdHNlbGVjdCBORVRfSUVFRTgwMjFRX0hFTFBFUlNcbiAgIDg6XHRcdHNlbGVjdCBEQ0JcbiAgIDk6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIE1pY3JvY2hpcCBLU1o4LCBLU1o5IGFuZFxuICAxMjpcdFx0ICBMQU45MzdYIHNlcmllcyBzd2l0Y2ggY2hpcHMsIGJlaW5nIEtTWjg4NjMvODg3MyxcbiAgMTM6XHRcdCAgS1NaODg5NS84ODY0LCBLU1o4Nzk0Lzg3OTUvODc2NSxcbiAgMTQ6XHRcdCAgS1NaOTQ3Ny85ODk3Lzk4OTYvOTU2Ny84NTY3LCBLU1o5ODkzLzk1NjMvODU2MyBhbmRcbiAgMTU6XHRcdCAgTEFOOTM3MC85MzcxLzkzNzIvOTM3My85Mzc0LlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQ1xuICAxODpcdFx0dHJpc3RhdGUgXCYjMzQ7S1NaIHNlcmllcyBJMkMgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcdTAwMjZcdTAwMjYgSTJDXG4gIDIwOlx0XHRzZWxlY3QgUkVHTUFQX0kyQ1xuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaCBJMkMuXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcbiAgMjU6XHRcdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDI2Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXHUwMDI2XHUwMDI2IFNQSVxuICAyNzpcdFx0c2VsZWN0IFJFR01BUF9TUElcbiAgMjg6XHRcdGhlbHBcbiAgMjk6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2ggU1BJLlxuICAzMDpcdFxuICAzMTpcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXG4gIDMyOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBQVFAgY2xvY2sgb24gdGhlIEtTWjk1NjMvTEFOOTM3eCBFdGhlcm5ldCBTd2l0Y2hcJiMzNDtcbiAgMzM6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcdTAwMjZcdTAwMjYgUFRQXzE1ODhfQ0xPQ0tcbiAgMzQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTj1tIHx8IFBUUF8xNTg4X0NMT0NLPXlcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aW1lc3RhbXBpbmcgXHUwMDI2IFBUUCBjbG9jayBtYW5pcHVsYXRpb24gaW5cbiAgMzc6XHRcdCAgS1NaODU2My9LU1o5NTYzL0xBTjkzN3ggc2VyaWVzIG9mIHN3aXRjaGVzLiBLU1o5NTYzL0tTWjg1NjMgc3VwcG9ydHNcbiAgMzg6XHRcdCAgb25seSBvbmUgc3RlcCB0aW1lc3RhbXBpbmcuIExBTjkzN3ggc3dpdGNoIHN1cHBvcnRzIGJvdGggb25lIHN0ZXAgYW5kXG4gIDM5Olx0XHQgIHR3byBzdGVwIHRpbWVzdGFtcGluZy5cbiAgNDA6XHRcbiAgNDE6XHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcbiAgNDI6XHRcdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDQzOlx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbiAgNDQ6XHRcdHNlbGVjdCBNRElPX0JJVEJBTkdcbiAgNDU6XHRcdGhlbHBcbiAgNDY6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2hcbiAgNDc6XHRcdCAgTWljcm9jaGlwIFNNSS4gSXQgc3VwcG9ydHMgdGhlIEtTWjg4NjMgYW5kIEtTWjg4NzMgc3dpdGNoLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MTc4CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBNaWNyb2NoaXAgRFNBIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OYCBhbmQgaW1tZWRpYXRlbHkgc2VlIHdlJiMzOTt2ZSBnb3QgYSBkZWNlbnQgc3ByZWFkIHJlcHJlc2VudGVkIGhlcmU6IEkyQywgU1BJLCBhbmQgU01JIGludGVyZmFjZXMgYXJlIGFsbCBjb3ZlcmVkIGZvciB0aGUgS1NaIHNlcmllcy4gVGhhdCYjMzk7cyBhIHNvbGlkIHN0YXJ0LiBXZSYjMzk7cmUgaGl0dGluZyBhIGZldyBvZiB0aGUgbW9yZSBjb21tb24gaW50ZXJjb25uZWN0cyBmb3IgdGhlc2UgdHlwZXMgb2Ygc3dpdGNoZXMsIHRoZSBLU1o5NDc3X0kyQywgS1NaX1NQSSBhbmQgS1NaODg2M19TTUkgaW1wbGVtZW50YXRpb25zLiBJdCYjMzk7cyBnb29kIHRvIHNlZSBzb21lIGJhc2ljIGRyaXZlciBzdXBwb3J0IGZvciB0aG9zZSBkZXZpY2VzLgoKTm93LCB0aG91Z2gsIEkgbmVlZCB0byBnZXQgYSBicm9hZGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgcGljdHVyZS4gQmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgY29tcGxldGVuZXNzLCBJIHNob3VsZCBxdWlja2x5IGRvIGEgc2FuaXR5IGNoZWNrIGluIHRoZSBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9gIGRpcmVjdG9yeS4gVGhlcmUgY291bGQgdmVyeSB3ZWxsIGJlIG90aGVyIE1pY3JvY2hpcCBkZXZpY2VzIG9yIGJ1cyBhdHRhY2htZW50cyBzdXBwb3J0ZWQgdGhlcmUgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBjb3JuZXIgY2FzZS4gSSBoYXZlIHRvIGxvb2sgZGVlcGVyIHRvIGJlIGNlcnRhaW4gSSBoYXZlIHRoZSBsYXkgb2YgdGhlIGxhbmQuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtrc3o4LmMmIzM0OywKICAgICYjMzQ7a3N6OC5oJiMzNDssCiAgICAmIzM0O2tzejg4NjNfc21pLmMmIzM0OywKICAgICYjMzQ7a3N6OF9yZWcuaCYjMzQ7LAogICAgJiMzNDtrc3o5NDc3LmMmIzM0OywKICAgICYjMzQ7a3N6OTQ3Ny5oJiMzNDssCiAgICAmIzM0O2tzejk0NzdfYWNsLmMmIzM0OywKICAgICYjMzQ7a3N6OTQ3N19pMmMuYyYjMzQ7LAogICAgJiMzNDtrc3o5NDc3X3JlZy5oJiMzNDssCiAgICAmIzM0O2tzejk0NzdfdGNfZmxvd2VyLmMmIzM0OywKICAgICYjMzQ7a3N6X2NvbW1vbi5jJiMzNDssCiAgICAmIzM0O2tzel9jb21tb24uaCYjMzQ7LAogICAgJiMzNDtrc3pfZGNiLmMmIzM0OywKICAgICYjMzQ7a3N6X2RjYi5oJiMzNDssCiAgICAmIzM0O2tzel9wdHAuYyYjMzQ7LAogICAgJiMzNDtrc3pfcHRwLmgmIzM0OywKICAgICYjMzQ7a3N6X3B0cF9yZWcuaCYjMzQ7LAogICAgJiMzNDtrc3pfc3BpLmMmIzM0OywKICAgICYjMzQ7bGFuOTM3eC5oJiMzNDssCiAgICAmIzM0O2xhbjkzN3hfbWFpbi5jJiMzNDssCiAgICAmIzM0O2xhbjkzN3hfcmVnLmgmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzcwCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBTd2l0Y2ggUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGNhbiBJIGdldCBhIGhhbmRsZSBvbiB0aGVzZSBzd2l0Y2hlcyB3aXRob3V0IG5lZWRpbmcgYWN0dWFsIGhhcmR3YXJlPyBDYW4gSSBpbnRlcmFjdCB3aXRoIHRoZW0gdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBJMkMgdXNlciBjbGllbnRzLCBhIG1vY2tlZCBidXMsIGRldmljZSB0cmVlIGVudHJpZXMsIEFDUEksIG9yIGV2ZW4gYSB2aXJ0dWFsIGJ1cz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZXZlbiBiZWdpbiB0byBwcm9iZSBvciBpbnN0YW50aWF0ZSB0aGVtIHdpdGhvdXQgcGh5c2ljYWxseSBpbnRlcmFjdGluZyB3aXRoIHRoZW0uCgpIYW5nIG9uIGEgc2Vjb25kLCBsZXQmIzM5O3MgZ28gYmFjayBhbmQgY2hlY2sgdGhlIHN5emthbGxlciBjYXBhYmlsaXRpZXMgYW5kIGdlbmVyYWwgcmVhY2hhYmlsaXR5IGNyaXRlcmlhLiBJIGhhdmUgdG8gbWFrZSBzdXJlIHRoaXMgaXMgZXZlbiB3b3J0aCBteSB0aW1lLiBUaGlzIHBhcnQgaXMgY3JpdGljYWwuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgd2hlbiB0aGUgZnV6emVyIHdvdWxkIHRlbGwgbWUgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0Oy4gSSBuZWVkIHRvIGtub3cgd2hlbiBJIGNhbiBza2lwIHRoZXNlIGRldmljZXMuIEl0IHNheXMgdGhhdCB0aGUgcmV0dXJuIHNob3VsZCBiZSAmIzM0O2ZhbHNlJiMzNDsgT05MWSBpZiB0aGUgY2hhbmdlcyBmYWxsIGludG8gb25lIG9yIG1vcmUgY2F0ZWdvcmllczogbm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcywgb3Igc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCBuZWVkIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyB0aGF0IGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gQWxzbywgdGhlIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyAtLSBkcml2ZXJzIHRlYXJkb3duIGNhbGxiYWNrcyAocmVtb3ZlLCBzaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSB0aGF0IGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyBob3QtdW5wbHVnIG9mIFBDSSBvciBkcml2ZXIgdW5iaW5kaW5nLCBvciBjb2RlIHBhdGhzIGZvciBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgpSaWdodCwgc28gY2FuIEkyQyBvciBTUEkgZGV2aWNlcyBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkgZnJvbSB1c2VyIHNwYWNlLCBtYXliZSB1c2luZyBzb21ldGhpbmcgbGlrZSBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLSovbmV3X2RldmljZWA/IFRoYXQgd291bGQgYmUgdXNlZnVsLgoKSG1tLCBldmVuIGlmIEkgKmNhbiogaW5zdGFudGlhdGUgYW4gSTJDIGRldmljZSB3aXRoIGBuZXdfZGV2aWNlYCwgRFNBIHN3aXRjaGVzIHNlZW0gdG8gcmVxdWlyZSBhIERTQSB0cmVlL3BsYXRmb3JtIGRhdGEgb3IgRGV2aWNlIFRyZWUgLyBPRiBub2RlIGJpbmRpbmcgdG8gYW4gZXRoZXJuZXQgbWFzdGVyIGRldmljZSB2aWEgYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgISBJIG11c3QgdW5kZXJzdGFuZCB0aGF0IGJpbmRpbmcgdG8gc3RhcnQuCgpXYWl0LCB3aGF0IGRvZXMgYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgIGFjdHVhbGx5ICpkbyo/IEFuZCB3aGF0IGFib3V0IGBrc3pfcHRwX2VuYWJsZV9wZXJvdXRgPyBUaGF0IGxvb2tzIHJlbGV2YW50IHRvby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdC4KCkFuZCBjYW4gYGtzejk0NzdfaTJjYCBhY3R1YWxseSBiZSBwcm9iZWQgdXNpbmcgYG5ld19kZXZpY2VgPyBUaGF0JiMzOTtzIHdoYXQgSSByZWFsbHkgbmVlZCB0byBrbm93LgoKSSBndWVzcyBJJiMzOTtsbCBjaGVjayBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jYCBhcyB3ZWxsIGFzIGBrc3pfc3BpLmNgIGFuZCBga3N6X2NvbW1vbi5jYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBoZXJlLiBJIG11c3QgcmV2aWV3IHRoZXNlIGRyaXZlcnMgaW4gZGV0YWlsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBNaWNyb2NoaXAgS1NaOTQ3NyBzZXJpZXMgcmVnaXN0ZXIgYWNjZXNzIHRocm91Z2ggSTJDXG4gICA0Olx0ICpcbiAgIDU6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNCBNaWNyb2NoaXAgVGVjaG5vbG9neSBJbmMuXG4gICA2Olx0ICovXG4gICA3Olx0XG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvaTJjLmhcdTAwM2VcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICAxMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvcmVnbWFwLmhcdTAwM2VcbiAgMTI6XHRcbiAgMTM6XHQjaW5jbHVkZSBcJiMzNDtrc3pfY29tbW9uLmhcJiMzNDtcbiAgMTQ6XHRcbiAgMTU6XHRLU1pfUkVHTUFQX1RBQkxFKGtzejk0NzcsIG5vdF91c2VkLCAxNiwgMCwgMCk7XG4gIDE2Olx0XG4gIDE3Olx0c3RhdGljIGludCBrc3o5NDc3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuICAxODpcdHtcbiAgMTk6XHRcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICpjaGlwO1xuICAyMDpcdFx0c3RydWN0IGRldmljZSAqZGRldiA9IFx1MDAyNmkyYy1cdTAwM2VkZXY7XG4gIDIxOlx0XHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYztcbiAgMjI6XHRcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XG4gIDIzOlx0XHRpbnQgaSwgcmV0O1xuICAyNDpcdFxuICAyNTpcdFx0Y2hpcCA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KTtcbiAgMjY6XHRcdGlmICghY2hpcClcbiAgMjc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gIDI4Olx0XG4gIDI5Olx0XHRkZXYgPSBrc3pfc3dpdGNoX2FsbG9jKFx1MDAyNmkyYy1cdTAwM2VkZXYsIGNoaXAsIGkyYyk7XG4gIDMwOlx0XHRpZiAoIWRldilcbiAgMzE6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gIDMyOlx0XG4gIDMzOlx0XHQvKiBTYXZlIGNoaXAgaWQgdG8gZG8gc3BlY2lhbCBpbml0aWFsaXphdGlvbiB3aGVuIHByb2JpbmcuICovXG4gIDM0Olx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IGNoaXAtXHUwMDNlY2hpcF9pZDtcbiAgMzU6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIF9fS1NaX05VTV9SRUdNQVBTOyBpJiM0MzsmIzQzOykge1xuICAzNjpcdFx0XHRyYyA9IGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXTtcbiAgMzc6XHRcdFx0cmMubG9ja19hcmcgPSBcdTAwMjZkZXYtXHUwMDNlcmVnbWFwX211dGV4O1xuICAzODpcdFx0XHRkZXYtXHUwMDNlcmVnbWFwW2ldID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoaTJjLCBcdTAwMjZyYyk7XG4gIDM5Olx0XHRcdGlmIChJU19FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSkpIHtcbiAgNDA6XHRcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZpMmMtXHUwMDNlZGV2LCBQVFJfRVJSKGRldi1cdTAwM2VyZWdtYXBbaV0pLFxuICA0MTpcdFx0XHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxuXCYjMzQ7LFxuICA0MjpcdFx0XHRcdFx0XHQgICAgIGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXS52YWxfYml0cyk7XG4gIDQzOlx0XHRcdH1cbiAgNDQ6XHRcdH1cbiAgNDU6XHRcbiAgNDY6XHRcdGlmIChpMmMtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEpXG4gIDQ3Olx0XHRcdGRldi1cdTAwM2VwZGF0YSA9IGkyYy1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbiAgNDg6XHRcbiAgNDk6XHRcdGRldi1cdTAwM2VpcnEgPSBpMmMtXHUwMDNlaXJxO1xuICA1MDpcdFxuICA1MTpcdFx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuICA1MjpcdFxuICA1MzpcdFx0LyogTWFpbiBEU0EgZHJpdmVyIG1heSBub3QgYmUgc3RhcnRlZCB5ZXQuICovXG4gIDU0Olx0XHRpZiAocmV0KVxuICA1NTpcdFx0XHRyZXR1cm4gcmV0O1xuICA1NjpcdFxuICA1NzpcdFx0aTJjX3NldF9jbGllbnRkYXRhKGkyYywgZGV2KTtcbiAgNTg6XHRcbiAgNTk6XHRcdHJldHVybiAwO1xuICA2MDpcdH1cbiAgNjE6XHRcbiAgNjI6XHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcbiAgNjM6XHR7XG4gIDY0Olx0XHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGkyYyk7XG4gIDY1Olx0XG4gIDY2Olx0XHRpZiAoZGV2KVxuICA2NzpcdFx0XHRrc3pfc3dpdGNoX3JlbW92ZShkZXYpO1xuICA2ODpcdH1cbiAgNjk6XHRcbiAgNzA6XHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19zaHV0ZG93bihzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuICA3MTpcdHtcbiAgNzI6XHRcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcbiAgNzM6XHRcbiAgNzQ6XHRcdGlmICghZGV2KVxuICA3NTpcdFx0XHRyZXR1cm47XG4gIDc2Olx0XG4gIDc3Olx0XHRrc3pfc3dpdGNoX3NodXRkb3duKGRldik7XG4gIDc4Olx0XG4gIDc5Olx0XHRpMmNfc2V0X2NsaWVudGRhdGEoaTJjLCBOVUxMKTtcbiAgODA6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTExCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERldmljZSBNYXRjaGluZyBpbiB0aGUgS1NaOTQ3NyBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIExpbmUgMjUgb2YgdGhlIGNvZGU6IGBjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO2AgYW5kIHRoZW4gdGhlIGltbWVkaWF0ZSBjaGVjayBgaWYgKCFjaGlwKSByZXR1cm4gLUVJTlZBTDtgLiBDbGFzc2ljIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gcGF0dGVybi4gSSYjMzk7bSBhc3N1bWluZyBgZGRldmAgaXMgdGhlIGRldmljZSBzdHJ1Y3R1cmUgcGFzc2VkIHRvIHRoZSBwcm9iZSBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKClgIGNhbGwuIEl0JiMzOTtzIGZldGNoaW5nIHRoZSByZWxldmFudCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWF0Y2hpbmcgZW50cnkgZnJvbSB0aGUgZHJpdmVyJiMzOTtzIGRldmljZSB0YWJsZS4gU28sIHRvIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGFuZCB3aGVyZSB0aGlzIGBjaGlwYCB2YXJpYWJsZSBpcyBwb3B1bGF0ZWQsIEkgbmVlZCB0byBzZWUgdGhlIG1hdGNoIHRhYmxlIGl0c2VsZi4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZ28gbG9vayBhdCBga3N6OTQ3N19pMmMuY2Ag4oCTIHNwZWNpZmljYWxseSB0aGUgZGV2aWNlIHRhYmxlIGRlZmluaXRpb24uIFRoYXQgd2lsbCB0ZWxsIG1lIHdoaWNoIGRldmljZXMgdGhpcyBkcml2ZXIgY2xhaW1zIHRvIHN1cHBvcnQgYW5kLCBjcml0aWNhbGx5LCB3aGF0IGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggb2YgdGhvc2Ugc3VwcG9ydGVkIGRldmljZXMsIHdoaWNoIGlzIHdoYXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgaXMgcmV0cmlldmluZy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGRldmljZSBpcyBpZGVudGlmaWVkIGR1cmluZyBwcm9iZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgxOlx0XG4gIDgyOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGtzejk0NzdfaTJjX2lkW10gPSB7XG4gIDgzOlx0XHR7IC5uYW1lID0gXCYjMzQ7a3N6OTQ3Ny1zd2l0Y2hcJiMzNDsgfSxcbiAgODQ6XHRcdHsgfVxuICA4NTpcdH07XG4gIDg2Olx0XG4gIDg3Olx0TU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGtzejk0NzdfaTJjX2lkKTtcbiAgODg6XHRcbiAgODk6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBrc3o5NDc3X2R0X2lkc1tdID0ge1xuICA5MDpcdFx0e1xuICA5MTpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5NDc3XCYjMzQ7LFxuICA5MjpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTQ3N11cbiAgOTM6XHRcdH0sXG4gIDk0Olx0XHR7XG4gIDk1Olx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejk4OTZcJiMzNDssXG4gIDk2Olx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk2XVxuICA5NzpcdFx0fSxcbiAgOTg6XHRcdHtcbiAgOTk6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTg5N1wmIzM0OyxcbiAxMDA6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk4OTddXG4gMTAxOlx0XHR9LFxuIDEwMjpcdFx0e1xuIDEwMzpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5ODkzXCYjMzQ7LFxuIDEwNDpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5M11cbiAxMDU6XHRcdH0sXG4gMTA2Olx0XHR7XG4gMTA3Olx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejk1NjNcJiMzNDssXG4gMTA4Olx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTYzXVxuIDEwOTpcdFx0fSxcbiAxMTA6XHRcdHtcbiAxMTE6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6ODU2M1wmIzM0OyxcbiAxMTI6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjg1NjNdXG4gMTEzOlx0XHR9LFxuIDExNDpcdFx0e1xuIDExNTpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4NTY3XCYjMzQ7LFxuIDExNjpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODU2N11cbiAxMTc6XHRcdH0sXG4gMTE4Olx0XHR7XG4gMTE5Olx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejk1NjdcJiMzNDssXG4gMTIwOlx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NTY3XVxuIDEyMTpcdFx0fSxcbiAxMjI6XHRcdHtcbiAxMjM6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsbGFuOTY0NlwmIzM0OyxcbiAxMjQ6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0xBTjk2NDZdXG4gMTI1Olx0XHR9LFxuIDEyNjpcdFx0e30sXG4gMTI3Olx0fTtcbiAxMjg6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBrc3o5NDc3X2R0X2lkcyk7XG4gMTI5Olx0XG4gMTMwOlx0c3RhdGljIERFRklORV9TSU1QTEVfREVWX1BNX09QUyhrc3pfaTJjX3BtX29wcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwMDgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBrc3o5NDc3LXN3aXRjaCBEcml2ZXIgSW5zdGFudGlhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBga3N6OTQ3N19pMmNfaWRgIHN0cnVjdHVyZS4gSG1tLCBpdCYjMzk7cyBkZWZpbmVkIGFzIGB7IC5uYW1lID0gJiMzNDtrc3o5NDc3LXN3aXRjaCYjMzQ7IH1gLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyBob3cgdGhpcyBkZXZpY2UgaXMgaW5zdGFudGlhdGVkIHZpYSBJMkMgdXNpbmcgYG5ld19kZXZpY2VgLiBSaWdodCwgaWYgaXQmIzM5O3MgKm5vdCogdXNpbmcgYW4gT0Ygb3IgQUNQSSBzeXN0ZW0sIHRoZSBjb2RlIGRlZmF1bHRzIHRvIHVzaW5nIGBpMmNfbWF0Y2hfZGV2aWNlYCB3aXRoaW4gYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KWAuIEJ1dCBoZXJlJiMzOTtzIHRoZSBraWNrZXI6IGBrc3o5NDc3X2kyY19pZGAgKmRvZXNuJiMzOTt0KiBoYXZlIGEgYC5kcml2ZXJfZGF0YWAgZmllbGQgc2V0IChvciBpdCYjMzk7cyBzZXQgdG8gMCwgd2hpY2ggZnVuY3Rpb25hbGx5IGFtb3VudHMgdG8gdGhlIHNhbWUgdGhpbmcpLgoKVGhpcyBtZWFucywgd2hlbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBpcyBjYWxsZWQsIGl0IHNob3VsZCByZXR1cm4gTlVMTCBiZWNhdXNlIG5vIG1hdGNoIGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGFydGljdWxhciBJMkMgSUQuIFdhaXQsIHRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IHNob3VsZCBoYXBwZW4hIElmIHRoZSBtYXRjaCBkYXRhIGlzbiYjMzk7dCBzZXQsIGl0IHJldHVybnMgTlVMTC4KCkhvd2V2ZXIsIHRoZSBtb3JlIHByZXNzaW5nIHF1ZXN0aW9uIGlzOiB3aGF0IGFjdHVhbGx5IGhhcHBlbnMgZHVyaW5nIHRoZSBjYWxsIHRvIGBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldilgPyBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIG1hZ2ljIGhhcHBlbnMuLi4gb3IgZG9lc24mIzM5O3QhIEkgbmVlZCB0byBkaWcgaW50byBga3N6X2NvbW1vbi5jYCB0byBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBkZXZpY2UsIGdpdmVuIHRoaXMgaW5pdGlhbCBpZGVudGlmaWNhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM4ODk9c3RhdGljIGludCBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM4OTMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozODk0OmludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zODk1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD00Mjc9c3RydWN0IGtzel9kZXZpY2UgKmtzel9zd2l0Y2hfYWxsb2Moc3RydWN0IGRldmljZSAqYmFzZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC00MjktXHRcdFx0XHQgICAgdm9pZCAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo0MzA6aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC00MzEtdm9pZCBrc3pfc3dpdGNoX3JlbW92ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4MDQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgIGZ1bmN0aW9uIGRlZmluaXRpb24uIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBob3cgdGhlc2UgTWljcm9jaGlwIEtTWiBzd2l0Y2hlcyBhcmUgaGFuZGxlZCBpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jYCBmaWxlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIHJlZ2lzdHJhdGlvbiBsb2dpYyBzaG91bGQgYmUgZGVmaW5lZCwgc28gbGV0JiMzOTtzIHN0YXJ0IHRoZXJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgaG93IHRoZSBzd2l0Y2ggaXMgaW5pdGlhbGl6ZWQsIHByb2JlZCwgYW5kIGludGVncmF0ZWQgd2l0aCB0aGUgRFNBIGZyYW1ld29yay4gSG9wZWZ1bGx5LCB0aGlzIGZ1bmN0aW9uIHJldmVhbHMgdGhlIGNyaXRpY2FsIHBhcnRzIG9mIHdoYXQgbWFrZXMgdGhlc2Ugc3BlY2lmaWMgY2hpcHMgdGljayB3aXRoaW4gdGhlIGxhcmdlciBuZXR3b3JrIHN0YWNrLiBVbmRlcnN0YW5kaW5nIHRoaXMgcmVnaXN0cmF0aW9uIHByb2Nlc3MgaXMgZXNzZW50aWFsIGZvciBtZSB0byBmdWxseSBncmFzcCB0aGUgZHJpdmVyJiMzOTtzIG92ZXJhbGwgZGVzaWduIGFuZCB3aGVyZSBJIG1pZ2h0IGNvbnRyaWJ1dGUsIG9yIHRyb3VibGVzaG9vdCwgaWYgbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwODo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzg5NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszODk0Olx0aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbjM4OTU6XHR7XG4zODk2Olx0XHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqaW5mbztcbjM4OTc6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydHM7XG4zODk4Olx0XHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlO1xuMzg5OTpcdFx0dW5zaWduZWQgaW50IHBvcnRfbnVtO1xuMzkwMDpcdFx0aW50IHJldDtcbjM5MDE6XHRcdGludCBpO1xuMzkwMjpcdFxuMzkwMzpcdFx0ZGV2LVx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYtXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OyxcbjM5MDQ6XHRcdFx0XHRcdFx0XHQgIEdQSU9EX09VVF9MT1cpO1xuMzkwNTpcdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVzZXRfZ3BpbykpXG4zOTA2Olx0XHRcdHJldHVybiBQVFJfRVJSKGRldi1cdTAwM2VyZXNldF9ncGlvKTtcbjM5MDc6XHRcbjM5MDg6XHRcdGlmIChkZXYtXHUwMDNlcmVzZXRfZ3Bpbykge1xuMzkwOTpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttaWNyb2NoaXAsa3N6ODQ2M1wmIzM0OykpIHtcbjM5MTA6XHRcdFx0XHRyZXQgPSBrc3o4NDYzX2NvbmZpZ3VyZV9zdHJhcHNfc3BpKGRldik7XG4zOTExOlx0XHRcdFx0aWYgKHJldClcbjM5MTI6XHRcdFx0XHRcdHJldHVybiByZXQ7XG4zOTEzOlx0XHRcdH1cbjM5MTQ6XHRcbjM5MTU6XHRcdFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cdTAwM2VyZXNldF9ncGlvLCAxKTtcbjM5MTY6XHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAwLCAxMjAwMCk7XG4zOTE3Olx0XHRcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChkZXYtXHUwMDNlcmVzZXRfZ3BpbywgMCk7XG4zOTE4Olx0XHRcdG1zbGVlcCgxMDApO1xuMzkxOTpcdFxuMzkyMDpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttaWNyb2NoaXAsa3N6ODQ2M1wmIzM0OykpIHtcbjM5MjE6XHRcdFx0XHRyZXQgPSBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShkZXYpO1xuMzkyMjpcdFx0XHRcdGlmIChyZXQpXG4zOTIzOlx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuMzkyNDpcdFx0XHR9XG4zOTI1Olx0XHR9XG4zOTI2Olx0XG4zOTI3Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VkZXZfbXV0ZXgpO1xuMzkyODpcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlcmVnbWFwX211dGV4KTtcbjM5Mjk6XHRcdG11dGV4X2luaXQoXHUwMDI2ZGV2LVx1MDAzZWFsdV9tdXRleCk7XG4zOTMwOlx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2V2bGFuX211dGV4KTtcbjM5MzE6XHRcbjM5MzI6XHRcdHJldCA9IGtzel9zd2l0Y2hfZGV0ZWN0KGRldik7XG4zOTMzOlx0XHRpZiAocmV0KVxuMzkzNDpcdFx0XHRyZXR1cm4gcmV0O1xuMzkzNTpcdFxuMzkzNjpcdFx0aW5mbyA9IGtzel9sb29rdXBfaW5mbyhkZXYtXHUwMDNlY2hpcF9pZCk7XG4zOTM3Olx0XHRpZiAoIWluZm8pXG4zOTM4Olx0XHRcdHJldHVybiAtRU5PREVWO1xuMzkzOTpcdFxuMzk0MDpcdFx0LyogVXBkYXRlIHRoZSBjb21wYXRpYmxlIGluZm8gd2l0aCB0aGUgcHJvYmVkIG9uZSAqL1xuMzk0MTpcdFx0ZGV2LVx1MDAzZWluZm8gPSBpbmZvO1xuMzk0MjpcdFxuMzk0MzpcdFx0ZGV2X2luZm8oZGV2LVx1MDAzZWRldiwgXCYjMzQ7Zm91bmQgc3dpdGNoOiAlcywgcmV2ICVpXFxuXCYjMzQ7LFxuMzk0NDpcdFx0XHQgZGV2LVx1MDAzZWluZm8tXHUwMDNlZGV2X25hbWUsIGRldi1cdTAwM2VjaGlwX3Jldik7XG4zOTQ1Olx0XG4zOTQ2Olx0XHRyZXQgPSBrc3pfY2hlY2tfZGV2aWNlX2lkKGRldik7XG4zOTQ3Olx0XHRpZiAocmV0KVxuMzk0ODpcdFx0XHRyZXR1cm4gcmV0O1xuMzk0OTpcdFxuMzk1MDpcdFx0ZGV2LVx1MDAzZWRldl9vcHMgPSBkZXYtXHUwMDNlaW5mby1cdTAwM2VvcHM7XG4zOTUxOlx0XG4zOTUyOlx0XHRyZXQgPSBkZXYtXHUwMDNlZGV2X29wcy1cdTAwM2Vpbml0KGRldik7XG4zOTUzOlx0XHRpZiAocmV0KVxuMzk1NDpcdFx0XHRyZXR1cm4gcmV0O1xuMzk1NTpcdFxuMzk1NjpcdFx0ZGV2LVx1MDAzZXBvcnRzID0gZGV2bV9remFsbG9jKGRldi1cdTAwM2VkZXYsXG4zOTU3Olx0XHRcdFx0XHQgIGRldi1cdTAwM2VpbmZvLVx1MDAzZXBvcnRfY250ICogc2l6ZW9mKHN0cnVjdCBrc3pfcG9ydCksXG4zOTU4Olx0XHRcdFx0XHQgIEdGUF9LRVJORUwpO1xuMzk1OTpcdFx0aWYgKCFkZXYtXHUwMDNlcG9ydHMpXG4zOTYwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzk2MTpcdFxuMzk2MjpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZGV2LVx1MDAzZWluZm8tXHUwMDNlcG9ydF9jbnQ7IGkmIzQzOyYjNDM7KSB7XG4zOTYzOlx0XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRldi1cdTAwM2Vwb3J0c1tpXS5taWIuc3RhdHM2NF9sb2NrKTtcbjM5NjQ6XHRcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlcG9ydHNbaV0ubWliLmNudF9tdXRleCk7XG4zOTY1Olx0XHRcdGRldi1cdTAwM2Vwb3J0c1tpXS5taWIuY291bnRlcnMgPVxuMzk2NjpcdFx0XHRcdGRldm1fa3phbGxvYyhkZXYtXHUwMDNlZGV2LFxuMzk2NzpcdFx0XHRcdFx0ICAgICBzaXplb2YodTY0KSAqIChkZXYtXHUwMDNlaW5mby1cdTAwM2VtaWJfY250ICYjNDM7IDEpLFxuMzk2ODpcdFx0XHRcdFx0ICAgICBHRlBfS0VSTkVMKTtcbjM5Njk6XHRcdFx0aWYgKCFkZXYtXHUwMDNlcG9ydHNbaV0ubWliLmNvdW50ZXJzKVxuMzk3MDpcdFx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzk3MTpcdFxuMzk3MjpcdFx0XHRkZXYtXHUwMDNlcG9ydHNbaV0ua3N6X2RldiA9IGRldjtcbjM5NzM6XHRcdFx0ZGV2LVx1MDAzZXBvcnRzW2ldLm51bSA9IGk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MjcxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGNvZGUgc25pcHBldDoKCioqRGl2aW5nIGludG8gdGhlIFN3aXRjaCBEZXRlY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgYHJldCA9IGtzel9zd2l0Y2hfZGV0ZWN0KGRldik7YCAtIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgaW1tZWRpYXRlbHkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIHRoYXQgYGtzel9zd2l0Y2hfZGV0ZWN0YCBmdW5jdGlvbi4gR2l2ZW4gdGhlIG5hbWluZywgaXQmIzM5O3Mgb2J2aW91c2x5IGludm9sdmVkIGluIHNvbWUgc29ydCBvZiBzd2l0Y2ggZGV0ZWN0aW9uIGZvciB0aGUgZGV2aWNlLCBgZGV2YC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCBleGFjdGx5IGhvdyBpdCBhY2hpZXZlcyB0aGlzIGRldGVjdGlvbi4gSSBuZWVkIHRvIHNlZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGtzel9zd2l0Y2hfZGV0ZWN0YCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYywgYW55IHJlZ2lzdGVycyBpdCBtaWdodCBiZSByZWFkaW5nIG9yIHdyaXRpbmcsIGFuZCB0aGUgc3BlY2lmaWMgY3JpdGVyaWEgaXQmIzM5O3MgdXNpbmcgdG8gZGV0ZXJtaW5lIHRoZSBzd2l0Y2ggc3RhdHVzLiBJcyBpdCBwb2xsaW5nIHNvbWV0aGluZz8gQW4gaW50ZXJydXB0PyBJcyBpdCBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9uPyBXaGF0IGFyZSB0aGUgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBhbmQgd2hhdCBkbyB0aGV5IHNpZ25pZnk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gZGV0ZXJtaW5lIGhvdyByb2J1c3QgYW5kIHJlbGlhYmxlIHRoaXMgZGV0ZWN0aW9uIG1lY2hhbmlzbSBpcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2tzel9zd2l0Y2hfZGV0ZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yODk0PXZvaWQga3N6X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yOTA1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjkwNjpzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yOTA3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zODk0PWludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzkzMS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM5MzI6XHRyZXQgPSBrc3pfc3dpdGNoX2RldGVjdChkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzkzMy1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0ODAzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgJiMzNDtMZXQmIzM5O3MgcmVhZCBga3N6X3N3aXRjaF9kZXRlY3RgLCYjMzQ7IHN1bW1hcml6ZWQgYXMgYSBmaXJzdC1wZXJzb24gdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipEaXZpbmcgaW50byB0aGUgQ29kZToga3N6X3N3aXRjaF9kZXRlY3QqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIEkgc2VlIGBrc3pfc3dpdGNoX2RldGVjdGAgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGEgc3dpdGNoIGRldGVjdGlvbiBmdW5jdGlvbi4gTGlrZWx5IGRlYWxpbmcgd2l0aCBwaHlzaWNhbCBsYXllciAoUEhZKSBjaGFyYWN0ZXJpc3RpY3MsIG9yIHBlcmhhcHMgYSBsYXllciBjbG9zZXIgdG8gdGhlIE1BQyBpbiBhIHR5cGljYWwgc3dpdGNoIGRyaXZlciBmb3IgYSBLU1ogY2hpcHNldC4mIzM0OyBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZ1bmN0aW9uIHRvIGJlIHRoZSBnYXRld2F5IGZvciBmaWd1cmluZyBvdXQgdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIEl0IGNvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciBpZGVudGlmeWluZyB0aGUgc3BlY2lmaWMgS1NaIHN3aXRjaCBtb2RlbCBvciB2YXJpYW50IGJlaW5nIHVzZWQuIEkmIzM5O20gaW1hZ2luaW5nIGl0JiMzOTtsbCBiZSBsb29raW5nIGZvciBzcGVjaWZpYyByZWdpc3RlciB2YWx1ZXMsIGJpdCBwYXR0ZXJucywgb3IgcGVyaGFwcyBwcm9iaW5nIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgdG8gZGV0ZXJtaW5lIHRoZSBwcmVzZW5jZSBvZiBhIHN3aXRjaCBhbmQgaXRzIHJlbGV2YW50IGZlYXR1cmVzLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXJlIHdpbGwgYmUgYSByZWxpYW5jZSBvbiBoYXJkd2FyZSBzcGVjaWZpY3MsIHNvIEkgbmVlZCB0byBiZSByZWFkeSBmb3IgdmVuZG9yLXNwZWNpZmljIHF1aXJrcy4gSXQmIzM5O3MgcHJvYmFibHkgZ29pbmcgdG8gaW52b2x2ZSBhIHNlcmllcyBvZiByZWdpc3RlciByZWFkcyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIHRvIG1ha2UgaXRzIGFzc2Vzc21lbnRzLiBJIGFudGljaXBhdGUgYSBmYWlyIGJpdCBvZiBjb25kaXRpb25hbCBsb2dpYyB3aXRoaW4gdG8gaGFuZGxlIGRpZmZlcmVudCBzd2l0Y2ggcmV2aXNpb25zIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCYjMzk7cyBzZWUgaWYgbXkgaW5pdGlhbCBhc3N1bXB0aW9ucyBhcmUgY29ycmVjdCEgVGhpcyBzaG91bGQgYmUgaW50ZXJlc3Rpbmc7IEkgYWx3YXlzIGVuam95IGdldHRpbmcgaW50byB0aGUgbG93LWxldmVsIGRldGFpbHMgb2YgaGFyZHdhcmUgaW50ZXJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTA2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI5MDY6XHRzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4yOTA3Olx0e1xuMjkwODpcdFx0dTggaWQxLCBpZDIsIGlkNDtcbjI5MDk6XHRcdHUxNiBpZDE2O1xuMjkxMDpcdFx0dTMyIGlkMzI7XG4yOTExOlx0XHRpbnQgcmV0O1xuMjkxMjpcdFxuMjkxMzpcdFx0LyogcmVhZCBjaGlwIGlkICovXG4yOTE0Olx0XHRyZXQgPSBrc3pfcmVhZDE2KGRldiwgUkVHX0NISVBfSUQwLCBcdTAwMjZpZDE2KTtcbjI5MTU6XHRcdGlmIChyZXQpXG4yOTE2Olx0XHRcdHJldHVybiByZXQ7XG4yOTE3Olx0XG4yOTE4Olx0XHRpZDEgPSBGSUVMRF9HRVQoU1dfRkFNSUxZX0lEX00sIGlkMTYpO1xuMjkxOTpcdFx0aWQyID0gRklFTERfR0VUKFNXX0NISVBfSURfTSwgaWQxNik7XG4yOTIwOlx0XG4yOTIxOlx0XHRzd2l0Y2ggKGlkMSkge1xuMjkyMjpcdFx0Y2FzZSBLU1o4NF9GQU1JTFlfSUQ6XG4yOTIzOlx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaODQ2M19DSElQX0lEO1xuMjkyNDpcdFx0XHRicmVhaztcbjI5MjU6XHRcdGNhc2UgS1NaODdfRkFNSUxZX0lEOlxuMjkyNjpcdFx0XHRpZiAoaWQyID09IEtTWjg3X0NISVBfSURfOTUpIHtcbjI5Mjc6XHRcdFx0XHR1OCB2YWw7XG4yOTI4Olx0XG4yOTI5Olx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4Nzk1X0NISVBfSUQ7XG4yOTMwOlx0XG4yOTMxOlx0XHRcdFx0a3N6X3JlYWQ4KGRldiwgS1NaOF9QT1JUX1NUQVRVU18wLCBcdTAwMjZ2YWwpO1xuMjkzMjpcdFx0XHRcdGlmICh2YWwgXHUwMDI2IEtTWjhfUE9SVF9GSUJFUl9NT0RFKVxuMjkzMzpcdFx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4NzY1X0NISVBfSUQ7XG4yOTM0Olx0XHRcdH0gZWxzZSBpZiAoaWQyID09IEtTWjg3X0NISVBfSURfOTQpIHtcbjI5MzU6XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjg3OTRfQ0hJUF9JRDtcbjI5MzY6XHRcdFx0fSBlbHNlIHtcbjI5Mzc6XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjI5Mzg6XHRcdFx0fVxuMjkzOTpcdFx0XHRicmVhaztcbjI5NDA6XHRcdGNhc2UgS1NaODhfRkFNSUxZX0lEOlxuMjk0MTpcdFx0XHRpZiAoaWQyID09IEtTWjg4X0NISVBfSURfNjMpXG4yOTQyOlx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4OFgzX0NISVBfSUQ7XG4yOTQzOlx0XHRcdGVsc2VcbjI5NDQ6XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjI5NDU6XHRcdFx0YnJlYWs7XG4yOTQ2Olx0XHRjYXNlIEtTWjg4OTVfRkFNSUxZX0lEOlxuMjk0NzpcdFx0XHRpZiAoaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NSB8fFxuMjk0ODpcdFx0XHQgICAgaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NVIpXG4yOTQ5Olx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4ODk1X0NISVBfSUQ7XG4yOTUwOlx0XHRcdGVsc2VcbjI5NTE6XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjI5NTI6XHRcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0tTWjg4NjRfQ0hJUF9JRCwgXHUwMDI2aWQ0KTtcbjI5NTM6XHRcdFx0aWYgKHJldClcbjI5NTQ6XHRcdFx0XHRyZXR1cm4gcmV0O1xuMjk1NTpcdFx0XHRpZiAoaWQ0IFx1MDAyNiBTV19LU1o4ODY0KVxuMjk1NjpcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaODg2NF9DSElQX0lEO1xuMjk1NzpcdFx0XHRicmVhaztcbjI5NTg6XHRcdGRlZmF1bHQ6XG4yOTU5Olx0XHRcdHJldCA9IGtzel9yZWFkMzIoZGV2LCBSRUdfQ0hJUF9JRDAsIFx1MDAyNmlkMzIpO1xuMjk2MDpcdFx0XHRpZiAocmV0KVxuMjk2MTpcdFx0XHRcdHJldHVybiByZXQ7XG4yOTYyOlx0XG4yOTYzOlx0XHRcdGRldi1cdTAwM2VjaGlwX3JldiA9IEZJRUxEX0dFVChTV19SRVZfSURfTSwgaWQzMik7XG4yOTY0Olx0XHRcdGlkMzIgXHUwMDI2PSB+MHhGRjtcbjI5NjU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYxNDQKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBTd2l0Y2ggRGV0ZWN0aW9uICZhbXA7IEZ1enppbmcgQ2hhbGxlbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBrc3pfc3dpdGNoX2RldGVjdGAgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcGh5c2ljYWwgc3dpdGNoLiBJdCYjMzk7cyByZWFkaW5nIHJlZ2lzdGVycyB1c2luZyBga3N6X3JlYWQxNmAgYW5kIGBrc3pfcmVhZDMyYCBvdmVyIEkyQy9TUEksIHJpZ2h0PyBBbmQgaWYgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCB0aGVyZSwgaXQmIzM5O3Mgc3VwcG9zZWQgdG8gZmFpbCBhbmQgcmV0dXJuIC1FTk9ERVYuIFN0YW5kYXJkIHN0dWZmLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGZ1enppbmcgdGhpcywgYW5kIHRoYXQmIzM5O3Mgd2hlcmUgdGhpbmdzIGdldCB0cmlja3kuCgpDYW4gSSBldmVuICpyZWFjaCogdGhpcyBEU0EtcmVsYXRlZCBjb2RlLCBvciBhbnkgRFNBIHN3aXRjaCBkcml2ZXIgZm9yIHRoYXQgbWF0dGVyLCBpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAgbGlrZSBRRU1VIG9yIGV2ZW4gR29vZ2xlIENvbXB1dGUgRW5naW5lPyBBbmQgSSYjMzk7bSBzdGFydGluZyB0byBnZXQgYSBzaW5raW5nIGZlZWxpbmcgdGhhdCB0aGUgYW5zd2VyIGlzIG5vLiBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGFueSBEU0Egc3dpdGNoIGRyaXZlcnMgZW11bGF0ZWQgd2l0aGluIFFFTVUuIFRoYXQmIzM5O3MgYSBtYWpvciByb2FkYmxvY2suCgpTbywgaWYgaGFyZHdhcmUgZW11bGF0aW9uIGlzIG91dCwgd2hhdCBhYm91dCBhIHZpcnR1YWwgb3IgbW9jayBEU0EgZHJpdmVyPyBEb2VzIHRoZSBMaW51eCBrZXJuZWwgZXZlbiBoYXZlIGEgYmFzaWMsIHRlc3QtZm9jdXNlZCBtb2NrIGRyaXZlciBmb3IgRFNBIHNwZWNpZmljYWxseT8gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9kc2EvYCBkaXJlY3RvcnkuIEdvdHRhIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLiBJJiMzOTttIGdvaW5nIHRvIG5lZWQgdG8gZGlnIGRlZXBlciBpbiB0aGF0IGRpcmVjdG9yeSB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlcmUgZXhpc3RzIGEgd2F5IHRvIHRlc3QgdGhpcyB3aXRob3V0IGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwODo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtiY21fc2YyLmMmIzM0OywKICAgICYjMzQ7YmNtX3NmMi5oJiMzNDssCiAgICAmIzM0O2JjbV9zZjJfY2ZwLmMmIzM0OywKICAgICYjMzQ7YmNtX3NmMl9yZWdzLmgmIzM0OywKICAgICYjMzQ7ZHNhX2xvb3AuYyYjMzQ7LAogICAgJiMzNDtrczg5OTUuYyYjMzQ7LAogICAgJiMzNDtsYW45MzAzLWNvcmUuYyYjMzQ7LAogICAgJiMzNDtsYW45MzAzLmgmIzM0OywKICAgICYjMzQ7bGFuOTMwM19pMmMuYyYjMzQ7LAogICAgJiMzNDtsYW45MzAzX21kaW8uYyYjMzQ7LAogICAgJiMzNDttdDc1MzAtbWRpby5jJiMzNDssCiAgICAmIzM0O210NzUzMC1tbWlvLmMmIzM0OywKICAgICYjMzQ7bXQ3NTMwLmMmIzM0OywKICAgICYjMzQ7bXQ3NTMwLmgmIzM0OywKICAgICYjMzQ7bXQ3NjI4LmMmIzM0OywKICAgICYjMzQ7bXY4OGU2MDYwLmMmIzM0OywKICAgICYjMzQ7bXY4OGU2MDYwLmgmIzM0OywKICAgICYjMzQ7cnpuMV9hNXBzdy5jJiMzNDssCiAgICAmIzM0O3J6bjFfYTVwc3cuaCYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLXZzYzczeHgtY29yZS5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UtdnNjNzN4eC1wbGF0Zm9ybS5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UtdnNjNzN4eC1zcGkuYyYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLXZzYzczeHguaCYjMzQ7LAogICAgJiMzNDt5dDkyMXguYyYjMzQ7LAogICAgJiMzNDt5dDkyMXguaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDtiNTMmIzM0OywKICAgICYjMzQ7aGlyc2NobWFubiYjMzQ7LAogICAgJiMzNDtsYW50aXEmIzM0OywKICAgICYjMzQ7bWljcm9jaGlwJiMzNDssCiAgICAmIzM0O212ODhlNnh4eCYjMzQ7LAogICAgJiMzNDtteGw4NjJ4eCYjMzQ7LAogICAgJiMzNDtuZXRjJiMzNDssCiAgICAmIzM0O29jZWxvdCYjMzQ7LAogICAgJiMzNDtxY2EmIzM0OywKICAgICYjMzQ7cmVhbHRlayYjMzQ7LAogICAgJiMzNDtzamExMTA1JiMzNDssCiAgICAmIzM0O3hyczcwMHgmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwODo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjk5MQoJCQkJCQkJb3V0cHV0OiAxNDgKCQkJCQkJCXRob3VnaHRzOiA4MDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgTWljcm9jaGlwIEtTWiBQVFAgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmNgLCB3aGljaCBpcyB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggUFRQIGRyaXZlci4gVGhpcyBpc24mIzM5O3QgdGhlIGxvb3BiYWNrIGRyaXZlciAoYGRzYV9sb29wLmNgKSwgYnV0IHNwZWNpZmljYWxseSB0YXJnZXRzIGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQYC4gVGhpcyBpcyBvbmx5IGJ1aWx0IGZvciBNaWNyb2NoaXAgS1NaIHN3aXRjaGVzLCB0aGUgS1NaOHh4eCwgS1NaOXh4eCwgYW5kIExBTjkzN3ggZmFtaWxpZXMuIFRoZXNlIGFyZSBoYXJkd2FyZSBldGhlcm5ldCBzd2l0Y2ggY2hpcHMsIGFuZCB0aGV5IG5lZWQgYSByZWFsIFNQSSwgSTJDLCBvciBTTUkgY29ubmVjdGlvbiB0byB0aGUgQVNJQy4KCk5vdywgbGV0JiMzOTtzIGdvIHRocm91Z2ggdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTcGVjaWZpY2FsbHksIFNlY3Rpb24gMiwgdGhlICYjMzQ7V0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgcGFydC4gVGhpcyBpcyBrZXkuIFdlIG9ubHkgcmV0dXJuIGBmYWxzZWAgaWYgdGhlIGNvZGUgY2hhbmdlIGZhbGxzICpzdHJpY3RseSogaW50byBvbmUgb2YgdGhvc2UgbmVnYXRpdmUgY3JpdGVyaWEuIExldCYjMzk7cyBzZWUuLi4KCklzIGl0IG5vbi1rZXJuZWwgb3Igbm9uLWV4ZWN1dGFibGU/IE5vLgoKU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlPyBCaW5nbyEgVGhpcyBsb29rcyBsaWtlIGl0LiBNaWNyb2NoaXAgc3dpdGNoZXMgYXJlIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIG5lZWRpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGlzIHNlZW1zIHRvIGJlIHRoZSBjYXNlIGhlcmUuCgpVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM/IE5vLCB0aGlzIGNvZGUgaXMgbm90IHRpZWQgdG8gYSBkcml2ZXIgdGVhcmRvd24gb3IgdW51c3VhbCBhcmNoaXRlY3R1cmUuCgpCdXQgd2FpdCwgd2hhdCBhYm91dCB0aG9zZSB2aXJ0dWFsIGJ1c2VzIGluIHN5emthbGxlcj8gVGhlIHBoaWxvc29waHkgbWVudGlvbnMgZHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzIGFyZSB3b3J0aCBmdXp6aW5nLiBPa2F5LCBzbyBLU1ogc3dpdGNoZXMgdXNlIEkyQywgU1BJLCBvciBTTUkuIENhbiBhbnkgb2YgdGhvc2UgYnVzZXMgYmUgcmVhY2hlZCB0aHJvdWdoIGEgVVNCIGdhZGdldCBpbiBzeXprYWxsZXI/IE5vLiBUaGlzIGlzIGFuIGV0aGVybmV0IHN3aXRjaCBjaGlwIGNvbm5lY3RlZCB0byBhbiBTb0MgdmlhIGFuIEkyQyBvciBTUEkgYnVzLiBFdmVuIGlmIHRoZXJlIHdhcyBhbiBJMkMgZGV2aWNlIG5vZGUgY3JlYXRlZCBpbiBhIHN5emthbGxlciBWTSwgYGtzel9zd2l0Y2hfZGV0ZWN0YCBhdHRlbXB0cyB0byByZWFkIHJlZ2lzdGVycyBkaXJlY3RseSBmcm9tIHRoZSBwaHlzaWNhbCBjaGlwIGFuZCB3aWxsIGZhaWwsIHNpbmNlIHRoZXJlJiMzOTtzIG5vIGVtdWxhdGVkIEtTWiBoYXJkd2FyZS4gVGhpcyBpcyBhIGRlYWQgZW5kLiBGdXJ0aGVybW9yZSwgdGhlIFBUUCBjbG9jayByZWdpc3RyYXRpb24gYW5kIHRoZSBwYXRjaGVkIGNvZGUgYXJlIG9ubHkgcmVhY2hhYmxlIGFmdGVyIHN1Y2Nlc3NmdWwgc3dpdGNoIHNldHVwLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSB0aGUgRFNBIGNvcmUgd2hlbiB0aGUgc3dpdGNoIGlzIGJvdW5kIHRvIGEgbWFzdGVyIG5ldHdvcmsgZGV2aWNlIC0gc29tZXRoaW5nIHRoYXQgaXMgdXN1YWxseSBkZWZpbmVkIGJ5IGEgRGV2aWNlIFRyZWUgYW5kIHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZS4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIGFyZSB0aGVyZSBhbnkgbW9jayBvciB0ZXN0IGhhcm5lc3NlcyBmb3IgS1NaIGRldmljZXM/IE5vcGUuIE5vdGhpbmcgdXNlZnVsIGhlcmUuCgpTbywgdGhlIGNvbmNsdXNpb24gaXMgcHJldHR5IGNsZWFyLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgaW4gYGtzel9wdHAuY2AgZm9yIE1pY3JvY2hpcCBLU1ogc3dpdGNoZXMuIFRoaXMgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBRRU1VIGFuZCBHQ0UsIGFzIGZhciBhcyBJIGtub3csIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIGhhcmR3YXJlIHN3aXRjaCBjaGlwcy4gVGhlcmVmb3JlLCBpdCYjMzk7cyBhIGBXb3J0aEZ1enppbmc9ZmFsc2VgIHNpdHVhdGlvbi4KCkp1c3QgdG8gZG91YmxlIGNoZWNrIG15c2VsZiwgdGhlIHBhdGNoIG1vZGlmaWVzIFBUUCBwZXJpb2RpYyBvdXRwdXQgaGFuZGxpbmcgKGBrc3pfcHRwX2VuYWJsZV9wZXJvdXRgLCBga3N6X3B0cF9yZXN0YXJ0X3Blcm91dGApIGluIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHJlYWwgaGFyZHdhcmUgY29ubmVjdGVkIGJ5IFNQSSwgSTJDLCBvciBTTUksIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBRRU1VIG9yIGNsb3VkIFZNcywgbWFraW5nIHRoaXMgY29kZSB1bnJlYWNoYWJsZS4KCkV2ZXJ5dGhpbmcgbG9va3MgZ29vZCBhbmQgY29uc2lzdGVudCB3aXRoIHRoZSBpbnN0cnVjdGlvbnMuCkxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDA4OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGVyaW9kaWMgb3V0cHV0IGhhbmRsaW5nIChrc3pfcHRwX2VuYWJsZV9wZXJvdXQgYW5kIGtzel9wdHBfcmVzdGFydF9wZXJvdXQpIGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1pY3JvY2hpcCBLU1o4eHh4L0tTWjl4eHgvTEFOOTM3eCBzd2l0Y2ggaGFyZHdhcmUgKGludGVyZmFjZWQgdmlhIFNQSSwgSTJDLCBvciBTTUkpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGVyaW9kaWMgb3V0cHV0IGhhbmRsaW5nIChrc3pfcHRwX2VuYWJsZV9wZXJvdXQgYW5kIGtzel9wdHBfcmVzdGFydF9wZXJvdXQpIGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1pY3JvY2hpcCBLU1o4eHh4L0tTWjl4eHgvTEFOOTM3eCBzd2l0Y2ggaGFyZHdhcmUgKGludGVyZmFjZWQgdmlhIFNQSSwgSTJDLCBvciBTTUkpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMDg6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjMxLjI3OTc3NDMyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDY5MjM3NDA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBlcmlvZGljIG91dHB1dCBoYW5kbGluZyAoa3N6X3B0cF9lbmFibGVfcGVyb3V0IGFuZCBrc3pfcHRwX3Jlc3RhcnRfcGVyb3V0KSBpbiB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNaWNyb2NoaXAgS1NaOHh4eC9LU1o5eHh4L0xBTjkzN3ggc3dpdGNoIGhhcmR3YXJlIChpbnRlcmZhY2VkIHZpYSBTUEksIEkyQywgb3IgU01JKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsIGVudmlyb25tZW50cywgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjMxLjI3OTc3OTM5N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwMjcwMDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjY3NjVhMzhkMTYwOTgwY2E0YzQ0NTJmOWFjZmIxMDVjODA2NDMxY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCAxNCAwODo0MzozMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jXFxuaW5kZXggMzljYzcwZDY1OTAwYi4uNGY5MjRkZjllMzJiZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jXFxuQEAgLTIyMiw2ICsyMjIsOCBAQCBzdGF0aWMgaW50IGtzel9wdHBfZW5hYmxlX3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcbiBcXG4rXFx0cHRwX2RhdGEtXFx1MDAzZXBlcm91dF9mbGFncyA9IHJlcXVlc3QtXFx1MDAzZWZsYWdzO1xcbitcXHRwdHBfZGF0YS1cXHUwMDNlcGVyb3V0X2luZGV4ID0gcmVxdWVzdC1cXHUwMDNlaW5kZXg7XFxuIFxcdHB0cF9kYXRhLVxcdTAwM2VwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3QudHZfc2VjICA9IHJlcXVlc3QtXFx1MDAzZXN0YXJ0LnNlYztcXG4gXFx0cHRwX2RhdGEtXFx1MDAzZXBlcm91dF90YXJnZXRfdGltZV9maXJzdC50dl9uc2VjID0gcmVxdWVzdC1cXHUwMDNlc3RhcnQubnNlYztcXG4gXFxuQEAgLTc5NSw4ICs3OTcsOCBAQCBzdGF0aWMgaW50IGtzel9wdHBfcmVzdGFydF9wZXJvdXQoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4gXFx0cmVxdWVzdC5zdGFydC5uc2VjID0gbmV4dC50dl9uc2VjO1xcbiBcXHRyZXF1ZXN0LnBlcmlvZC5zZWMgID0gcHRwX2RhdGEtXFx1MDAzZXBlcm91dF9wZXJpb2QudHZfc2VjO1xcbiBcXHRyZXF1ZXN0LnBlcmlvZC5uc2VjID0gcHRwX2RhdGEtXFx1MDAzZXBlcm91dF9wZXJpb2QudHZfbnNlYztcXG4tXFx0cmVxdWVzdC5pbmRleCA9IDA7XFxuLVxcdHJlcXVlc3QuZmxhZ3MgPSAwO1xcbitcXHRyZXF1ZXN0LmluZGV4ID0gcHRwX2RhdGEtXFx1MDAzZXBlcm91dF9pbmRleDtcXG4rXFx0cmVxdWVzdC5mbGFncyA9IHB0cF9kYXRhLVxcdTAwM2VwZXJvdXRfZmxhZ3M7XFxuIFxcbiBcXHRyZXR1cm4ga3N6X3B0cF9lbmFibGVfcGVyb3V0KGRldiwgXFx1MDAyNnJlcXVlc3QsIDEpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmhcXG5pbmRleCA3MDY3ZWM5YmQxZTZmLi5kYTZhMmVmYjIzZDcyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmhcXG5AQCAtMzEsNiArMzEsOCBAQCBzdHJ1Y3Qga3N6X3B0cF9kYXRhIHtcXG4gXFx0ZW51bSBrc3pfcHRwX3RvdV9tb2RlIHRvdV9tb2RlO1xcbiBcXHRzdHJ1Y3QgdGltZXNwZWM2NCBwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3Q7ICAvKiBzdGFydCBvZiBmaXJzdCBwdWxzZSAqL1xcbiBcXHRzdHJ1Y3QgdGltZXNwZWM2NCBwZXJvdXRfcGVyaW9kO1xcbitcXHR1bnNpZ25lZCBpbnQgcGVyb3V0X2ZsYWdzO1xcbitcXHR1bnNpZ25lZCBpbnQgcGVyb3V0X2luZGV4O1xcbiB9O1xcbiBcXG4gaW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDg6NDM6MzEuNzQwNjI0NzlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEyNDIzMTUwMjkwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGVyaW9kaWMgb3V0cHV0IGhhbmRsaW5nIChrc3pfcHRwX2VuYWJsZV9wZXJvdXQgYW5kIGtzel9wdHBfcmVzdGFydF9wZXJvdXQpIGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1pY3JvY2hpcCBLU1o4eHh4L0tTWjl4eHgvTEFOOTM3eCBzd2l0Y2ggaGFyZHdhcmUgKGludGVyZmFjZWQgdmlhIFNQSSwgSTJDLCBvciBTTUkpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNjc2NWEzOGQxNjA5ODBjYTRjNDQ1MmY5YWNmYjEwNWM4MDY0MzFjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgMTQgMDg6NDM6MzAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jXG5pbmRleCAzOWNjNzBkNjU5MDBiLi40ZjkyNGRmOWUzMmJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jXG5AQCAtMjIyLDYgKzIyMiw4IEBAIHN0YXRpYyBpbnQga3N6X3B0cF9lbmFibGVfcGVyb3V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuK1x0cHRwX2RhdGEtXHUwMDNlcGVyb3V0X2ZsYWdzID0gcmVxdWVzdC1cdTAwM2VmbGFncztcbitcdHB0cF9kYXRhLVx1MDAzZXBlcm91dF9pbmRleCA9IHJlcXVlc3QtXHUwMDNlaW5kZXg7XG4gXHRwdHBfZGF0YS1cdTAwM2VwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3QudHZfc2VjICA9IHJlcXVlc3QtXHUwMDNlc3RhcnQuc2VjO1xuIFx0cHRwX2RhdGEtXHUwMDNlcGVyb3V0X3RhcmdldF90aW1lX2ZpcnN0LnR2X25zZWMgPSByZXF1ZXN0LVx1MDAzZXN0YXJ0Lm5zZWM7XG4gXG5AQCAtNzk1LDggKzc5Nyw4IEBAIHN0YXRpYyBpbnQga3N6X3B0cF9yZXN0YXJ0X3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0cmVxdWVzdC5zdGFydC5uc2VjID0gbmV4dC50dl9uc2VjO1xuIFx0cmVxdWVzdC5wZXJpb2Quc2VjICA9IHB0cF9kYXRhLVx1MDAzZXBlcm91dF9wZXJpb2QudHZfc2VjO1xuIFx0cmVxdWVzdC5wZXJpb2QubnNlYyA9IHB0cF9kYXRhLVx1MDAzZXBlcm91dF9wZXJpb2QudHZfbnNlYztcbi1cdHJlcXVlc3QuaW5kZXggPSAwO1xuLVx0cmVxdWVzdC5mbGFncyA9IDA7XG4rXHRyZXF1ZXN0LmluZGV4ID0gcHRwX2RhdGEtXHUwMDNlcGVyb3V0X2luZGV4O1xuK1x0cmVxdWVzdC5mbGFncyA9IHB0cF9kYXRhLVx1MDAzZXBlcm91dF9mbGFncztcbiBcbiBcdHJldHVybiBrc3pfcHRwX2VuYWJsZV9wZXJvdXQoZGV2LCBcdTAwMjZyZXF1ZXN0LCAxKTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaFxuaW5kZXggNzA2N2VjOWJkMWU2Zi4uZGE2YTJlZmIyM2Q3MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaFxuQEAgLTMxLDYgKzMxLDggQEAgc3RydWN0IGtzel9wdHBfZGF0YSB7XG4gXHRlbnVtIGtzel9wdHBfdG91X21vZGUgdG91X21vZGU7XG4gXHRzdHJ1Y3QgdGltZXNwZWM2NCBwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3Q7ICAvKiBzdGFydCBvZiBmaXJzdCBwdWxzZSAqL1xuIFx0c3RydWN0IHRpbWVzcGVjNjQgcGVyb3V0X3BlcmlvZDtcbitcdHVuc2lnbmVkIGludCBwZXJvdXRfZmxhZ3M7XG4rXHR1bnNpZ25lZCBpbnQgcGVyb3V0X2luZGV4O1xuIH07XG4gXG4gaW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjMxLjc0MDYyNjQxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NzE0OTkzNjMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNaWNyb2NoaXAgS1NaIERTQSBTd2l0Y2ggRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhlIHBhdGNoIHRvdWNoZXMgYGtzel9wdHAuY2AgYW5kIGBrc3pfcHRwLmhgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvYCBkaXJlY3RvcnkuIFJpZ2h0LCB0aGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gU3BlY2lmaWNhbGx5LCBJJ20gbG9va2luZyBhdCB0aGUgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgaW1wbGVtZW50YXRpb24gd2l0aGluIHRoYXQgZHJpdmVyLCBzaW5jZSBpdCdzIGBrc3pfcHRwLipgIGZpbGVzLlxuXG5NeSBuZXh0IHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kuIERvZXMgdGhpcyBmdW5jdGlvbmFsaXR5IHJlbHkgb24gc3BlY2lmaWMgTWljcm9jaGlwIEtTWiBzd2l0Y2ggaGFyZHdhcmU/IENhbiBJIGV2ZW4gdGVzdCB0aGlzIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmU/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0J3MgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBvciBtYXliZSBhY2Nlc3NpYmxlIHRocm91Z2ggYSB2aXJ0dWFsIGJ1cyBvciBVU0IgY29ubmVjdGlvbi4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGluIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2AgdG8gc2VlIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkIGFuZCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZS4gSSdsbCB1c2UgZ3JlcCBvciBjb2RlIHNlYXJjaCB0byBwaW5wb2ludCByZWxldmFudCBpbmZvcm1hdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMyOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjM4Ljg5MDU2NTM2OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjM1OTk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrc3pfcHRwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MDUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU9OD1pZmRlZiBDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6OTprc3pfc3dpdGNoLW9ianMgKz0ga3N6X3B0cC5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS0xMC1lbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjM4NT1zdGF0aWMgaW50IGtzejg0NjNfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQ4MC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDgxOlxcdFxcdHJldCA9IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0ODItXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjUwNi1cXHRpZiAoZGV2LVxcdTAwM2VpcnEgXFx1MDAzZSAwKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI1MDc6XFx0XFx0a3N6X3B0cF9jbG9ja191bnJlZ2lzdGVyKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTA4LWZyZWVfcHRwX2lycTpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTI1MTg9c3RhdGljIHZvaWQga3N6ODQ2M190ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTIyLVxcdGlmIChkZXYtXFx1MDAzZWlycSBcXHUwMDNlIDApIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTIzOlxcdFxcdGtzel9wdHBfY2xvY2tfdW5yZWdpc3Rlcihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjUyNC1cXHRcXHRrc3o4NDYzX3B0cF9pcnFfZnJlZShkcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yNjQ1PXN0YXRpYyBpbnQga3N6OF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzY5LVxcdFxcdFxcdGlmIChkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXB0cF9jYXBhYmxlKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjc3MDpcXHRcXHRcXHRcXHRyZXQgPSBrc3pfcHRwX2lycV9zZXR1cChkcywgZHAtXFx1MDAzZWluZGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzcxLVxcdFxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzc3LVxcdGlmIChkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXB0cF9jYXBhYmxlKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjc3ODpcXHRcXHRyZXQgPSBrc3pfcHRwX2Nsb2NrX3JlZ2lzdGVyKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzc5LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI4MDMtXFx0aWYgKGRldi1cXHUwMDNlaW5mby1cXHUwMDNlcHRwX2NhcGFibGUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjgwNDpcXHRcXHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI4MDUtcG9ydF9yZWxlYXNlOlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjgwOC1cXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VwdHBfY2FwYWJsZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyODA5OlxcdFxcdFxcdFxcdGtzel9wdHBfaXJxX2ZyZWUoZHMsIGRwLVxcdTAwM2VpbmRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjgxMC1waXJxX3JlbGVhc2U6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0xNjcwPXN0YXRpYyBpbnQga3N6OTQ3N19zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xNzc1LVxcdFxcdFxcdGlmIChkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXB0cF9jYXBhYmxlKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MTc3NjpcXHRcXHRcXHRcXHRyZXQgPSBrc3pfcHRwX2lycV9zZXR1cChkcywgZHAtXFx1MDAzZWluZGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xNzc3LVxcdFxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xNzgzLVxcdGlmIChkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXB0cF9jYXBhYmxlKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MTc4NDpcXHRcXHRyZXQgPSBrc3pfcHRwX2Nsb2NrX3JlZ2lzdGVyKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0xNzg1LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE4MDktXFx0aWYgKGRldi1cXHUwMDNlaW5mby1cXHUwMDNlcHRwX2NhcGFibGUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MTgxMDpcXHRcXHRrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTE4MTEtcG9ydF9yZWxlYXNlOlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTgxNC1cXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VwdHBfY2FwYWJsZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzoxODE1OlxcdFxcdFxcdFxcdGtzel9wdHBfaXJxX2ZyZWUoZHMsIGRwLVxcdTAwM2VpbmRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMTgxNi1waXJxX3JlbGVhc2U6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zMi0jaW5jbHVkZSBcXFwia3N6X2RjYi5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjMzOiNpbmNsdWRlIFxcXCJrc3pfcHRwLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzQtI2luY2x1ZGUgXFxcImtzejguaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTI1Njc9dm9pZCBrc3pfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjU3Mi1cXHRpZiAoZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VwdHBfY2FwYWJsZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNTczOlxcdFxcdGtzel9wdHBfY2xvY2tfdW5yZWdpc3Rlcihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjU3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1NzctXFx0XFx0XFx0aWYgKGRldi1cXHUwMDNlaW5mby1cXHUwMDNlcHRwX2NhcGFibGUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjU3ODpcXHRcXHRcXHRcXHRrc3pfcHRwX2lycV9mcmVlKGRzLCBkcC1cXHUwMDNlaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI1NzktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoyMjojaW5jbHVkZSBcXFwia3N6X3B0cC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9MTQ0PXN0cnVjdCBrc3pfaXJxIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTE1NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoxNTY6c3RydWN0IGtzel9wdHBfaXJxIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0xNTctXFx0c3RydWN0IGtzel9wb3J0ICpwb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9MTY5PXN0cnVjdCBrc3pfcG9ydCB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0xOTgtXFx0c3RydWN0IGtzel9pcnEgcHRwaXJxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjE5OTpcXHRzdHJ1Y3Qga3N6X3B0cF9pcnEgcHRwbXNnX2lycVszXTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yMDAtXFx0a3RpbWVfdCB0c3RhbXBfbXNnO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9MjA2PXN0cnVjdCBrc3pfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTI0NS1cXHRzdHJ1Y3Qga3N6X2lycSBnaXJxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjI0NjpcXHRzdHJ1Y3Qga3N6X3B0cF9kYXRhIHB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTI0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE1LSNpbmNsdWRlIFxcXCJrc3pfY29tbW9uLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTY6I2luY2x1ZGUgXFxcImtzel9wdHAuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNzojaW5jbHVkZSBcXFwia3N6X3B0cF9yZWcuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xOC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxOTojZGVmaW5lIHB0cF9jYXBzX3RvX2RhdGEoZCkgY29udGFpbmVyX29mKChkKSwgc3RydWN0IGtzel9wdHBfZGF0YSwgY2FwcylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yMC0jZGVmaW5lIHB0cF9kYXRhX3RvX2tzel9kZXYoZCkgY29udGFpbmVyX29mKChkKSwgc3RydWN0IGtzel9kZXZpY2UsIHB0cF9kYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNDMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NDQ6c3RhdGljIGludCBrc3pfcHRwX3RvdV9ncGlvKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNjUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NjY6c3RhdGljIGludCBrc3pfcHRwX3RvdV9yZXNldChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1OCB1bml0KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg4LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjg5OnN0YXRpYyBpbnQga3N6X3B0cF90b3VfcHVsc2VfdmVyaWZ5KHU2NCBwdWxzZV9ucylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy05MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTAzOnN0YXRpYyBpbnQga3N6X3B0cF90b3VfdGFyZ2V0X3RpbWVfc2V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdGltZXNwZWM2NCBjb25zdCAqdHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIzOnN0YXRpYyBpbnQga3N6X3B0cF90b3Vfc3RhcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggdW5pdClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE1MDpzdGF0aWMgaW50IGtzel9wdHBfY29uZmlndXJlX3Blcm91dChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE1MS1cXHRcXHRcXHRcXHQgICAgdTMyIGN5Y2xlX3dpZHRoX25zLCB1MzIgcHVsc2Vfd2lkdGhfbnMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xNzgtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTc5OlxcdHJldCA9IGtzel9wdHBfdG91X3RhcmdldF90aW1lX3NldChkZXYsIHRhcmdldF90aW1lKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xODAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE4NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxODY6c3RhdGljIGludCBrc3pfcHRwX2VuYWJsZV9wZXJvdXQoc3RydWN0IGtzel9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xODctXFx0XFx0XFx0XFx0IHN0cnVjdCBwdHBfcGVyb3V0X3JlcXVlc3QgY29uc3QgKnJlcXVlc3QsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xODkte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE5MDpcXHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YSA9IFxcdTAwMjZkZXYtXFx1MDAzZXB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE5MS1cXHR1NjQgcmVxX3B1bHNlX3dpZHRoX25zO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjE1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjIxNjpcXHRyZXQgPSBrc3pfcHRwX3RvdV9yZXNldChkZXYsIHJlcXVlc3QtXFx1MDAzZWluZGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yMTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI0OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoyNTA6XFx0cmV0ID0ga3N6X3B0cF90b3VfcHVsc2VfdmVyaWZ5KHB1bHNlX3dpZHRoX25zKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNTEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI1My1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoyNTQ6XFx0cmV0ID0ga3N6X3B0cF9jb25maWd1cmVfcGVyb3V0KGRldiwgY3ljbGVfd2lkdGhfbnMsIHB1bHNlX3dpZHRoX25zLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI1NS1cXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNnB0cF9kYXRhLVxcdTAwM2VwZXJvdXRfdGFyZ2V0X3RpbWVfZmlyc3QsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNTktXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MjYwOlxcdHJldCA9IGtzel9wdHBfdG91X2dwaW8oZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNjEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI2My1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoyNjQ6XFx0cmV0ID0ga3N6X3B0cF90b3Vfc3RhcnQoZGV2LCByZXF1ZXN0LVxcdTAwM2VpbmRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjY1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0yNzItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MjczOnN0YXRpYyBpbnQga3N6X3B0cF9lbmFibGVfbW9kZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI3NC17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMjc1LVxcdHN0cnVjdCBrc3pfdGFnZ2VyX2RhdGEgKnRhZ2dlcl9kYXRhID0ga3N6X3RhZ2dlcl9kYXRhKGRldi1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjI3NjpcXHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YSA9IFxcdTAwMjZkZXYtXFx1MDAzZXB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTI3Ny1cXHRjb25zdCB1MTYgKnJlZ3MgPSBkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXJlZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz0zMDI9aW50IGtzejg0NjNfZ2V0X3RzX2luZm8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTMwNS1cXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MzA2OlxcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTMwNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTMzMD1pbnQga3N6X2dldF90c19pbmZvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBrZXJuZWxfZXRodG9vbF90c19pbmZvICp0cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTMzMi1cXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MzMzOlxcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTMzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jPTM3MT1zdGF0aWMgaW50IGtzejg0NjNfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNDE0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjQxNTpcXHRyZXR1cm4ga3N6X3B0cF9lbmFibGVfbW9kZShkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTQxNi19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz00Mzc9c3RhdGljIGludCBrc3pfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNTA2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjUwNzpcXHRyZXR1cm4ga3N6X3B0cF9lbmFibGVfbW9kZShkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTUwOC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz01Mjk9c3RhdGljIGt0aW1lX3Qga3N6X3RzdGFtcF9yZWNvbnN0cnVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBrdGltZV90IHRzdGFtcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTUzMS1cXHRzdHJ1Y3QgdGltZXNwZWM2NCBwdHBfY2xvY2tfdGltZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo1MzI6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNTMzLVxcdHN0cnVjdCB0aW1lc3BlYzY0IGRpZmY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz01OTg9dm9pZCBrc3pfcG9ydF90eHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNjQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjY0OTpzdGF0aWMgdm9pZCBrc3pfcHRwX3R4dHN0YW1wX3NrYihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTY1MC1cXHRcXHRcXHRcXHQgc3RydWN0IGtzel9wb3J0ICpwcnQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz02OTI9dm9pZCBrc3pfcG9ydF9kZWZlcnJlZF94bWl0KHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03MTEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzEyOlxcdGtzel9wdHBfdHh0c3RhbXBfc2tiKGRldiwgcHJ0LCBjbG9uZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzE2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjcxNzpzdGF0aWMgaW50IF9rc3pfcHRwX2dldHRpbWUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgc3RydWN0IHRpbWVzcGVjNjQgKnRzKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTcxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03NDctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzQ4OnN0YXRpYyBpbnQga3N6X3B0cF9nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzQ5LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo3NTA6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzUxLVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTc1NC1cXHRtdXRleF9sb2NrKFxcdTAwMjZwdHBfZGF0YS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6NzU1OlxcdHJldCA9IF9rc3pfcHRwX2dldHRpbWUoZGV2LCB0cyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzU2LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cHRwX2RhdGEtXFx1MDAzZWxvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzYwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjc2MTpzdGF0aWMgaW50IGtzel9wdHBfcmVzdGFydF9wZXJvdXQoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy03NjIte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjc2MzpcXHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YSA9IFxcdTAwMjZkZXYtXFx1MDAzZXB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTc2NC1cXHRzNjQgbm93X25zLCBmaXJzdF9ucywgcGVyaW9kX25zLCBuZXh0X25zO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzcyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjc3MzpcXHRyZXQgPSBfa3N6X3B0cF9nZXR0aW1lKGRldiwgXFx1MDAyNm5vdyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtNzc0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04MDItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6ODAzOlxcdHJldHVybiBrc3pfcHRwX2VuYWJsZV9wZXJvdXQoZGV2LCBcXHUwMDI2cmVxdWVzdCwgMSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODA0LX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04MDUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6ODA2OnN0YXRpYyBpbnQga3N6X3B0cF9zZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTgwNy1cXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODA4LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4MDk6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODEwLVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTgzNy1cXHRjYXNlIEtTWl9QVFBfVE9VX1BFUk9VVDpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4Mzg6XFx0XFx0cmV0ID0ga3N6X3B0cF9yZXN0YXJ0X3Blcm91dChkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTgzOS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODU0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjg1NTpzdGF0aWMgaW50IGtzel9wdHBfYWRqZmluZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg1Ni17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6ODU3OlxcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhID0gcHRwX2NhcHNfdG9fZGF0YShwdHApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTg1OC1cXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gcHRwX2RhdGFfdG9fa3N6X2RldihwdHBfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy04OTQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6ODk1OnN0YXRpYyBpbnQga3N6X3B0cF9hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODk2LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo4OTc6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtODk4LVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk0MC1cXHRjYXNlIEtTWl9QVFBfVE9VX1BFUk9VVDpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo5NDE6XFx0XFx0cmV0ID0ga3N6X3B0cF9yZXN0YXJ0X3Blcm91dChkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk0Mi1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTU2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjk1NzpzdGF0aWMgaW50IGtzel9wdHBfZW5hYmxlKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk1OC1cXHRcXHRcXHQgIHN0cnVjdCBwdHBfY2xvY2tfcmVxdWVzdCAqcmVxLCBpbnQgb24pXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTU5LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo5NjA6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTYxLVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk2Ni1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwdHBfZGF0YS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6OTY3OlxcdFxcdHJldCA9IGtzel9wdHBfZW5hYmxlX3Blcm91dChkZXYsIFxcdTAwMjZyZXEtXFx1MDAzZXBlcm91dCwgb24pO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk2OC1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnB0cF9kYXRhLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk3Ni1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo5Nzc6c3RhdGljIGludCBrc3pfcHRwX3ZlcmlmeV9waW4oc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHVuc2lnbmVkIGludCBwaW4sXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTc4LVxcdFxcdFxcdCAgICAgIGVudW0gcHRwX3Bpbl9mdW5jdGlvbiBmdW5jLCB1bnNpZ25lZCBpbnQgY2hhbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTk5NC0vKiAgRnVuY3Rpb24gaXMgcG9pbnRlciB0byB0aGUgZG9fYXV4X3dvcmsgaW4gdGhlIHB0cF9jbG9jayBjYXBhYmlsaXR5ICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6OTk1OnN0YXRpYyBsb25nIGtzel9wdHBfZG9fYXV4X3dvcmsoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHApXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTk2LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzo5OTc6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBwdHBfY2Fwc190b19kYXRhKHB0cCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtOTk4LVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBwdHBfZGF0YV90b19rc3pfZGV2KHB0cF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwMDItXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHRwX2RhdGEtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwMDM6XFx0cmV0ID0gX2tzel9wdHBfZ2V0dGltZShkZXYsIFxcdTAwMjZ0cyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAwNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAxNi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDE3OnN0YXRpYyBpbnQga3N6X3B0cF9zdGFydF9jbG9jayhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwMTgte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwMTk6XFx0c3RydWN0IGtzel9wdHBfZGF0YSAqcHRwX2RhdGEgPSBcXHUwMDI2ZGV2LVxcdTAwM2VwdHBfZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDIwLVxcdGNvbnN0IHUxNiAqcmVncyA9IGRldi1cXHUwMDNlaW5mby1cXHUwMDNlcmVncztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwMzItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTAzMzppbnQga3N6X3B0cF9jbG9ja19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTAzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDM2LVxcdGNvbnN0IHUxNiAqcmVncyA9IGRldi1cXHUwMDNlaW5mby1cXHUwMDNlcmVncztcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDM3OlxcdHN0cnVjdCBrc3pfcHRwX2RhdGEgKnB0cF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwMzgtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwNDctXFx0cHRwX2RhdGEtXFx1MDAzZWNhcHMubWF4X2FkalxcdFxcdD0gS1NaX01BWF9EUklGVF9DT1JSO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwNDg6XFx0cHRwX2RhdGEtXFx1MDAzZWNhcHMuZ2V0dGltZTY0XFx0PSBrc3pfcHRwX2dldHRpbWU7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA0OTpcXHRwdHBfZGF0YS1cXHUwMDNlY2Fwcy5zZXR0aW1lNjRcXHQ9IGtzel9wdHBfc2V0dGltZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDUwOlxcdHB0cF9kYXRhLVxcdTAwM2VjYXBzLmFkamZpbmVcXHRcXHQ9IGtzel9wdHBfYWRqZmluZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDUxOlxcdHB0cF9kYXRhLVxcdTAwM2VjYXBzLmFkanRpbWVcXHRcXHQ9IGtzel9wdHBfYWRqdGltZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDUyOlxcdHB0cF9kYXRhLVxcdTAwM2VjYXBzLmRvX2F1eF93b3JrXFx0PSBrc3pfcHRwX2RvX2F1eF93b3JrO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwNTM6XFx0cHRwX2RhdGEtXFx1MDAzZWNhcHMuZW5hYmxlXFx0XFx0PSBrc3pfcHRwX2VuYWJsZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMDU0OlxcdHB0cF9kYXRhLVxcdTAwM2VjYXBzLnZlcmlmeVxcdFxcdD0ga3N6X3B0cF92ZXJpZnlfcGluO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwNTUtXFx0cHRwX2RhdGEtXFx1MDAzZWNhcHMubl9waW5zXFx0XFx0PSBLU1pfUFRQX05fR1BJTztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwNTctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA1ODpcXHRyZXQgPSBrc3pfcHRwX3N0YXJ0X2Nsb2NrKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA1OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA2NS1cXHRcXHRzbnByaW50ZihwdHBfcGluLVxcdTAwM2VuYW1lLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEwNjY6XFx0XFx0XFx0IHNpemVvZihwdHBfcGluLVxcdTAwM2VuYW1lKSwgXFxcImtzel9wdHBfcGluXyUwMmRcXFwiLCBpKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDY3LVxcdFxcdHB0cF9waW4tXFx1MDAzZWluZGV4ID0gaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEwODgtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA4OTp2b2lkIGtzel9wdHBfY2xvY2tfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA5MC17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTA5MS1cXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTA5MjpcXHRzdHJ1Y3Qga3N6X3B0cF9kYXRhICpwdHBfZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9MTEwMD1zdGF0aWMgaW50IGtzel9yZWFkX3RzKHN0cnVjdCBrc3pfcG9ydCAqcG9ydCwgdTE2IHJlZywgdTMyICp0cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExMTktXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTEyMDpzdGF0aWMgaXJxcmV0dXJuX3Qga3N6X3B0cF9tc2dfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTIxLXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMTIyOlxcdHN0cnVjdCBrc3pfcHRwX2lycSAqcHRwbXNnX2lycSA9IGRldl9pZDtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTIzLVxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjExNDc6c3RhdGljIGlycXJldHVybl90IGtzel9wdHBfaXJxX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTE0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTc5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjExODA6c3RhdGljIHZvaWQga3N6X3B0cF9pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTE4MS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTg2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjExODc6c3RhdGljIHZvaWQga3N6X3B0cF9pcnFfdW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMTg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTExOTMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTE5NDpzdGF0aWMgdm9pZCBrc3pfcHRwX2lycV9idXNfbG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTE5NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjAwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMDE6c3RhdGljIHZvaWQga3N6X3B0cF9pcnFfYnVzX3N5bmNfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMTMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIxNDpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9jaGlwIGtzel9wdHBfaXJxX2NoaXAgPSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIxNS1cXHQubmFtZVxcdFxcdFxcdD0gXFxcImtzei1pcnFcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMTY6XFx0LmlycV9tYXNrXFx0XFx0PSBrc3pfcHRwX2lycV9tYXNrLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMTc6XFx0LmlycV91bm1hc2tcXHRcXHQ9IGtzel9wdHBfaXJxX3VubWFzayxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjE4OlxcdC5pcnFfYnVzX2xvY2tcXHRcXHQ9IGtzel9wdHBfaXJxX2J1c19sb2NrLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMTk6XFx0LmlycV9idXNfc3luY191bmxvY2tcXHQ9IGtzel9wdHBfaXJxX2J1c19zeW5jX3VubG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjIwLX07XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyMS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjIyOnN0YXRpYyBpbnQga3N6X3B0cF9pcnFfZG9tYWluX21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjIzLVxcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IGlycSwgaXJxX2h3X251bWJlcl90IGh3aXJxKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyNS1cXHRpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGQtXFx1MDAzZWhvc3RfZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIyNjpcXHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcXHUwMDI2a3N6X3B0cF9pcnFfY2hpcCwgaGFuZGxlX2xldmVsX2lycSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyNy1cXHRpcnFfc2V0X25vcHJvYmUoaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMzEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIzMjpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIGtzel9wdHBfaXJxX2RvbWFpbl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIzMzpcXHQubWFwXFx0PSBrc3pfcHRwX2lycV9kb21haW5fbWFwLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMzQtXFx0LnhsYXRlXFx0PSBpcnFfZG9tYWluX3hsYXRlX3R3b2NlbGwsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjM2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMzc6c3RhdGljIHZvaWQga3N6X3B0cF9tc2dfaXJxX2ZyZWUoc3RydWN0IGtzel9wb3J0ICpwb3J0LCB1OCBuKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMzgte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMzk6XFx0c3RydWN0IGtzel9wdHBfaXJxICpwdHBtc2dfaXJxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyNDAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyNDc6c3RhdGljIGludCBrc3pfcHRwX21zZ19pcnFfc2V0dXAoc3RydWN0IGtzel9wb3J0ICpwb3J0LCB1OCBuKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTI1Ni1cXHRzdHJ1Y3Qga3N6X2lycSAqcHRwaXJxID0gXFx1MDAyNnBvcnQtXFx1MDAzZXB0cGlycTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjU3OlxcdHN0cnVjdCBrc3pfcHRwX2lycSAqcHRwbXNnX2lycTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjU4LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMjcwLVxcdHJldCA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKHB0cG1zZ19pcnEtXFx1MDAzZW51bSwgTlVMTCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMjcxOlxcdFxcdFxcdFxcdCAgIGtzel9wdHBfbXNnX3RocmVhZF9mbiwgSVJRRl9PTkVTSE9ULFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyNzItXFx0XFx0XFx0XFx0ICAgcHRwbXNnX2lycS1cXHUwMDNlbmFtZSwgcHRwbXNnX2lycSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz0xMjc5PXN0YXRpYyBpbnQga3N6ODQ2M19wdHBfcG9ydF9pcnFfc2V0dXAoc3RydWN0IGtzel9pcnEgKnB0cGlycSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyODQtXFx0Y29uc3Qgc3RydWN0IGtzel9kZXZfb3BzICpvcHMgPSBwb3J0LVxcdTAwM2Vrc3pfZGV2LVxcdTAwM2VkZXZfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyODU6XFx0c3RydWN0IGtzel9wdHBfaXJxICpwdHBtc2dfaXJxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyODYtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMDUtXFx0XFx0cmV0ID0gcmVxdWVzdF90aHJlYWRlZF9pcnEocHRwbXNnX2lycS1cXHUwMDNlbnVtLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEzMDY6XFx0XFx0XFx0XFx0XFx0ICAga3N6X3B0cF9tc2dfdGhyZWFkX2ZuLCBJUlFGX09ORVNIT1QsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTMwNy1cXHRcXHRcXHRcXHRcXHQgICBwdHBtc2dfaXJxLVxcdTAwM2VuYW1lLCBwdHBtc2dfaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMTctXFx0d2hpbGUgKGktLSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMzE4OlxcdFxcdGtzel9wdHBfbXNnX2lycV9mcmVlKHBvcnQsIGkpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz0xMzIzPXN0YXRpYyB2b2lkIGtzejg0NjNfcHRwX3BvcnRfaXJxX3RlYXJkb3duKHN0cnVjdCBrc3pfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMjctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDI7IGkrKylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxMzI4OlxcdFxcdGtzel9wdHBfbXNnX2lycV9mcmVlKHBvcnQsIGkpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzMjktfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9MTMzMT1pbnQga3N6ODQ2M19wdHBfaXJxX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzNTUtXFx0XFx0XFx0XFx0XFx0XFx0ICBwdHBpcnEtXFx1MDAzZW5pcnFzLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEzNTY6XFx0XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2a3N6X3B0cF9pcnFfZG9tYWluX29wcyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzU3LVxcdFxcdFxcdFxcdFxcdFxcdCAgcHRwaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEzNzAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTM3MTpcXHRyZXQgPSByZXF1ZXN0X3RocmVhZGVkX2lycShwdHBpcnEtXFx1MDAzZWlycV9udW0sIE5VTEwsIGtzel9wdHBfaXJxX3RocmVhZF9mbixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xMzcyLVxcdFxcdFxcdFxcdCAgIElSUUZfT05FU0hPVCwgcHRwaXJxLVxcdTAwM2VuYW1lLCBwdHBpcnEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9MTM4OD12b2lkIGtzejg0NjNfcHRwX2lycV9mcmVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0MDAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTQwMTppbnQga3N6X3B0cF9pcnFfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCB1OCBwKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0MDIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQyMi1cXHRwdHBpcnEtXFx1MDAzZWRvbWFpbiA9IGlycV9kb21haW5fY3JlYXRlX2xpbmVhcihkZXZfZndub2RlKGRldi1cXHUwMDNlZGV2KSwgcHRwaXJxLVxcdTAwM2VuaXJxcyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNDIzOlxcdFxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmtzel9wdHBfaXJxX2RvbWFpbl9vcHMsIHB0cGlycSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQyNC1cXHRpZiAoIXB0cGlycS1cXHUwMDNlZG9tYWluKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQzMi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNDMzOlxcdHJldCA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKHB0cGlycS1cXHUwMDNlaXJxX251bSwgTlVMTCwga3N6X3B0cF9pcnFfdGhyZWFkX2ZuLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0MzQtXFx0XFx0XFx0XFx0ICAgSVJRRl9PTkVTSE9ULCBwdHBpcnEtXFx1MDAzZW5hbWUsIHB0cGlycSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYy0xNDM4LVxcdGZvciAoaXJxID0gMDsgaXJxIFxcdTAwM2MgcHRwaXJxLVxcdTAwM2VuaXJxczsgaXJxKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYzoxNDM5OlxcdFxcdHJldCA9IGtzel9wdHBfbXNnX2lycV9zZXR1cChwb3J0LCBpcnEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0NDAtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0NTctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTQ1ODp2b2lkIGtzel9wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCB1OCBwKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTE0NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQ2NS1cXHRmb3IgKG4gPSAwOyBuIFxcdTAwM2MgcHRwaXJxLVxcdTAwM2VuaXJxczsgbisrKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjE0NjY6XFx0XFx0a3N6X3B0cF9tc2dfaXJxX2ZyZWUocG9ydCwgbik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTQ2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTE2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjE3OmVudW0ga3N6X3B0cF90b3VfbW9kZSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTgtXFx0S1NaX1BUUF9UT1VfSURMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTIxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjIyOnN0cnVjdCBrc3pfcHRwX2RhdGEge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTIzLVxcdHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBjYXBzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMzAtXFx0c3RydWN0IHRpbWVzcGVjNjQgY2xvY2tfdGltZTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDozMTpcXHRlbnVtIGtzel9wdHBfdG91X21vZGUgdG91X21vZGU7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMzItXFx0c3RydWN0IHRpbWVzcGVjNjQgcGVyb3V0X3RhcmdldF90aW1lX2ZpcnN0OyAgLyogc3RhcnQgb2YgZmlyc3QgcHVsc2UgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjM4OmludCBrc3pfcHRwX2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMzktXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6NDA6dm9pZCBrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC00MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oPTU2PWJvb2wga3N6X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC01Ny1cXHRcXHQgICAgICAgdW5zaWduZWQgaW50IHR5cGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjU4OmludCBrc3pfcHRwX2lycV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHU4IHApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjU5OnZvaWQga3N6X3B0cF9pcnFfZnJlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHU4IHApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTYwLWludCBrc3o4NDYzX3B0cF9pcnFfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaD02MT12b2lkIGtzejg0NjNfcHRwX2lycV9mcmVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC02NC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDo2NTpzdHJ1Y3Qga3N6X3B0cF9kYXRhIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC02Ni1cXHQvKiBTZXJpYWxpemVzIGFsbCBvcGVyYXRpb25zIG9uIHRoZSBQVFAgaGFyZHdhcmUgY2xvY2sgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTY5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjcwOnN0YXRpYyBpbmxpbmUgaW50IGtzel9wdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTc0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjc1OnN0YXRpYyBpbmxpbmUgdm9pZCBrc3pfcHRwX2Nsb2NrX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKSB7IH1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC03Ni1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaDo3NzpzdGF0aWMgaW5saW5lIGludCBrc3pfcHRwX2lycV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHU4IHApXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtNzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtODEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6ODI6c3RhdGljIGlubGluZSB2b2lkIGtzel9wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCB1OCBwKSB7fVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTgzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz03Njg9c3RhdGljIGludCBsYW45Mzd4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtODYzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6ODY0OlxcdFxcdFxcdHJldCA9IGtzel9wdHBfaXJxX3NldHVwKGRzLCBkcC1cXHUwMDNlaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtODY1LVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTg2OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjg3MDpcXHRyZXQgPSBrc3pfcHRwX2Nsb2NrX3JlZ2lzdGVyKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTg3MS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTg5My1vdXRfcHRwX2Nsb2NrX3VucmVnaXN0ZXI6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo4OTQ6XFx0a3N6X3B0cF9jbG9ja191bnJlZ2lzdGVyKGRzKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDg6NDM6MzguOTQyOTI5MDg3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTEwMTE4MDA2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE1pY3JvY2hpcCBLU1ogU3dpdGNoIEJ1cyBBdHRhY2htZW50KipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBidXNlcyB0aGVzZSBNaWNyb2NoaXAgS1NaIHN3aXRjaGVzIGFyZSB0eXBpY2FsbHkgYXR0YWNoZWQgdG8uIExldCdzIGRpZyBpbi4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgdGhlIHJlbGV2YW50IGtlcm5lbCBzb3VyY2Ug4oCTIHNwZWNpZmljYWxseSwgSSdsbCBleGFtaW5lIHRoZSBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBvdmVydmlldyBvZiB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBob3cgdGhlc2Ugc3dpdGNoZXMgYXJlIGludGVncmF0ZWQuIEkgZXhwZWN0IHRvIGZpbmQgY2x1ZXMgYWJvdXQgc3VwcG9ydGVkIGJ1cyB0eXBlcyBhbmQgYW55IGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuIFRoaXMgaXMgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQgZm9yIHJldmVyc2UgZW5naW5lZXJpbmcgdGhlIGhhcmR3YXJlIGludGVyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcwNTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwODo0Mzo0NC4wNDQxMTA4NTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnVjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBLU1o4WFhYL0tTWjlYWFgvTEFOOTM3WCBzZXJpZXMgc3dpdGNoIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FcXG4gICA1OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19LU1pcXG4gICA2OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19OT05FXFxuICAgNzpcXHRcXHRzZWxlY3QgTkVUX0lFRUU4MDIxUV9IRUxQRVJTXFxuICAgODpcXHRcXHRzZWxlY3QgRENCXFxuICAgOTpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBNaWNyb2NoaXAgS1NaOCwgS1NaOSBhbmRcXG4gIDEyOlxcdFxcdCAgTEFOOTM3WCBzZXJpZXMgc3dpdGNoIGNoaXBzLCBiZWluZyBLU1o4ODYzLzg4NzMsXFxuICAxMzpcXHRcXHQgIEtTWjg4OTUvODg2NCwgS1NaODc5NC84Nzk1Lzg3NjUsXFxuICAxNDpcXHRcXHQgIEtTWjk0NzcvOTg5Ny85ODk2Lzk1NjcvODU2NywgS1NaOTg5My85NTYzLzg1NjMgYW5kXFxuICAxNTpcXHRcXHQgIExBTjkzNzAvOTM3MS85MzcyLzkzNzMvOTM3NC5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXFxuICAxODpcXHRcXHR0cmlzdGF0ZSBcXFwiS1NaIHNlcmllcyBJMkMgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXFx1MDAyNlxcdTAwMjYgSTJDXFxuICAyMDpcXHRcXHRzZWxlY3QgUkVHTUFQX0kyQ1xcbiAgMjE6XFx0XFx0aGVscFxcbiAgMjI6XFx0XFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaCBJMkMuXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJXFxuICAyNTpcXHRcXHR0cmlzdGF0ZSBcXFwiS1NaIHNlcmllcyBTUEkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuICAyNjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXFx1MDAyNlxcdTAwMjYgU1BJXFxuICAyNzpcXHRcXHRzZWxlY3QgUkVHTUFQX1NQSVxcbiAgMjg6XFx0XFx0aGVscFxcbiAgMjk6XFx0XFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaCBTUEkuXFxuICAzMDpcXHRcXG4gIDMxOlxcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXFxuICAzMjpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgUFRQIGNsb2NrIG9uIHRoZSBLU1o5NTYzL0xBTjkzN3ggRXRoZXJuZXQgU3dpdGNoXFxcIlxcbiAgMzM6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IFBUUF8xNTg4X0NMT0NLXFxuICAzNDpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT049bSB8fCBQVFBfMTU4OF9DTE9DSz15XFxuICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGltZXN0YW1waW5nIFxcdTAwMjYgUFRQIGNsb2NrIG1hbmlwdWxhdGlvbiBpblxcbiAgMzc6XFx0XFx0ICBLU1o4NTYzL0tTWjk1NjMvTEFOOTM3eCBzZXJpZXMgb2Ygc3dpdGNoZXMuIEtTWjk1NjMvS1NaODU2MyBzdXBwb3J0c1xcbiAgMzg6XFx0XFx0ICBvbmx5IG9uZSBzdGVwIHRpbWVzdGFtcGluZy4gTEFOOTM3eCBzd2l0Y2ggc3VwcG9ydHMgYm90aCBvbmUgc3RlcCBhbmRcXG4gIDM5OlxcdFxcdCAgdHdvIHN0ZXAgdGltZXN0YW1waW5nLlxcbiAgNDA6XFx0XFxuICA0MTpcXHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcXG4gIDQyOlxcdFxcdHRyaXN0YXRlIFxcXCJLU1ogc2VyaWVzIFNNSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDQzOlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTlxcbiAgNDQ6XFx0XFx0c2VsZWN0IE1ESU9fQklUQkFOR1xcbiAgNDU6XFx0XFx0aGVscFxcbiAgNDY6XFx0XFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaFxcbiAgNDc6XFx0XFx0ICBNaWNyb2NoaXAgU01JLiBJdCBzdXBwb3J0cyB0aGUgS1NaODg2MyBhbmQgS1NaODg3MyBzd2l0Y2guXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjQ0LjA0NDE4NTExN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjEwNDE4NzQ3ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTWljcm9jaGlwIERTQSBEcml2ZXIgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05gIGFuZCBpbW1lZGlhdGVseSBzZWUgd2UndmUgZ290IGEgZGVjZW50IHNwcmVhZCByZXByZXNlbnRlZCBoZXJlOiBJMkMsIFNQSSwgYW5kIFNNSSBpbnRlcmZhY2VzIGFyZSBhbGwgY292ZXJlZCBmb3IgdGhlIEtTWiBzZXJpZXMuIFRoYXQncyBhIHNvbGlkIHN0YXJ0LiBXZSdyZSBoaXR0aW5nIGEgZmV3IG9mIHRoZSBtb3JlIGNvbW1vbiBpbnRlcmNvbm5lY3RzIGZvciB0aGVzZSB0eXBlcyBvZiBzd2l0Y2hlcywgdGhlIEtTWjk0NzdfSTJDLCBLU1pfU1BJIGFuZCBLU1o4ODYzX1NNSSBpbXBsZW1lbnRhdGlvbnMuIEl0J3MgZ29vZCB0byBzZWUgc29tZSBiYXNpYyBkcml2ZXIgc3VwcG9ydCBmb3IgdGhvc2UgZGV2aWNlcy5cblxuTm93LCB0aG91Z2gsIEkgbmVlZCB0byBnZXQgYSBicm9hZGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgcGljdHVyZS4gQmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgY29tcGxldGVuZXNzLCBJIHNob3VsZCBxdWlja2x5IGRvIGEgc2FuaXR5IGNoZWNrIGluIHRoZSBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9gIGRpcmVjdG9yeS4gVGhlcmUgY291bGQgdmVyeSB3ZWxsIGJlIG90aGVyIE1pY3JvY2hpcCBkZXZpY2VzIG9yIGJ1cyBhdHRhY2htZW50cyBzdXBwb3J0ZWQgdGhlcmUgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhIGNvcm5lciBjYXNlLiBJIGhhdmUgdG8gbG9vayBkZWVwZXIgdG8gYmUgY2VydGFpbiBJIGhhdmUgdGhlIGxheSBvZiB0aGUgbGFuZC4gSXQncyB0aW1lIHRvIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxNzgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjU0LjQ2MjkzNTkyNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImtzejguY1wiLFxuICAgIFwia3N6OC5oXCIsXG4gICAgXCJrc3o4ODYzX3NtaS5jXCIsXG4gICAgXCJrc3o4X3JlZy5oXCIsXG4gICAgXCJrc3o5NDc3LmNcIixcbiAgICBcImtzejk0NzcuaFwiLFxuICAgIFwia3N6OTQ3N19hY2wuY1wiLFxuICAgIFwia3N6OTQ3N19pMmMuY1wiLFxuICAgIFwia3N6OTQ3N19yZWcuaFwiLFxuICAgIFwia3N6OTQ3N190Y19mbG93ZXIuY1wiLFxuICAgIFwia3N6X2NvbW1vbi5jXCIsXG4gICAgXCJrc3pfY29tbW9uLmhcIixcbiAgICBcImtzel9kY2IuY1wiLFxuICAgIFwia3N6X2RjYi5oXCIsXG4gICAgXCJrc3pfcHRwLmNcIixcbiAgICBcImtzel9wdHAuaFwiLFxuICAgIFwia3N6X3B0cF9yZWcuaFwiLFxuICAgIFwia3N6X3NwaS5jXCIsXG4gICAgXCJsYW45Mzd4LmhcIixcbiAgICBcImxhbjkzN3hfbWFpbi5jXCIsXG4gICAgXCJsYW45Mzd4X3JlZy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQzOjU0LjQ2MzAwMTg0NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjUwNjEzOTU4MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFN3aXRjaCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIGNhbiBJIGdldCBhIGhhbmRsZSBvbiB0aGVzZSBzd2l0Y2hlcyB3aXRob3V0IG5lZWRpbmcgYWN0dWFsIGhhcmR3YXJlPyBDYW4gSSBpbnRlcmFjdCB3aXRoIHRoZW0gdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBJMkMgdXNlciBjbGllbnRzLCBhIG1vY2tlZCBidXMsIGRldmljZSB0cmVlIGVudHJpZXMsIEFDUEksIG9yIGV2ZW4gYSB2aXJ0dWFsIGJ1cz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZXZlbiBiZWdpbiB0byBwcm9iZSBvciBpbnN0YW50aWF0ZSB0aGVtIHdpdGhvdXQgcGh5c2ljYWxseSBpbnRlcmFjdGluZyB3aXRoIHRoZW0uXG5cbkhhbmcgb24gYSBzZWNvbmQsIGxldCdzIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBzeXprYWxsZXIgY2FwYWJpbGl0aWVzIGFuZCBnZW5lcmFsIHJlYWNoYWJpbGl0eSBjcml0ZXJpYS4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGV2ZW4gd29ydGggbXkgdGltZS4gVGhpcyBwYXJ0IGlzIGNyaXRpY2FsLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IHdoZW4gdGhlIGZ1enplciB3b3VsZCB0ZWxsIG1lIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuIEkgbmVlZCB0byBrbm93IHdoZW4gSSBjYW4gc2tpcCB0aGVzZSBkZXZpY2VzLiBJdCBzYXlzIHRoYXQgdGhlIHJldHVybiBzaG91bGQgYmUgXCJmYWxzZVwiIE9OTFkgaWYgdGhlIGNoYW5nZXMgZmFsbCBpbnRvIG9uZSBvciBtb3JlIGNhdGVnb3JpZXM6IG5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMsIG9yIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyAobWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgbmVlZCBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgdGhhdCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gQWxzbywgdGhlIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyAtLSBkcml2ZXJzIHRlYXJkb3duIGNhbGxiYWNrcyAocmVtb3ZlLCBzaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSB0aGF0IGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyBob3QtdW5wbHVnIG9mIFBDSSBvciBkcml2ZXIgdW5iaW5kaW5nLCBvciBjb2RlIHBhdGhzIGZvciBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cblJpZ2h0LCBzbyBjYW4gSTJDIG9yIFNQSSBkZXZpY2VzIGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseSBmcm9tIHVzZXIgc3BhY2UsIG1heWJlIHVzaW5nIHNvbWV0aGluZyBsaWtlIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtKi9uZXdfZGV2aWNlYD8gVGhhdCB3b3VsZCBiZSB1c2VmdWwuXG5cbkhtbSwgZXZlbiBpZiBJICpjYW4qIGluc3RhbnRpYXRlIGFuIEkyQyBkZXZpY2Ugd2l0aCBgbmV3X2RldmljZWAsIERTQSBzd2l0Y2hlcyBzZWVtIHRvIHJlcXVpcmUgYSBEU0EgdHJlZS9wbGF0Zm9ybSBkYXRhIG9yIERldmljZSBUcmVlIC8gT0Ygbm9kZSBiaW5kaW5nIHRvIGFuIGV0aGVybmV0IG1hc3RlciBkZXZpY2UgdmlhIGBkc2FfcmVnaXN0ZXJfc3dpdGNoYCEgSSBtdXN0IHVuZGVyc3RhbmQgdGhhdCBiaW5kaW5nIHRvIHN0YXJ0LlxuXG5XYWl0LCB3aGF0IGRvZXMgYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgIGFjdHVhbGx5ICpkbyo/IEFuZCB3aGF0IGFib3V0IGBrc3pfcHRwX2VuYWJsZV9wZXJvdXRgPyBUaGF0IGxvb2tzIHJlbGV2YW50IHRvby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdC5cblxuQW5kIGNhbiBga3N6OTQ3N19pMmNgIGFjdHVhbGx5IGJlIHByb2JlZCB1c2luZyBgbmV3X2RldmljZWA/IFRoYXQncyB3aGF0IEkgcmVhbGx5IG5lZWQgdG8ga25vdy5cblxuSSBndWVzcyBJJ2xsIGNoZWNrIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmNgIGFzIHdlbGwgYXMgYGtzel9zcGkuY2AgYW5kIGBrc3pfY29tbW9uLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIGhlcmUuIEkgbXVzdCByZXZpZXcgdGhlc2UgZHJpdmVycyBpbiBkZXRhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NzcwLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE1LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwODo0Mzo1OS41MjQzOTk3MTZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBNaWNyb2NoaXAgS1NaOTQ3NyBzZXJpZXMgcmVnaXN0ZXIgYWNjZXNzIHRocm91Z2ggSTJDXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjQgTWljcm9jaGlwIFRlY2hub2xvZ3kgSW5jLlxcbiAgIDY6XFx0ICovXFxuICAgNzpcXHRcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9pMmMuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4gIDEyOlxcdFxcbiAgMTM6XFx0I2luY2x1ZGUgXFxcImtzel9jb21tb24uaFxcXCJcXG4gIDE0OlxcdFxcbiAgMTU6XFx0S1NaX1JFR01BUF9UQUJMRShrc3o5NDc3LCBub3RfdXNlZCwgMTYsIDAsIDApO1xcbiAgMTY6XFx0XFxuICAxNzpcXHRzdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuICAxODpcXHR7XFxuICAxOTpcXHRcXHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqY2hpcDtcXG4gIDIwOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBcXHUwMDI2aTJjLVxcdTAwM2VkZXY7XFxuICAyMTpcXHRcXHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYztcXG4gIDIyOlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XFxuICAyMzpcXHRcXHRpbnQgaSwgcmV0O1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHRjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO1xcbiAgMjY6XFx0XFx0aWYgKCFjaGlwKVxcbiAgMjc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdGRldiA9IGtzel9zd2l0Y2hfYWxsb2MoXFx1MDAyNmkyYy1cXHUwMDNlZGV2LCBjaGlwLCBpMmMpO1xcbiAgMzA6XFx0XFx0aWYgKCFkZXYpXFxuICAzMTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0LyogU2F2ZSBjaGlwIGlkIHRvIGRvIHNwZWNpYWwgaW5pdGlhbGl6YXRpb24gd2hlbiBwcm9iaW5nLiAqL1xcbiAgMzQ6XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gY2hpcC1cXHUwMDNlY2hpcF9pZDtcXG4gIDM1OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBfX0tTWl9OVU1fUkVHTUFQUzsgaSsrKSB7XFxuICAzNjpcXHRcXHRcXHRyYyA9IGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXTtcXG4gIDM3OlxcdFxcdFxcdHJjLmxvY2tfYXJnID0gXFx1MDAyNmRldi1cXHUwMDNlcmVnbWFwX211dGV4O1xcbiAgMzg6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWdtYXBbaV0gPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhpMmMsIFxcdTAwMjZyYyk7XFxuICAzOTpcXHRcXHRcXHRpZiAoSVNfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSkge1xcbiAgNDA6XFx0XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNmkyYy1cXHUwMDNlZGV2LCBQVFJfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSxcXG4gIDQxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxcXG5cXFwiLFxcbiAgNDI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBrc3o5NDc3X3JlZ21hcF9jb25maWdbaV0udmFsX2JpdHMpO1xcbiAgNDM6XFx0XFx0XFx0fVxcbiAgNDQ6XFx0XFx0fVxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHRpZiAoaTJjLVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YSlcXG4gIDQ3OlxcdFxcdFxcdGRldi1cXHUwMDNlcGRhdGEgPSBpMmMtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbiAgNDg6XFx0XFxuICA0OTpcXHRcXHRkZXYtXFx1MDAzZWlycSA9IGkyYy1cXHUwMDNlaXJxO1xcbiAgNTA6XFx0XFxuICA1MTpcXHRcXHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdC8qIE1haW4gRFNBIGRyaXZlciBtYXkgbm90IGJlIHN0YXJ0ZWQgeWV0LiAqL1xcbiAgNTQ6XFx0XFx0aWYgKHJldClcXG4gIDU1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuICA1NjpcXHRcXG4gIDU3OlxcdFxcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIGRldik7XFxuICA1ODpcXHRcXG4gIDU5OlxcdFxcdHJldHVybiAwO1xcbiAgNjA6XFx0fVxcbiAgNjE6XFx0XFxuICA2MjpcXHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4gIDYzOlxcdHtcXG4gIDY0OlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0aWYgKGRldilcXG4gIDY3OlxcdFxcdFxcdGtzel9zd2l0Y2hfcmVtb3ZlKGRldik7XFxuICA2ODpcXHR9XFxuICA2OTpcXHRcXG4gIDcwOlxcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuICA3MTpcXHR7XFxuICA3MjpcXHRcXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGkyYyk7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdGlmICghZGV2KVxcbiAgNzU6XFx0XFx0XFx0cmV0dXJuO1xcbiAgNzY6XFx0XFxuICA3NzpcXHRcXHRrc3pfc3dpdGNoX3NodXRkb3duKGRldik7XFxuICA3ODpcXHRcXG4gIDc5OlxcdFxcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIE5VTEwpO1xcbiAgODA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwODo0Mzo1OS41MjQ0ODA4MzZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDk4NjQ3MzgwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRGV2aWNlIE1hdGNoaW5nIGluIHRoZSBLU1o5NDc3IERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIExpbmUgMjUgb2YgdGhlIGNvZGU6IGBjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO2AgYW5kIHRoZW4gdGhlIGltbWVkaWF0ZSBjaGVjayBgaWYgKCFjaGlwKSByZXR1cm4gLUVJTlZBTDtgLiBDbGFzc2ljIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gcGF0dGVybi4gSSdtIGFzc3VtaW5nIGBkZGV2YCBpcyB0aGUgZGV2aWNlIHN0cnVjdHVyZSBwYXNzZWQgdG8gdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoKWAgY2FsbC4gSXQncyBmZXRjaGluZyB0aGUgcmVsZXZhbnQgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIG1hdGNoaW5nIGVudHJ5IGZyb20gdGhlIGRyaXZlcidzIGRldmljZSB0YWJsZS4gU28sIHRvIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYW5kIHdoZXJlIHRoaXMgYGNoaXBgIHZhcmlhYmxlIGlzIHBvcHVsYXRlZCwgSSBuZWVkIHRvIHNlZSB0aGUgbWF0Y2ggdGFibGUgaXRzZWxmLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBnbyBsb29rIGF0IGBrc3o5NDc3X2kyYy5jYCDigJMgc3BlY2lmaWNhbGx5IHRoZSBkZXZpY2UgdGFibGUgZGVmaW5pdGlvbi4gVGhhdCB3aWxsIHRlbGwgbWUgd2hpY2ggZGV2aWNlcyB0aGlzIGRyaXZlciBjbGFpbXMgdG8gc3VwcG9ydCBhbmQsIGNyaXRpY2FsbHksIHdoYXQgZGF0YSBpcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBvZiB0aG9zZSBzdXBwb3J0ZWQgZGV2aWNlcywgd2hpY2ggaXMgd2hhdCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBpcyByZXRyaWV2aW5nLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZGV2aWNlIGlzIGlkZW50aWZpZWQgZHVyaW5nIHByb2JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkxMSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDg6NDQ6MDQuNTEwOTU2NDg4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MTpcXHRcXG4gIDgyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBrc3o5NDc3X2kyY19pZFtdID0ge1xcbiAgODM6XFx0XFx0eyAubmFtZSA9IFxcXCJrc3o5NDc3LXN3aXRjaFxcXCIgfSxcXG4gIDg0OlxcdFxcdHsgfVxcbiAgODU6XFx0fTtcXG4gIDg2OlxcdFxcbiAgODc6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGtzejk0NzdfaTJjX2lkKTtcXG4gIDg4OlxcdFxcbiAgODk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQga3N6OTQ3N19kdF9pZHNbXSA9IHtcXG4gIDkwOlxcdFxcdHtcXG4gIDkxOlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5NDc3XFxcIixcXG4gIDkyOlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTQ3N11cXG4gIDkzOlxcdFxcdH0sXFxuICA5NDpcXHRcXHR7XFxuICA5NTpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6OTg5NlxcXCIsXFxuICA5NjpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk4OTZdXFxuICA5NzpcXHRcXHR9LFxcbiAgOTg6XFx0XFx0e1xcbiAgOTk6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk4OTdcXFwiLFxcbiAxMDA6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk3XVxcbiAxMDE6XFx0XFx0fSxcXG4gMTAyOlxcdFxcdHtcXG4gMTAzOlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5ODkzXFxcIixcXG4gMTA0OlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5M11cXG4gMTA1OlxcdFxcdH0sXFxuIDEwNjpcXHRcXHR7XFxuIDEwNzpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6OTU2M1xcXCIsXFxuIDEwODpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk1NjNdXFxuIDEwOTpcXHRcXHR9LFxcbiAxMTA6XFx0XFx0e1xcbiAxMTE6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejg1NjNcXFwiLFxcbiAxMTI6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTYzXVxcbiAxMTM6XFx0XFx0fSxcXG4gMTE0OlxcdFxcdHtcXG4gMTE1OlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4NTY3XFxcIixcXG4gMTE2OlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODU2N11cXG4gMTE3OlxcdFxcdH0sXFxuIDExODpcXHRcXHR7XFxuIDExOTpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6OTU2N1xcXCIsXFxuIDEyMDpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk1NjddXFxuIDEyMTpcXHRcXHR9LFxcbiAxMjI6XFx0XFx0e1xcbiAxMjM6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjk2NDZcXFwiLFxcbiAxMjQ6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45NjQ2XVxcbiAxMjU6XFx0XFx0fSxcXG4gMTI2OlxcdFxcdHt9LFxcbiAxMjc6XFx0fTtcXG4gMTI4OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGtzejk0NzdfZHRfaWRzKTtcXG4gMTI5OlxcdFxcbiAxMzA6XFx0c3RhdGljIERFRklORV9TSU1QTEVfREVWX1BNX09QUyhrc3pfaTJjX3BtX29wcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDg6NDQ6MDQuNTExMDU0NzI4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjc2MjIxMjQ3MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBrc3o5NDc3LXN3aXRjaCBEcml2ZXIgSW5zdGFudGlhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGtzejk0NzdfaTJjX2lkYCBzdHJ1Y3R1cmUuIEhtbSwgaXQncyBkZWZpbmVkIGFzIGB7IC5uYW1lID0gXCJrc3o5NDc3LXN3aXRjaFwiIH1gLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyBob3cgdGhpcyBkZXZpY2UgaXMgaW5zdGFudGlhdGVkIHZpYSBJMkMgdXNpbmcgYG5ld19kZXZpY2VgLiBSaWdodCwgaWYgaXQncyAqbm90KiB1c2luZyBhbiBPRiBvciBBQ1BJIHN5c3RlbSwgdGhlIGNvZGUgZGVmYXVsdHMgdG8gdXNpbmcgYGkyY19tYXRjaF9kZXZpY2VgIHdpdGhpbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpYC4gQnV0IGhlcmUncyB0aGUga2lja2VyOiBga3N6OTQ3N19pMmNfaWRgICpkb2Vzbid0KiBoYXZlIGEgYC5kcml2ZXJfZGF0YWAgZmllbGQgc2V0IChvciBpdCdzIHNldCB0byAwLCB3aGljaCBmdW5jdGlvbmFsbHkgYW1vdW50cyB0byB0aGUgc2FtZSB0aGluZykuXG5cblRoaXMgbWVhbnMsIHdoZW4gYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgaXMgY2FsbGVkLCBpdCBzaG91bGQgcmV0dXJuIE5VTEwgYmVjYXVzZSBubyBtYXRjaCBkYXRhIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhcnRpY3VsYXIgSTJDIElELiBXYWl0LCB0aGF0J3MgZXhhY3RseSB3aGF0IHNob3VsZCBoYXBwZW4hIElmIHRoZSBtYXRjaCBkYXRhIGlzbid0IHNldCwgaXQgcmV0dXJucyBOVUxMLlxuXG5Ib3dldmVyLCB0aGUgbW9yZSBwcmVzc2luZyBxdWVzdGlvbiBpczogd2hhdCBhY3R1YWxseSBoYXBwZW5zIGR1cmluZyB0aGUgY2FsbCB0byBga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpYD8gVGhhdCdzIHdoZXJlIHRoZSByZWFsIG1hZ2ljIGhhcHBlbnMuLi4gb3IgZG9lc24ndCEgSSBuZWVkIHRvIGRpZyBpbnRvIGBrc3pfY29tbW9uLmNgIHRvIHNlZSBob3cgdGhpcyBhbGwgY29ubmVjdHMuIExldCdzIHNlZSBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgZGV2aWNlLCBnaXZlbiB0aGlzIGluaXRpYWwgaWRlbnRpZmljYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDA4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDg6NDQ6MTIuMTMzMTgxMzQ5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY2Mjk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQga3N6X3N3aXRjaF9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM4ODk9c3RhdGljIGludCBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzg5My1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozODk0OmludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzg5NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD00Mjc9c3RydWN0IGtzel9kZXZpY2UgKmtzel9zd2l0Y2hfYWxsb2Moc3RydWN0IGRldmljZSAqYmFzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQyOS1cXHRcXHRcXHRcXHQgICAgdm9pZCAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDMwOmludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMS12b2lkIGtzel9zd2l0Y2hfcmVtb3ZlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwODo0NDoxMi4xNzg4NTE0MjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTU5MjA0MjAwMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCBga3N6X3N3aXRjaF9yZWdpc3RlcmAgZnVuY3Rpb24gZGVmaW5pdGlvbi4gSSdtIGludGVyZXN0ZWQgaW4gaG93IHRoZXNlIE1pY3JvY2hpcCBLU1ogc3dpdGNoZXMgYXJlIGhhbmRsZWQgaW4gdGhlIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY2AgZmlsZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSByZWdpc3RyYXRpb24gbG9naWMgc2hvdWxkIGJlIGRlZmluZWQsIHNvIGxldCdzIHN0YXJ0IHRoZXJlLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBob3cgdGhlIHN3aXRjaCBpcyBpbml0aWFsaXplZCwgcHJvYmVkLCBhbmQgaW50ZWdyYXRlZCB3aXRoIHRoZSBEU0EgZnJhbWV3b3JrLiBIb3BlZnVsbHksIHRoaXMgZnVuY3Rpb24gcmV2ZWFscyB0aGUgY3JpdGljYWwgcGFydHMgb2Ygd2hhdCBtYWtlcyB0aGVzZSBzcGVjaWZpYyBjaGlwcyB0aWNrIHdpdGhpbiB0aGUgbGFyZ2VyIG5ldHdvcmsgc3RhY2suIFVuZGVyc3RhbmRpbmcgdGhpcyByZWdpc3RyYXRpb24gcHJvY2VzcyBpcyBlc3NlbnRpYWwgZm9yIG1lIHRvIGZ1bGx5IGdyYXNwIHRoZSBkcml2ZXIncyBvdmVyYWxsIGRlc2lnbiBhbmQgd2hlcmUgSSBtaWdodCBjb250cmlidXRlLCBvciB0cm91Ymxlc2hvb3QsIGlmIG5lZWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MDQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwODo0NDoyOC4wOTkyNzM0NTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM4OTQsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM4OTQ6XFx0aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4zODk1OlxcdHtcXG4zODk2OlxcdFxcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICppbmZvO1xcbjM4OTc6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpwb3J0cztcXG4zODk4OlxcdFxcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7XFxuMzg5OTpcXHRcXHR1bnNpZ25lZCBpbnQgcG9ydF9udW07XFxuMzkwMDpcXHRcXHRpbnQgcmV0O1xcbjM5MDE6XFx0XFx0aW50IGk7XFxuMzkwMjpcXHRcXG4zOTAzOlxcdFxcdGRldi1cXHUwMDNlcmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldi1cXHUwMDNlZGV2LCBcXFwicmVzZXRcXFwiLFxcbjM5MDQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBHUElPRF9PVVRfTE9XKTtcXG4zOTA1OlxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZXNldF9ncGlvKSlcXG4zOTA2OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGRldi1cXHUwMDNlcmVzZXRfZ3Bpbyk7XFxuMzkwNzpcXHRcXG4zOTA4OlxcdFxcdGlmIChkZXYtXFx1MDAzZXJlc2V0X2dwaW8pIHtcXG4zOTA5OlxcdFxcdFxcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShkZXYtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcIm1pY3JvY2hpcCxrc3o4NDYzXFxcIikpIHtcXG4zOTEwOlxcdFxcdFxcdFxcdHJldCA9IGtzejg0NjNfY29uZmlndXJlX3N0cmFwc19zcGkoZGV2KTtcXG4zOTExOlxcdFxcdFxcdFxcdGlmIChyZXQpXFxuMzkxMjpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjM5MTM6XFx0XFx0XFx0fVxcbjM5MTQ6XFx0XFxuMzkxNTpcXHRcXHRcXHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoZGV2LVxcdTAwM2VyZXNldF9ncGlvLCAxKTtcXG4zOTE2OlxcdFxcdFxcdHVzbGVlcF9yYW5nZSgxMDAwMCwgMTIwMDApO1xcbjM5MTc6XFx0XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cXHUwMDNlcmVzZXRfZ3BpbywgMCk7XFxuMzkxODpcXHRcXHRcXHRtc2xlZXAoMTAwKTtcXG4zOTE5OlxcdFxcbjM5MjA6XFx0XFx0XFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGRldi1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwibWljcm9jaGlwLGtzejg0NjNcXFwiKSkge1xcbjM5MjE6XFx0XFx0XFx0XFx0cmV0ID0ga3N6ODQ2M19yZWxlYXNlX3N0cmFwc19zcGkoZGV2KTtcXG4zOTIyOlxcdFxcdFxcdFxcdGlmIChyZXQpXFxuMzkyMzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjM5MjQ6XFx0XFx0XFx0fVxcbjM5MjU6XFx0XFx0fVxcbjM5MjY6XFx0XFxuMzkyNzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWRldl9tdXRleCk7XFxuMzkyODpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXJlZ21hcF9tdXRleCk7XFxuMzkyOTpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuMzkzMDpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXZsYW5fbXV0ZXgpO1xcbjM5MzE6XFx0XFxuMzkzMjpcXHRcXHRyZXQgPSBrc3pfc3dpdGNoX2RldGVjdChkZXYpO1xcbjM5MzM6XFx0XFx0aWYgKHJldClcXG4zOTM0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzkzNTpcXHRcXG4zOTM2OlxcdFxcdGluZm8gPSBrc3pfbG9va3VwX2luZm8oZGV2LVxcdTAwM2VjaGlwX2lkKTtcXG4zOTM3OlxcdFxcdGlmICghaW5mbylcXG4zOTM4OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjM5Mzk6XFx0XFxuMzk0MDpcXHRcXHQvKiBVcGRhdGUgdGhlIGNvbXBhdGlibGUgaW5mbyB3aXRoIHRoZSBwcm9iZWQgb25lICovXFxuMzk0MTpcXHRcXHRkZXYtXFx1MDAzZWluZm8gPSBpbmZvO1xcbjM5NDI6XFx0XFxuMzk0MzpcXHRcXHRkZXZfaW5mbyhkZXYtXFx1MDAzZWRldiwgXFxcImZvdW5kIHN3aXRjaDogJXMsIHJldiAlaVxcXFxuXFxcIixcXG4zOTQ0OlxcdFxcdFxcdCBkZXYtXFx1MDAzZWluZm8tXFx1MDAzZWRldl9uYW1lLCBkZXYtXFx1MDAzZWNoaXBfcmV2KTtcXG4zOTQ1OlxcdFxcbjM5NDY6XFx0XFx0cmV0ID0ga3N6X2NoZWNrX2RldmljZV9pZChkZXYpO1xcbjM5NDc6XFx0XFx0aWYgKHJldClcXG4zOTQ4OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzk0OTpcXHRcXG4zOTUwOlxcdFxcdGRldi1cXHUwMDNlZGV2X29wcyA9IGRldi1cXHUwMDNlaW5mby1cXHUwMDNlb3BzO1xcbjM5NTE6XFx0XFxuMzk1MjpcXHRcXHRyZXQgPSBkZXYtXFx1MDAzZWRldl9vcHMtXFx1MDAzZWluaXQoZGV2KTtcXG4zOTUzOlxcdFxcdGlmIChyZXQpXFxuMzk1NDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjM5NTU6XFx0XFxuMzk1NjpcXHRcXHRkZXYtXFx1MDAzZXBvcnRzID0gZGV2bV9remFsbG9jKGRldi1cXHUwMDNlZGV2LFxcbjM5NTc6XFx0XFx0XFx0XFx0XFx0ICBkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXBvcnRfY250ICogc2l6ZW9mKHN0cnVjdCBrc3pfcG9ydCksXFxuMzk1ODpcXHRcXHRcXHRcXHRcXHQgIEdGUF9LRVJORUwpO1xcbjM5NTk6XFx0XFx0aWYgKCFkZXYtXFx1MDAzZXBvcnRzKVxcbjM5NjA6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMzk2MTpcXHRcXG4zOTYyOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkZXYtXFx1MDAzZWluZm8tXFx1MDAzZXBvcnRfY250OyBpKyspIHtcXG4zOTYzOlxcdFxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXBvcnRzW2ldLm1pYi5zdGF0czY0X2xvY2spO1xcbjM5NjQ6XFx0XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2Vwb3J0c1tpXS5taWIuY250X211dGV4KTtcXG4zOTY1OlxcdFxcdFxcdGRldi1cXHUwMDNlcG9ydHNbaV0ubWliLmNvdW50ZXJzID1cXG4zOTY2OlxcdFxcdFxcdFxcdGRldm1fa3phbGxvYyhkZXYtXFx1MDAzZWRldixcXG4zOTY3OlxcdFxcdFxcdFxcdFxcdCAgICAgc2l6ZW9mKHU2NCkgKiAoZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VtaWJfY250ICsgMSksXFxuMzk2ODpcXHRcXHRcXHRcXHRcXHQgICAgIEdGUF9LRVJORUwpO1xcbjM5Njk6XFx0XFx0XFx0aWYgKCFkZXYtXFx1MDAzZXBvcnRzW2ldLm1pYi5jb3VudGVycylcXG4zOTcwOlxcdFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjM5NzE6XFx0XFxuMzk3MjpcXHRcXHRcXHRkZXYtXFx1MDAzZXBvcnRzW2ldLmtzel9kZXYgPSBkZXY7XFxuMzk3MzpcXHRcXHRcXHRkZXYtXFx1MDAzZXBvcnRzW2ldLm51bSA9IGk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ0OjI4LjA5OTQzMjU1OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxODgxNTc4NzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgY29kZSBzbmlwcGV0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTd2l0Y2ggRGV0ZWN0aW9uKipcblxuT2theSwgc28gSSdtIHNlZWluZyBgcmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtgIC0gdGhhdCdzIGludGVyZXN0aW5nLiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24gd2l0aGluIHRoYXQgYGtzel9zd2l0Y2hfZGV0ZWN0YCBmdW5jdGlvbi4gR2l2ZW4gdGhlIG5hbWluZywgaXQncyBvYnZpb3VzbHkgaW52b2x2ZWQgaW4gc29tZSBzb3J0IG9mIHN3aXRjaCBkZXRlY3Rpb24gZm9yIHRoZSBkZXZpY2UsIGBkZXZgLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgaXQgYWNoaWV2ZXMgdGhpcyBkZXRlY3Rpb24uIEkgbmVlZCB0byBzZWUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBrc3pfc3dpdGNoX2RldGVjdGAgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMsIGFueSByZWdpc3RlcnMgaXQgbWlnaHQgYmUgcmVhZGluZyBvciB3cml0aW5nLCBhbmQgdGhlIHNwZWNpZmljIGNyaXRlcmlhIGl0J3MgdXNpbmcgdG8gZGV0ZXJtaW5lIHRoZSBzd2l0Y2ggc3RhdHVzLiBJcyBpdCBwb2xsaW5nIHNvbWV0aGluZz8gQW4gaW50ZXJydXB0PyBJcyBpdCBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9uPyBXaGF0IGFyZSB0aGUgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBhbmQgd2hhdCBkbyB0aGV5IHNpZ25pZnk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gZGV0ZXJtaW5lIGhvdyByb2J1c3QgYW5kIHJlbGlhYmxlIHRoaXMgZGV0ZWN0aW9uIG1lY2hhbmlzbSBpcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MjcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwODo0NDoyOS45ODEwMTM0N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxODA2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6X3N3aXRjaF9kZXRlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yODk0PXZvaWQga3N6X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI5MDUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjkwNjpzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjkwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zODk0PWludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTMxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM5MzI6XFx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTMzLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ0OjMwLjAyNjIwODg3OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozODgxODM4MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgXCJMZXQncyByZWFkIGBrc3pfc3dpdGNoX2RldGVjdGAsXCIgc3VtbWFyaXplZCBhcyBhIGZpcnN0LXBlcnNvbiB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIENvZGU6IGtzel9zd2l0Y2hfZGV0ZWN0KipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIEkgc2VlIGBrc3pfc3dpdGNoX2RldGVjdGAgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGEgc3dpdGNoIGRldGVjdGlvbiBmdW5jdGlvbi4gTGlrZWx5IGRlYWxpbmcgd2l0aCBwaHlzaWNhbCBsYXllciAoUEhZKSBjaGFyYWN0ZXJpc3RpY3MsIG9yIHBlcmhhcHMgYSBsYXllciBjbG9zZXIgdG8gdGhlIE1BQyBpbiBhIHR5cGljYWwgc3dpdGNoIGRyaXZlciBmb3IgYSBLU1ogY2hpcHNldC5cIiBJJ20gZXhwZWN0aW5nIHRoaXMgZnVuY3Rpb24gdG8gYmUgdGhlIGdhdGV3YXkgZm9yIGZpZ3VyaW5nIG91dCB0aGUgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4gSXQgY291bGQgYmUgcmVzcG9uc2libGUgZm9yIGlkZW50aWZ5aW5nIHRoZSBzcGVjaWZpYyBLU1ogc3dpdGNoIG1vZGVsIG9yIHZhcmlhbnQgYmVpbmcgdXNlZC4gSSdtIGltYWdpbmluZyBpdCdsbCBiZSBsb29raW5nIGZvciBzcGVjaWZpYyByZWdpc3RlciB2YWx1ZXMsIGJpdCBwYXR0ZXJucywgb3IgcGVyaGFwcyBwcm9iaW5nIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgdG8gZGV0ZXJtaW5lIHRoZSBwcmVzZW5jZSBvZiBhIHN3aXRjaCBhbmQgaXRzIHJlbGV2YW50IGZlYXR1cmVzLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXJlIHdpbGwgYmUgYSByZWxpYW5jZSBvbiBoYXJkd2FyZSBzcGVjaWZpY3MsIHNvIEkgbmVlZCB0byBiZSByZWFkeSBmb3IgdmVuZG9yLXNwZWNpZmljIHF1aXJrcy4gSXQncyBwcm9iYWJseSBnb2luZyB0byBpbnZvbHZlIGEgc2VyaWVzIG9mIHJlZ2lzdGVyIHJlYWRzIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMgdG8gbWFrZSBpdHMgYXNzZXNzbWVudHMuIEkgYW50aWNpcGF0ZSBhIGZhaXIgYml0IG9mIGNvbmRpdGlvbmFsIGxvZ2ljIHdpdGhpbiB0byBoYW5kbGUgZGlmZmVyZW50IHN3aXRjaCByZXZpc2lvbnMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0J3Mgc2VlIGlmIG15IGluaXRpYWwgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QhIFRoaXMgc2hvdWxkIGJlIGludGVyZXN0aW5nOyBJIGFsd2F5cyBlbmpveSBnZXR0aW5nIGludG8gdGhlIGxvdy1sZXZlbCBkZXRhaWxzIG9mIGhhcmR3YXJlIGludGVyYWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDgwMywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ0OjMzLjkwODA0OTYwOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjk1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjkwNixcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjkwNjpcXHRzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuMjkwNzpcXHR7XFxuMjkwODpcXHRcXHR1OCBpZDEsIGlkMiwgaWQ0O1xcbjI5MDk6XFx0XFx0dTE2IGlkMTY7XFxuMjkxMDpcXHRcXHR1MzIgaWQzMjtcXG4yOTExOlxcdFxcdGludCByZXQ7XFxuMjkxMjpcXHRcXG4yOTEzOlxcdFxcdC8qIHJlYWQgY2hpcCBpZCAqL1xcbjI5MTQ6XFx0XFx0cmV0ID0ga3N6X3JlYWQxNihkZXYsIFJFR19DSElQX0lEMCwgXFx1MDAyNmlkMTYpO1xcbjI5MTU6XFx0XFx0aWYgKHJldClcXG4yOTE2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjkxNzpcXHRcXG4yOTE4OlxcdFxcdGlkMSA9IEZJRUxEX0dFVChTV19GQU1JTFlfSURfTSwgaWQxNik7XFxuMjkxOTpcXHRcXHRpZDIgPSBGSUVMRF9HRVQoU1dfQ0hJUF9JRF9NLCBpZDE2KTtcXG4yOTIwOlxcdFxcbjI5MjE6XFx0XFx0c3dpdGNoIChpZDEpIHtcXG4yOTIyOlxcdFxcdGNhc2UgS1NaODRfRkFNSUxZX0lEOlxcbjI5MjM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gS1NaODQ2M19DSElQX0lEO1xcbjI5MjQ6XFx0XFx0XFx0YnJlYWs7XFxuMjkyNTpcXHRcXHRjYXNlIEtTWjg3X0ZBTUlMWV9JRDpcXG4yOTI2OlxcdFxcdFxcdGlmIChpZDIgPT0gS1NaODdfQ0hJUF9JRF85NSkge1xcbjI5Mjc6XFx0XFx0XFx0XFx0dTggdmFsO1xcbjI5Mjg6XFx0XFxuMjkyOTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4Nzk1X0NISVBfSUQ7XFxuMjkzMDpcXHRcXG4yOTMxOlxcdFxcdFxcdFxcdGtzel9yZWFkOChkZXYsIEtTWjhfUE9SVF9TVEFUVVNfMCwgXFx1MDAyNnZhbCk7XFxuMjkzMjpcXHRcXHRcXHRcXHRpZiAodmFsIFxcdTAwMjYgS1NaOF9QT1JUX0ZJQkVSX01PREUpXFxuMjkzMzpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4NzY1X0NISVBfSUQ7XFxuMjkzNDpcXHRcXHRcXHR9IGVsc2UgaWYgKGlkMiA9PSBLU1o4N19DSElQX0lEXzk0KSB7XFxuMjkzNTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4Nzk0X0NISVBfSUQ7XFxuMjkzNjpcXHRcXHRcXHR9IGVsc2Uge1xcbjI5Mzc6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMjkzODpcXHRcXHRcXHR9XFxuMjkzOTpcXHRcXHRcXHRicmVhaztcXG4yOTQwOlxcdFxcdGNhc2UgS1NaODhfRkFNSUxZX0lEOlxcbjI5NDE6XFx0XFx0XFx0aWYgKGlkMiA9PSBLU1o4OF9DSElQX0lEXzYzKVxcbjI5NDI6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gS1NaODhYM19DSElQX0lEO1xcbjI5NDM6XFx0XFx0XFx0ZWxzZVxcbjI5NDQ6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMjk0NTpcXHRcXHRcXHRicmVhaztcXG4yOTQ2OlxcdFxcdGNhc2UgS1NaODg5NV9GQU1JTFlfSUQ6XFxuMjk0NzpcXHRcXHRcXHRpZiAoaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NSB8fFxcbjI5NDg6XFx0XFx0XFx0ICAgIGlkMiA9PSBLU1o4ODk1X0NISVBfSURfOTVSKVxcbjI5NDk6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gS1NaODg5NV9DSElQX0lEO1xcbjI5NTA6XFx0XFx0XFx0ZWxzZVxcbjI5NTE6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMjk1MjpcXHRcXHRcXHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBSRUdfS1NaODg2NF9DSElQX0lELCBcXHUwMDI2aWQ0KTtcXG4yOTUzOlxcdFxcdFxcdGlmIChyZXQpXFxuMjk1NDpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI5NTU6XFx0XFx0XFx0aWYgKGlkNCBcXHUwMDI2IFNXX0tTWjg4NjQpXFxuMjk1NjpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4ODY0X0NISVBfSUQ7XFxuMjk1NzpcXHRcXHRcXHRicmVhaztcXG4yOTU4OlxcdFxcdGRlZmF1bHQ6XFxuMjk1OTpcXHRcXHRcXHRyZXQgPSBrc3pfcmVhZDMyKGRldiwgUkVHX0NISVBfSUQwLCBcXHUwMDI2aWQzMik7XFxuMjk2MDpcXHRcXHRcXHRpZiAocmV0KVxcbjI5NjE6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yOTYyOlxcdFxcbjI5NjM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX3JldiA9IEZJRUxEX0dFVChTV19SRVZfSURfTSwgaWQzMik7XFxuMjk2NDpcXHRcXHRcXHRpZDMyIFxcdTAwMjY9IH4weEZGO1xcbjI5NjU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ0OjMzLjkwODQyMjI4OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0NTA2NjMyNDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgU3dpdGNoIERldGVjdGlvbiBcdTAwMjYgRnV6emluZyBDaGFsbGVuZ2VzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBrc3pfc3dpdGNoX2RldGVjdGAgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcGh5c2ljYWwgc3dpdGNoLiBJdCdzIHJlYWRpbmcgcmVnaXN0ZXJzIHVzaW5nIGBrc3pfcmVhZDE2YCBhbmQgYGtzel9yZWFkMzJgIG92ZXIgSTJDL1NQSSwgcmlnaHQ/IEFuZCBpZiB0aGUgaGFyZHdhcmUgaXNuJ3QgdGhlcmUsIGl0J3Mgc3VwcG9zZWQgdG8gZmFpbCBhbmQgcmV0dXJuIC1FTk9ERVYuIFN0YW5kYXJkIHN0dWZmLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBJJ20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzLCBhbmQgdGhhdCdzIHdoZXJlIHRoaW5ncyBnZXQgdHJpY2t5LlxuXG5DYW4gSSBldmVuICpyZWFjaCogdGhpcyBEU0EtcmVsYXRlZCBjb2RlLCBvciBhbnkgRFNBIHN3aXRjaCBkcml2ZXIgZm9yIHRoYXQgbWF0dGVyLCBpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAgbGlrZSBRRU1VIG9yIGV2ZW4gR29vZ2xlIENvbXB1dGUgRW5naW5lPyBBbmQgSSdtIHN0YXJ0aW5nIHRvIGdldCBhIHNpbmtpbmcgZmVlbGluZyB0aGF0IHRoZSBhbnN3ZXIgaXMgbm8uIEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBhbnkgRFNBIHN3aXRjaCBkcml2ZXJzIGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBUaGF0J3MgYSBtYWpvciByb2FkYmxvY2suXG5cblNvLCBpZiBoYXJkd2FyZSBlbXVsYXRpb24gaXMgb3V0LCB3aGF0IGFib3V0IGEgdmlydHVhbCBvciBtb2NrIERTQSBkcml2ZXI/IERvZXMgdGhlIExpbnV4IGtlcm5lbCBldmVuIGhhdmUgYSBiYXNpYywgdGVzdC1mb2N1c2VkIG1vY2sgZHJpdmVyIGZvciBEU0Egc3BlY2lmaWNhbGx5PyBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L2RzYS9gIGRpcmVjdG9yeS4gR290dGEgc2VlIHdoYXQncyBpbiB0aGVyZS4gSSdtIGdvaW5nIHRvIG5lZWQgdG8gZGlnIGRlZXBlciBpbiB0aGF0IGRpcmVjdG9yeSB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlcmUgZXhpc3RzIGEgd2F5IHRvIHRlc3QgdGhpcyB3aXRob3V0IGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjE0NCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ0OjM4LjQxNTA1OTAyOFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L2RzYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJiY21fc2YyLmNcIixcbiAgICBcImJjbV9zZjIuaFwiLFxuICAgIFwiYmNtX3NmMl9jZnAuY1wiLFxuICAgIFwiYmNtX3NmMl9yZWdzLmhcIixcbiAgICBcImRzYV9sb29wLmNcIixcbiAgICBcImtzODk5NS5jXCIsXG4gICAgXCJsYW45MzAzLWNvcmUuY1wiLFxuICAgIFwibGFuOTMwMy5oXCIsXG4gICAgXCJsYW45MzAzX2kyYy5jXCIsXG4gICAgXCJsYW45MzAzX21kaW8uY1wiLFxuICAgIFwibXQ3NTMwLW1kaW8uY1wiLFxuICAgIFwibXQ3NTMwLW1taW8uY1wiLFxuICAgIFwibXQ3NTMwLmNcIixcbiAgICBcIm10NzUzMC5oXCIsXG4gICAgXCJtdDc2MjguY1wiLFxuICAgIFwibXY4OGU2MDYwLmNcIixcbiAgICBcIm12ODhlNjA2MC5oXCIsXG4gICAgXCJyem4xX2E1cHN3LmNcIixcbiAgICBcInJ6bjFfYTVwc3cuaFwiLFxuICAgIFwidml0ZXNzZS12c2M3M3h4LWNvcmUuY1wiLFxuICAgIFwidml0ZXNzZS12c2M3M3h4LXBsYXRmb3JtLmNcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC1zcGkuY1wiLFxuICAgIFwidml0ZXNzZS12c2M3M3h4LmhcIixcbiAgICBcInl0OTIxeC5jXCIsXG4gICAgXCJ5dDkyMXguaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJiNTNcIixcbiAgICBcImhpcnNjaG1hbm5cIixcbiAgICBcImxhbnRpcVwiLFxuICAgIFwibWljcm9jaGlwXCIsXG4gICAgXCJtdjg4ZTZ4eHhcIixcbiAgICBcIm14bDg2Mnh4XCIsXG4gICAgXCJuZXRjXCIsXG4gICAgXCJvY2Vsb3RcIixcbiAgICBcInFjYVwiLFxuICAgIFwicmVhbHRla1wiLFxuICAgIFwic2phMTEwNVwiLFxuICAgIFwieHJzNzAweFwiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ0OjM4LjQxNTIwNjU3OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1NzU1Njg3OTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBNaWNyb2NoaXAgS1NaIFBUUCBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmNgLCB3aGljaCBpcyB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggUFRQIGRyaXZlci4gVGhpcyBpc24ndCB0aGUgbG9vcGJhY2sgZHJpdmVyIChgZHNhX2xvb3AuY2ApLCBidXQgc3BlY2lmaWNhbGx5IHRhcmdldHMgYE5FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFBgLiBUaGlzIGlzIG9ubHkgYnVpbHQgZm9yIE1pY3JvY2hpcCBLU1ogc3dpdGNoZXMsIHRoZSBLU1o4eHh4LCBLU1o5eHh4LCBhbmQgTEFOOTM3eCBmYW1pbGllcy4gVGhlc2UgYXJlIGhhcmR3YXJlIGV0aGVybmV0IHN3aXRjaCBjaGlwcywgYW5kIHRoZXkgbmVlZCBhIHJlYWwgU1BJLCBJMkMsIG9yIFNNSSBjb25uZWN0aW9uIHRvIHRoZSBBU0lDLlxuXG5Ob3csIGxldCdzIGdvIHRocm91Z2ggdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTcGVjaWZpY2FsbHksIFNlY3Rpb24gMiwgdGhlIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlXCIgcGFydC4gVGhpcyBpcyBrZXkuIFdlIG9ubHkgcmV0dXJuIGBmYWxzZWAgaWYgdGhlIGNvZGUgY2hhbmdlIGZhbGxzICpzdHJpY3RseSogaW50byBvbmUgb2YgdGhvc2UgbmVnYXRpdmUgY3JpdGVyaWEuIExldCdzIHNlZS4uLlxuXG5JcyBpdCBub24ta2VybmVsIG9yIG5vbi1leGVjdXRhYmxlPyBOby5cblxuU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlPyBCaW5nbyEgVGhpcyBsb29rcyBsaWtlIGl0LiBNaWNyb2NoaXAgc3dpdGNoZXMgYXJlIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIG5lZWRpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGlzIHNlZW1zIHRvIGJlIHRoZSBjYXNlIGhlcmUuXG5cblVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocz8gTm8sIHRoaXMgY29kZSBpcyBub3QgdGllZCB0byBhIGRyaXZlciB0ZWFyZG93biBvciB1bnVzdWFsIGFyY2hpdGVjdHVyZS5cblxuQnV0IHdhaXQsIHdoYXQgYWJvdXQgdGhvc2UgdmlydHVhbCBidXNlcyBpbiBzeXprYWxsZXI/IFRoZSBwaGlsb3NvcGh5IG1lbnRpb25zIGRyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBhcmUgd29ydGggZnV6emluZy4gT2theSwgc28gS1NaIHN3aXRjaGVzIHVzZSBJMkMsIFNQSSwgb3IgU01JLiBDYW4gYW55IG9mIHRob3NlIGJ1c2VzIGJlIHJlYWNoZWQgdGhyb3VnaCBhIFVTQiBnYWRnZXQgaW4gc3l6a2FsbGVyPyBOby4gVGhpcyBpcyBhbiBldGhlcm5ldCBzd2l0Y2ggY2hpcCBjb25uZWN0ZWQgdG8gYW4gU29DIHZpYSBhbiBJMkMgb3IgU1BJIGJ1cy4gRXZlbiBpZiB0aGVyZSB3YXMgYW4gSTJDIGRldmljZSBub2RlIGNyZWF0ZWQgaW4gYSBzeXprYWxsZXIgVk0sIGBrc3pfc3dpdGNoX2RldGVjdGAgYXR0ZW1wdHMgdG8gcmVhZCByZWdpc3RlcnMgZGlyZWN0bHkgZnJvbSB0aGUgcGh5c2ljYWwgY2hpcCBhbmQgd2lsbCBmYWlsLCBzaW5jZSB0aGVyZSdzIG5vIGVtdWxhdGVkIEtTWiBoYXJkd2FyZS4gVGhpcyBpcyBhIGRlYWQgZW5kLiBGdXJ0aGVybW9yZSwgdGhlIFBUUCBjbG9jayByZWdpc3RyYXRpb24gYW5kIHRoZSBwYXRjaGVkIGNvZGUgYXJlIG9ubHkgcmVhY2hhYmxlIGFmdGVyIHN1Y2Nlc3NmdWwgc3dpdGNoIHNldHVwLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSB0aGUgRFNBIGNvcmUgd2hlbiB0aGUgc3dpdGNoIGlzIGJvdW5kIHRvIGEgbWFzdGVyIG5ldHdvcmsgZGV2aWNlIC0gc29tZXRoaW5nIHRoYXQgaXMgdXN1YWxseSBkZWZpbmVkIGJ5IGEgRGV2aWNlIFRyZWUgYW5kIHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgYXJlIHRoZXJlIGFueSBtb2NrIG9yIHRlc3QgaGFybmVzc2VzIGZvciBLU1ogZGV2aWNlcz8gTm9wZS4gTm90aGluZyB1c2VmdWwgaGVyZS5cblxuU28sIHRoZSBjb25jbHVzaW9uIGlzIHByZXR0eSBjbGVhci4gVGhpcyBwYXRjaCBtb2RpZmllcyBjb2RlIGluIGBrc3pfcHRwLmNgIGZvciBNaWNyb2NoaXAgS1NaIHN3aXRjaGVzLiBUaGlzIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gUUVNVSBhbmQgR0NFLCBhcyBmYXIgYXMgSSBrbm93LCBkbyBub3QgZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBoYXJkd2FyZSBzd2l0Y2ggY2hpcHMuIFRoZXJlZm9yZSwgaXQncyBhIGBXb3J0aEZ1enppbmc9ZmFsc2VgIHNpdHVhdGlvbi5cblxuSnVzdCB0byBkb3VibGUgY2hlY2sgbXlzZWxmLCB0aGUgcGF0Y2ggbW9kaWZpZXMgUFRQIHBlcmlvZGljIG91dHB1dCBoYW5kbGluZyAoYGtzel9wdHBfZW5hYmxlX3Blcm91dGAsIGBrc3pfcHRwX3Jlc3RhcnRfcGVyb3V0YCkgaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcmVhbCBoYXJkd2FyZSBjb25uZWN0ZWQgYnkgU1BJLCBJMkMsIG9yIFNNSSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIFFFTVUgb3IgY2xvdWQgVk1zLCBtYWtpbmcgdGhpcyBjb2RlIHVucmVhY2hhYmxlLlxuXG5FdmVyeXRoaW5nIGxvb2tzIGdvb2QgYW5kIGNvbnNpc3RlbnQgd2l0aCB0aGUgaW5zdHJ1Y3Rpb25zLlxuTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjk5MSwiT3V0cHV0VG9rZW5zIjoxNDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MDEsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ1OjM1Ljk3MjA5MDM0OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBlcmlvZGljIG91dHB1dCBoYW5kbGluZyAoa3N6X3B0cF9lbmFibGVfcGVyb3V0IGFuZCBrc3pfcHRwX3Jlc3RhcnRfcGVyb3V0KSBpbiB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNaWNyb2NoaXAgS1NaOHh4eC9LU1o5eHh4L0xBTjkzN3ggc3dpdGNoIGhhcmR3YXJlIChpbnRlcmZhY2VkIHZpYSBTUEksIEkyQywgb3IgU01JKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsIGVudmlyb25tZW50cywgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBlcmlvZGljIG91dHB1dCBoYW5kbGluZyAoa3N6X3B0cF9lbmFibGVfcGVyb3V0IGFuZCBrc3pfcHRwX3Jlc3RhcnRfcGVyb3V0KSBpbiB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNaWNyb2NoaXAgS1NaOHh4eC9LU1o5eHh4L0xBTjkzN3ggc3dpdGNoIGhhcmR3YXJlIChpbnRlcmZhY2VkIHZpYSBTUEksIEkyQywgb3IgU01JKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsIGVudmlyb25tZW50cywgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDA4OjQ1OjM1Ljk3MjEzMTA0OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2j8ss[1] Phase: Running StartedAt: 2026-09-14 08:45:46 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2j8ss[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-14 08:45:46 +0000 UTC FinishedAt: 2026-09-14 08:45:52 +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,}