Name: series-workflowxg9rj Phase: Failed StartedAt: 2026-07-24 08:00:02 +0000 UTC FinishedAt: 2026-07-24 08:21:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxg9rj[0] Phase: Succeeded StartedAt: 2026-07-24 08:00:02 +0000 UTC FinishedAt: 2026-07-24 08:21:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxg9rj[0].run-triage Phase: Succeeded StartedAt: 2026-07-24 08:00:02 +0000 UTC FinishedAt: 2026-07-24 08:21:02 +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+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciB0byB1c2UgYW4gZW1iZWRkZWQgYnVmZmVyIGZvciBGRUMgaGlzdG9ncmFtIHJhbmdlcyBpbnN0ZWFkIG9mIGR5bmFtaWNhbGx5IGFsbG9jYXRpbmcgaXQuIFNpbmNlIG1seDUgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuIFRoZSBjaGFuZ2UgdG8gYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YCBvbmx5IGluY3JlYXNlcyBpdHMgc2l6ZSBzbGlnaHRseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyByZWFjaGFibGUgbG9naWMgZm9yIG90aGVyIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTBlMmQyMDQ4NTg3ZmE2ZWU1OWQxOThlY2ZhYWM1NjUyMzkzMjNkY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDA4OjE5OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcbmluZGV4IGQ1MDcyODkwOTZjMjA2Li42ODY3YTVhZWQ0MmMwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaFxuQEAgLTk4NCw3ICYjNDM7OTg0LDYgQEAgc3RydWN0IG1seDVlX3ByaXYge1xuIFx0c3RydWN0IG1seDVlX21xcHJpb19ybCAgICAqbXFwcmlvX3JsO1xuIFx0c3RydWN0IGRlbnRyeSAgICAgICAgICAgICAqZGZzX3Jvb3Q7XG4gXHRzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcF9kZXYgKmRldmNvbTtcbi1cdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICpmZWNfcmFuZ2VzO1xuIH07XG4gXG4gc3RhdGljIGlubGluZSB1MTYgbWx4NWVfc3RhdHNfbmNoX3JlYWQoY29uc3Qgc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNcbmluZGV4IGMxYWNiOTAxMmQzZjllLi43ZDQ3YTFkYThiNmI2NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNcbkBAIC02NDE1LDE0ICYjNDM7NjQxNSw4IEBAIGludCBtbHg1ZV9wcml2X2luaXQoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXG4gXHRpZiAoIXByaXYtXHUwMDNlY2hhbm5lbF9zdGF0cylcbiBcdFx0Z290byBlcnJfZnJlZV90eF9yYXRlcztcbiBcbi1cdHByaXYtXHUwMDNlZmVjX3JhbmdlcyA9IGt6YWxsb2Nfb2JqcygqcHJpdi1cdTAwM2VmZWNfcmFuZ2VzLCBFVEhUT09MX0ZFQ19ISVNUX01BWCk7XG4tXHRpZiAoIXByaXYtXHUwMDNlZmVjX3Jhbmdlcylcbi1cdFx0Z290byBlcnJfZnJlZV9jaGFubmVsX3N0YXRzO1xuLVxuIFx0cmV0dXJuIDA7XG4gXG4tZXJyX2ZyZWVfY2hhbm5lbF9zdGF0czpcbi1cdGtmcmVlKHByaXYtXHUwMDNlY2hhbm5lbF9zdGF0cyk7XG4gZXJyX2ZyZWVfdHhfcmF0ZXM6XG4gXHRrZnJlZShwcml2LVx1MDAzZXR4X3JhdGVzKTtcbiBlcnJfZnJlZV90eHEyc3Ffc3RhdHM6XG5AQCAtNjQ0Nyw3ICYjNDM7NjQ0MSw2IEBAIHZvaWQgbWx4NWVfcHJpdl9jbGVhbnVwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuIFx0aWYgKCFwcml2LVx1MDAzZW1kZXYpXG4gXHRcdHJldHVybjtcbiBcbi1cdGtmcmVlKHByaXYtXHUwMDNlZmVjX3Jhbmdlcyk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXN0YXRzX25jaDsgaSYjNDM7JiM0MzspXG4gXHRcdGt2ZnJlZShwcml2LVx1MDAzZWNoYW5uZWxfc3RhdHNbaV0pO1xuIFx0a2ZyZWUocHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXG5pbmRleCBkZTM4YjYwODA2YzI2NC4uZTdlNmRiN2Y2YmYxNzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmNcbkBAIC0xNTUwLDcgJiM0MzsxNTUwLDcgQEAgc3RhdGljIGJvb2wgZmVjX3JzX3ZhbGlkYXRlX2hpc3RfdHlwZShpbnQgbW9kZSwgaW50IGhpc3RfdHlwZSlcbiBcbiBzdGF0aWMgdThcbiBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgbW9kZSxcbi1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICoqcmFuZ2VzKVxuJiM0MztcdFx0XHQgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICpyYW5nZXMpXG4ge1xuIFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBwcml2LVx1MDAzZW1kZXY7XG4gXHR1MzIgb3V0W01MWDVfU1RfU1pfRFcocHBoY3JfcmVnKV0gPSB7MH07XG5AQCAtMTU1OCw4ICYjNDM7MTU1OCw2IEBAIGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxuIFx0aW50IHN6ID0gTUxYNV9TVF9TWl9CWVRFUyhwcGhjcl9yZWcpO1xuIFx0dTggaGlzdF90eXBlLCBudW1fb2ZfYmlucztcbiBcbi1cdG1lbXNldChwcml2LVx1MDAzZWZlY19yYW5nZXMsIDAsXG4tXHQgICAgICAgRVRIVE9PTF9GRUNfSElTVF9NQVggKiBzaXplb2YoKnByaXYtXHUwMDNlZmVjX3JhbmdlcykpO1xuIFx0TUxYNV9TRVQocHBoY3JfcmVnLCBpbiwgbG9jYWxfcG9ydCwgMSk7XG4gXHRpZiAobWx4NV9jb3JlX2FjY2Vzc19yZWcobWRldiwgaW4sIHN6LCBvdXQsIHN6LCBNTFg1X1JFR19QUEhDUiwgMCwgMCkpXG4gXHRcdHJldHVybiAwO1xuQEAgLTE1NzUsMTIgJiM0MzsxNTczLDExIEBAIGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIG51bV9vZl9iaW5zOyBpJiM0MzsmIzQzOykge1xuIFx0XHR2b2lkICpiaW5fcmFuZ2UgPSBNTFg1X0FERFJfT0YocHBoY3JfcmVnLCBvdXQsIGJpbl9yYW5nZVtpXSk7XG4gXG4tXHRcdHByaXYtXHUwMDNlZmVjX3Jhbmdlc1tpXS5oaWdoID0gTUxYNV9HRVQoYmluX3JhbmdlX2xheW91dCwgYmluX3JhbmdlLFxuLVx0XHRcdFx0XHRcdCAgICBoaWdoX3ZhbCk7XG4tXHRcdHByaXYtXHUwMDNlZmVjX3Jhbmdlc1tpXS5sb3cgPSBNTFg1X0dFVChiaW5fcmFuZ2VfbGF5b3V0LCBiaW5fcmFuZ2UsXG4tXHRcdFx0XHRcdFx0ICAgbG93X3ZhbCk7XG4mIzQzO1x0XHRyYW5nZXNbaV0uaGlnaCA9IE1MWDVfR0VUKGJpbl9yYW5nZV9sYXlvdXQsIGJpbl9yYW5nZSxcbiYjNDM7XHRcdFx0XHRcdCAgaGlnaF92YWwpO1xuJiM0MztcdFx0cmFuZ2VzW2ldLmxvdyA9IE1MWDVfR0VUKGJpbl9yYW5nZV9sYXlvdXQsIGJpbl9yYW5nZSxcbiYjNDM7XHRcdFx0XHRcdCBsb3dfdmFsKTtcbiBcdH1cbi1cdCpyYW5nZXMgPSBwcml2LVx1MDAzZWZlY19yYW5nZXM7XG4gXG4gXHRyZXR1cm4gbnVtX29mX2JpbnM7XG4gfVxuQEAgLTE2MjIsMTAgJiM0MzsxNjE5LDEyIEBAIHN0YXRpYyB2b2lkIGZlY19zZXRfaGlzdG9ncmFtc19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IG1vZGUsXG4gXHRjYXNlIE1MWDVFX0ZFQ19MTFJTXzI3Ml8yNTdfMTpcbiBcdGNhc2UgTUxYNUVfRkVDX1JTXzU0NF81MTRfSU5URVJMRUFWRURfUVVBRDpcbiBcdFx0bnVtX29mX2JpbnMgPVxuLVx0XHRcdGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMocHJpdiwgbW9kZSwgXHUwMDI2aGlzdC1cdTAwM2VyYW5nZXMpO1xuLVx0XHRpZiAobnVtX29mX2JpbnMpXG4mIzQzO1x0XHRcdGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMocHJpdiwgbW9kZSwgaGlzdC1cdTAwM2VyYW5nZXNfYnVmKTtcbiYjNDM7XHRcdGlmIChudW1fb2ZfYmlucykge1xuJiM0MztcdFx0XHRoaXN0LVx1MDAzZXJhbmdlcyA9IGhpc3QtXHUwMDNlcmFuZ2VzX2J1ZjtcbiBcdFx0XHRyZXR1cm4gZmVjX3JzX2hpc3RvZ3JhbV9maWxsX3N0YXRzKHByaXYsIG51bV9vZl9iaW5zLFxuIFx0XHRcdFx0XHRcdFx0ICAgaGlzdCk7XG4mIzQzO1x0XHR9XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcbmluZGV4IDVkNDkxYTk4MjY1ZWY5Li4xMjY4M2I1ZDEyNWU0MSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuQEAgLTU2Miw2ICYjNDM7NTYyLDcgQEAgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3Qge1xuIFx0XHR1NjQgcGVyX2xhbmVbRVRIVE9PTF9NQVhfTEFORVNdO1xuIFx0fSB2YWx1ZXNbRVRIVE9PTF9GRUNfSElTVF9NQVhdO1xuIFx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKnJhbmdlcztcbiYjNDM7XHRzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSByYW5nZXNfYnVmW0VUSFRPT0xfRkVDX0hJU1RfTUFYXTtcbiB9O1xuIC8qKlxuICAqIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAtIHN0YXRpc3RpY3MgZm9yIElFRUUgODAyLjMgRkVDXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciB0byB1c2UgYW4gZW1iZWRkZWQgYnVmZmVyIGZvciBGRUMgaGlzdG9ncmFtIHJhbmdlcyBpbnN0ZWFkIG9mIGR5bmFtaWNhbGx5IGFsbG9jYXRpbmcgaXQuIFNpbmNlIG1seDUgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuIFRoZSBjaGFuZ2UgdG8gYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YCBvbmx5IGluY3JlYXNlcyBpdHMgc2l6ZSBzbGlnaHRseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyByZWFjaGFibGUgbG9naWMgZm9yIG90aGVyIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMGUyZDIwNDg1ODdmYTZlZTU5ZDE5OGVjZmFhYzU2NTIzOTMyM2RjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMjQgMDg6MTk6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oCmluZGV4IGQ1MDcyODkwOTZjMjA2Li42ODY3YTVhZWQ0MmMwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgKQEAgLTk4NCw3ICYjNDM7OTg0LDYgQEAgc3RydWN0IG1seDVlX3ByaXYgewogCXN0cnVjdCBtbHg1ZV9tcXByaW9fcmwgICAgKm1xcHJpb19ybDsKIAlzdHJ1Y3QgZGVudHJ5ICAgICAgICAgICAgICpkZnNfcm9vdDsKIAlzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcF9kZXYgKmRldmNvbTsKLQlzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqZmVjX3JhbmdlczsKIH07CiAKIHN0YXRpYyBpbmxpbmUgdTE2IG1seDVlX3N0YXRzX25jaF9yZWFkKGNvbnN0IHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMKaW5kZXggYzFhY2I5MDEyZDNmOWUuLjdkNDdhMWRhOGI2YjY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMKQEAgLTY0MTUsMTQgJiM0Mzs2NDE1LDggQEAgaW50IG1seDVlX3ByaXZfaW5pdChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwKIAlpZiAoIXByaXYtJmd0O2NoYW5uZWxfc3RhdHMpCiAJCWdvdG8gZXJyX2ZyZWVfdHhfcmF0ZXM7CiAKLQlwcml2LSZndDtmZWNfcmFuZ2VzID0ga3phbGxvY19vYmpzKCpwcml2LSZndDtmZWNfcmFuZ2VzLCBFVEhUT09MX0ZFQ19ISVNUX01BWCk7Ci0JaWYgKCFwcml2LSZndDtmZWNfcmFuZ2VzKQotCQlnb3RvIGVycl9mcmVlX2NoYW5uZWxfc3RhdHM7Ci0KIAlyZXR1cm4gMDsKIAotZXJyX2ZyZWVfY2hhbm5lbF9zdGF0czoKLQlrZnJlZShwcml2LSZndDtjaGFubmVsX3N0YXRzKTsKIGVycl9mcmVlX3R4X3JhdGVzOgogCWtmcmVlKHByaXYtJmd0O3R4X3JhdGVzKTsKIGVycl9mcmVlX3R4cTJzcV9zdGF0czoKQEAgLTY0NDcsNyAmIzQzOzY0NDEsNiBAQCB2b2lkIG1seDVlX3ByaXZfY2xlYW51cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikKIAlpZiAoIXByaXYtJmd0O21kZXYpCiAJCXJldHVybjsKIAotCWtmcmVlKHByaXYtJmd0O2ZlY19yYW5nZXMpOwogCWZvciAoaSA9IDA7IGkgJmx0OyBwcml2LSZndDtzdGF0c19uY2g7IGkmIzQzOyYjNDM7KQogCQlrdmZyZWUocHJpdi0mZ3Q7Y2hhbm5lbF9zdGF0c1tpXSk7CiAJa2ZyZWUocHJpdi0mZ3Q7Y2hhbm5lbF9zdGF0cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jCmluZGV4IGRlMzhiNjA4MDZjMjY0Li5lN2U2ZGI3ZjZiZjE3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMKQEAgLTE1NTAsNyAmIzQzOzE1NTAsNyBAQCBzdGF0aWMgYm9vbCBmZWNfcnNfdmFsaWRhdGVfaGlzdF90eXBlKGludCBtb2RlLCBpbnQgaGlzdF90eXBlKQogCiBzdGF0aWMgdTgKIGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLAotCQkJICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqKnJhbmdlcykKJiM0MzsJCQkgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICpyYW5nZXMpCiB7CiAJc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBwcml2LSZndDttZGV2OwogCXUzMiBvdXRbTUxYNV9TVF9TWl9EVyhwcGhjcl9yZWcpXSA9IHswfTsKQEAgLTE1NTgsOCAmIzQzOzE1NTgsNiBAQCBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgbW9kZSwKIAlpbnQgc3ogPSBNTFg1X1NUX1NaX0JZVEVTKHBwaGNyX3JlZyk7CiAJdTggaGlzdF90eXBlLCBudW1fb2ZfYmluczsKIAotCW1lbXNldChwcml2LSZndDtmZWNfcmFuZ2VzLCAwLAotCSAgICAgICBFVEhUT09MX0ZFQ19ISVNUX01BWCAqIHNpemVvZigqcHJpdi0mZ3Q7ZmVjX3JhbmdlcykpOwogCU1MWDVfU0VUKHBwaGNyX3JlZywgaW4sIGxvY2FsX3BvcnQsIDEpOwogCWlmIChtbHg1X2NvcmVfYWNjZXNzX3JlZyhtZGV2LCBpbiwgc3osIG91dCwgc3osIE1MWDVfUkVHX1BQSENSLCAwLCAwKSkKIAkJcmV0dXJuIDA7CkBAIC0xNTc1LDEyICYjNDM7MTU3MywxMSBAQCBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgbW9kZSwKIAlmb3IgKGludCBpID0gMDsgaSAmbHQ7IG51bV9vZl9iaW5zOyBpJiM0MzsmIzQzOykgewogCQl2b2lkICpiaW5fcmFuZ2UgPSBNTFg1X0FERFJfT0YocHBoY3JfcmVnLCBvdXQsIGJpbl9yYW5nZVtpXSk7CiAKLQkJcHJpdi0mZ3Q7ZmVjX3Jhbmdlc1tpXS5oaWdoID0gTUxYNV9HRVQoYmluX3JhbmdlX2xheW91dCwgYmluX3JhbmdlLAotCQkJCQkJICAgIGhpZ2hfdmFsKTsKLQkJcHJpdi0mZ3Q7ZmVjX3Jhbmdlc1tpXS5sb3cgPSBNTFg1X0dFVChiaW5fcmFuZ2VfbGF5b3V0LCBiaW5fcmFuZ2UsCi0JCQkJCQkgICBsb3dfdmFsKTsKJiM0MzsJCXJhbmdlc1tpXS5oaWdoID0gTUxYNV9HRVQoYmluX3JhbmdlX2xheW91dCwgYmluX3JhbmdlLAomIzQzOwkJCQkJICBoaWdoX3ZhbCk7CiYjNDM7CQlyYW5nZXNbaV0ubG93ID0gTUxYNV9HRVQoYmluX3JhbmdlX2xheW91dCwgYmluX3JhbmdlLAomIzQzOwkJCQkJIGxvd192YWwpOwogCX0KLQkqcmFuZ2VzID0gcHJpdi0mZ3Q7ZmVjX3JhbmdlczsKIAogCXJldHVybiBudW1fb2ZfYmluczsKIH0KQEAgLTE2MjIsMTAgJiM0MzsxNjE5LDEyIEBAIHN0YXRpYyB2b2lkIGZlY19zZXRfaGlzdG9ncmFtc19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IG1vZGUsCiAJY2FzZSBNTFg1RV9GRUNfTExSU18yNzJfMjU3XzE6CiAJY2FzZSBNTFg1RV9GRUNfUlNfNTQ0XzUxNF9JTlRFUkxFQVZFRF9RVUFEOgogCQludW1fb2ZfYmlucyA9Ci0JCQlmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHByaXYsIG1vZGUsICZhbXA7aGlzdC0mZ3Q7cmFuZ2VzKTsKLQkJaWYgKG51bV9vZl9iaW5zKQomIzQzOwkJCWZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMocHJpdiwgbW9kZSwgaGlzdC0mZ3Q7cmFuZ2VzX2J1Zik7CiYjNDM7CQlpZiAobnVtX29mX2JpbnMpIHsKJiM0MzsJCQloaXN0LSZndDtyYW5nZXMgPSBoaXN0LSZndDtyYW5nZXNfYnVmOwogCQkJcmV0dXJuIGZlY19yc19oaXN0b2dyYW1fZmlsbF9zdGF0cyhwcml2LCBudW1fb2ZfYmlucywKIAkJCQkJCQkgICBoaXN0KTsKJiM0MzsJCX0KIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaAppbmRleCA1ZDQ5MWE5ODI2NWVmOS4uMTI2ODNiNWQxMjVlNDEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXRodG9vbC5oCkBAIC01NjIsNiAmIzQzOzU2Miw3IEBAIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0IHsKIAkJdTY0IHBlcl9sYW5lW0VUSFRPT0xfTUFYX0xBTkVTXTsKIAl9IHZhbHVlc1tFVEhUT09MX0ZFQ19ISVNUX01BWF07CiAJY29uc3Qgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKnJhbmdlczsKJiM0MzsJc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgcmFuZ2VzX2J1ZltFVEhUT09MX0ZFQ19ISVNUX01BWF07CiB9OwogLyoqCiAgKiBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgLSBzdGF0aXN0aWNzIGZvciBJRUVFIDgwMi4zIEZFQwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTgxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNjI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgTWVsbGFub3ggbWx4NSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIGFuZCBldGh0b29sLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBtb3ZpbmcgdGhlIGBmZWNfcmFuZ2VzYCBhbGxvY2F0aW9uIGZyb20gYG1seDVlX3ByaXZgIHRvIGFuIGVtYmVkZGVkIGJ1ZmZlciB3aXRoaW4gYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YCwgd2hpY2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gTXkgZmlyc3QgdGhvdWdodCBpczogZG9lcyB0aGlzIHdvcmsgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBjYW4gd2UgZXZlbiAqdGVzdCogaXQgaW4gb3VyIGVudmlyb25tZW50PwoKV2XigJlyZSBtb2RpZnlpbmcgYGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXNgIHRvIHdyaXRlIGRpcmVjdGx5IHRvIHRoZSBuZXcgYnVmZmVyIChgcmFuZ2VzX2J1ZmApIGFuZCB1cGRhdGluZyBgZmVjX3NldF9oaXN0b2dyYW1zX3N0YXRzYCBhY2NvcmRpbmdseS4gRnVuY3Rpb25hbGx5LCBpdCBzZWVtcyBzb3VuZC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXMgcmVhY2hhYmlsaXR5LiBUaGlzIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIsIHNvIHRoYXQgcmFpc2VzIGFuIGltbWVkaWF0ZSByZWQgZmxhZy4gQ2FuIHdlIGVtdWxhdGUgbWx4NSBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwPyBJIHRoaW5rIGV0aHRvb2wgc3RhdGlzdGljcyBhcmUgYWNjZXNzZWQgdGhyb3VnaCBuZXRsaW5rIG9yIGlvY3RsLCByaWdodD8gQnV0IHRoZSBkcml2ZXIgc3RpbGwgbmVlZHMgdG8gYmUgbG9hZGVkIGFuZCBhIG5ldGRldiByZWdpc3RlcmVkLgoKTGV0IG1lIHRoaW5rLCBkb2VzIHN5emthbGxlciBoYXZlIHN1cHBvcnQgZm9yIG1seDU/IE5vLCBpdCYjMzk7cyBub3QgdGhlIGRlZmF1bHQgUUVNVS9HQ0Ugc2V0dXAuIE9rYXksIHN5emthbGxlciBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBoYXJkd2FyZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGJlY29tZXM6IGNhbiB3ZSByZWFjaCB0aGlzIGNvZGUgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmU/IFNwZWNpZmljYWxseSwgd2hlcmUgaXMgYG1seDVlX3ByaXZfaW5pdGAgY2FsbGVkPyBEdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uLCByaWdodD8gSWYgdGhlcmUmIzM5O3Mgbm8gaGFyZHdhcmUsIHRoZSBkcml2ZXIgd29uJiMzOTt0IHByb2JlLCBhbmQgYG1seDVlX3ByaXZfaW5pdGAgd29uJiMzOTt0IGJlIGNhbGxlZC4gU28sIGNhbiB3ZSBwcm9iZSBtbHg1IHZpYSBzb21lIHNvZnR3YXJlIG1lY2hhbmlzbT8KCkkgbmVlZCB0byBxdWlja2x5IHNlYXJjaCBzeXprYWxsZXIgZm9yIGBtbHg1YCBvciBjaGVjayBpZiBpdCYjMzk7cyBmdXp6YWJsZS4gV2FpdCwgdGhlIHByb21wdCBpdHNlbGYgc2VlbXMgdG8gaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoaXMuLi4gaXQgc2F5cyB0aGF0IGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiBsaWtlIHVzYiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0sIGFyZSB3aGF0IHdlJiMzOTtyZSBsb29raW5nIGF0LiBNbDUgaXMgYSBQQ0llIGRldmljZSwgc28gdGhhdCYjMzk7cyBhIG5vLWdvLiBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgbWx4NS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG91Z2guIExldCYjMzk7cyBsb29rIHVwIFFFTVUmIzM5O3Mgc3VwcG9ydGVkIGRldmljZXMuIEkgcmVtZW1iZXIgZTEwMDAsIHJ0bDgxMzksIHZpcnRpby1uZXQsIHZteG5ldDMsIGlnYi4uLiBub25lIG9mIHdoaWNoIGFyZSBtbHg1LgoKV2FpdCwgSSB0aGluayB0aGVyZSBpcyBhIHZEUEEgbWx4NSBkcml2ZXIsIGJ1dCB0aGF0IHN0aWxsIGxpa2VseSBuZWVkcyBoYXJkd2FyZS4gT2theSwgdGhlIHF1ZXN0aW9uIGNvbWVzIGJhY2sgdG8gd2hldGhlciB0aGVyZSBpcyBhbnkgd2F5IHRvIHJlYWNoIGBtbHg1ZV9wcml2X2luaXRgLiBMZXQgbWUgcHVsbCB1cCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGV2ZW4gY2FsbGVkLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgaW5zaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1ZV9wcml2X2luaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg9MTI3NT1pbnQgbWx4NWVfZ2V0X3BmX251bV90aXJzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjEyNzY6aW50IG1seDVlX3ByaXZfaW5pdChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTEyNzctXHRcdCAgICBjb25zdCBzdHJ1Y3QgbWx4NWVfcHJvZmlsZSAqcHJvZmlsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTYzNTM9dm9pZCBtbHg1ZV9zZXRfcnhfbW9kZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTYzNjQtLyogbWx4NWUgZ2VuZXJpYyBuZXRkZXYgbWFuYWdlbWVudCBBUEkgKG1vdmUgdG8gZW5fY29tbW9uLmMpICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjYzNjU6aW50IG1seDVlX3ByaXZfaW5pdChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjM2Ni1cdFx0ICAgIGNvbnN0IHN0cnVjdCBtbHg1ZV9wcm9maWxlICpwcm9maWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NjQ5Mz1tbHg1ZV9jcmVhdGVfbmV0ZGV2KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBjb25zdCBzdHJ1Y3QgbWx4NWVfcHJvZmlsZSAqcHJvZmlsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTY1MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjY1MDg6XHRlcnIgPSBtbHg1ZV9wcml2X2luaXQobmV0ZGV2X3ByaXYobmV0ZGV2KSwgcHJvZmlsZSwgbmV0ZGV2LCBtZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjUwOS1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NjUxMDpcdFx0bWx4NV9jb3JlX2VycihtZGV2LCBcJiMzNDttbHg1ZV9wcml2X2luaXQgZmFpbGVkLCBlcnI9JWRcXG5cJiMzNDssIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTY1MTEtXHRcdGdvdG8gZXJyX2ZyZWVfbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NjY1ND1tbHg1ZV9uZXRkZXZfaW5pdF9wcm9maWxlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjY1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NjY2MDpcdGVyciA9IG1seDVlX3ByaXZfaW5pdChwcml2LCBuZXdfcHJvZmlsZSwgbmV0ZGV2LCBtZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjY2MS1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NjY2MjpcdFx0bWx4NV9jb3JlX2VycihtZGV2LCBcJiMzNDttbHg1ZV9wcml2X2luaXQgZmFpbGVkLCBlcnI9JWRcXG5cJiMzNDssIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTY2NjMtXHRcdHJldHVybiBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmM9NzczPXN0YXRpYyBpbnQgbWx4NV9yZG1hX3NldHVwX3JuKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMtNzk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmM6ODAwOlx0ZXJyID0gbWx4NWVfcHJpdl9pbml0KGVwcml2LCBwcm9mLCBuZXRkZXYsIG1kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMtODAxLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODY2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgbWx4NSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gdGhlIGBtbHg1YCBkcml2ZXIgaXMgYmVpbmcgYSBiaXQgb2YgYSBzdGlja2xlci4gSXQgc2VlbXMgSSBuZWVkIGFjdHVhbCwgcGh5c2ljYWwgTWVsbGFub3ggaGFyZHdhcmUg4oCTIENvbm5lY3RYLTQsIDUsIDYsIG9yIDcsIHByZXN1bWFibHksIG9yIHNvbWV0aGluZyBlcXVpdmFsZW50IOKAkyB0byBldmVuIGdldCB0aGlzIHRoaW5nIG9mZiB0aGUgZ3JvdW5kLiBObyBoYXJkd2FyZSwgbm8gaW5pdGlhbGl6YXRpb24uIFRoaXMgbWVhbnMgYG1seDVlX3ByaXZfaW5pdGAgaXNuJiMzOTt0IGdvaW5nIHRvIGdldCBjYWxsZWQuIFRoYXQmIzM5O3MgYSBwcm9ibGVtIHdoZW4gSSYjMzk7bSB0cnlpbmcgdG8gdGVzdCBvciBkZXZlbG9wIHdpdGhvdXQgZGlyZWN0IGFjY2VzcyB0byB0aGUgaGFyZHdhcmUhCgpIbW0sIGlzIHRoZXJlICphbnkqIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBtbHg1IGJha2VkIGludG8gdGhlIGtlcm5lbD8gSSBzZWVtIHRvIHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgdGhhdCwgdGhvdWdoIEkgY2FuJiMzOTt0IHBsYWNlIGl0LiBNYXliZSBhIHZpcnR1YWwgZGV2aWNlIG9yIGEgbW9kdWxlIHRvIHNpbXVsYXRlIHRoZSBoYXJkd2FyZT8gSXQmIzM5O3Mgd29ydGggZGlnZ2luZyBpbnRvLgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG1vY2sgZHJpdmVycyBvciB0ZXN0IGltcGxlbWVudGF0aW9ucyB0aGF0IG1pZ2h0IHNpbXVsYXRlIHRoZSBtbHg1IGZ1bmN0aW9uYWxpdHkuIElmIHRoZXJlJiMzOTtzIHNvbWUga2luZCBvZiB0ZXN0IGZyYW1ld29yaywgdGhhdCB3b3VsZCBiZSBpZGVhbC4gSSBuZWVkIGEgd2F5IHRvIHByb2dyZXNzIG15IHdvcmsgd2l0aG91dCBiZWluZyBjb21wbGV0ZWx5IGJsb2NrZWQuIEZpbmRpbmcgYSBzdWl0YWJsZSBzb2Z0d2FyZS1iYXNlZCBhbHRlcm5hdGl2ZSB3aWxsIG1ha2UgbGlmZSBhIGxvdCBlYXNpZXIsIGZvciBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfY29yZV9kZXYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEzOTY2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jPTI0PXN0cnVjdCBtbHg1Y3RsX2RldiB7XG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTI1LVx0c3RydWN0IGZ3Y3RsX2RldmljZSBmd2N0bDtcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM6MjY6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMjctfTtcbi0tXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jPTExNj1zdGF0aWMgdm9pZCBtbHg1Y3RsX3JlbGVhc2VfdWlkKHN0cnVjdCBtbHg1Y3RsX2RldiAqbWNkZXYsIHUxNiB1aWQpXG4tLVxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYy0xMTgtXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhkZXN0cm95X3VjdHhfaW4pXSA9IHt9O1xuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYzoxMTk6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IG1jZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTEyMC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYz0zNzA9c3RhdGljIGludCBtbHg1Y3RsX3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LFxuLS1cbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMzc0LVx0c3RydWN0IG1seDVfYWRldiAqbWFkZXYgPSBjb250YWluZXJfb2YoYWRldiwgc3RydWN0IG1seDVfYWRldiwgYWRldik7XG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jOjM3NTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gbWFkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMzc2LVx0c3RydWN0IG1seDVjdGxfZGV2ICptY2RldiBfX2ZyZWUobWx4NWN0bCkgPSBmd2N0bF9hbGxvY19kZXZpY2UoXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM9OD1pbnQgbWx4NXJfY21kX3F1ZXJ5X3NwZWNpYWxfbWtleXMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNDQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo0NTppbnQgbWx4NV9jbWRfcXVlcnlfY29uZ19wYXJhbXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IGNvbmdfcG9pbnQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy00Ni1cdFx0XHQgICAgICAgdm9pZCAqb3V0KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTU2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6NTc6dm9pZCBtbHg1X2NtZF9kZXN0cm95X3RpcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGlybiwgdTE2IHVpZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTU4LXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy02Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjY3OnZvaWQgbWx4NV9jbWRfZGVzdHJveV90aXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRpc24sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy02OC17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNzYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo3NzppbnQgbWx4NV9jbWRfZGVzdHJveV9ycXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHJxdG4sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy03OC17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtODYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo4NzppbnQgbWx4NV9jbWRfYWxsb2NfdHJhbnNwb3J0X2RvbWFpbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnRkbixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTg4LVx0XHRcdFx0ICAgIHUxNiB1aWQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTA1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTA2OnZvaWQgbWx4NV9jbWRfZGVhbGxvY190cmFuc3BvcnRfZG9tYWluKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0ZG4sXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMDctXHRcdFx0XHQgICAgICAgdTE2IHVpZClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMTctXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxMTg6aW50IG1seDVfY21kX2RlYWxsb2NfcGQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHBkbiwgdTE2IHVpZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTExOS17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTI3LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTI4OmludCBtbHg1X2NtZF9hdHRhY2hfbWNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHVuaW9uIGliX2dpZCAqbWdpZCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEyOS1cdFx0XHR1MzIgcXBuLCB1MTYgdWlkKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTE0MS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjE0MjppbnQgbWx4NV9jbWRfZGV0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNDMtXHRcdFx0dTMyIHFwbiwgdTE2IHVpZClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNTUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxNTY6aW50IG1seDVfY21kX3hyY2RfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp4cmNkbiwgdTE2IHVpZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTE1Ny17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTY5LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTcwOmludCBtbHg1X2NtZF94cmNkX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHhyY2RuLCB1MTYgdWlkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTcxLXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYz0xODA9aW50IG1seDVfY21kX21hZF9pZmMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmluYiwgdm9pZCAqb3V0Yixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yMjItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoyMjM6aW50IG1seDVfY21kX3Vhcl9hbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnVhcm4sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yMjQte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTIzOC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjIzOTppbnQgbWx4NV9jbWRfdWFyX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHVhcm4sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yNDAte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTI0OC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjI0OTppbnQgbWx4NV9jbWRfcXVlcnlfdnVpZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBib29sIGRhdGFfZGlyZWN0LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjUwLVx0XHRcdGNoYXIgKm91dF92dWlkKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oPTQwPWludCBtbHg1cl9jbWRfcXVlcnlfc3BlY2lhbF9ta2V5cyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0MTppbnQgbWx4NV9jbWRfcXVlcnlfY29uZ19wYXJhbXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IGNvbmdfcG9pbnQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC00Mi1cdFx0XHQgICAgICAgdm9pZCAqb3V0KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQzOmludCBtbHg1X2NtZF9kZWFsbG9jX3BkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiBwZG4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDQ6dm9pZCBtbHg1X2NtZF9kZXN0cm95X3RpcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGlybiwgdTE2IHVpZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0NTp2b2lkIG1seDVfY21kX2Rlc3Ryb3lfdGlzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0aXNuLCB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ2OmludCBtbHg1X2NtZF9kZXN0cm95X3JxdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgcnF0biwgdTE2IHVpZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0NzppbnQgbWx4NV9jbWRfYWxsb2NfdHJhbnNwb3J0X2RvbWFpbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnRkbixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTQ4LVx0XHRcdFx0ICAgIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDk6dm9pZCBtbHg1X2NtZF9kZWFsbG9jX3RyYW5zcG9ydF9kb21haW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRkbixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTUwLVx0XHRcdFx0ICAgICAgIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTE6aW50IG1seDVfY21kX2F0dGFjaF9tY2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdW5pb24gaWJfZ2lkICptZ2lkLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTItXHRcdFx0dTMyIHFwbiwgdTE2IHVpZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo1MzppbnQgbWx4NV9jbWRfZGV0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC01NC1cdFx0XHR1MzIgcXBuLCB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjU1OmludCBtbHg1X2NtZF94cmNkX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqeHJjZG4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTY6aW50IG1seDVfY21kX3hyY2RfZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgeHJjZG4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTctaW50IG1seDVfY21kX21hZF9pZmMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmluYiwgdm9pZCAqb3V0YixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTU4LVx0XHQgICAgIHUxNiBvcG1vZCwgdTggcG9ydCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo1OTppbnQgbWx4NV9jbWRfdWFyX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqdWFybiwgdTE2IHVpZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo2MDppbnQgbWx4NV9jbWRfdWFyX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHVhcm4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NjE6aW50IG1seDVfY21kX3F1ZXJ5X3Z1aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgYm9vbCBkYXRhX2RpcmVjdCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTYyLVx0XHRcdGNoYXIgKm91dF92dWlkKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM9MjkyPXN0YXRpYyBpbnQgbWx4NV9pYl9nZXRfY2NfcGFyYW1zKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTI5OS1cdGVudW0gbWx4NV9pYl9jb25nX25vZGVfdHlwZSBub2RlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jOjMwMDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTMwMS1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM9MzI5PXN0YXRpYyBpbnQgbWx4NV9pYl9zZXRfY2NfcGFyYW1zKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTMzNS1cdGVudW0gbWx4NV9pYl9jb25nX25vZGVfdHlwZSBub2RlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jOjMzNjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTMzNy1cdHUzMiBhdHRyX21hc2sgPSAwO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYz00MzQ9dm9pZCBtbHg1X2liX2luaXRfY29uZ19kZWJ1Z2ZzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0pXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTQzNi1cdHN0cnVjdCBtbHg1X2liX2RiZ19jY19wYXJhbXMgKmRiZ19jY19wYXJhbXM7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM6NDM3Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmMtNDM4LVx0aW50IGk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYz0yODg9bWx4NV9pYl9hbGxvY19od19wb3J0X3N0YXRzKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydF9udW0pXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0yOTUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jOjI5NjpzdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcV9jb3VudGVycyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMjk3LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBtbHg1X2liX2NvdW50ZXJzICpjbnRzLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM9MzUwPXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9xX2NvdW50ZXJzX3Zwb3J0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMzU3LVx0dTMyIGluW01MWDVfU1RfU1pfRFcocXVlcnlfcV9jb3VudGVyX2luKV0gPSB7fTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM6MzU4Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTM1OS1cdF9fYmUzMiB2YWw7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYz0zODc9c3RhdGljIGludCBkb19nZXRfaHdfc3RhdHMoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0zOTItXHRjb25zdCBzdHJ1Y3QgbWx4NV9pYl9jb3VudGVycyAqY250cyA9IGdldF9jb3VudGVycyhkZXYsIHBvcnRfbnVtKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM6MzkzOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTM5NC1cdGludCByZXQsIG51bV9jb3VudGVycztcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jPTYxMT1pbnQgbWx4NV9pYl9wb2xsX2NxKHN0cnVjdCBpYl9jcSAqaWJjcSwgaW50IG51bV9lbnRyaWVzLCBzdHJ1Y3QgaWJfd2MgKndjKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjE1LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGNxLVx1MDAzZWliY3EuZGV2aWNlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmM6NjE2Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjE3LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jPTY0OD1pbnQgbWx4NV9pYl9hcm1fY3Eoc3RydWN0IGliX2NxICppYmNxLCBlbnVtIGliX2NxX25vdGlmeV9mbGFncyBmbGFncylcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjQ5LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmM6NjUwOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSB0b19tZGV2KGliY3EtXHUwMDNlZGV2aWNlKS1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYy02NTEtXHRzdHJ1Y3QgbWx4NV9pYl9jcSAqY3EgPSB0b19tY3EoaWJjcSk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTEwNz1zdHJ1Y3QgZGV2eF91bWVtIHtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoxMDg6XHRzdHJ1Y3QgbWx4NV9jb3JlX2Rldlx0XHQqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0xMDktXHRzdHJ1Y3QgaWJfdW1lbVx0XHRcdCp1bWVtO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0yMDA1PXN0YXRpYyBib29sIGlzX3ZhbGlkX2V2ZW50c19sZWdhY3koaW50IG51bV9ldmVudHMsIHUxNiAqZXZlbnRfdHlwZV9udW1fbGlzdCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjAyMy0jZGVmaW5lIE1BWF9TVVBQX0VWRU5UX05VTSAyNTVcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoyMDI0OnN0YXRpYyBib29sIGlzX3ZhbGlkX2V2ZW50cyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIwMjUtXHRcdFx0ICAgIGludCBudW1fZXZlbnRzLCB1MTYgKmV2ZW50X3R5cGVfbnVtX2xpc3QsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTI0NTE9c3RhdGljIGludCBkZXZ4X3VtZW1fY2xlYW51cChzdHJ1Y3QgaWJfdW9iamVjdCAqdW9iamVjdCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjQ2Ny1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoyNDY4OnN0YXRpYyBib29sIGlzX3VuYWZmaWxpYXRlZF9ldmVudChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI0NjktXHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgZXZlbnRfdHlwZSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTEyPXN0YXRpYyBpbnQgbWx4NV9jbWRfYWxsb2NfbWVtaWMoc3RydWN0IG1seDVfZG0gKmRtLCBwaHlzX2FkZHJfdCAqYWRkcixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTE0LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6MTU6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZG0tXHUwMDNlZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xNi1cdHU2NCBudW1fbWVtaWNfaHdfcGFnZXMgPSBNTFg1X0NBUF9ERVZfTUVNKGRldiwgbWVtaWNfYmFyX3NpemUpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz04Nz12b2lkIG1seDVfY21kX2RlYWxsb2NfbWVtaWMoc3RydWN0IG1seDVfZG0gKmRtLCBwaHlzX2FkZHJfdCBhZGRyLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtODkte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzo5MDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBkbS1cdTAwM2VkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTkxLVx0dTY0IGh3X3N0YXJ0X2FkZHIgPSBNTFg1X0NBUDY0X0RFVl9NRU0oZGV2LCBtZW1pY19iYXJfc3RhcnRfYWRkcik7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0xMTQ9dm9pZCBtbHg1X2NtZF9kZWFsbG9jX21lbWljX29wKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgYWRkcixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTExNy1cdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV9tZW1pY19pbildID0ge307XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jOjExODpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBkbS1cdTAwM2VkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTExOS1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTEyOD1zdGF0aWMgaW50IG1seDVfY21kX2FsbG9jX21lbWljX29wKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgYWRkcixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTEzMi1cdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV9tZW1pY19pbildID0ge307XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jOjEzMzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBkbS1cdTAwM2VkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTEzNC1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0zNTI9c3RhdGljIHN0cnVjdCBpYl9kbSAqaGFuZGxlX2FsbG9jX2RtX3N3X2ljbShzdHJ1Y3QgaWJfdWNvbnRleHQgKmN0eCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTM1Ni17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jOjM1NzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSB0b19tZGV2KGN0eC1cdTAwM2VkZXZpY2UpLVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTM1OC1cdGVudW0gbWx4NV9zd19pY21fdHlwZSBpY21fdHlwZTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTQ3MD1zdGF0aWMgaW50IG1seDVfZG1faWNtX2RlYWxsb2Moc3RydWN0IG1seDVfaWJfdWNvbnRleHQgKmN0eCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTQ3My1cdGVudW0gbWx4NV9zd19pY21fdHlwZSB0eXBlID0gZ2V0X2ljbV90eXBlKGRtLVx1MDAzZWJhc2UudHlwZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jOjQ3NDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSB0b19tZGV2KGRtLVx1MDAzZWJhc2UuaWJkbS5kZXZpY2UpLVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTQ3NS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTE1LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzoxNjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gdG9fbWRldihpYmRtYWgtXHUwMDNlZGV2aWNlKS1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTE3LVx0c3RydWN0IG1seDVfaWJfZG1haCAqZG1haCA9IHRvX21kbWFoKGliZG1haCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTM5PXN0YXRpYyBpbnQgbWx4NV9pYl9kZWFsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNDItXHRzdHJ1Y3QgbWx4NV9pYl9kbWFoICpkbWFoID0gdG9fbWRtYWgoaWJkbWFoKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzo0MzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gdG9fbWRldihpYmRtYWgtXHUwMDNlZGV2aWNlKS1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQ0LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM9MTQ5PWludCBwYXJzZV9mbG93X2Zsb3dfYWN0aW9uKHN0cnVjdCBtbHg1X2liX2Zsb3dfYWN0aW9uICptYWN0aW9uLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzoxODk6c3RhdGljIGludCBwYXJzZV9mbG93X2F0dHIoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE5MC1cdFx0XHQgICBzdHJ1Y3QgbWx4NV9mbG93X3NwZWMgKnNwZWMsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYz01NDc9c3RhdGljIGJvb2wgZmxvd19pc19tdWx0aWNhc3Rfb25seShjb25zdCBzdHJ1Y3QgaWJfZmxvd19hdHRyICppYl9hdHRyKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtNTc2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzo1Nzc6c3RhdGljIGJvb2wgaXNfdmFsaWRfZXRoZXJ0eXBlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy01NzgtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpYl9mbG93X2F0dHIgKmZsb3dfYXR0cixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTYyNS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6NjI2OnN0YXRpYyBib29sIGlzX3ZhbGlkX2F0dHIoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTYyNy1cdFx0XHQgIGNvbnN0IHN0cnVjdCBpYl9mbG93X2F0dHIgKmZsb3dfYXR0cilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTE4NzI9c3RhdGljIGludCBtbHg1X2liX2ZpbGxfdHJhbnNwb3J0X25zX2luZm8oc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy0xODc1LVx0XHRcdFx0XHQgIHUxNiAqdnBvcnQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jOjE4NzY6XHRcdFx0XHRcdCAgc3RydWN0IG1seDVfY29yZV9kZXYgKipmdF9tZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy0xODc3LVx0XHRcdFx0XHQgIHUzMiBpYl9wb3J0LCB1MTYgKmVzd19vd25lcl92aGNhX2lkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy0xODc4LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTg3OTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICplc3dfbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg4MC1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTE5MDg9X2dldF9mbG93X3RhYmxlKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MTYgdXNlcl9wcmlvcml0eSxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE5MTEte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzoxOTEyOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKmZ0X21kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTkxMy1cdHN0cnVjdCBtbHg1X2Zsb3dfdGFibGVfYXR0ciBmdF9hdHRyID0ge307XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MTE9c3RhdGljIGludFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MTI6bWx4NV9pYl9zZXRfdnBvcnRfcmVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMzpcdFx0ICAgICAgc3RydWN0IG1seDVfY29yZV9kZXYgKnJlcF9kZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xNC1cdFx0ICAgICAgc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy00MS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjQyOnN0YXRpYyB2b2lkIG1seDVfaWJfcmVnaXN0ZXJfcGVlcl92cG9ydF9yZXBzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTQzLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NDQ6c3RhdGljIHZvaWQgbWx4NV9pYl9udW1fcG9ydHNfdXBkYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqbnVtX3BvcnRzKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNDUte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NDY6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy00Ny1cdGludCBpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTU5LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NjA6c3RhdGljIGludCBtbHg1X2liX3NldF9vd25lcl90cmFuc3BvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmN1cl9vd25lcixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjYxOlx0XHRcdFx0XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbmV3X293bmVyKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNjIte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTg4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6ODk6c3RhdGljIHZvaWQgbWx4NV9pYl9yZWxlYXNlX3RyYW5zcG9ydChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtOTAte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6OTE6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy05Mi1cdGludCBpLCByZXQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtOTktXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMDA6c3RhdGljIGludCBtbHg1X2liX3Rha2VfdHJhbnNwb3J0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMDEte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MTAyOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTAzLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0xMTc9c3RhdGljIGludFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MTE4Om1seDVfaWJfdnBvcnRfcmVwX2xvYWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTExOS17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMjAtXHR1MzIgbnVtX3BvcnRzID0gbWx4NV9lc3dpdGNoX2dldF90b3RhbF92cG9ydHMoZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEyMTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpsYWdfbWFzdGVyID0gZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTIyLVx0Y29uc3Qgc3RydWN0IG1seDVfaWJfcHJvZmlsZSAqcHJvZmlsZTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEyMzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpwZWVyX2RldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTEyNC1cdHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXY7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MjIxPW1seDVfaWJfdnBvcnRfcmVwX3VubG9hZChzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjIyLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjIyMzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gbWx4NV9lc3dpdGNoX2dldF9jb3JlX2RldihyZXAtXHUwMDNlZXN3KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTIyNC1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gbWx4NV9pYl9yZXBfdG9fZGV2KHJlcCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjYxLVx0XHRpZiAobWx4NV9sYWdfaXNfc2hhcmVkX2ZkYihtZGV2KSkge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MjYyOlx0XHRcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpwZWVyX21kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yNjMtXHRcdFx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jPTI3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1seDVfZXN3aXRjaF9yZXBfb3BzIHJlcF9vcHMgPSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjgxLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MjgyOnN0YXRpYyB2b2lkIG1seDVfaWJfcmVnaXN0ZXJfcGVlcl92cG9ydF9yZXBzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjgzLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjI4NDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpwZWVyX21kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yODUtXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MzE5PXN0YXRpYyBpbnQgbWx4NXJfcmVwX3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTMyMi1cdHN0cnVjdCBtbHg1X2FkZXYgKmlkZXYgPSBjb250YWluZXJfb2YoYWRldiwgc3RydWN0IG1seDVfYWRldiwgYWRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzozMjM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGlkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTMyNC1cdHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdztcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0zMzE9c3RhdGljIHZvaWQgbWx4NXJfcmVwX3JlbW92ZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMzMtXHRzdHJ1Y3QgbWx4NV9hZGV2ICppZGV2ID0gY29udGFpbmVyX29mKGFkZXYsIHN0cnVjdCBtbHg1X2FkZXYsIGFkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MzM0Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBpZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMzUtXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTUwPWludCBtbHg1X2liX2dldF92Zl9jb25maWcoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCBpbnQgdmYsIHUzMiBwb3J0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy01My1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjU0Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy01NS1cdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0ICpyZXA7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTkyPWludCBtbHg1X2liX3NldF92Zl9saW5rX3N0YXRlKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy05NS1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjk2Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy05Ny1cdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0ICppbjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MTIwPWludCBtbHg1X2liX2dldF92Zl9zdGF0cyhzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2Zixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTIzLVx0aW50IG91dF9zeiA9IE1MWDVfU1RfU1pfQllURVMocXVlcnlfdnBvcnRfY291bnRlcl9vdXQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjEyNDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTEyNS1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz0xNTE9c3RhdGljIGludCBzZXRfdmZfbm9kZV9ndWlkKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTU0LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM6MTU1Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xNTYtXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqaW47XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTE3NT1zdGF0aWMgaW50IHNldF92Zl9wb3J0X2d1aWQoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCBpbnQgdmYsIHUzMiBwb3J0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xNzgtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoZGV2aWNlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzoxNzk6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTE4MC1cdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0ICppbjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MjEwPWludCBtbHg1X2liX2dldF92Zl9ndWlkKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMjE0LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM6MjE1Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0yMTYtXHRzdHJ1Y3QgbWx4NV92Zl9jb250ZXh0ICp2ZnNfY3R4ID0gbWRldi1cdTAwM2Vwcml2LnNyaW92LnZmc19jdHg7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM9MTUwPXN0YXRpYyB2b2lkIHBtYV9jbnRfZXh0X2Fzc2lnbl9wcGNudChzdHJ1Y3QgaWJfcG1hX3BvcnRjb3VudGVyc19leHQgKmNudF9leHQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMTgwLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM6MTgxOnN0YXRpYyBpbnQgcXVlcnlfaWJfcHBjbnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTggcG9ydF9udW0sIHU4IHBsYW5lX251bSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jLTE4Mi1cdFx0XHQgIHZvaWQgKm91dCwgc2l6ZV90IHN6LCBib29sIGV4dClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYz0yMDk9c3RhdGljIGludCBwcm9jZXNzX3BtYV9jbWQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHUzMiBwb3J0X251bSxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy0yMTEte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM6MjEyOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy0yMTMtXHRib29sIG5hdGl2ZV9wb3J0ID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYz01OTc9aW50IG1seDVfcXVlcnlfbWFkX2lmY19wb3J0KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy02MDAtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM6NjAxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jLTYwMi1cdHN0cnVjdCBpYl9zbXAgKmluX21hZDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MjA1PXN0YXRpYyBpbnQgbWx4NV9uZXRkZXZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yMTEtXHRzdHJ1Y3QgbmV0X2RldmljZSAqaWJfbmRldiA9IE5VTEw7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjEyOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjEzLVx0c3RydWN0IG1seDVfaWJfZGV2ICppYmRldjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzExLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjMxMjpzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWx4NV9pYl9nZXRfbmF0aXZlX3BvcnRfbWRldihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmliZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMxMy1cdFx0XHRcdFx0XHQgICB1MzIgaWJfcG9ydF9udW0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMxNy1cdFx0XHRcdFx0XHRcdCAgaWJfcG9ydF9udW0pO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjMxODpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gTlVMTDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMTktXHRzdHJ1Y3QgbWx4NV9pYl9tdWx0aXBvcnRfaW5mbyAqbXBpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz01MzY9c3RhdGljIGludCBtbHg1X3F1ZXJ5X3BvcnRfcm9jZShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIHUzMiBwb3J0X251bSxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTQwLVx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKHB0eXNfcmVnKV0gPSB7MH07XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTQxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTQyLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsICp1cHBlcjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NzcyPXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9zeXN0ZW1faW1hZ2VfZ3VpZChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNzc1LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo3NzY6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTc3Ny1cdHU2NCB0bXA7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTgwND1zdGF0aWMgaW50IG1seDVfcXVlcnlfbWF4X3BrZXlzKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy04MDctXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjgwODpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODA5LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz04NzU9c3RhdGljIGludCBtbHg1X3F1ZXJ5X25vZGVfZGVzYyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgY2hhciAqbm9kZV9kZXNjKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy04ODgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6ODg5OnN0YXRpYyB2b2lkIGZpbGxfZXN3X21ncl9yZWdfYzAoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODkwLVx0XHRcdFx0c3RydWN0IG1seDVfaWJfcXVlcnlfZGV2aWNlX3Jlc3AgKnJlc3ApXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTkyOT1zdGF0aWMgdTMyIG1seDVfaWJfY2FsY19tYXhfcXBfd3Ioc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtOTMwLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo5MzE6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTkzMi1cdHUzMiBtYXhfd3FlX2JiX3VuaXRzID0gMSBcdTAwM2NcdTAwM2MgTUxYNV9DQVBfR0VOKG1kZXYsIGxvZ19tYXhfcXBfc3opO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz05NDU9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X2RldmljZShzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtOTUwLVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo5NTE6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTk1Mi1cdGludCBlcnIgPSAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNDYyPXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9oY2FfcG9ydChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE0NjUtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE0NjY6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE0NjctXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqcmVwO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNTQyPWludCBtbHg1X2liX3F1ZXJ5X3BvcnQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNTY2LVx0XHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE1Njc6XHRcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE1NjgtXHRcdGJvb2wgcHV0X21kZXYgPSB0cnVlO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNjAzPXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fcG9ydChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTYyNi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNjI3OnN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fdnBvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTYyOC1cdFx0XHRcdFx0ICAgICAgIHU4IG9wX21vZCwgdTE2IHZwb3J0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNjUwPXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fYm9uZChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTY1Mi17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTY1MzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTY1NC1cdHUzMiBib25kX3NwZWVkO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNjc5PXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX3JlcChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNjgyLVx0c3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNjgzOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTY4NC1cdHUxNiBvcF9tb2Q7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE3MjY9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X2dpZChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsIGludCBpbmRleCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTcyOS1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTczMDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTczMS1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTc0NT1zdGF0aWMgaW50IG1seDVfcXVlcnlfaGNhX25pY19wa2V5KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTc0OC1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTc0OTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE3NTAtXHRib29sIHB1dF9tZGV2ID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTgxNj1zdGF0aWMgaW50IHNldF9wb3J0X2NhcHNfYXRvbWljKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sIHUzMiBtYXNrLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xODE5LVx0c3RydWN0IG1seDVfaGNhX3Zwb3J0X2NvbnRleHQgY3R4ID0ge307XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTgyMDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE4MjEtXHR1MzIgbWRldl9wb3J0X251bTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTk3Mz1zdGF0aWMgdm9pZCBkZWFsbG9jYXRlX3VhcnMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE5ODYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTk4NzpzdGF0aWMgaW50IG1seDVfaWJfZW5hYmxlX2xiX21wKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptYXN0ZXIsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTk4ODpcdFx0XHRcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpzbGF2ZSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xOTg5LVx0XHRcdFx0c3RydWN0IG1seDVfaWJfbGJfc3RhdGUgKmxiX3N0YXRlKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yMDA4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjIwMDk6c3RhdGljIHZvaWQgbWx4NV9pYl9kaXNhYmxlX2xiX21wKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptYXN0ZXIsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjAxMDpcdFx0XHRcdCAgc3RydWN0IG1seDVfY29yZV9kZXYgKnNsYXZlLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTIwMTEtXHRcdFx0XHQgIHN0cnVjdCBtbHg1X2liX2xiX3N0YXRlICpsYl9zdGF0ZSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzI1MT1zdGF0aWMgdm9pZCBtbHg1X2liX3N0YWdlX3N5c19lcnJvcl9ub3RpZmllcl9jbGVhbnVwKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMjU1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjMyNTY6c3RhdGljIGludCBtbHg1X2liX2dldF9wbGFuZV9udW0oc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4ICpudW1fcGxhbmUpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzI1Ny17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTM0Nzc9bWx4NV9pYl9jcmVhdGVfZGF0YV9kaXJlY3RfcmVzb3VyY2VzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNDc5LVx0aW50IGlubGVuID0gTUxYNV9TVF9TWl9CWVRFUyhjcmVhdGVfbWtleV9pbik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzQ4MDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzQ4MS1cdGJvb2wgcm9fc3VwcCA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0zNjU3PXN0YXRpYyBpbnQgbGFnX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM2NjAtXHRcdFx0XHRcdCAgICAgICBsYWdfZXZlbnRzKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozNjYxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNjYyLVx0c3RydWN0IGliX2RldmljZSAqaWJkZXYgPSBcdTAwMjZkZXYtXHUwMDNlaWJfZGV2O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0zNzE4PXN0YXRpYyBpbnQgbWx4NV9ldGhfbGFnX2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM3MjAtXHRzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlX2F0dHIgZnRfYXR0ciA9IHt9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjM3MjE6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM3MjItXHRzdHJ1Y3QgbWx4NV9mbG93X25hbWVzcGFjZSAqbnM7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTM3NTE9c3RhdGljIHZvaWQgbWx4NV9ldGhfbGFnX2NsZWFudXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzc1Mi17XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA5NQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG1seDUgRHJpdmVyIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgTWVsbGFub3ggZHJpdmVyIGZpbGVzIOKAkyBgZHJpdmVycy9md2N0bC9tbHg1L21haW4uY2AsIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuY2AsIGFuZCBzbyBvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoZXJlIHNvbWUga2luZCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gaGVyZT8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGNvZGUgY291bGQgYmUgdGVzdGVkIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZS4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhIHRlc3QgZHJpdmVyIG9yIGV2ZW4gYSBtb2NrIGltcGxlbWVudGF0aW9uLgoKTm9wZSwgZnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBtbHg1IGRyaXZlciBpcyBjbGVhcmx5IGEgcGh5c2ljYWwgZGV2aWNlIGRyaXZlci4gSXQmIzM5O3MgbWVhbnQgdG8gZGlyZWN0bHkgaW50ZXJhY3Qgd2l0aCBoYXJkd2FyZSB0aHJvdWdoIFBDSS4gV2l0aG91dCB0aGUgaGFyZHdhcmUsIGl0IHdvbiYjMzk7dCBldmVuIGluaXRpYWxpemUuIFRoYXQgcnVsZXMgb3V0IGEgc2ltcGxlIHNldHVwLgoKTm93IEkgcmVtZW1iZXIgU3l6a2FsbGVyIGhhcyBzb21lIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBmb3IgZnV6emluZyDigJMgVVNCIGdhZGdldCBmdXp6aW5nLCBtYWM4MDIxMV9od3NpbSwgdmhjaSwgdGhhdCBzb3J0IG9mIHRoaW5nLiBCdXQgd2hhdCBhYm91dCBtbHg1PyBEb2VzIFN5emthbGxlciBoYXZlIGEgY29tcGFyYWJsZSBzZXR1cCBmb3IgZnV6emluZyB0aGlzIHNwZWNpZmljIGRyaXZlcj8gTm8sIGl0JiMzOTtzIG5vdCBlbXVsYXRpbmcgbWx4NSBQQ0kgZGV2aWNlcy4gV2XigJlyZSBnb2luZyB0byBoYXZlIHRvIGRvIHNvbWV0aGluZyBlbHNlLgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjay4gV2hhdCBpZiB0aGUgdGFyZ2V0IG9mIHRoZSBwYXRjaCBpcyBidXJpZWQgd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY2Agb3IgYGVuX21haW4uY2A/IElzIHRoYXQgY29kZSBldmVuIHJlYWNoYWJsZSB3aXRob3V0IGhhcmR3YXJlPyBUaGlzIGlzIGdvaW5nIHRvIHJlcXVpcmUgc29tZSBzbGV1dGhpbmcuCgpMZXQmIzM5O3MgY2hlY2sgd2hlcmUgYG1seDVlX3ByaXZfaW5pdGAgaXMgY2FsbGVkLiBJdCBsb29rcyBsaWtlIGl04oCZcyBjYWxsZWQgd2l0aGluIGBtbHg1ZV9jcmVhdGVfbmV0ZGV2YCwgYG1seDVlX25ldGRldl9pbml0X3Byb2ZpbGVgLCBhbmQgYG1seDVfcmRtYV9zZXR1cF9ybmAuIEFsbCBvZiB0aGVzZSByZXF1aXJlIGEgYG1seDVfY29yZV9kZXZgIHN0cnVjdHVyZS4gT2theSwgc28gdGhhdCBgbWx4NV9jb3JlX2RldmAgaXMgY3JlYXRlZCB3aGVuIHRoZSBQQ0kgZGV2aWNlIGlzIHByb2JlZC4gQW5kIHNpbmNlIHdlIGRvbuKAmXQgaGF2ZSBtbHg1IGhhcmR3YXJlIHdpdGhpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudCwgdGhhdCBlbnRpcmUgY29kZSBwYXRoIGlzIGdvaW5nIHRvIGJlIHVucmVhY2hhYmxlLgoKV2FpdCwgbGV0IG1lIHRoaW5rLiBJcyB0aGVyZSBhIHZpcnR1YWxpemVkIG9yIHNpbXVsYXRlZCBtbHg1IGRldmljZSAqc29tZXdoZXJlKj8gVGltZSB0byBzZWFyY2ggdGhlIGNvZGViYXNlIGZvciBgbWx4NV9jb3JlX2RldmAgY3JlYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxsb2NfZXRoZXJkZXYuKm1seDUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz02NDkzPW1seDVlX2NyZWF0ZV9uZXRkZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIGNvbnN0IHN0cnVjdCBtbHg1ZV9wcm9maWxlICpwcm9maWxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjUwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NjUwMjpcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2X21xcyhzaXplb2Yoc3RydWN0IG1seDVlX3ByaXYpLCB0eHFzLCByeHFzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjUwMy1cdGlmICghbmV0ZGV2KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExNzEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGlzc3VlOgoKKipEZWx2aW5nIGludG8gdGhlIE1MWDUgRHJpdmVyIFByb2JlKioKCk9rYXksIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBDb25zaWRlcmluZyB0aGlzIGlzIGxpa2VseSBhIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGlzc3VlLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb25zLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBgbWx4NV9wY2lfcHJvYmVgIGZ1bmN0aW9uIChvciBhIHNpbWlsYXIgb25lLCBkZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljIE1lbGxhbm94IGRyaXZlciB2ZXJzaW9uIGFuZCBhcmNoaXRlY3R1cmUpIGlzIHdoZXJlIHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIFBDSSBidXMgdG8gaWRlbnRpZnkgYW5kIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlLiBUaGF04oCZcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgdGhlcmUgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSByZXR1cm4gY29kZXMsIGVycm9yIGhhbmRsaW5nLCBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbiB3aXRoaW4gdGhhdCBmdW5jdGlvbiB0byBwaW5wb2ludCB0aGUgZXhhY3QgZmFpbHVyZS4gSXTigJlzIGxpa2VseSBhIHJlc291cmNlIGlzc3VlLCBhIGZpcm13YXJlIHZlcnNpb24gbWlzbWF0Y2gsIG9yIHBvdGVudGlhbGx5IGEgY29uZmlndXJhdGlvbiBwcm9ibGVtLiBUaW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlci4qbWx4NSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kYXRhX2RpcmVjdC5jPTIwMT1zdGF0aWMgdm9pZCBtbHg1X2RhdGFfZGlyZWN0X3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kYXRhX2RpcmVjdC5jLTIxMC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RhdGFfZGlyZWN0LmM6MjExOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtbHg1X2RhdGFfZGlyZWN0X2RyaXZlciA9IHtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RhdGFfZGlyZWN0LmMtMjEyLVx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIyNjU9aW50IG1seDVfcmVjb3Zlcl9kZXZpY2Uoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIyNzY6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1seDVfY29yZV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyNzctXHQubmFtZSAgICAgICAgICAgPSBLQlVJTERfTU9ETkFNRSxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jPTE0NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgbWx4NXZmX2Vycl9oYW5kbGVycyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTE0NDgtXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjE0NDk6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1seDV2Zl9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xNDUwLVx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTE0NTctXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjE0NTg6bW9kdWxlX3BjaV9kcml2ZXIobWx4NXZmX3BjaV9kcml2ZXIpO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xNDU5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTkxNQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDMxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIHRoZSBwcm9tcHQgaXMgYXNraW5nIGFib3V0IHdoZXRoZXIgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgY3V0LiBUaGlzIGNvbmZpcm1zIGl0IGlzIGEgUENJIGRyaXZlci4gVGhlIGNvZGUgY2hhbmdlcyBhcmUgYWxsIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NWAg4oCTIHNwZWNpZmljYWxseSB3aXRoaW4gYGVuX21haW4uY2AsIGBlbl9zdGF0cy5jYCwgYGVuLmhgLCBhbmQgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC4gSXQgbG9va3MgbGlrZSB0aGV5IGFyZSBhZGRpbmcgYSBidWZmZXIgdG8gYSBzdHJ1Y3QuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgZ29pbmcgdG8gYmUgYSBub24tc3RhcnRlciBmb3IgZnV6emluZywgd2hpY2ggbWVhbnMgdGhlIFdvcnRoRnV6emluZyBwYXJhbWV0ZXIgc2hvdWxkIGJlIGZhbHNlLgoKTGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaCBtZXRob2RpY2FsbHkuIElzIHRoZXJlICphbnkqIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBhbiBtbHg1IGRldmljZSBpbiB0aGUga2VybmVsPyBJIHJlbWVtYmVyIHRoYXQgdGhlcmUmIzM5O3Mgbm90LiBObywgdGhlcmUmIzM5O3Mgbm90aGluZyBJIGNhbiB0aGluayBvZiBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLiBXYWl0LCB3aGF0IGFib3V0IGBuZXRkZXZzaW1gPyBEb2VzICp0aGF0KiBlbXVsYXRlIG1seDU/IE5vLCB0aGF0IGlzIHRoZXJlIHRvIGVtdWxhdGUgYSBnZW5lcmljIG5ldHdvcmsgZGV2aWNlLCBmb3IgdGVzdGluZyBkZXZsaW5rIGFuZCB0YyBvZmZsb2Fkcy4gV2hhdCBhYm91dCBgdmRwYWA/IGB2ZHBhX3NpbWAgc3BlY2lmaWNhbGx5IGVtdWxhdGVzIHZpcnRpbywgbm90IG1seDUuCgpTbywgcmVhbGlzdGljYWxseSwgbWx4NSBjb2RlIHBhdGhzIGFyZSAqY29tcGxldGVseSogaW5hY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgaGFyZHdhcmUgcGFzc3Rocm91Z2guIFRoZSBwcm9tcHQgKmV4cGxpY2l0bHkqIHN0YXRlcyB0aGF0IHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgaW52b2x2ZSB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHRoZXNlIGVudmlyb25tZW50cy4gVGhlIHByb21wdCBzcGVjaWZpZXMgdGhpcyBmb3IgdGhpbmdzIHN1Y2ggYXMgVVNCIGdhZGdldHMgYW5kIG1hYzgwMjExX2h3c2ltLgoKU2luY2UgdGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIG1seDUgZHJpdmVyIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSwgdGhlIGNoYW5nZXMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gKm91ciogZnV6emluZyBlbnZpcm9ubWVudC4KCk5vdywgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gSXMgdGhhdCBgZXRodG9vbF9mZWNfaGlzdGAgc3RydWN0dXJlICpvbmx5KiB1c2VkIHdpdGhpbiB0aGUgbWx4NSBkcml2ZXI/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGluY2x1ZGUgZmlsZSBgaW5jbHVkZS9saW51eC9ldGh0b29sLmhgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gT2theSwgSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudC4gVGhlIFdvcnRoRnV6emluZyBwYXJhbWV0ZXIgc2hvdWxkIGJlIGZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldGh0b29sX2ZlY19oaXN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zdGF0aXN0aWNzLnJzdD0yMzc9dGhlbSB3aXRoIDAuXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3N0YXRpc3RpY3MucnN0LTI0MS0tIGBgc3RydWN0IGV0aHRvb2xfZXRoX3BoeV9zdGF0c2BgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc3RhdGlzdGljcy5yc3Q6MjQyOi0gYGBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdGBgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc3RhdGlzdGljcy5yc3QtMjQzLS0gYGBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHNgYFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmM9MzIwOD1zdGF0aWMgaW50IGJueHRfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYy0zMjUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYzozMjU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSBibnh0X2ZlY19yYW5nZXNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzI1NS1cdHsgMCwgMH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYz0zMjc0PXN0YXRpYyB2b2lkIGJueHRfaHdybV9wb3J0X3BoeV9mZHJzdGF0KHN0cnVjdCBibnh0ICpicCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmM6MzI3NTpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzI3Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jOjMyNzc6XHRzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF92YWx1ZSAqdmFsdWVzID0gaGlzdC1cdTAwM2V2YWx1ZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jLTMyNzgtXHRzdHJ1Y3QgaHdybV9wb3J0X3BoeV9mZHJzdGF0X291dHB1dCAqcmVzcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jPTMzMDQ9c3RhdGljIHZvaWQgYm54dF9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jLTMzMDUtXHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYzozMzA2Olx0XHRcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzMwNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmM9OTMyPXN0YXRpYyB2b2lkIGZ1bl9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvZnVuZXRoX2V0aHRvb2wuYy05MzMtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpzdGF0cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfZXRodG9vbC5jOjkzNDpcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfZXRodG9vbC5jLTkzNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM19ldGh0b29sLmM9MTY2ND1zdGF0aWMgdm9pZCBobnMzX2dldF9mZWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZXRodG9vbC5jLTE2NjUtXHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM19ldGh0b29sLmM6MTY2NjpcdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2V0aHRvb2wuYy0xNjY3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYz00NjM2PXN0YXRpYyB2b2lkIGljZV9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00NjM3LVx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM6NDYzODpcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ2Mzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuYz0xMjk3PXN0YXRpYyB2b2lkIG90eDJfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jLTEyOTgtXHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jOjEyOTk6XHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jLTEzMDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmM9MTkyNj1zdGF0aWMgdm9pZCBtbHg1ZV9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jLTE5MjctXHRcdFx0XHRzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgKmZlY19zdGF0cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmM6MTkyODpcdFx0XHRcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuYy0xOTI5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYz0xNTUyPWZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmM6MTU1MzpcdFx0XHQgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICpyYW5nZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYy0xNTU0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYz0xNTg1PXN0YXRpYyB2b2lkIGZlY19yc19oaXN0b2dyYW1fZmlsbF9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE1ODYtXHRcdFx0XHRcdHU4IG51bV9vZl9iaW5zLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmM6MTU4NzpcdFx0XHRcdFx0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYy0xNTg4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYz0xNjExPXN0YXRpYyB2b2lkIGZlY19zZXRfaGlzdG9ncmFtc19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IG1vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYzoxNjEyOlx0XHRcdFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE2MTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jPTE2MzQ9dm9pZCBtbHg1ZV9zdGF0c19mZWNfZ2V0KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMtMTYzNS1cdFx0XHQgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYzoxNjM2Olx0XHRcdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE2Mzcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5oPTExOT12b2lkIG1seDVlX3N0YXRzX2ZlY19nZXQoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuaC0xMjAtXHRcdFx0IHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmg6MTIxOlx0XHRcdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuaC0xMjItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19ldGh0b29sLmM9MTg2Mj1mYm5pY19nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuYy0xODYzLVx0XHQgICAgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuYzoxODY0Olx0XHQgICAgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuYy0xODY1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZXRodG9vbC5jPTIxOT1zdGF0aWMgdm9pZCBlZnhfZXRodG9vbF9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2V0aHRvb2wuYy0yMjAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgKmZlY19zdGF0cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9ldGh0b29sLmM6MjIxOlx0XHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZXRodG9vbC5jLTIyMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL3NpZW5hL2V0aHRvb2wuYz0yMTk9c3RhdGljIHZvaWQgZWZ4X2V0aHRvb2xfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2RldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9zaWVuYS9ldGh0b29sLmMtMjIwLVx0XHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvc2llbmEvZXRodG9vbC5jOjIyMTpcdFx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL3NpZW5hL2V0aHRvb2wuYy0yMjIte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM9MTUyPW5zaW1fc2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2ZlY3BhcmFtICpmZWNwYXJhbSlcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jLTE2Ny1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM6MTY4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSBuZXRkZXZzaW1fZmVjX3Jhbmdlc1tdID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy0xNjktXHR7IDAsIDB9LFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM9MTc2PW5zaW1fZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgKmZlY19zdGF0cyxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM6MTc3Olx0XHQgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmMtMTc4LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM6MTc5Olx0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfdmFsdWUgKnZhbHVlcyA9IGhpc3QtXHUwMDNldmFsdWVzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy0xODAtXG4tLVxuaW5jbHVkZS9saW51eC9ldGh0b29sLmg9NTMzPXN0cnVjdCBldGh0b29sX3BhdXNlX3N0YXRzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC01NDgtLyoqXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDo1NDk6ICogc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgLSBlcnJvciBiaXRzIHJhbmdlIGZvciBGRUMgaGlzdG9ncmFtXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC01NTAtICogc3RhdGlzdGljc1xuLS1cbmluY2x1ZGUvbGludXgvZXRodG9vbC5oLTU1My0gKi9cbmluY2x1ZGUvbGludXgvZXRodG9vbC5oOjU1NDpzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSB7XG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC01NTUtXHR1MTYgbG93O1xuLS1cbmluY2x1ZGUvbGludXgvZXRodG9vbC5oLTU1OC1cbmluY2x1ZGUvbGludXgvZXRodG9vbC5oOjU1OTpzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCB7XG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDo1NjA6XHRzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF92YWx1ZSB7XG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC01NjEtXHRcdHU2NCBzdW07XG4tLVxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTYzLVx0fSB2YWx1ZXNbRVRIVE9PTF9GRUNfSElTVF9NQVhdO1xuaW5jbHVkZS9saW51eC9ldGh0b29sLmg6NTY0Olx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKnJhbmdlcztcbmluY2x1ZGUvbGludXgvZXRodG9vbC5oOjU2NTpcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlIHJhbmdlc19idWZbRVRIVE9PTF9GRUNfSElTVF9NQVhdO1xuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTY2LX07XG4tLVxuaW5jbHVkZS9saW51eC9ldGh0b29sLmg9MTIwMD1zdHJ1Y3QgZXRodG9vbF9vcHMge1xuLS1cbmluY2x1ZGUvbGludXgvZXRodG9vbC5oLTEzMjAtXHRcdFx0XHQgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDoxMzIxOlx0XHRcdFx0IHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KTtcbmluY2x1ZGUvbGludXgvZXRodG9vbC5oLTEzMjItXHRpbnRcdCgqZ2V0X2ZlY3BhcmFtKShzdHJ1Y3QgbmV0X2RldmljZSAqLFxuLS1cbm5ldC9ldGh0b29sL2ZlYy5jPTExPXN0cnVjdCBmZWNfcmVwbHlfZGF0YSB7XG4tLVxubmV0L2V0aHRvb2wvZmVjLmMtMTktXHR9IGNvcnIsIHVuY29yciwgY29ycl9iaXRzO1xubmV0L2V0aHRvb2wvZmVjLmM6MjA6XHRzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCBmZWNfc3RhdF9oaXN0O1xubmV0L2V0aHRvb2wvZmVjLmMtMjEtfTtcbi0tXG5uZXQvZXRodG9vbC9mZWMuYz0xODA9c3RhdGljIGludCBmZWNfcHV0X2hpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9ldGh0b29sL2ZlYy5jOjE4MTpcdFx0XHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbm5ldC9ldGh0b29sL2ZlYy5jLTE4Mi17XG5uZXQvZXRodG9vbC9mZWMuYzoxODM6XHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqcmFuZ2VzID0gaGlzdC1cdTAwM2VyYW5nZXM7XG5uZXQvZXRodG9vbC9mZWMuYzoxODQ6XHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF92YWx1ZSAqdmFsdWVzID0gaGlzdC1cdTAwM2V2YWx1ZXM7XG5uZXQvZXRodG9vbC9mZWMuYy0xODUtXHRzdHJ1Y3QgbmxhdHRyICpuZXN0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjQ2OAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBgcmFuZ2VzX2J1ZmAgdG8gYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YCBpbiBgaW5jbHVkZS9saW51eC9ldGh0b29sLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBhIHN0cnVjdCBjaGFuZ2UuLi4gbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGlzIGlzIHVzZWQuJiMzNDsgSSBzZWUgaXQmIzM5O3MgdXNlZCBpbiBgbmV0L2V0aHRvb2wvZmVjLmNgIGFuZCBhIGZldyBkcml2ZXJzLiBUaGUga2V5IGhlcmUgaXMgdGhhdCB0aGUgcGF0Y2ggYWxzbyB0d2Vha3MgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jYCBhbmQgYGVuX21haW4uY2AgdG8gKnVzZSogdGhpcyBuZXcgYnVmZmVyIGluc3RlYWQgb2YgYWxsb2NhdGluZyBpdCBvbiB0aGUgZmx5LiBIb2xkIG9uIGEgc2Vjb25kLCB0aGUgcmVhbCBsb2dpYyBjaGFuZ2UgaXMgKndpdGhpbiogdGhlIGBtbHg1YCBkcml2ZXIsIHdoaWNoIGlzIGhhcmR3YXJlLXNwZWNpZmljIGFuZCB0aHVzLCB1bmZvcnR1bmF0ZWx5LCB1bnJlYWNoYWJsZSBpbiBteSBmdXp6aW5nIHNldHVwLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSBubyBvdGhlciBkcml2ZXJzIGFyZSBtb2RpZmllZC4gTm9wZSwganVzdCBgbWx4NWAuIFNvLCBlZmZlY3RpdmVseSwgdGhlIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgZW50aXJlbHkgbG9jYWxpemVkIHRvIHRoZSBgbWx4NWAgZHJpdmVyLiBTaW5jZSB0aGF0IGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBoYXJkd2FyZSBhbmQgSSYjMzk7bSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBpdCYjMzk7cyBhIGRlYWQgZW5kIGZvciBteSBmdXp6aW5nIGVmZm9ydHMuIEl0IGRvZXNuJiMzOTt0IHNlZW0gbGlrZSB0aGUgcGF0Y2ggY2FuIGNhdXNlIGFueSBwcm9ibGVtcyBmb3IgbXkgdGVzdHMuCgpCdXQsIGJlaW5nIHRoZSBwYXJhbm9pZCBleHBlcnQgdGhhdCBJIGFtLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhpczogdGhlIGNoYW5nZSBpbiBgZXRodG9vbC5oYCBpcyBqdXN0IGEgc3RydWN0IGRlZmluaXRpb24gY2hhbmdlLCBidXQgaXQgaW5jcmVhc2VzIHRoZSBzdHJ1Y3Qgc2l6ZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIG5vdCBnb2luZyB0byBiaXRlIHVzIGRvd24gdGhlIGxpbmUuIFRoZSBzaXplIGluY3JlYXNlcyBieSBgRVRIVE9PTF9GRUNfSElTVF9NQVggKiBzaXplb2Yoc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UpYCB3aGljaCBpcyA4ICogNCA9IDMyIGJ5dGVzLiBOb3csIHdoZXJlIGlzIGBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdGAgZW1iZWRkZWQ/IEFoLCBpdCYjMzk7cyBlbWJlZGRlZCB3aXRoaW4gYHN0cnVjdCBmZWNfcmVwbHlfZGF0YWAgaW4gYG5ldC9ldGh0b29sL2ZlYy5jYC4gVGhlIHF1ZXN0aW9uIG5vdyBpcywgaXMgYHN0cnVjdCBmZWNfcmVwbHlfZGF0YWAgYWxsb2NhdGVkIHN0YXRpY2FsbHkgb3IgZHluYW1pY2FsbHksIGVpdGhlciBvbiBzdGFjayBvciBoZWFwPyBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYG5ldC9ldGh0b29sL2ZlYy5jYCBmb3IgYWxsb2NhdGlvbiBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmZWNfcmVwbHlfZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZXRodG9vbC9mZWMuYz03PXN0cnVjdCBmZWNfcmVxX2luZm8ge1xuLS1cbm5ldC9ldGh0b29sL2ZlYy5jLTEwLVxubmV0L2V0aHRvb2wvZmVjLmM6MTE6c3RydWN0IGZlY19yZXBseV9kYXRhIHtcbm5ldC9ldGh0b29sL2ZlYy5jLTEyLVx0c3RydWN0IGV0aG5sX3JlcGx5X2RhdGFcdFx0YmFzZTtcbi0tXG5uZXQvZXRodG9vbC9mZWMuYy0yMy0jZGVmaW5lIEZFQ19SRVBEQVRBKF9fcmVwbHlfYmFzZSkgXFxcbm5ldC9ldGh0b29sL2ZlYy5jOjI0Olx0Y29udGFpbmVyX29mKF9fcmVwbHlfYmFzZSwgc3RydWN0IGZlY19yZXBseV9kYXRhLCBiYXNlKVxubmV0L2V0aHRvb2wvZmVjLmMtMjUtXG4tLVxubmV0L2V0aHRvb2wvZmVjLmM9OTQ9c3RhdGljIGludCBmZWNfcHJlcGFyZV9kYXRhKGNvbnN0IHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXG4tLVxubmV0L2V0aHRvb2wvZmVjLmMtOTgtXHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyhhY3RpdmVfZmVjX21vZGVzKSA9IHt9O1xubmV0L2V0aHRvb2wvZmVjLmM6OTk6XHRzdHJ1Y3QgZmVjX3JlcGx5X2RhdGEgKmRhdGEgPSBGRUNfUkVQREFUQShyZXBseV9iYXNlKTtcbm5ldC9ldGh0b29sL2ZlYy5jLTEwMC1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSByZXBseV9iYXNlLVx1MDAzZWRldjtcbi0tXG5uZXQvZXRodG9vbC9mZWMuYz0xNDY9c3RhdGljIGludCBmZWNfcmVwbHlfc2l6ZShjb25zdCBzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxuLS1cbm5ldC9ldGh0b29sL2ZlYy5jLTE0OS1cdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVx1MDAzZWZsYWdzIFx1MDAyNiBFVEhUT09MX0ZMQUdfQ09NUEFDVF9CSVRTRVRTO1xubmV0L2V0aHRvb2wvZmVjLmM6MTUwOlx0Y29uc3Qgc3RydWN0IGZlY19yZXBseV9kYXRhICpkYXRhID0gRkVDX1JFUERBVEEocmVwbHlfYmFzZSk7XG5uZXQvZXRodG9vbC9mZWMuYy0xNTEtXHRpbnQgbGVuID0gMDtcbi0tXG5uZXQvZXRodG9vbC9mZWMuYz0xODA9c3RhdGljIGludCBmZWNfcHV0X2hpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvZXRodG9vbC9mZWMuYy0yMzQtXG5uZXQvZXRodG9vbC9mZWMuYzoyMzU6c3RhdGljIGludCBmZWNfcHV0X3N0YXRzKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBmZWNfcmVwbHlfZGF0YSAqZGF0YSlcbm5ldC9ldGh0b29sL2ZlYy5jLTIzNi17XG4tLVxubmV0L2V0aHRvb2wvZmVjLmM9MjY1PXN0YXRpYyBpbnQgZmVjX2ZpbGxfcmVwbHkoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvZXRodG9vbC9mZWMuYy0yNjktXHRib29sIGNvbXBhY3QgPSByZXFfYmFzZS1cdTAwM2VmbGFncyBcdTAwMjYgRVRIVE9PTF9GTEFHX0NPTVBBQ1RfQklUU0VUUztcbm5ldC9ldGh0b29sL2ZlYy5jOjI3MDpcdGNvbnN0IHN0cnVjdCBmZWNfcmVwbHlfZGF0YSAqZGF0YSA9IEZFQ19SRVBEQVRBKHJlcGx5X2Jhc2UpO1xubmV0L2V0aHRvb2wvZmVjLmMtMjcxLVx0aW50IHJldDtcbi0tXG5uZXQvZXRodG9vbC9mZWMuYz0zNTA9Y29uc3Qgc3RydWN0IGV0aG5sX3JlcXVlc3Rfb3BzIGV0aG5sX2ZlY19yZXF1ZXN0X29wcyA9IHtcbi0tXG5uZXQvZXRodG9vbC9mZWMuYy0zNTQtXHQucmVxX2luZm9fc2l6ZVx0XHQ9IHNpemVvZihzdHJ1Y3QgZmVjX3JlcV9pbmZvKSxcbm5ldC9ldGh0b29sL2ZlYy5jOjM1NTpcdC5yZXBseV9kYXRhX3NpemVcdD0gc2l6ZW9mKHN0cnVjdCBmZWNfcmVwbHlfZGF0YSksXG5uZXQvZXRodG9vbC9mZWMuYy0zNTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTUyCgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDEyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBldGh0b29sIG5ldGxpbmsgZnJhbWV3b3JrIGNoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgaW50byB0aGlzLiBUaGUgYGV0aG5sX2ZlY19yZXF1ZXN0X29wc2Agc3RydWN0dXJlIG5vdyBzcGVjaWZpZXMgYSBgLnJlcGx5X2RhdGFfc2l6ZWAgb2YgYHNpemVvZihzdHJ1Y3QgZmVjX3JlcGx5X2RhdGEpYC4gVGhpcyB0ZWxscyB0aGUgZXRodG9vbCBuZXRsaW5rIGZyYW1ld29yayBob3cgbXVjaCBtZW1vcnkgdG8gYWxsb2NhdGUgZm9yIHRoZSByZXBseSBkYXRhLiBUaGUgaW5jcmVhc2UgaXMgYWN0dWFsbHkgcHJldHR5IG1pbm9yLCBvbmx5IDMyIGJ5dGVzLCBhbmQgdGhlIGZyYW1ld29yayBpdHNlbGYgaGFuZGxlcyB0aGUgZHluYW1pYyBhbGxvY2F0aW9uLCBzbyB0aGF0JiMzOTtzIGdvb2QuIEZ1bmN0aW9uYWxseSwgdGhlIGltcGFjdCBpcyBpc29sYXRlZCB0byB0aGUgYG1seDVgIGRyaXZlci4gQnV0IGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogYG1seDVgIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLiBCZWNhdXNlIGl0JiMzOTtzIGhhcmR3YXJlLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgdHJpZ2dlcmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQgbWVhbnMsIGZyb20gYSBwcmFjdGljYWwgZnV6emluZyBzdGFuZHBvaW50LCBpdCYjMzk7cyBub3QgYSByZWxldmFudCBhcmVhIG9mIGNvbmNlcm4uIFRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIE5vIHBvaW50IHNwZW5kaW5nIHJlc291cmNlcyBvbiBzb21ldGhpbmcgdGhhdCB3ZSBjYW4mIzM5O3QgZWZmZWN0aXZlbHkgdGVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgdG8gdXNlIGFuIGVtYmVkZGVkIGJ1ZmZlciBmb3IgRkVDIGhpc3RvZ3JhbSByYW5nZXMgaW5zdGVhZCBvZiBkeW5hbWljYWxseSBhbGxvY2F0aW5nIGl0LiBTaW5jZSBtbHg1IGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBUaGUgY2hhbmdlIHRvIGBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdGAgb25seSBpbmNyZWFzZXMgaXRzIHNpemUgc2xpZ2h0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBuZXcgcmVhY2hhYmxlIGxvZ2ljIGZvciBvdGhlciBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIHRvIHVzZSBhbiBlbWJlZGRlZCBidWZmZXIgZm9yIEZFQyBoaXN0b2dyYW0gcmFuZ2VzIGluc3RlYWQgb2YgZHluYW1pY2FsbHkgYWxsb2NhdGluZyBpdC4gU2luY2UgbWx4NSBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4gVGhlIGNoYW5nZSB0byBgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RgIG9ubHkgaW5jcmVhc2VzIGl0cyBzaXplIHNsaWdodGx5IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IHJlYWNoYWJsZSBsb2dpYyBmb3Igb3RoZXIgZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoxOTo0My4zNDI1MjYyODFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Nzc0NzI4MTUxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIHRvIHVzZSBhbiBlbWJlZGRlZCBidWZmZXIgZm9yIEZFQyBoaXN0b2dyYW0gcmFuZ2VzIGluc3RlYWQgb2YgZHluYW1pY2FsbHkgYWxsb2NhdGluZyBpdC4gU2luY2UgbWx4NSBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4gVGhlIGNoYW5nZSB0byBgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RgIG9ubHkgaW5jcmVhc2VzIGl0cyBzaXplIHNsaWdodGx5IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IHJlYWNoYWJsZSBsb2dpYyBmb3Igb3RoZXIgZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjE5OjQzLjM0MjUzMzIxMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI3NzI4OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTBlMmQyMDQ4NTg3ZmE2ZWU1OWQxOThlY2ZhYWM1NjUyMzkzMjNkY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAyNCAwODoxOTo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oXFxuaW5kZXggZDUwNzI4OTA5NmMyMDYuLjY4NjdhNWFlZDQyYzA4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcXG5AQCAtOTg0LDcgKzk4NCw2IEBAIHN0cnVjdCBtbHg1ZV9wcml2IHtcXG4gXFx0c3RydWN0IG1seDVlX21xcHJpb19ybCAgICAqbXFwcmlvX3JsO1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICAgICAgICAgICAgICpkZnNfcm9vdDtcXG4gXFx0c3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICpkZXZjb207XFxuLVxcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICpmZWNfcmFuZ2VzO1xcbiB9O1xcbiBcXG4gc3RhdGljIGlubGluZSB1MTYgbWx4NWVfc3RhdHNfbmNoX3JlYWQoY29uc3Qgc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXFxuaW5kZXggYzFhY2I5MDEyZDNmOWUuLjdkNDdhMWRhOGI2YjY0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXFxuQEAgLTY0MTUsMTQgKzY0MTUsOCBAQCBpbnQgbWx4NWVfcHJpdl9pbml0KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxcbiBcXHRpZiAoIXByaXYtXFx1MDAzZWNoYW5uZWxfc3RhdHMpXFxuIFxcdFxcdGdvdG8gZXJyX2ZyZWVfdHhfcmF0ZXM7XFxuIFxcbi1cXHRwcml2LVxcdTAwM2VmZWNfcmFuZ2VzID0ga3phbGxvY19vYmpzKCpwcml2LVxcdTAwM2VmZWNfcmFuZ2VzLCBFVEhUT09MX0ZFQ19ISVNUX01BWCk7XFxuLVxcdGlmICghcHJpdi1cXHUwMDNlZmVjX3JhbmdlcylcXG4tXFx0XFx0Z290byBlcnJfZnJlZV9jaGFubmVsX3N0YXRzO1xcbi1cXG4gXFx0cmV0dXJuIDA7XFxuIFxcbi1lcnJfZnJlZV9jaGFubmVsX3N0YXRzOlxcbi1cXHRrZnJlZShwcml2LVxcdTAwM2VjaGFubmVsX3N0YXRzKTtcXG4gZXJyX2ZyZWVfdHhfcmF0ZXM6XFxuIFxcdGtmcmVlKHByaXYtXFx1MDAzZXR4X3JhdGVzKTtcXG4gZXJyX2ZyZWVfdHhxMnNxX3N0YXRzOlxcbkBAIC02NDQ3LDcgKzY0NDEsNiBAQCB2b2lkIG1seDVlX3ByaXZfY2xlYW51cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcXG4gXFx0aWYgKCFwcml2LVxcdTAwM2VtZGV2KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRrZnJlZShwcml2LVxcdTAwM2VmZWNfcmFuZ2VzKTtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHByaXYtXFx1MDAzZXN0YXRzX25jaDsgaSsrKVxcbiBcXHRcXHRrdmZyZWUocHJpdi1cXHUwMDNlY2hhbm5lbF9zdGF0c1tpXSk7XFxuIFxcdGtmcmVlKHByaXYtXFx1MDAzZWNoYW5uZWxfc3RhdHMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXFxuaW5kZXggZGUzOGI2MDgwNmMyNjQuLmU3ZTZkYjdmNmJmMTc1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmNcXG5AQCAtMTU1MCw3ICsxNTUwLDcgQEAgc3RhdGljIGJvb2wgZmVjX3JzX3ZhbGlkYXRlX2hpc3RfdHlwZShpbnQgbW9kZSwgaW50IGhpc3RfdHlwZSlcXG4gXFxuIHN0YXRpYyB1OFxcbiBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgbW9kZSxcXG4tXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqKnJhbmdlcylcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqcmFuZ2VzKVxcbiB7XFxuIFxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gcHJpdi1cXHUwMDNlbWRldjtcXG4gXFx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKHBwaGNyX3JlZyldID0gezB9O1xcbkBAIC0xNTU4LDggKzE1NTgsNiBAQCBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgbW9kZSxcXG4gXFx0aW50IHN6ID0gTUxYNV9TVF9TWl9CWVRFUyhwcGhjcl9yZWcpO1xcbiBcXHR1OCBoaXN0X3R5cGUsIG51bV9vZl9iaW5zO1xcbiBcXG4tXFx0bWVtc2V0KHByaXYtXFx1MDAzZWZlY19yYW5nZXMsIDAsXFxuLVxcdCAgICAgICBFVEhUT09MX0ZFQ19ISVNUX01BWCAqIHNpemVvZigqcHJpdi1cXHUwMDNlZmVjX3JhbmdlcykpO1xcbiBcXHRNTFg1X1NFVChwcGhjcl9yZWcsIGluLCBsb2NhbF9wb3J0LCAxKTtcXG4gXFx0aWYgKG1seDVfY29yZV9hY2Nlc3NfcmVnKG1kZXYsIGluLCBzeiwgb3V0LCBzeiwgTUxYNV9SRUdfUFBIQ1IsIDAsIDApKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG5AQCAtMTU3NSwxMiArMTU3MywxMSBAQCBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgbW9kZSxcXG4gXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBudW1fb2ZfYmluczsgaSsrKSB7XFxuIFxcdFxcdHZvaWQgKmJpbl9yYW5nZSA9IE1MWDVfQUREUl9PRihwcGhjcl9yZWcsIG91dCwgYmluX3JhbmdlW2ldKTtcXG4gXFxuLVxcdFxcdHByaXYtXFx1MDAzZWZlY19yYW5nZXNbaV0uaGlnaCA9IE1MWDVfR0VUKGJpbl9yYW5nZV9sYXlvdXQsIGJpbl9yYW5nZSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGhpZ2hfdmFsKTtcXG4tXFx0XFx0cHJpdi1cXHUwMDNlZmVjX3Jhbmdlc1tpXS5sb3cgPSBNTFg1X0dFVChiaW5fcmFuZ2VfbGF5b3V0LCBiaW5fcmFuZ2UsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgIGxvd192YWwpO1xcbitcXHRcXHRyYW5nZXNbaV0uaGlnaCA9IE1MWDVfR0VUKGJpbl9yYW5nZV9sYXlvdXQsIGJpbl9yYW5nZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICBoaWdoX3ZhbCk7XFxuK1xcdFxcdHJhbmdlc1tpXS5sb3cgPSBNTFg1X0dFVChiaW5fcmFuZ2VfbGF5b3V0LCBiaW5fcmFuZ2UsXFxuK1xcdFxcdFxcdFxcdFxcdCBsb3dfdmFsKTtcXG4gXFx0fVxcbi1cXHQqcmFuZ2VzID0gcHJpdi1cXHUwMDNlZmVjX3JhbmdlcztcXG4gXFxuIFxcdHJldHVybiBudW1fb2ZfYmlucztcXG4gfVxcbkBAIC0xNjIyLDEwICsxNjE5LDEyIEBAIHN0YXRpYyB2b2lkIGZlY19zZXRfaGlzdG9ncmFtc19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IG1vZGUsXFxuIFxcdGNhc2UgTUxYNUVfRkVDX0xMUlNfMjcyXzI1N18xOlxcbiBcXHRjYXNlIE1MWDVFX0ZFQ19SU181NDRfNTE0X0lOVEVSTEVBVkVEX1FVQUQ6XFxuIFxcdFxcdG51bV9vZl9iaW5zID1cXG4tXFx0XFx0XFx0ZmVjX3JzX2hpc3RvZ3JhbV9maWxsX3Jhbmdlcyhwcml2LCBtb2RlLCBcXHUwMDI2aGlzdC1cXHUwMDNlcmFuZ2VzKTtcXG4tXFx0XFx0aWYgKG51bV9vZl9iaW5zKVxcbitcXHRcXHRcXHRmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHByaXYsIG1vZGUsIGhpc3QtXFx1MDAzZXJhbmdlc19idWYpO1xcbitcXHRcXHRpZiAobnVtX29mX2JpbnMpIHtcXG4rXFx0XFx0XFx0aGlzdC1cXHUwMDNlcmFuZ2VzID0gaGlzdC1cXHUwMDNlcmFuZ2VzX2J1ZjtcXG4gXFx0XFx0XFx0cmV0dXJuIGZlY19yc19oaXN0b2dyYW1fZmlsbF9zdGF0cyhwcml2LCBudW1fb2ZfYmlucyxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgaGlzdCk7XFxuK1xcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdHJldHVybjtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxcbmluZGV4IDVkNDkxYTk4MjY1ZWY5Li4xMjY4M2I1ZDEyNWU0MSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXFxuQEAgLTU2Miw2ICs1NjIsNyBAQCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCB7XFxuIFxcdFxcdHU2NCBwZXJfbGFuZVtFVEhUT09MX01BWF9MQU5FU107XFxuIFxcdH0gdmFsdWVzW0VUSFRPT0xfRkVDX0hJU1RfTUFYXTtcXG4gXFx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKnJhbmdlcztcXG4rXFx0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgcmFuZ2VzX2J1ZltFVEhUT09MX0ZFQ19ISVNUX01BWF07XFxuIH07XFxuIC8qKlxcbiAgKiBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgLSBzdGF0aXN0aWNzIGZvciBJRUVFIDgwMi4zIEZFQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoxOTo0NC4wNzEyNzQwMjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2NzAxODUyNDQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIHRvIHVzZSBhbiBlbWJlZGRlZCBidWZmZXIgZm9yIEZFQyBoaXN0b2dyYW0gcmFuZ2VzIGluc3RlYWQgb2YgZHluYW1pY2FsbHkgYWxsb2NhdGluZyBpdC4gU2luY2UgbWx4NSBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4gVGhlIGNoYW5nZSB0byBgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RgIG9ubHkgaW5jcmVhc2VzIGl0cyBzaXplIHNsaWdodGx5IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IHJlYWNoYWJsZSBsb2dpYyBmb3Igb3RoZXIgZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTBlMmQyMDQ4NTg3ZmE2ZWU1OWQxOThlY2ZhYWM1NjUyMzkzMjNkY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDA4OjE5OjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaFxuaW5kZXggZDUwNzI4OTA5NmMyMDYuLjY4NjdhNWFlZDQyYzA4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oXG5AQCAtOTg0LDcgKzk4NCw2IEBAIHN0cnVjdCBtbHg1ZV9wcml2IHtcbiBcdHN0cnVjdCBtbHg1ZV9tcXByaW9fcmwgICAgKm1xcHJpb19ybDtcbiBcdHN0cnVjdCBkZW50cnkgICAgICAgICAgICAgKmRmc19yb290O1xuIFx0c3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICpkZXZjb207XG4tXHRzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqZmVjX3JhbmdlcztcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmUgdTE2IG1seDVlX3N0YXRzX25jaF9yZWFkKGNvbnN0IHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXG5pbmRleCBjMWFjYjkwMTJkM2Y5ZS4uN2Q0N2ExZGE4YjZiNjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXG5AQCAtNjQxNSwxNCArNjQxNSw4IEBAIGludCBtbHg1ZV9wcml2X2luaXQoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXG4gXHRpZiAoIXByaXYtXHUwMDNlY2hhbm5lbF9zdGF0cylcbiBcdFx0Z290byBlcnJfZnJlZV90eF9yYXRlcztcbiBcbi1cdHByaXYtXHUwMDNlZmVjX3JhbmdlcyA9IGt6YWxsb2Nfb2JqcygqcHJpdi1cdTAwM2VmZWNfcmFuZ2VzLCBFVEhUT09MX0ZFQ19ISVNUX01BWCk7XG4tXHRpZiAoIXByaXYtXHUwMDNlZmVjX3Jhbmdlcylcbi1cdFx0Z290byBlcnJfZnJlZV9jaGFubmVsX3N0YXRzO1xuLVxuIFx0cmV0dXJuIDA7XG4gXG4tZXJyX2ZyZWVfY2hhbm5lbF9zdGF0czpcbi1cdGtmcmVlKHByaXYtXHUwMDNlY2hhbm5lbF9zdGF0cyk7XG4gZXJyX2ZyZWVfdHhfcmF0ZXM6XG4gXHRrZnJlZShwcml2LVx1MDAzZXR4X3JhdGVzKTtcbiBlcnJfZnJlZV90eHEyc3Ffc3RhdHM6XG5AQCAtNjQ0Nyw3ICs2NDQxLDYgQEAgdm9pZCBtbHg1ZV9wcml2X2NsZWFudXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4gXHRpZiAoIXByaXYtXHUwMDNlbWRldilcbiBcdFx0cmV0dXJuO1xuIFxuLVx0a2ZyZWUocHJpdi1cdTAwM2VmZWNfcmFuZ2VzKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlc3RhdHNfbmNoOyBpKyspXG4gXHRcdGt2ZnJlZShwcml2LVx1MDAzZWNoYW5uZWxfc3RhdHNbaV0pO1xuIFx0a2ZyZWUocHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXG5pbmRleCBkZTM4YjYwODA2YzI2NC4uZTdlNmRiN2Y2YmYxNzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmNcbkBAIC0xNTUwLDcgKzE1NTAsNyBAQCBzdGF0aWMgYm9vbCBmZWNfcnNfdmFsaWRhdGVfaGlzdF90eXBlKGludCBtb2RlLCBpbnQgaGlzdF90eXBlKVxuIFxuIHN0YXRpYyB1OFxuIGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxuLVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKipyYW5nZXMpXG4rXHRcdFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqcmFuZ2VzKVxuIHtcbiBcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gcHJpdi1cdTAwM2VtZGV2O1xuIFx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKHBwaGNyX3JlZyldID0gezB9O1xuQEAgLTE1NTgsOCArMTU1OCw2IEBAIGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxuIFx0aW50IHN6ID0gTUxYNV9TVF9TWl9CWVRFUyhwcGhjcl9yZWcpO1xuIFx0dTggaGlzdF90eXBlLCBudW1fb2ZfYmlucztcbiBcbi1cdG1lbXNldChwcml2LVx1MDAzZWZlY19yYW5nZXMsIDAsXG4tXHQgICAgICAgRVRIVE9PTF9GRUNfSElTVF9NQVggKiBzaXplb2YoKnByaXYtXHUwMDNlZmVjX3JhbmdlcykpO1xuIFx0TUxYNV9TRVQocHBoY3JfcmVnLCBpbiwgbG9jYWxfcG9ydCwgMSk7XG4gXHRpZiAobWx4NV9jb3JlX2FjY2Vzc19yZWcobWRldiwgaW4sIHN6LCBvdXQsIHN6LCBNTFg1X1JFR19QUEhDUiwgMCwgMCkpXG4gXHRcdHJldHVybiAwO1xuQEAgLTE1NzUsMTIgKzE1NzMsMTEgQEAgZmVjX3JzX2hpc3RvZ3JhbV9maWxsX3JhbmdlcyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IG1vZGUsXG4gXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgbnVtX29mX2JpbnM7IGkrKykge1xuIFx0XHR2b2lkICpiaW5fcmFuZ2UgPSBNTFg1X0FERFJfT0YocHBoY3JfcmVnLCBvdXQsIGJpbl9yYW5nZVtpXSk7XG4gXG4tXHRcdHByaXYtXHUwMDNlZmVjX3Jhbmdlc1tpXS5oaWdoID0gTUxYNV9HRVQoYmluX3JhbmdlX2xheW91dCwgYmluX3JhbmdlLFxuLVx0XHRcdFx0XHRcdCAgICBoaWdoX3ZhbCk7XG4tXHRcdHByaXYtXHUwMDNlZmVjX3Jhbmdlc1tpXS5sb3cgPSBNTFg1X0dFVChiaW5fcmFuZ2VfbGF5b3V0LCBiaW5fcmFuZ2UsXG4tXHRcdFx0XHRcdFx0ICAgbG93X3ZhbCk7XG4rXHRcdHJhbmdlc1tpXS5oaWdoID0gTUxYNV9HRVQoYmluX3JhbmdlX2xheW91dCwgYmluX3JhbmdlLFxuK1x0XHRcdFx0XHQgIGhpZ2hfdmFsKTtcbitcdFx0cmFuZ2VzW2ldLmxvdyA9IE1MWDVfR0VUKGJpbl9yYW5nZV9sYXlvdXQsIGJpbl9yYW5nZSxcbitcdFx0XHRcdFx0IGxvd192YWwpO1xuIFx0fVxuLVx0KnJhbmdlcyA9IHByaXYtXHUwMDNlZmVjX3JhbmdlcztcbiBcbiBcdHJldHVybiBudW1fb2ZfYmlucztcbiB9XG5AQCAtMTYyMiwxMCArMTYxOSwxMiBAQCBzdGF0aWMgdm9pZCBmZWNfc2V0X2hpc3RvZ3JhbXNfc3RhdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxuIFx0Y2FzZSBNTFg1RV9GRUNfTExSU18yNzJfMjU3XzE6XG4gXHRjYXNlIE1MWDVFX0ZFQ19SU181NDRfNTE0X0lOVEVSTEVBVkVEX1FVQUQ6XG4gXHRcdG51bV9vZl9iaW5zID1cbi1cdFx0XHRmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHByaXYsIG1vZGUsIFx1MDAyNmhpc3QtXHUwMDNlcmFuZ2VzKTtcbi1cdFx0aWYgKG51bV9vZl9iaW5zKVxuK1x0XHRcdGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMocHJpdiwgbW9kZSwgaGlzdC1cdTAwM2VyYW5nZXNfYnVmKTtcbitcdFx0aWYgKG51bV9vZl9iaW5zKSB7XG4rXHRcdFx0aGlzdC1cdTAwM2VyYW5nZXMgPSBoaXN0LVx1MDAzZXJhbmdlc19idWY7XG4gXHRcdFx0cmV0dXJuIGZlY19yc19oaXN0b2dyYW1fZmlsbF9zdGF0cyhwcml2LCBudW1fb2ZfYmlucyxcbiBcdFx0XHRcdFx0XHRcdCAgIGhpc3QpO1xuK1x0XHR9XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcbmluZGV4IDVkNDkxYTk4MjY1ZWY5Li4xMjY4M2I1ZDEyNWU0MSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuQEAgLTU2Miw2ICs1NjIsNyBAQCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCB7XG4gXHRcdHU2NCBwZXJfbGFuZVtFVEhUT09MX01BWF9MQU5FU107XG4gXHR9IHZhbHVlc1tFVEhUT09MX0ZFQ19ISVNUX01BWF07XG4gXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqcmFuZ2VzO1xuK1x0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgcmFuZ2VzX2J1ZltFVEhUT09MX0ZFQ19ISVNUX01BWF07XG4gfTtcbiAvKipcbiAgKiBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgLSBzdGF0aXN0aWNzIGZvciBJRUVFIDgwMi4zIEZFQ1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MTk6NDQuMDcxMjc2NTk2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQ5MTM2NjY3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhIE1lbGxhbm94IG1seDUgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgYW5kIGV0aHRvb2wuIEl0J3MgZXNzZW50aWFsbHkgbW92aW5nIHRoZSBgZmVjX3Jhbmdlc2AgYWxsb2NhdGlvbiBmcm9tIGBtbHg1ZV9wcml2YCB0byBhbiBlbWJlZGRlZCBidWZmZXIgd2l0aGluIGBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdGAsIHdoaWNoIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIE15IGZpcnN0IHRob3VnaHQgaXM6IGRvZXMgdGhpcyB3b3JrIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgY2FuIHdlIGV2ZW4gKnRlc3QqIGl0IGluIG91ciBlbnZpcm9ubWVudD9cblxuV2XigJlyZSBtb2RpZnlpbmcgYGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXNgIHRvIHdyaXRlIGRpcmVjdGx5IHRvIHRoZSBuZXcgYnVmZmVyIChgcmFuZ2VzX2J1ZmApIGFuZCB1cGRhdGluZyBgZmVjX3NldF9oaXN0b2dyYW1zX3N0YXRzYCBhY2NvcmRpbmdseS4gRnVuY3Rpb25hbGx5LCBpdCBzZWVtcyBzb3VuZC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXMgcmVhY2hhYmlsaXR5LiBUaGlzIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIsIHNvIHRoYXQgcmFpc2VzIGFuIGltbWVkaWF0ZSByZWQgZmxhZy4gQ2FuIHdlIGVtdWxhdGUgbWx4NSBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwPyBJIHRoaW5rIGV0aHRvb2wgc3RhdGlzdGljcyBhcmUgYWNjZXNzZWQgdGhyb3VnaCBuZXRsaW5rIG9yIGlvY3RsLCByaWdodD8gQnV0IHRoZSBkcml2ZXIgc3RpbGwgbmVlZHMgdG8gYmUgbG9hZGVkIGFuZCBhIG5ldGRldiByZWdpc3RlcmVkLlxuXG5MZXQgbWUgdGhpbmssIGRvZXMgc3l6a2FsbGVyIGhhdmUgc3VwcG9ydCBmb3IgbWx4NT8gTm8sIGl0J3Mgbm90IHRoZSBkZWZhdWx0IFFFTVUvR0NFIHNldHVwLiBPa2F5LCBzeXprYWxsZXIgZG9lc24ndCBlbXVsYXRlIHRoZSBoYXJkd2FyZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGJlY29tZXM6IGNhbiB3ZSByZWFjaCB0aGlzIGNvZGUgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmU/IFNwZWNpZmljYWxseSwgd2hlcmUgaXMgYG1seDVlX3ByaXZfaW5pdGAgY2FsbGVkPyBEdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uLCByaWdodD8gSWYgdGhlcmUncyBubyBoYXJkd2FyZSwgdGhlIGRyaXZlciB3b24ndCBwcm9iZSwgYW5kIGBtbHg1ZV9wcml2X2luaXRgIHdvbid0IGJlIGNhbGxlZC4gU28sIGNhbiB3ZSBwcm9iZSBtbHg1IHZpYSBzb21lIHNvZnR3YXJlIG1lY2hhbmlzbT9cblxuSSBuZWVkIHRvIHF1aWNrbHkgc2VhcmNoIHN5emthbGxlciBmb3IgYG1seDVgIG9yIGNoZWNrIGlmIGl0J3MgZnV6emFibGUuIFdhaXQsIHRoZSBwcm9tcHQgaXRzZWxmIHNlZW1zIHRvIGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGlzLi4uIGl0IHNheXMgdGhhdCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24gbGlrZSB1c2IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLCBhcmUgd2hhdCB3ZSdyZSBsb29raW5nIGF0LiBNbDUgaXMgYSBQQ0llIGRldmljZSwgc28gdGhhdCdzIGEgbm8tZ28uIFFFTVUgZG9lc24ndCBlbXVsYXRlIG1seDUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvdWdoLiBMZXQncyBsb29rIHVwIFFFTVUncyBzdXBwb3J0ZWQgZGV2aWNlcy4gSSByZW1lbWJlciBlMTAwMCwgcnRsODEzOSwgdmlydGlvLW5ldCwgdm14bmV0MywgaWdiLi4uIG5vbmUgb2Ygd2hpY2ggYXJlIG1seDUuXG5cbldhaXQsIEkgdGhpbmsgdGhlcmUgaXMgYSB2RFBBIG1seDUgZHJpdmVyLCBidXQgdGhhdCBzdGlsbCBsaWtlbHkgbmVlZHMgaGFyZHdhcmUuIE9rYXksIHRoZSBxdWVzdGlvbiBjb21lcyBiYWNrIHRvIHdoZXRoZXIgdGhlcmUgaXMgYW55IHdheSB0byByZWFjaCBgbWx4NWVfcHJpdl9pbml0YC4gTGV0IG1lIHB1bGwgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBldmVuIGNhbGxlZC4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgZ2l2ZSBtZSBzb21lIGluc2lnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1ODEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoxOTo1My41NjI2NDYwMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjI3OTkyOTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVlX3ByaXZfaW5pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD0xMjc1PWludCBtbHg1ZV9nZXRfcGZfbnVtX3RpcnMoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjEyNzY6aW50IG1seDVlX3ByaXZfaW5pdChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC0xMjc3LVxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbWx4NWVfcHJvZmlsZSAqcHJvZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NjM1Mz12b2lkIG1seDVlX3NldF9yeF9tb2RlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy02MzY0LS8qIG1seDVlIGdlbmVyaWMgbmV0ZGV2IG1hbmFnZW1lbnQgQVBJIChtb3ZlIHRvIGVuX2NvbW1vbi5jKSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NjM2NTppbnQgbWx4NWVfcHJpdl9pbml0KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjM2Ni1cXHRcXHQgICAgY29uc3Qgc3RydWN0IG1seDVlX3Byb2ZpbGUgKnByb2ZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTY0OTM9bWx4NWVfY3JlYXRlX25ldGRldihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgY29uc3Qgc3RydWN0IG1seDVlX3Byb2ZpbGUgKnByb2ZpbGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTY1MDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo2NTA4OlxcdGVyciA9IG1seDVlX3ByaXZfaW5pdChuZXRkZXZfcHJpdihuZXRkZXYpLCBwcm9maWxlLCBuZXRkZXYsIG1kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjUwOS1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo2NTEwOlxcdFxcdG1seDVfY29yZV9lcnIobWRldiwgXFxcIm1seDVlX3ByaXZfaW5pdCBmYWlsZWQsIGVycj0lZFxcXFxuXFxcIiwgZXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTY1MTEtXFx0XFx0Z290byBlcnJfZnJlZV9uZXRkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTY2NTQ9bWx4NWVfbmV0ZGV2X2luaXRfcHJvZmlsZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjY1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjY2NjA6XFx0ZXJyID0gbWx4NWVfcHJpdl9pbml0KHByaXYsIG5ld19wcm9maWxlLCBuZXRkZXYsIG1kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjY2MS1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo2NjYyOlxcdFxcdG1seDVfY29yZV9lcnIobWRldiwgXFxcIm1seDVlX3ByaXZfaW5pdCBmYWlsZWQsIGVycj0lZFxcXFxuXFxcIiwgZXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTY2NjMtXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jPTc3Mz1zdGF0aWMgaW50IG1seDVfcmRtYV9zZXR1cF9ybihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnRfbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMtNzk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jOjgwMDpcXHRlcnIgPSBtbHg1ZV9wcml2X2luaXQoZXByaXYsIHByb2YsIG5ldGRldiwgbWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMtODAxLVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjE5OjU3Ljc5MDY0NDAwNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTgwODQ0NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgbWx4NSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYG1seDVgIGRyaXZlciBpcyBiZWluZyBhIGJpdCBvZiBhIHN0aWNrbGVyLiBJdCBzZWVtcyBJIG5lZWQgYWN0dWFsLCBwaHlzaWNhbCBNZWxsYW5veCBoYXJkd2FyZSDigJMgQ29ubmVjdFgtNCwgNSwgNiwgb3IgNywgcHJlc3VtYWJseSwgb3Igc29tZXRoaW5nIGVxdWl2YWxlbnQg4oCTIHRvIGV2ZW4gZ2V0IHRoaXMgdGhpbmcgb2ZmIHRoZSBncm91bmQuIE5vIGhhcmR3YXJlLCBubyBpbml0aWFsaXphdGlvbi4gVGhpcyBtZWFucyBgbWx4NWVfcHJpdl9pbml0YCBpc24ndCBnb2luZyB0byBnZXQgY2FsbGVkLiBUaGF0J3MgYSBwcm9ibGVtIHdoZW4gSSdtIHRyeWluZyB0byB0ZXN0IG9yIGRldmVsb3Agd2l0aG91dCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZSFcblxuSG1tLCBpcyB0aGVyZSAqYW55KiBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgbWx4NSBiYWtlZCBpbnRvIHRoZSBrZXJuZWw/IEkgc2VlbSB0byByZWNhbGwgc29tZXRoaW5nIGFib3V0IHRoYXQsIHRob3VnaCBJIGNhbid0IHBsYWNlIGl0LiBNYXliZSBhIHZpcnR1YWwgZGV2aWNlIG9yIGEgbW9kdWxlIHRvIHNpbXVsYXRlIHRoZSBoYXJkd2FyZT8gSXQncyB3b3J0aCBkaWdnaW5nIGludG8uXG5cbkFscmlnaHQsIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG1vY2sgZHJpdmVycyBvciB0ZXN0IGltcGxlbWVudGF0aW9ucyB0aGF0IG1pZ2h0IHNpbXVsYXRlIHRoZSBtbHg1IGZ1bmN0aW9uYWxpdHkuIElmIHRoZXJlJ3Mgc29tZSBraW5kIG9mIHRlc3QgZnJhbWV3b3JrLCB0aGF0IHdvdWxkIGJlIGlkZWFsLiBJIG5lZWQgYSB3YXkgdG8gcHJvZ3Jlc3MgbXkgd29yayB3aXRob3V0IGJlaW5nIGNvbXBsZXRlbHkgYmxvY2tlZC4gRmluZGluZyBhIHN1aXRhYmxlIHNvZnR3YXJlLWJhc2VkIGFsdGVybmF0aXZlIHdpbGwgbWFrZSBsaWZlIGEgbG90IGVhc2llciwgZm9yIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NjYsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDowMi41NDg3MzE0ODZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2NDQ4NjI2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2NvcmVfZGV2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTM5NjYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM9MjQ9c3RydWN0IG1seDVjdGxfZGV2IHtcXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTI1LVxcdHN0cnVjdCBmd2N0bF9kZXZpY2UgZndjdGw7XFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYzoyNjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTI3LX07XFxuLS1cXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jPTExNj1zdGF0aWMgdm9pZCBtbHg1Y3RsX3JlbGVhc2VfdWlkKHN0cnVjdCBtbHg1Y3RsX2RldiAqbWNkZXYsIHUxNiB1aWQpXFxuLS1cXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTExOC1cXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhkZXN0cm95X3VjdHhfaW4pXSA9IHt9O1xcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM6MTE5OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gbWNkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYy0xMjAtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM9MzcwPXN0YXRpYyBpbnQgbWx4NWN0bF9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcXG4tLVxcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMzc0LVxcdHN0cnVjdCBtbHg1X2FkZXYgKm1hZGV2ID0gY29udGFpbmVyX29mKGFkZXYsIHN0cnVjdCBtbHg1X2FkZXYsIGFkZXYpO1xcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM6Mzc1OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gbWFkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYy0zNzYtXFx0c3RydWN0IG1seDVjdGxfZGV2ICptY2RldiBfX2ZyZWUobWx4NWN0bCkgPSBmd2N0bF9hbGxvY19kZXZpY2UoXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYz04PWludCBtbHg1cl9jbWRfcXVlcnlfc3BlY2lhbF9ta2V5cyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTQ0LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjQ1OmludCBtbHg1X2NtZF9xdWVyeV9jb25nX3BhcmFtcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgY29uZ19wb2ludCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy00Ni1cXHRcXHRcXHQgICAgICAgdm9pZCAqb3V0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNTYtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6NTc6dm9pZCBtbHg1X2NtZF9kZXN0cm95X3RpcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGlybiwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy01OC17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy02Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo2Nzp2b2lkIG1seDVfY21kX2Rlc3Ryb3lfdGlzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0aXNuLCB1MTYgdWlkKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTY4LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTc2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjc3OmludCBtbHg1X2NtZF9kZXN0cm95X3JxdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgcnF0biwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy03OC17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy04Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo4NzppbnQgbWx4NV9jbWRfYWxsb2NfdHJhbnNwb3J0X2RvbWFpbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnRkbixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy04OC1cXHRcXHRcXHRcXHQgICAgdTE2IHVpZClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEwNS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxMDY6dm9pZCBtbHg1X2NtZF9kZWFsbG9jX3RyYW5zcG9ydF9kb21haW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRkbixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMDctXFx0XFx0XFx0XFx0ICAgICAgIHUxNiB1aWQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMTctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTE4OmludCBtbHg1X2NtZF9kZWFsbG9jX3BkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiBwZG4sIHUxNiB1aWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTE5LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEyNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxMjg6aW50IG1seDVfY21kX2F0dGFjaF9tY2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdW5pb24gaWJfZ2lkICptZ2lkLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEyOS1cXHRcXHRcXHR1MzIgcXBuLCB1MTYgdWlkKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTQxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjE0MjppbnQgbWx4NV9jbWRfZGV0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTQzLVxcdFxcdFxcdHUzMiBxcG4sIHUxNiB1aWQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNTUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTU2OmludCBtbHg1X2NtZF94cmNkX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqeHJjZG4sIHUxNiB1aWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTU3LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTE2OS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxNzA6aW50IG1seDVfY21kX3hyY2RfZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgeHJjZG4sIHUxNiB1aWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTcxLXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jPTE4MD1pbnQgbWx4NV9jbWRfbWFkX2lmYyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgY29uc3Qgdm9pZCAqaW5iLCB2b2lkICpvdXRiLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjIyLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjIyMzppbnQgbWx4NV9jbWRfdWFyX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqdWFybiwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yMjQte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjM4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjIzOTppbnQgbWx4NV9jbWRfdWFyX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHVhcm4sIHUxNiB1aWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjQwLXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTI0OC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoyNDk6aW50IG1seDVfY21kX3F1ZXJ5X3Z1aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgYm9vbCBkYXRhX2RpcmVjdCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yNTAtXFx0XFx0XFx0Y2hhciAqb3V0X3Z1aWQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaD00MD1pbnQgbWx4NXJfY21kX3F1ZXJ5X3NwZWNpYWxfbWtleXMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQxOmludCBtbHg1X2NtZF9xdWVyeV9jb25nX3BhcmFtcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgY29uZ19wb2ludCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC00Mi1cXHRcXHRcXHQgICAgICAgdm9pZCAqb3V0KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0MzppbnQgbWx4NV9jbWRfZGVhbGxvY19wZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgcGRuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0NDp2b2lkIG1seDVfY21kX2Rlc3Ryb3lfdGlyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0aXJuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0NTp2b2lkIG1seDVfY21kX2Rlc3Ryb3lfdGlzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0aXNuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0NjppbnQgbWx4NV9jbWRfZGVzdHJveV9ycXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHJxdG4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ3OmludCBtbHg1X2NtZF9hbGxvY190cmFuc3BvcnRfZG9tYWluKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqdGRuLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTQ4LVxcdFxcdFxcdFxcdCAgICB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0OTp2b2lkIG1seDVfY21kX2RlYWxsb2NfdHJhbnNwb3J0X2RvbWFpbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGRuLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTUwLVxcdFxcdFxcdFxcdCAgICAgICB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo1MTppbnQgbWx4NV9jbWRfYXR0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTItXFx0XFx0XFx0dTMyIHFwbiwgdTE2IHVpZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTM6aW50IG1seDVfY21kX2RldGFjaF9tY2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdW5pb24gaWJfZ2lkICptZ2lkLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTU0LVxcdFxcdFxcdHUzMiBxcG4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjU1OmludCBtbHg1X2NtZF94cmNkX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqeHJjZG4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjU2OmludCBtbHg1X2NtZF94cmNkX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHhyY2RuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC01Ny1pbnQgbWx4NV9jbWRfbWFkX2lmYyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgY29uc3Qgdm9pZCAqaW5iLCB2b2lkICpvdXRiLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTU4LVxcdFxcdCAgICAgdTE2IG9wbW9kLCB1OCBwb3J0KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo1OTppbnQgbWx4NV9jbWRfdWFyX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqdWFybiwgdTE2IHVpZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NjA6aW50IG1seDVfY21kX3Vhcl9kZWFsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB1YXJuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo2MTppbnQgbWx4NV9jbWRfcXVlcnlfdnVpZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBib29sIGRhdGFfZGlyZWN0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTYyLVxcdFxcdFxcdGNoYXIgKm91dF92dWlkKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYz0yOTI9c3RhdGljIGludCBtbHg1X2liX2dldF9jY19wYXJhbXMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHUzMiBwb3J0X251bSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0yOTktXFx0ZW51bSBtbHg1X2liX2Nvbmdfbm9kZV90eXBlIG5vZGU7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jOjMwMDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmMtMzAxLVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jPTMyOT1zdGF0aWMgaW50IG1seDVfaWJfc2V0X2NjX3BhcmFtcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTMzNS1cXHRlbnVtIG1seDVfaWJfY29uZ19ub2RlX3R5cGUgbm9kZTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM6MzM2OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0zMzctXFx0dTMyIGF0dHJfbWFzayA9IDA7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM9NDM0PXZvaWQgbWx4NV9pYl9pbml0X2NvbmdfZGVidWdmcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTQzNi1cXHRzdHJ1Y3QgbWx4NV9pYl9kYmdfY2NfcGFyYW1zICpkYmdfY2NfcGFyYW1zO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYzo0Mzc6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTQzOC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM9Mjg4PW1seDVfaWJfYWxsb2NfaHdfcG9ydF9zdGF0cyhzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnRfbnVtKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0yOTUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYzoyOTY6c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3FfY291bnRlcnMoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0yOTctXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBtbHg1X2liX2NvdW50ZXJzICpjbnRzLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYz0zNTA9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3FfY291bnRlcnNfdnBvcnQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTM1Ny1cXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhxdWVyeV9xX2NvdW50ZXJfaW4pXSA9IHt9O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM6MzU4OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMzU5LVxcdF9fYmUzMiB2YWw7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jPTM4Nz1zdGF0aWMgaW50IGRvX2dldF9od19zdGF0cyhzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMzkyLVxcdGNvbnN0IHN0cnVjdCBtbHg1X2liX2NvdW50ZXJzICpjbnRzID0gZ2V0X2NvdW50ZXJzKGRldiwgcG9ydF9udW0pO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM6MzkzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMzk0LVxcdGludCByZXQsIG51bV9jb3VudGVycztcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmM9NjExPWludCBtbHg1X2liX3BvbGxfY3Eoc3RydWN0IGliX2NxICppYmNxLCBpbnQgbnVtX2VudHJpZXMsIHN0cnVjdCBpYl93YyAqd2MpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jLTYxNS1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoY3EtXFx1MDAzZWliY3EuZGV2aWNlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jOjYxNjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jLTYxNy1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYz02NDg9aW50IG1seDVfaWJfYXJtX2NxKHN0cnVjdCBpYl9jcSAqaWJjcSwgZW51bSBpYl9jcV9ub3RpZnlfZmxhZ3MgZmxhZ3MpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYy02NDkte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmM6NjUwOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gdG9fbWRldihpYmNxLVxcdTAwM2VkZXZpY2UpLVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjUxLVxcdHN0cnVjdCBtbHg1X2liX2NxICpjcSA9IHRvX21jcShpYmNxKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0xMDc9c3RydWN0IGRldnhfdW1lbSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjEwODpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldlxcdFxcdCptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0xMDktXFx0c3RydWN0IGliX3VtZW1cXHRcXHRcXHQqdW1lbTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0yMDA1PXN0YXRpYyBib29sIGlzX3ZhbGlkX2V2ZW50c19sZWdhY3koaW50IG51bV9ldmVudHMsIHUxNiAqZXZlbnRfdHlwZV9udW1fbGlzdCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yMDIzLSNkZWZpbmUgTUFYX1NVUFBfRVZFTlRfTlVNIDI1NVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoyMDI0OnN0YXRpYyBib29sIGlzX3ZhbGlkX2V2ZW50cyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yMDI1LVxcdFxcdFxcdCAgICBpbnQgbnVtX2V2ZW50cywgdTE2ICpldmVudF90eXBlX251bV9saXN0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTI0NTE9c3RhdGljIGludCBkZXZ4X3VtZW1fY2xlYW51cChzdHJ1Y3QgaWJfdW9iamVjdCAqdW9iamVjdCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yNDY3LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoyNDY4OnN0YXRpYyBib29sIGlzX3VuYWZmaWxpYXRlZF9ldmVudChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yNDY5LVxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBldmVudF90eXBlKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0xMj1zdGF0aWMgaW50IG1seDVfY21kX2FsbG9jX21lbWljKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgKmFkZHIsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTE0LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jOjE1OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBkbS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTYtXFx0dTY0IG51bV9tZW1pY19od19wYWdlcyA9IE1MWDVfQ0FQX0RFVl9NRU0oZGV2LCBtZW1pY19iYXJfc2l6ZSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9ODc9dm9pZCBtbHg1X2NtZF9kZWFsbG9jX21lbWljKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgYWRkcixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtODkte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6OTA6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGRtLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy05MS1cXHR1NjQgaHdfc3RhcnRfYWRkciA9IE1MWDVfQ0FQNjRfREVWX01FTShkZXYsIG1lbWljX2Jhcl9zdGFydF9hZGRyKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9MTE0PXZvaWQgbWx4NV9jbWRfZGVhbGxvY19tZW1pY19vcChzdHJ1Y3QgbWx4NV9kbSAqZG0sIHBoeXNfYWRkcl90IGFkZHIsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTExNy1cXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhtb2RpZnlfbWVtaWNfaW4pXSA9IHt9O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6MTE4OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBkbS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTE5LVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0xMjg9c3RhdGljIGludCBtbHg1X2NtZF9hbGxvY19tZW1pY19vcChzdHJ1Y3QgbWx4NV9kbSAqZG0sIHBoeXNfYWRkcl90IGFkZHIsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTEzMi1cXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhtb2RpZnlfbWVtaWNfaW4pXSA9IHt9O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6MTMzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBkbS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTM0LVxcdGludCBlcnI7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTM1Mj1zdGF0aWMgc3RydWN0IGliX2RtICpoYW5kbGVfYWxsb2NfZG1fc3dfaWNtKHN0cnVjdCBpYl91Y29udGV4dCAqY3R4LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0zNTYte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6MzU3OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSB0b19tZGV2KGN0eC1cXHUwMDNlZGV2aWNlKS1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTM1OC1cXHRlbnVtIG1seDVfc3dfaWNtX3R5cGUgaWNtX3R5cGU7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTQ3MD1zdGF0aWMgaW50IG1seDVfZG1faWNtX2RlYWxsb2Moc3RydWN0IG1seDVfaWJfdWNvbnRleHQgKmN0eCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtNDczLVxcdGVudW0gbWx4NV9zd19pY21fdHlwZSB0eXBlID0gZ2V0X2ljbV90eXBlKGRtLVxcdTAwM2ViYXNlLnR5cGUpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6NDc0OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSB0b19tZGV2KGRtLVxcdTAwM2ViYXNlLmliZG0uZGV2aWNlKS1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTQ3NS1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMTUte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzoxNjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IHRvX21kZXYoaWJkbWFoLVxcdTAwM2VkZXZpY2UpLVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0xNy1cXHRzdHJ1Y3QgbWx4NV9pYl9kbWFoICpkbWFoID0gdG9fbWRtYWgoaWJkbWFoKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYz0zOT1zdGF0aWMgaW50IG1seDVfaWJfZGVhbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNDItXFx0c3RydWN0IG1seDVfaWJfZG1haCAqZG1haCA9IHRvX21kbWFoKGliZG1haCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjQzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gdG9fbWRldihpYmRtYWgtXFx1MDAzZWRldmljZSktXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQ0LVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYz0xNDk9aW50IHBhcnNlX2Zsb3dfZmxvd19hY3Rpb24oc3RydWN0IG1seDVfaWJfZmxvd19hY3Rpb24gKm1hY3Rpb24sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4OC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jOjE4OTpzdGF0aWMgaW50IHBhcnNlX2Zsb3dfYXR0cihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE5MC1cXHRcXHRcXHQgICBzdHJ1Y3QgbWx4NV9mbG93X3NwZWMgKnNwZWMsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTU0Nz1zdGF0aWMgYm9vbCBmbG93X2lzX211bHRpY2FzdF9vbmx5KGNvbnN0IHN0cnVjdCBpYl9mbG93X2F0dHIgKmliX2F0dHIpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTU3Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jOjU3NzpzdGF0aWMgYm9vbCBpc192YWxpZF9ldGhlcnR5cGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy01NzgtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpYl9mbG93X2F0dHIgKmZsb3dfYXR0cixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtNjI1LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6NjI2OnN0YXRpYyBib29sIGlzX3ZhbGlkX2F0dHIoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy02MjctXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgaWJfZmxvd19hdHRyICpmbG93X2F0dHIpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTE4NzI9c3RhdGljIGludCBtbHg1X2liX2ZpbGxfdHJhbnNwb3J0X25zX2luZm8oc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4NzUtXFx0XFx0XFx0XFx0XFx0ICB1MTYgKnZwb3J0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTg3NjpcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICoqZnRfbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4NzctXFx0XFx0XFx0XFx0XFx0ICB1MzIgaWJfcG9ydCwgdTE2ICplc3dfb3duZXJfdmhjYV9pZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4Nzgte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTg3OTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZXN3X21kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy0xODgwLVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYz0xOTA4PV9nZXRfZmxvd190YWJsZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTE2IHVzZXJfcHJpb3JpdHksXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE5MTEte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTkxMjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZnRfbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE5MTMtXFx0c3RydWN0IG1seDVfZmxvd190YWJsZV9hdHRyIGZ0X2F0dHIgPSB7fTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jPTExPXN0YXRpYyBpbnRcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMjptbHg1X2liX3NldF92cG9ydF9yZXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMzpcXHRcXHQgICAgICBzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcmVwX2RldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xNC1cXHRcXHQgICAgICBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNDEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NDI6c3RhdGljIHZvaWQgbWx4NV9pYl9yZWdpc3Rlcl9wZWVyX3Zwb3J0X3JlcHMoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTQzLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjQ0OnN0YXRpYyB2b2lkIG1seDVfaWJfbnVtX3BvcnRzX3VwZGF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKm51bV9wb3J0cylcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy00NS17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NDY6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTQ3LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNTktXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NjA6c3RhdGljIGludCBtbHg1X2liX3NldF9vd25lcl90cmFuc3BvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmN1cl9vd25lcixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo2MTpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbmV3X293bmVyKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTYyLXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTg4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjg5OnN0YXRpYyB2b2lkIG1seDVfaWJfcmVsZWFzZV90cmFuc3BvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy05MC17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6OTE6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTkyLVxcdGludCBpLCByZXQ7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy05OS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMDA6c3RhdGljIGludCBtbHg1X2liX3Rha2VfdHJhbnNwb3J0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTAxLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMDI6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTEwMy1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MTE3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMTg6bWx4NV9pYl92cG9ydF9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTExOS17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTIwLVxcdHUzMiBudW1fcG9ydHMgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3RvdGFsX3Zwb3J0cyhkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEyMTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbGFnX21hc3RlciA9IGRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMjItXFx0Y29uc3Qgc3RydWN0IG1seDVfaWJfcHJvZmlsZSAqcHJvZmlsZTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMjM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTEyNC1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmliZGV2O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MjIxPW1seDVfaWJfdnBvcnRfcmVwX3VubG9hZChzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTIyMi17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MjIzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gbWx4NV9lc3dpdGNoX2dldF9jb3JlX2RldihyZXAtXFx1MDAzZWVzdyk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjI0LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gbWx4NV9pYl9yZXBfdG9fZGV2KHJlcCk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yNjEtXFx0XFx0aWYgKG1seDVfbGFnX2lzX3NoYXJlZF9mZGIobWRldikpIHtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoyNjI6XFx0XFx0XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yNjMtXFx0XFx0XFx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9Mjc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcF9vcHMgcmVwX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI4MS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoyODI6c3RhdGljIHZvaWQgbWx4NV9pYl9yZWdpc3Rlcl9wZWVyX3Zwb3J0X3JlcHMoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjgzLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoyODQ6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yODUtXFx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MzE5PXN0YXRpYyBpbnQgbWx4NXJfcmVwX3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMzIyLVxcdHN0cnVjdCBtbHg1X2FkZXYgKmlkZXYgPSBjb250YWluZXJfb2YoYWRldiwgc3RydWN0IG1seDVfYWRldiwgYWRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MzIzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gaWRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMjQtXFx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MzMxPXN0YXRpYyB2b2lkIG1seDVyX3JlcF9yZW1vdmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMzMtXFx0c3RydWN0IG1seDVfYWRldiAqaWRldiA9IGNvbnRhaW5lcl9vZihhZGV2LCBzdHJ1Y3QgbWx4NV9hZGV2LCBhZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzozMzQ6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBpZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTMzNS1cXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9NTA9aW50IG1seDVfaWJfZ2V0X3ZmX2NvbmZpZyhzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2ZiwgdTMyIHBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtNTMtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjU0OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy01NS1cXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqcmVwO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTkyPWludCBtbHg1X2liX3NldF92Zl9saW5rX3N0YXRlKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTk1LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzo5NjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtOTctXFx0c3RydWN0IG1seDVfaGNhX3Zwb3J0X2NvbnRleHQgKmluO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTEyMD1pbnQgbWx4NV9pYl9nZXRfdmZfc3RhdHMoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCBpbnQgdmYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTIzLVxcdGludCBvdXRfc3ogPSBNTFg1X1NUX1NaX0JZVEVTKHF1ZXJ5X3Zwb3J0X2NvdW50ZXJfb3V0KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM6MTI0OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xMjUtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXY7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MTUxPXN0YXRpYyBpbnQgc2V0X3ZmX25vZGVfZ3VpZChzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2ZiwgdTMyIHBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTU0LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzoxNTU6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTE1Ni1cXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqaW47XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MTc1PXN0YXRpYyBpbnQgc2V0X3ZmX3BvcnRfZ3VpZChzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2ZiwgdTMyIHBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTc4LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzoxNzk6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTE4MC1cXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqaW47XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MjEwPWludCBtbHg1X2liX2dldF92Zl9ndWlkKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0yMTQtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjIxNTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMjE2LVxcdHN0cnVjdCBtbHg1X3ZmX2NvbnRleHQgKnZmc19jdHggPSBtZGV2LVxcdTAwM2Vwcml2LnNyaW92LnZmc19jdHg7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYz0xNTA9c3RhdGljIHZvaWQgcG1hX2NudF9leHRfYXNzaWduX3BwY250KHN0cnVjdCBpYl9wbWFfcG9ydGNvdW50ZXJzX2V4dCAqY250X2V4dCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jLTE4MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYzoxODE6c3RhdGljIGludCBxdWVyeV9pYl9wcGNudChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1OCBwb3J0X251bSwgdTggcGxhbmVfbnVtLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jLTE4Mi1cXHRcXHRcXHQgIHZvaWQgKm91dCwgc2l6ZV90IHN6LCBib29sIGV4dClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jPTIwOT1zdGF0aWMgaW50IHByb2Nlc3NfcG1hX2NtZChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMjExLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYzoyMTI6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMjEzLVxcdGJvb2wgbmF0aXZlX3BvcnQgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM9NTk3PWludCBtbHg1X3F1ZXJ5X21hZF9pZmNfcG9ydChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy02MDAtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYzo2MDE6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtNjAyLVxcdHN0cnVjdCBpYl9zbXAgKmluX21hZDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0yMDU9c3RhdGljIGludCBtbHg1X25ldGRldl9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjExLVxcdHN0cnVjdCBuZXRfZGV2aWNlICppYl9uZGV2ID0gTlVMTDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjEyOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yMTMtXFx0c3RydWN0IG1seDVfaWJfZGV2ICppYmRldjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMTEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjMxMjpzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWx4NV9pYl9nZXRfbmF0aXZlX3BvcnRfbWRldihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmliZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgdTMyIGliX3BvcnRfbnVtLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMxNy1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIGliX3BvcnRfbnVtKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzE4OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gTlVMTDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzE5LVxcdHN0cnVjdCBtbHg1X2liX211bHRpcG9ydF9pbmZvICptcGk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NTM2PXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9wb3J0X3JvY2Uoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCB1MzIgcG9ydF9udW0sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTQwLVxcdHUzMiBvdXRbTUxYNV9TVF9TWl9EVyhwdHlzX3JlZyldID0gezB9O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1NDE6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTU0Mi1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgKnVwcGVyO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTc3Mj1zdGF0aWMgaW50IG1seDVfcXVlcnlfc3lzdGVtX2ltYWdlX2d1aWQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNzc1LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjc3NjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNzc3LVxcdHU2NCB0bXA7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9ODA0PXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9tYXhfcGtleXMoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODA3LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjgwODpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODA5LVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTg3NT1zdGF0aWMgaW50IG1seDVfcXVlcnlfbm9kZV9kZXNjKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBjaGFyICpub2RlX2Rlc2MpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODg4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo4ODk6c3RhdGljIHZvaWQgZmlsbF9lc3dfbWdyX3JlZ19jMChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODkwLVxcdFxcdFxcdFxcdHN0cnVjdCBtbHg1X2liX3F1ZXJ5X2RldmljZV9yZXNwICpyZXNwKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTkyOT1zdGF0aWMgdTMyIG1seDVfaWJfY2FsY19tYXhfcXBfd3Ioc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTkzMC17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjkzMTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtOTMyLVxcdHUzMiBtYXhfd3FlX2JiX3VuaXRzID0gMSBcXHUwMDNjXFx1MDAzYyBNTFg1X0NBUF9HRU4obWRldiwgbG9nX21heF9xcF9zeik7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9OTQ1PXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9kZXZpY2Uoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtOTUwLVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjk1MTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtOTUyLVxcdGludCBlcnIgPSAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE0NjI9c3RhdGljIGludCBtbHg1X3F1ZXJ5X2hjYV9wb3J0KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNDY1LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE0NjY6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE0NjctXFx0c3RydWN0IG1seDVfaGNhX3Zwb3J0X2NvbnRleHQgKnJlcDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNTQyPWludCBtbHg1X2liX3F1ZXJ5X3BvcnQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE1NjYtXFx0XFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTU2NzpcXHRcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTU2OC1cXHRcXHRib29sIHB1dF9tZGV2ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNjAzPXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fcG9ydChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNjI2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNjI3OnN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fdnBvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2MjgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHU4IG9wX21vZCwgdTE2IHZwb3J0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE2NTA9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3BvcnRfc3BlZWRfZnJvbV9ib25kKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2NTIte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNjUzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNjU0LVxcdHUzMiBib25kX3NwZWVkO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE2Nzk9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3BvcnRfc3BlZWRfcmVwKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTY4Mi1cXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNjgzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNjg0LVxcdHUxNiBvcF9tb2Q7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTcyNj1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfZ2lkKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydCwgaW50IGluZGV4LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE3MjktXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTczMDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTczMS1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNzQ1PXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9oY2FfbmljX3BrZXkoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE3NDgtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTc0OTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTc1MC1cXHRib29sIHB1dF9tZGV2ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xODE2PXN0YXRpYyBpbnQgc2V0X3BvcnRfY2Fwc19hdG9taWMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHUzMiBwb3J0X251bSwgdTMyIG1hc2ssXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTgxOS1cXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCBjdHggPSB7fTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTgyMDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTgyMS1cXHR1MzIgbWRldl9wb3J0X251bTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xOTczPXN0YXRpYyB2b2lkIGRlYWxsb2NhdGVfdWFycyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xOTg2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxOTg3OnN0YXRpYyBpbnQgbWx4NV9pYl9lbmFibGVfbGJfbXAoc3RydWN0IG1seDVfY29yZV9kZXYgKm1hc3RlcixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTk4ODpcXHRcXHRcXHRcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqc2xhdmUsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE5ODktXFx0XFx0XFx0XFx0c3RydWN0IG1seDVfaWJfbGJfc3RhdGUgKmxiX3N0YXRlKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTIwMDgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjIwMDk6c3RhdGljIHZvaWQgbWx4NV9pYl9kaXNhYmxlX2xiX21wKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptYXN0ZXIsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjIwMTA6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqc2xhdmUsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTIwMTEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbWx4NV9pYl9sYl9zdGF0ZSAqbGJfc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzI1MT1zdGF0aWMgdm9pZCBtbHg1X2liX3N0YWdlX3N5c19lcnJvcl9ub3RpZmllcl9jbGVhbnVwKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMyNTUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjMyNTY6c3RhdGljIGludCBtbHg1X2liX2dldF9wbGFuZV9udW0oc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4ICpudW1fcGxhbmUpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMyNTcte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTM0Nzc9bWx4NV9pYl9jcmVhdGVfZGF0YV9kaXJlY3RfcmVzb3VyY2VzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM0NzktXFx0aW50IGlubGVuID0gTUxYNV9TVF9TWl9CWVRFUyhjcmVhdGVfbWtleV9pbik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjM0ODA6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM0ODEtXFx0Ym9vbCByb19zdXBwID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzY1Nz1zdGF0aWMgaW50IGxhZ19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM2NjAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGxhZ19ldmVudHMpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozNjYxOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNjYyLVxcdHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlaWJfZGV2O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTM3MTg9c3RhdGljIGludCBtbHg1X2V0aF9sYWdfaW5pdChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNzIwLVxcdHN0cnVjdCBtbHg1X2Zsb3dfdGFibGVfYXR0ciBmdF9hdHRyID0ge307XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjM3MjE6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM3MjItXFx0c3RydWN0IG1seDVfZmxvd19uYW1lc3BhY2UgKm5zO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTM3NTE9c3RhdGljIHZvaWQgbWx4NV9ldGhfbGFnX2NsZWFudXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM3NTIte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDowNS40MTMyMjk2MjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzI0MjcyNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbWx4NSBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgTWVsbGFub3ggZHJpdmVyIGZpbGVzIOKAkyBgZHJpdmVycy9md2N0bC9tbHg1L21haW4uY2AsIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuY2AsIGFuZCBzbyBvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoZXJlIHNvbWUga2luZCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gaGVyZT9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGNvZGUgY291bGQgYmUgdGVzdGVkIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZS4gSSdsbCB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY2AgdG8gc2VlIGlmIHRoZXJlJ3MgYSB0ZXN0IGRyaXZlciBvciBldmVuIGEgbW9jayBpbXBsZW1lbnRhdGlvbi5cblxuTm9wZSwgZnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBtbHg1IGRyaXZlciBpcyBjbGVhcmx5IGEgcGh5c2ljYWwgZGV2aWNlIGRyaXZlci4gSXQncyBtZWFudCB0byBkaXJlY3RseSBpbnRlcmFjdCB3aXRoIGhhcmR3YXJlIHRocm91Z2ggUENJLiBXaXRob3V0IHRoZSBoYXJkd2FyZSwgaXQgd29uJ3QgZXZlbiBpbml0aWFsaXplLiBUaGF0IHJ1bGVzIG91dCBhIHNpbXBsZSBzZXR1cC5cblxuTm93IEkgcmVtZW1iZXIgU3l6a2FsbGVyIGhhcyBzb21lIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBmb3IgZnV6emluZyDigJMgVVNCIGdhZGdldCBmdXp6aW5nLCBtYWM4MDIxMV9od3NpbSwgdmhjaSwgdGhhdCBzb3J0IG9mIHRoaW5nLiBCdXQgd2hhdCBhYm91dCBtbHg1PyBEb2VzIFN5emthbGxlciBoYXZlIGEgY29tcGFyYWJsZSBzZXR1cCBmb3IgZnV6emluZyB0aGlzIHNwZWNpZmljIGRyaXZlcj8gTm8sIGl0J3Mgbm90IGVtdWxhdGluZyBtbHg1IFBDSSBkZXZpY2VzLiBXZeKAmXJlIGdvaW5nIHRvIGhhdmUgdG8gZG8gc29tZXRoaW5nIGVsc2UuXG5cbk9rYXksIGxldCdzIHN0ZXAgYmFjay4gV2hhdCBpZiB0aGUgdGFyZ2V0IG9mIHRoZSBwYXRjaCBpcyBidXJpZWQgd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY2Agb3IgYGVuX21haW4uY2A/IElzIHRoYXQgY29kZSBldmVuIHJlYWNoYWJsZSB3aXRob3V0IGhhcmR3YXJlPyBUaGlzIGlzIGdvaW5nIHRvIHJlcXVpcmUgc29tZSBzbGV1dGhpbmcuXG5cbkxldCdzIGNoZWNrIHdoZXJlIGBtbHg1ZV9wcml2X2luaXRgIGlzIGNhbGxlZC4gSXQgbG9va3MgbGlrZSBpdOKAmXMgY2FsbGVkIHdpdGhpbiBgbWx4NWVfY3JlYXRlX25ldGRldmAsIGBtbHg1ZV9uZXRkZXZfaW5pdF9wcm9maWxlYCwgYW5kIGBtbHg1X3JkbWFfc2V0dXBfcm5gLiBBbGwgb2YgdGhlc2UgcmVxdWlyZSBhIGBtbHg1X2NvcmVfZGV2YCBzdHJ1Y3R1cmUuIE9rYXksIHNvIHRoYXQgYG1seDVfY29yZV9kZXZgIGlzIGNyZWF0ZWQgd2hlbiB0aGUgUENJIGRldmljZSBpcyBwcm9iZWQuIEFuZCBzaW5jZSB3ZSBkb27igJl0IGhhdmUgbWx4NSBoYXJkd2FyZSB3aXRoaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQsIHRoYXQgZW50aXJlIGNvZGUgcGF0aCBpcyBnb2luZyB0byBiZSB1bnJlYWNoYWJsZS5cblxuV2FpdCwgbGV0IG1lIHRoaW5rLiBJcyB0aGVyZSBhIHZpcnR1YWxpemVkIG9yIHNpbXVsYXRlZCBtbHg1IGRldmljZSAqc29tZXdoZXJlKj8gVGltZSB0byBzZWFyY2ggdGhlIGNvZGViYXNlIGZvciBgbWx4NV9jb3JlX2RldmAgY3JlYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDk1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjE1LjEzNzUwNTE5N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTUxNDE0NjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFsbG9jX2V0aGVyZGV2LiptbHg1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NjQ5Mz1tbHg1ZV9jcmVhdGVfbmV0ZGV2KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBjb25zdCBzdHJ1Y3QgbWx4NWVfcHJvZmlsZSAqcHJvZmlsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjUwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjY1MDI6XFx0bmV0ZGV2ID0gYWxsb2NfZXRoZXJkZXZfbXFzKHNpemVvZihzdHJ1Y3QgbWx4NWVfcHJpdiksIHR4cXMsIHJ4cXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjUwMy1cXHRpZiAoIW5ldGRldikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDoxOC4wODg5MjQ4N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDU1NDM5ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGlzc3VlOlxuXG4qKkRlbHZpbmcgaW50byB0aGUgTUxYNSBEcml2ZXIgUHJvYmUqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gQ29uc2lkZXJpbmcgdGhpcyBpcyBsaWtlbHkgYSBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBpc3N1ZSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgUENJIHByb2JlIGZ1bmN0aW9ucy4gTGV0J3Mgc2VlLi4uIHRoZSBgbWx4NV9wY2lfcHJvYmVgIGZ1bmN0aW9uIChvciBhIHNpbWlsYXIgb25lLCBkZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljIE1lbGxhbm94IGRyaXZlciB2ZXJzaW9uIGFuZCBhcmNoaXRlY3R1cmUpIGlzIHdoZXJlIHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIFBDSSBidXMgdG8gaWRlbnRpZnkgYW5kIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlLiBUaGF04oCZcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB0aGVyZSBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgcmV0dXJuIGNvZGVzLCBlcnJvciBoYW5kbGluZywgYW5kIHJlc291cmNlIGFsbG9jYXRpb24gd2l0aGluIHRoYXQgZnVuY3Rpb24gdG8gcGlucG9pbnQgdGhlIGV4YWN0IGZhaWx1cmUuIEl04oCZcyBsaWtlbHkgYSByZXNvdXJjZSBpc3N1ZSwgYSBmaXJtd2FyZSB2ZXJzaW9uIG1pc21hdGNoLCBvciBwb3RlbnRpYWxseSBhIGNvbmZpZ3VyYXRpb24gcHJvYmxlbS4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTcxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MjA6MjEuOTM0NDcyODY0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzY2NDUxNTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kcml2ZXIuKm1seDVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGF0YV9kaXJlY3QuYz0yMDE9c3RhdGljIHZvaWQgbWx4NV9kYXRhX2RpcmVjdF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kYXRhX2RpcmVjdC5jLTIxMC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kYXRhX2RpcmVjdC5jOjIxMTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9kYXRhX2RpcmVjdF9kcml2ZXIgPSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGF0YV9kaXJlY3QuYy0yMTItXFx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjI2NT1pbnQgbWx4NV9yZWNvdmVyX2RldmljZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjI3NjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9jb3JlX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyNzctXFx0Lm5hbWUgICAgICAgICAgID0gS0JVSUxEX01PRE5BTUUsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jPTE0NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgbWx4NXZmX2Vycl9oYW5kbGVycyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTQ0OC1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjE0NDk6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1seDV2Zl9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTQ1MC1cXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xNDU3LVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6MTQ1ODptb2R1bGVfcGNpX2RyaXZlcihtbHg1dmZfcGNpX2RyaXZlcik7XFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xNDU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDoyNC43MDA5MzM4NTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg5MTA5MzE2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGUgcHJvbXB0IGlzIGFza2luZyBhYm91dCB3aGV0aGVyIHRoaXMgcGF0Y2ggaXMgd29ydGggZnV6emluZywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBwcmV0dHkgY2xlYXIgY3V0LiBUaGlzIGNvbmZpcm1zIGl0IGlzIGEgUENJIGRyaXZlci4gVGhlIGNvZGUgY2hhbmdlcyBhcmUgYWxsIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NWAg4oCTIHNwZWNpZmljYWxseSB3aXRoaW4gYGVuX21haW4uY2AsIGBlbl9zdGF0cy5jYCwgYGVuLmhgLCBhbmQgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC4gSXQgbG9va3MgbGlrZSB0aGV5IGFyZSBhZGRpbmcgYSBidWZmZXIgdG8gYSBzdHJ1Y3QuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgZ29pbmcgdG8gYmUgYSBub24tc3RhcnRlciBmb3IgZnV6emluZywgd2hpY2ggbWVhbnMgdGhlIFdvcnRoRnV6emluZyBwYXJhbWV0ZXIgc2hvdWxkIGJlIGZhbHNlLlxuXG5MZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoIG1ldGhvZGljYWxseS4gSXMgdGhlcmUgKmFueSogc29mdHdhcmUgZW11bGF0aW9uIG9mIGFuIG1seDUgZGV2aWNlIGluIHRoZSBrZXJuZWw/IEkgcmVtZW1iZXIgdGhhdCB0aGVyZSdzIG5vdC4gTm8sIHRoZXJlJ3Mgbm90aGluZyBJIGNhbiB0aGluayBvZiBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLiBXYWl0LCB3aGF0IGFib3V0IGBuZXRkZXZzaW1gPyBEb2VzICp0aGF0KiBlbXVsYXRlIG1seDU/IE5vLCB0aGF0IGlzIHRoZXJlIHRvIGVtdWxhdGUgYSBnZW5lcmljIG5ldHdvcmsgZGV2aWNlLCBmb3IgdGVzdGluZyBkZXZsaW5rIGFuZCB0YyBvZmZsb2Fkcy4gV2hhdCBhYm91dCBgdmRwYWA/IGB2ZHBhX3NpbWAgc3BlY2lmaWNhbGx5IGVtdWxhdGVzIHZpcnRpbywgbm90IG1seDUuXG5cblNvLCByZWFsaXN0aWNhbGx5LCBtbHg1IGNvZGUgcGF0aHMgYXJlICpjb21wbGV0ZWx5KiBpbmFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgd2l0aG91dCBoYXJkd2FyZSBwYXNzdGhyb3VnaC4gVGhlIHByb21wdCAqZXhwbGljaXRseSogc3RhdGVzIHRoYXQgd2Ugc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY2hhbmdlcyBpbnZvbHZlIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBUaGUgcHJvbXB0IHNwZWNpZmllcyB0aGlzIGZvciB0aGluZ3Mgc3VjaCBhcyBVU0IgZ2FkZ2V0cyBhbmQgbWFjODAyMTFfaHdzaW0uXG5cblNpbmNlIHRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBtbHg1IGRyaXZlciBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUsIHRoZSBjaGFuZ2VzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluICpvdXIqIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cbk5vdywgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gSXMgdGhhdCBgZXRodG9vbF9mZWNfaGlzdGAgc3RydWN0dXJlICpvbmx5KiB1c2VkIHdpdGhpbiB0aGUgbWx4NSBkcml2ZXI/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGluY2x1ZGUgZmlsZSBgaW5jbHVkZS9saW51eC9ldGh0b29sLmhgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gT2theSwgSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LiBUaGUgV29ydGhGdXp6aW5nIHBhcmFtZXRlciBzaG91bGQgYmUgZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTE1LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjMxLjU5MjAyOTg5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDk1OTQ0ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV0aHRvb2xfZmVjX2hpc3RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3N0YXRpc3RpY3MucnN0PTIzNz10aGVtIHdpdGggMC5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zdGF0aXN0aWNzLnJzdC0yNDEtLSBgYHN0cnVjdCBldGh0b29sX2V0aF9waHlfc3RhdHNgYFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zdGF0aXN0aWNzLnJzdDoyNDI6LSBgYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YGBcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc3RhdGlzdGljcy5yc3QtMjQzLS0gYGBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHNgYFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYz0zMjA4PXN0YXRpYyBpbnQgYm54dF9nZXRfZmVjcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzI1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jOjMyNTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlIGJueHRfZmVjX3Jhbmdlc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzI1NS1cXHR7IDAsIDB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYz0zMjc0PXN0YXRpYyB2b2lkIGJueHRfaHdybV9wb3J0X3BoeV9mZHJzdGF0KHN0cnVjdCBibnh0ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jOjMyNzU6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzI3Ni17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYzozMjc3OlxcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3ZhbHVlICp2YWx1ZXMgPSBoaXN0LVxcdTAwM2V2YWx1ZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYy0zMjc4LVxcdHN0cnVjdCBod3JtX3BvcnRfcGh5X2ZkcnN0YXRfb3V0cHV0ICpyZXNwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYz0zMzA0PXN0YXRpYyB2b2lkIGJueHRfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzMwNS1cXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYzozMzA2OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jLTMzMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmM9OTMyPXN0YXRpYyB2b2lkIGZ1bl9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmMtOTMzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqc3RhdHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmM6OTM0OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfZXRodG9vbC5jLTkzNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2V0aHRvb2wuYz0xNjY0PXN0YXRpYyB2b2lkIGhuczNfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZXRodG9vbC5jLTE2NjUtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZXRodG9vbC5jOjE2NjY6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZXRodG9vbC5jLTE2Njcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM9NDYzNj1zdGF0aWMgdm9pZCBpY2VfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ2MzctXFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM6NDYzODpcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00NjM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuYz0xMjk3PXN0YXRpYyB2b2lkIG90eDJfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuYy0xMjk4LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgKmZlY19zdGF0cyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9ldGh0b29sLmM6MTI5OTpcXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jLTEzMDAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuYz0xOTI2PXN0YXRpYyB2b2lkIG1seDVlX2dldF9mZWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jLTE5MjctXFx0XFx0XFx0XFx0c3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuYzoxOTI4OlxcdFxcdFxcdFxcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmMtMTkyOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYz0xNTUyPWZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jOjE1NTM6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqcmFuZ2VzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE1NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmM9MTU4NT1zdGF0aWMgdm9pZCBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfc3RhdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMtMTU4Ni1cXHRcXHRcXHRcXHRcXHR1OCBudW1fb2ZfYmlucyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYzoxNTg3OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE1ODgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmM9MTYxMT1zdGF0aWMgdm9pZCBmZWNfc2V0X2hpc3RvZ3JhbXNfc3RhdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jOjE2MTI6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYy0xNjEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jPTE2MzQ9dm9pZCBtbHg1ZV9zdGF0c19mZWNfZ2V0KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE2MzUtXFx0XFx0XFx0IHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jOjE2MzY6XFx0XFx0XFx0IHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE2Mzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmg9MTE5PXZvaWQgbWx4NWVfc3RhdHNfZmVjX2dldChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuaC0xMjAtXFx0XFx0XFx0IHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5oOjEyMTpcXHRcXHRcXHQgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5oLTEyMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jPTE4NjI9ZmJuaWNfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jLTE4NjMtXFx0XFx0ICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jOjE4NjQ6XFx0XFx0ICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jLTE4NjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2V0aHRvb2wuYz0yMTk9c3RhdGljIHZvaWQgZWZ4X2V0aHRvb2xfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2RldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZXRodG9vbC5jLTIyMC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgKmZlY19zdGF0cyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZXRodG9vbC5jOjIyMTpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZXRodG9vbC5jLTIyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvc2llbmEvZXRodG9vbC5jPTIxOT1zdGF0aWMgdm9pZCBlZnhfZXRodG9vbF9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9zaWVuYS9ldGh0b29sLmMtMjIwLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9zaWVuYS9ldGh0b29sLmM6MjIxOlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9zaWVuYS9ldGh0b29sLmMtMjIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM9MTUyPW5zaW1fc2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2ZlY3BhcmFtICpmZWNwYXJhbSlcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmMtMTY3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM6MTY4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSBuZXRkZXZzaW1fZmVjX3Jhbmdlc1tdID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmMtMTY5LVxcdHsgMCwgMH0sXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jPTE3Nj1uc2ltX2dldF9mZWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYzoxNzc6XFx0XFx0ICAgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy0xNzgte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM6MTc5OlxcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3ZhbHVlICp2YWx1ZXMgPSBoaXN0LVxcdTAwM2V2YWx1ZXM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy0xODAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaD01MzM9c3RydWN0IGV0aHRvb2xfcGF1c2Vfc3RhdHMge1xcbi0tXFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTQ4LS8qKlxcbmluY2x1ZGUvbGludXgvZXRodG9vbC5oOjU0OTogKiBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAtIGVycm9yIGJpdHMgcmFuZ2UgZm9yIEZFQyBoaXN0b2dyYW1cXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC01NTAtICogc3RhdGlzdGljc1xcbi0tXFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTUzLSAqL1xcbmluY2x1ZGUvbGludXgvZXRodG9vbC5oOjU1NDpzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSB7XFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTU1LVxcdHUxNiBsb3c7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC01NTgtXFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmg6NTU5OnN0cnVjdCBldGh0b29sX2ZlY19oaXN0IHtcXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDo1NjA6XFx0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfdmFsdWUge1xcbmluY2x1ZGUvbGludXgvZXRodG9vbC5oLTU2MS1cXHRcXHR1NjQgc3VtO1xcbi0tXFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTYzLVxcdH0gdmFsdWVzW0VUSFRPT0xfRkVDX0hJU1RfTUFYXTtcXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDo1NjQ6XFx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKnJhbmdlcztcXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDo1NjU6XFx0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgcmFuZ2VzX2J1ZltFVEhUT09MX0ZFQ19ISVNUX01BWF07XFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTY2LX07XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaD0xMjAwPXN0cnVjdCBldGh0b29sX29wcyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC0xMzIwLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgKmZlY19zdGF0cyxcXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDoxMzIxOlxcdFxcdFxcdFxcdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdCk7XFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtMTMyMi1cXHRpbnRcXHQoKmdldF9mZWNwYXJhbSkoc3RydWN0IG5ldF9kZXZpY2UgKixcXG4tLVxcbm5ldC9ldGh0b29sL2ZlYy5jPTExPXN0cnVjdCBmZWNfcmVwbHlfZGF0YSB7XFxuLS1cXG5uZXQvZXRodG9vbC9mZWMuYy0xOS1cXHR9IGNvcnIsIHVuY29yciwgY29ycl9iaXRzO1xcbm5ldC9ldGh0b29sL2ZlYy5jOjIwOlxcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0IGZlY19zdGF0X2hpc3Q7XFxubmV0L2V0aHRvb2wvZmVjLmMtMjEtfTtcXG4tLVxcbm5ldC9ldGh0b29sL2ZlYy5jPTE4MD1zdGF0aWMgaW50IGZlY19wdXRfaGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9ldGh0b29sL2ZlYy5jOjE4MTpcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcXG5uZXQvZXRodG9vbC9mZWMuYy0xODIte1xcbm5ldC9ldGh0b29sL2ZlYy5jOjE4MzpcXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqcmFuZ2VzID0gaGlzdC1cXHUwMDNlcmFuZ2VzO1xcbm5ldC9ldGh0b29sL2ZlYy5jOjE4NDpcXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF92YWx1ZSAqdmFsdWVzID0gaGlzdC1cXHUwMDNldmFsdWVzO1xcbm5ldC9ldGh0b29sL2ZlYy5jLTE4NS1cXHRzdHJ1Y3QgbmxhdHRyICpuZXN0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDozNC4wODc5Nzk3OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDg0NzY2MTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgYHJhbmdlc19idWZgIHRvIGBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdGAgaW4gYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgYSBzdHJ1Y3QgY2hhbmdlLi4uIGxldCdzIHNlZSB3aGVyZSB0aGlzIGlzIHVzZWQuXCIgSSBzZWUgaXQncyB1c2VkIGluIGBuZXQvZXRodG9vbC9mZWMuY2AgYW5kIGEgZmV3IGRyaXZlcnMuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBhbHNvIHR3ZWFrcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmNgIGFuZCBgZW5fbWFpbi5jYCB0byAqdXNlKiB0aGlzIG5ldyBidWZmZXIgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGl0IG9uIHRoZSBmbHkuIEhvbGQgb24gYSBzZWNvbmQsIHRoZSByZWFsIGxvZ2ljIGNoYW5nZSBpcyAqd2l0aGluKiB0aGUgYG1seDVgIGRyaXZlciwgd2hpY2ggaXMgaGFyZHdhcmUtc3BlY2lmaWMgYW5kIHRodXMsIHVuZm9ydHVuYXRlbHksIHVucmVhY2hhYmxlIGluIG15IGZ1enppbmcgc2V0dXAuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSBubyBvdGhlciBkcml2ZXJzIGFyZSBtb2RpZmllZC4gTm9wZSwganVzdCBgbWx4NWAuIFNvLCBlZmZlY3RpdmVseSwgdGhlIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgZW50aXJlbHkgbG9jYWxpemVkIHRvIHRoZSBgbWx4NWAgZHJpdmVyLiBTaW5jZSB0aGF0IGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBoYXJkd2FyZSBhbmQgSSdtIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGl0J3MgYSBkZWFkIGVuZCBmb3IgbXkgZnV6emluZyBlZmZvcnRzLiBJdCBkb2Vzbid0IHNlZW0gbGlrZSB0aGUgcGF0Y2ggY2FuIGNhdXNlIGFueSBwcm9ibGVtcyBmb3IgbXkgdGVzdHMuXG5cbkJ1dCwgYmVpbmcgdGhlIHBhcmFub2lkIGV4cGVydCB0aGF0IEkgYW0sIEknbGwgZG91YmxlLWNoZWNrIHRoaXM6IHRoZSBjaGFuZ2UgaW4gYGV0aHRvb2wuaGAgaXMganVzdCBhIHN0cnVjdCBkZWZpbml0aW9uIGNoYW5nZSwgYnV0IGl0IGluY3JlYXNlcyB0aGUgc3RydWN0IHNpemUuIExldCdzIG1ha2Ugc3VyZSB0aGF0J3Mgbm90IGdvaW5nIHRvIGJpdGUgdXMgZG93biB0aGUgbGluZS4gVGhlIHNpemUgaW5jcmVhc2VzIGJ5IGBFVEhUT09MX0ZFQ19ISVNUX01BWCAqIHNpemVvZihzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSlgIHdoaWNoIGlzIDggKiA0ID0gMzIgYnl0ZXMuIE5vdywgd2hlcmUgaXMgYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YCBlbWJlZGRlZD8gQWgsIGl0J3MgZW1iZWRkZWQgd2l0aGluIGBzdHJ1Y3QgZmVjX3JlcGx5X2RhdGFgIGluIGBuZXQvZXRodG9vbC9mZWMuY2AuIFRoZSBxdWVzdGlvbiBub3cgaXMsIGlzIGBzdHJ1Y3QgZmVjX3JlcGx5X2RhdGFgIGFsbG9jYXRlZCBzdGF0aWNhbGx5IG9yIGR5bmFtaWNhbGx5LCBlaXRoZXIgb24gc3RhY2sgb3IgaGVhcD8gTGV0J3MgdGFrZSBhIGxvb2sgYXQgYG5ldC9ldGh0b29sL2ZlYy5jYCBmb3IgYWxsb2NhdGlvbiBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQ2OCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDo0Mi41NzI3NDk2NTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzgzMzk1NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmVjX3JlcGx5X2RhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2V0aHRvb2wvZmVjLmM9Nz1zdHJ1Y3QgZmVjX3JlcV9pbmZvIHtcXG4tLVxcbm5ldC9ldGh0b29sL2ZlYy5jLTEwLVxcbm5ldC9ldGh0b29sL2ZlYy5jOjExOnN0cnVjdCBmZWNfcmVwbHlfZGF0YSB7XFxubmV0L2V0aHRvb2wvZmVjLmMtMTItXFx0c3RydWN0IGV0aG5sX3JlcGx5X2RhdGFcXHRcXHRiYXNlO1xcbi0tXFxubmV0L2V0aHRvb2wvZmVjLmMtMjMtI2RlZmluZSBGRUNfUkVQREFUQShfX3JlcGx5X2Jhc2UpIFxcXFxcXG5uZXQvZXRodG9vbC9mZWMuYzoyNDpcXHRjb250YWluZXJfb2YoX19yZXBseV9iYXNlLCBzdHJ1Y3QgZmVjX3JlcGx5X2RhdGEsIGJhc2UpXFxubmV0L2V0aHRvb2wvZmVjLmMtMjUtXFxuLS1cXG5uZXQvZXRodG9vbC9mZWMuYz05ND1zdGF0aWMgaW50IGZlY19wcmVwYXJlX2RhdGEoY29uc3Qgc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG4tLVxcbm5ldC9ldGh0b29sL2ZlYy5jLTk4LVxcdF9fRVRIVE9PTF9ERUNMQVJFX0xJTktfTU9ERV9NQVNLKGFjdGl2ZV9mZWNfbW9kZXMpID0ge307XFxubmV0L2V0aHRvb2wvZmVjLmM6OTk6XFx0c3RydWN0IGZlY19yZXBseV9kYXRhICpkYXRhID0gRkVDX1JFUERBVEEocmVwbHlfYmFzZSk7XFxubmV0L2V0aHRvb2wvZmVjLmMtMTAwLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSByZXBseV9iYXNlLVxcdTAwM2VkZXY7XFxuLS1cXG5uZXQvZXRodG9vbC9mZWMuYz0xNDY9c3RhdGljIGludCBmZWNfcmVwbHlfc2l6ZShjb25zdCBzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxcbi0tXFxubmV0L2V0aHRvb2wvZmVjLmMtMTQ5LVxcdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVxcdTAwM2VmbGFncyBcXHUwMDI2IEVUSFRPT0xfRkxBR19DT01QQUNUX0JJVFNFVFM7XFxubmV0L2V0aHRvb2wvZmVjLmM6MTUwOlxcdGNvbnN0IHN0cnVjdCBmZWNfcmVwbHlfZGF0YSAqZGF0YSA9IEZFQ19SRVBEQVRBKHJlcGx5X2Jhc2UpO1xcbm5ldC9ldGh0b29sL2ZlYy5jLTE1MS1cXHRpbnQgbGVuID0gMDtcXG4tLVxcbm5ldC9ldGh0b29sL2ZlYy5jPTE4MD1zdGF0aWMgaW50IGZlY19wdXRfaGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2V0aHRvb2wvZmVjLmMtMjM0LVxcbm5ldC9ldGh0b29sL2ZlYy5jOjIzNTpzdGF0aWMgaW50IGZlY19wdXRfc3RhdHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IGZlY19yZXBseV9kYXRhICpkYXRhKVxcbm5ldC9ldGh0b29sL2ZlYy5jLTIzNi17XFxuLS1cXG5uZXQvZXRodG9vbC9mZWMuYz0yNjU9c3RhdGljIGludCBmZWNfZmlsbF9yZXBseShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2V0aHRvb2wvZmVjLmMtMjY5LVxcdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVxcdTAwM2VmbGFncyBcXHUwMDI2IEVUSFRPT0xfRkxBR19DT01QQUNUX0JJVFNFVFM7XFxubmV0L2V0aHRvb2wvZmVjLmM6MjcwOlxcdGNvbnN0IHN0cnVjdCBmZWNfcmVwbHlfZGF0YSAqZGF0YSA9IEZFQ19SRVBEQVRBKHJlcGx5X2Jhc2UpO1xcbm5ldC9ldGh0b29sL2ZlYy5jLTI3MS1cXHRpbnQgcmV0O1xcbi0tXFxubmV0L2V0aHRvb2wvZmVjLmM9MzUwPWNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF9mZWNfcmVxdWVzdF9vcHMgPSB7XFxuLS1cXG5uZXQvZXRodG9vbC9mZWMuYy0zNTQtXFx0LnJlcV9pbmZvX3NpemVcXHRcXHQ9IHNpemVvZihzdHJ1Y3QgZmVjX3JlcV9pbmZvKSxcXG5uZXQvZXRodG9vbC9mZWMuYzozNTU6XFx0LnJlcGx5X2RhdGFfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBmZWNfcmVwbHlfZGF0YSksXFxubmV0L2V0aHRvb2wvZmVjLmMtMzU2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDo0NS4xMTEwOTQyOThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk3ODY4MDY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBldGh0b29sIG5ldGxpbmsgZnJhbWV3b3JrIGNoYW5nZSoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGludG8gdGhpcy4gVGhlIGBldGhubF9mZWNfcmVxdWVzdF9vcHNgIHN0cnVjdHVyZSBub3cgc3BlY2lmaWVzIGEgYC5yZXBseV9kYXRhX3NpemVgIG9mIGBzaXplb2Yoc3RydWN0IGZlY19yZXBseV9kYXRhKWAuIFRoaXMgdGVsbHMgdGhlIGV0aHRvb2wgbmV0bGluayBmcmFtZXdvcmsgaG93IG11Y2ggbWVtb3J5IHRvIGFsbG9jYXRlIGZvciB0aGUgcmVwbHkgZGF0YS4gVGhlIGluY3JlYXNlIGlzIGFjdHVhbGx5IHByZXR0eSBtaW5vciwgb25seSAzMiBieXRlcywgYW5kIHRoZSBmcmFtZXdvcmsgaXRzZWxmIGhhbmRsZXMgdGhlIGR5bmFtaWMgYWxsb2NhdGlvbiwgc28gdGhhdCdzIGdvb2QuIEZ1bmN0aW9uYWxseSwgdGhlIGltcGFjdCBpcyBpc29sYXRlZCB0byB0aGUgYG1seDVgIGRyaXZlci4gQnV0IGhlcmUncyB0aGUga2lja2VyOiBgbWx4NWAgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIuIEJlY2F1c2UgaXQncyBoYXJkd2FyZSwgaXQncyBub3QgZ29pbmcgdG8gYmUgdHJpZ2dlcmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQgbWVhbnMsIGZyb20gYSBwcmFjdGljYWwgZnV6emluZyBzdGFuZHBvaW50LCBpdCdzIG5vdCBhIHJlbGV2YW50IGFyZWEgb2YgY29uY2Vybi4gVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gbWFyayB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBwb2ludCBzcGVuZGluZyByZXNvdXJjZXMgb24gc29tZXRoaW5nIHRoYXQgd2UgY2FuJ3QgZWZmZWN0aXZlbHkgdGVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgxNTIsIk91dHB1dFRva2VucyI6MTIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjUxLjA4OTc3NzAwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciB0byB1c2UgYW4gZW1iZWRkZWQgYnVmZmVyIGZvciBGRUMgaGlzdG9ncmFtIHJhbmdlcyBpbnN0ZWFkIG9mIGR5bmFtaWNhbGx5IGFsbG9jYXRpbmcgaXQuIFNpbmNlIG1seDUgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuIFRoZSBjaGFuZ2UgdG8gYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YCBvbmx5IGluY3JlYXNlcyBpdHMgc2l6ZSBzbGlnaHRseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyByZWFjaGFibGUgbG9naWMgZm9yIG90aGVyIGRyaXZlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgdG8gdXNlIGFuIGVtYmVkZGVkIGJ1ZmZlciBmb3IgRkVDIGhpc3RvZ3JhbSByYW5nZXMgaW5zdGVhZCBvZiBkeW5hbWljYWxseSBhbGxvY2F0aW5nIGl0LiBTaW5jZSBtbHg1IGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBUaGUgY2hhbmdlIHRvIGBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdGAgb25seSBpbmNyZWFzZXMgaXRzIHNpemUgc2xpZ2h0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBuZXcgcmVhY2hhYmxlIGxvZ2ljIGZvciBvdGhlciBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowxg9rj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-24 08:00:02 +0000 UTC FinishedAt: 2026-07-24 08:20:52 +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+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciB0byB1c2UgYW4gZW1iZWRkZWQgYnVmZmVyIGZvciBGRUMgaGlzdG9ncmFtIHJhbmdlcyBpbnN0ZWFkIG9mIGR5bmFtaWNhbGx5IGFsbG9jYXRpbmcgaXQuIFNpbmNlIG1seDUgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuIFRoZSBjaGFuZ2UgdG8gYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YCBvbmx5IGluY3JlYXNlcyBpdHMgc2l6ZSBzbGlnaHRseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyByZWFjaGFibGUgbG9naWMgZm9yIG90aGVyIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTBlMmQyMDQ4NTg3ZmE2ZWU1OWQxOThlY2ZhYWM1NjUyMzkzMjNkY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDA4OjE5OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcbmluZGV4IGQ1MDcyODkwOTZjMjA2Li42ODY3YTVhZWQ0MmMwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaFxuQEAgLTk4NCw3ICYjNDM7OTg0LDYgQEAgc3RydWN0IG1seDVlX3ByaXYge1xuIFx0c3RydWN0IG1seDVlX21xcHJpb19ybCAgICAqbXFwcmlvX3JsO1xuIFx0c3RydWN0IGRlbnRyeSAgICAgICAgICAgICAqZGZzX3Jvb3Q7XG4gXHRzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcF9kZXYgKmRldmNvbTtcbi1cdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICpmZWNfcmFuZ2VzO1xuIH07XG4gXG4gc3RhdGljIGlubGluZSB1MTYgbWx4NWVfc3RhdHNfbmNoX3JlYWQoY29uc3Qgc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNcbmluZGV4IGMxYWNiOTAxMmQzZjllLi43ZDQ3YTFkYThiNmI2NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNcbkBAIC02NDE1LDE0ICYjNDM7NjQxNSw4IEBAIGludCBtbHg1ZV9wcml2X2luaXQoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXG4gXHRpZiAoIXByaXYtXHUwMDNlY2hhbm5lbF9zdGF0cylcbiBcdFx0Z290byBlcnJfZnJlZV90eF9yYXRlcztcbiBcbi1cdHByaXYtXHUwMDNlZmVjX3JhbmdlcyA9IGt6YWxsb2Nfb2JqcygqcHJpdi1cdTAwM2VmZWNfcmFuZ2VzLCBFVEhUT09MX0ZFQ19ISVNUX01BWCk7XG4tXHRpZiAoIXByaXYtXHUwMDNlZmVjX3Jhbmdlcylcbi1cdFx0Z290byBlcnJfZnJlZV9jaGFubmVsX3N0YXRzO1xuLVxuIFx0cmV0dXJuIDA7XG4gXG4tZXJyX2ZyZWVfY2hhbm5lbF9zdGF0czpcbi1cdGtmcmVlKHByaXYtXHUwMDNlY2hhbm5lbF9zdGF0cyk7XG4gZXJyX2ZyZWVfdHhfcmF0ZXM6XG4gXHRrZnJlZShwcml2LVx1MDAzZXR4X3JhdGVzKTtcbiBlcnJfZnJlZV90eHEyc3Ffc3RhdHM6XG5AQCAtNjQ0Nyw3ICYjNDM7NjQ0MSw2IEBAIHZvaWQgbWx4NWVfcHJpdl9jbGVhbnVwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuIFx0aWYgKCFwcml2LVx1MDAzZW1kZXYpXG4gXHRcdHJldHVybjtcbiBcbi1cdGtmcmVlKHByaXYtXHUwMDNlZmVjX3Jhbmdlcyk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXN0YXRzX25jaDsgaSYjNDM7JiM0MzspXG4gXHRcdGt2ZnJlZShwcml2LVx1MDAzZWNoYW5uZWxfc3RhdHNbaV0pO1xuIFx0a2ZyZWUocHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXG5pbmRleCBkZTM4YjYwODA2YzI2NC4uZTdlNmRiN2Y2YmYxNzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmNcbkBAIC0xNTUwLDcgJiM0MzsxNTUwLDcgQEAgc3RhdGljIGJvb2wgZmVjX3JzX3ZhbGlkYXRlX2hpc3RfdHlwZShpbnQgbW9kZSwgaW50IGhpc3RfdHlwZSlcbiBcbiBzdGF0aWMgdThcbiBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgbW9kZSxcbi1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICoqcmFuZ2VzKVxuJiM0MztcdFx0XHQgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICpyYW5nZXMpXG4ge1xuIFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBwcml2LVx1MDAzZW1kZXY7XG4gXHR1MzIgb3V0W01MWDVfU1RfU1pfRFcocHBoY3JfcmVnKV0gPSB7MH07XG5AQCAtMTU1OCw4ICYjNDM7MTU1OCw2IEBAIGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxuIFx0aW50IHN6ID0gTUxYNV9TVF9TWl9CWVRFUyhwcGhjcl9yZWcpO1xuIFx0dTggaGlzdF90eXBlLCBudW1fb2ZfYmlucztcbiBcbi1cdG1lbXNldChwcml2LVx1MDAzZWZlY19yYW5nZXMsIDAsXG4tXHQgICAgICAgRVRIVE9PTF9GRUNfSElTVF9NQVggKiBzaXplb2YoKnByaXYtXHUwMDNlZmVjX3JhbmdlcykpO1xuIFx0TUxYNV9TRVQocHBoY3JfcmVnLCBpbiwgbG9jYWxfcG9ydCwgMSk7XG4gXHRpZiAobWx4NV9jb3JlX2FjY2Vzc19yZWcobWRldiwgaW4sIHN6LCBvdXQsIHN6LCBNTFg1X1JFR19QUEhDUiwgMCwgMCkpXG4gXHRcdHJldHVybiAwO1xuQEAgLTE1NzUsMTIgJiM0MzsxNTczLDExIEBAIGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIG51bV9vZl9iaW5zOyBpJiM0MzsmIzQzOykge1xuIFx0XHR2b2lkICpiaW5fcmFuZ2UgPSBNTFg1X0FERFJfT0YocHBoY3JfcmVnLCBvdXQsIGJpbl9yYW5nZVtpXSk7XG4gXG4tXHRcdHByaXYtXHUwMDNlZmVjX3Jhbmdlc1tpXS5oaWdoID0gTUxYNV9HRVQoYmluX3JhbmdlX2xheW91dCwgYmluX3JhbmdlLFxuLVx0XHRcdFx0XHRcdCAgICBoaWdoX3ZhbCk7XG4tXHRcdHByaXYtXHUwMDNlZmVjX3Jhbmdlc1tpXS5sb3cgPSBNTFg1X0dFVChiaW5fcmFuZ2VfbGF5b3V0LCBiaW5fcmFuZ2UsXG4tXHRcdFx0XHRcdFx0ICAgbG93X3ZhbCk7XG4mIzQzO1x0XHRyYW5nZXNbaV0uaGlnaCA9IE1MWDVfR0VUKGJpbl9yYW5nZV9sYXlvdXQsIGJpbl9yYW5nZSxcbiYjNDM7XHRcdFx0XHRcdCAgaGlnaF92YWwpO1xuJiM0MztcdFx0cmFuZ2VzW2ldLmxvdyA9IE1MWDVfR0VUKGJpbl9yYW5nZV9sYXlvdXQsIGJpbl9yYW5nZSxcbiYjNDM7XHRcdFx0XHRcdCBsb3dfdmFsKTtcbiBcdH1cbi1cdCpyYW5nZXMgPSBwcml2LVx1MDAzZWZlY19yYW5nZXM7XG4gXG4gXHRyZXR1cm4gbnVtX29mX2JpbnM7XG4gfVxuQEAgLTE2MjIsMTAgJiM0MzsxNjE5LDEyIEBAIHN0YXRpYyB2b2lkIGZlY19zZXRfaGlzdG9ncmFtc19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IG1vZGUsXG4gXHRjYXNlIE1MWDVFX0ZFQ19MTFJTXzI3Ml8yNTdfMTpcbiBcdGNhc2UgTUxYNUVfRkVDX1JTXzU0NF81MTRfSU5URVJMRUFWRURfUVVBRDpcbiBcdFx0bnVtX29mX2JpbnMgPVxuLVx0XHRcdGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMocHJpdiwgbW9kZSwgXHUwMDI2aGlzdC1cdTAwM2VyYW5nZXMpO1xuLVx0XHRpZiAobnVtX29mX2JpbnMpXG4mIzQzO1x0XHRcdGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMocHJpdiwgbW9kZSwgaGlzdC1cdTAwM2VyYW5nZXNfYnVmKTtcbiYjNDM7XHRcdGlmIChudW1fb2ZfYmlucykge1xuJiM0MztcdFx0XHRoaXN0LVx1MDAzZXJhbmdlcyA9IGhpc3QtXHUwMDNlcmFuZ2VzX2J1ZjtcbiBcdFx0XHRyZXR1cm4gZmVjX3JzX2hpc3RvZ3JhbV9maWxsX3N0YXRzKHByaXYsIG51bV9vZl9iaW5zLFxuIFx0XHRcdFx0XHRcdFx0ICAgaGlzdCk7XG4mIzQzO1x0XHR9XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcbmluZGV4IDVkNDkxYTk4MjY1ZWY5Li4xMjY4M2I1ZDEyNWU0MSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuQEAgLTU2Miw2ICYjNDM7NTYyLDcgQEAgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3Qge1xuIFx0XHR1NjQgcGVyX2xhbmVbRVRIVE9PTF9NQVhfTEFORVNdO1xuIFx0fSB2YWx1ZXNbRVRIVE9PTF9GRUNfSElTVF9NQVhdO1xuIFx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKnJhbmdlcztcbiYjNDM7XHRzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSByYW5nZXNfYnVmW0VUSFRPT0xfRkVDX0hJU1RfTUFYXTtcbiB9O1xuIC8qKlxuICAqIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAtIHN0YXRpc3RpY3MgZm9yIElFRUUgODAyLjMgRkVDXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciB0byB1c2UgYW4gZW1iZWRkZWQgYnVmZmVyIGZvciBGRUMgaGlzdG9ncmFtIHJhbmdlcyBpbnN0ZWFkIG9mIGR5bmFtaWNhbGx5IGFsbG9jYXRpbmcgaXQuIFNpbmNlIG1seDUgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuIFRoZSBjaGFuZ2UgdG8gYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YCBvbmx5IGluY3JlYXNlcyBpdHMgc2l6ZSBzbGlnaHRseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyByZWFjaGFibGUgbG9naWMgZm9yIG90aGVyIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMGUyZDIwNDg1ODdmYTZlZTU5ZDE5OGVjZmFhYzU2NTIzOTMyM2RjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMjQgMDg6MTk6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oCmluZGV4IGQ1MDcyODkwOTZjMjA2Li42ODY3YTVhZWQ0MmMwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgKQEAgLTk4NCw3ICYjNDM7OTg0LDYgQEAgc3RydWN0IG1seDVlX3ByaXYgewogCXN0cnVjdCBtbHg1ZV9tcXByaW9fcmwgICAgKm1xcHJpb19ybDsKIAlzdHJ1Y3QgZGVudHJ5ICAgICAgICAgICAgICpkZnNfcm9vdDsKIAlzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcF9kZXYgKmRldmNvbTsKLQlzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqZmVjX3JhbmdlczsKIH07CiAKIHN0YXRpYyBpbmxpbmUgdTE2IG1seDVlX3N0YXRzX25jaF9yZWFkKGNvbnN0IHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMKaW5kZXggYzFhY2I5MDEyZDNmOWUuLjdkNDdhMWRhOGI2YjY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMKQEAgLTY0MTUsMTQgJiM0Mzs2NDE1LDggQEAgaW50IG1seDVlX3ByaXZfaW5pdChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwKIAlpZiAoIXByaXYtJmd0O2NoYW5uZWxfc3RhdHMpCiAJCWdvdG8gZXJyX2ZyZWVfdHhfcmF0ZXM7CiAKLQlwcml2LSZndDtmZWNfcmFuZ2VzID0ga3phbGxvY19vYmpzKCpwcml2LSZndDtmZWNfcmFuZ2VzLCBFVEhUT09MX0ZFQ19ISVNUX01BWCk7Ci0JaWYgKCFwcml2LSZndDtmZWNfcmFuZ2VzKQotCQlnb3RvIGVycl9mcmVlX2NoYW5uZWxfc3RhdHM7Ci0KIAlyZXR1cm4gMDsKIAotZXJyX2ZyZWVfY2hhbm5lbF9zdGF0czoKLQlrZnJlZShwcml2LSZndDtjaGFubmVsX3N0YXRzKTsKIGVycl9mcmVlX3R4X3JhdGVzOgogCWtmcmVlKHByaXYtJmd0O3R4X3JhdGVzKTsKIGVycl9mcmVlX3R4cTJzcV9zdGF0czoKQEAgLTY0NDcsNyAmIzQzOzY0NDEsNiBAQCB2b2lkIG1seDVlX3ByaXZfY2xlYW51cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikKIAlpZiAoIXByaXYtJmd0O21kZXYpCiAJCXJldHVybjsKIAotCWtmcmVlKHByaXYtJmd0O2ZlY19yYW5nZXMpOwogCWZvciAoaSA9IDA7IGkgJmx0OyBwcml2LSZndDtzdGF0c19uY2g7IGkmIzQzOyYjNDM7KQogCQlrdmZyZWUocHJpdi0mZ3Q7Y2hhbm5lbF9zdGF0c1tpXSk7CiAJa2ZyZWUocHJpdi0mZ3Q7Y2hhbm5lbF9zdGF0cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jCmluZGV4IGRlMzhiNjA4MDZjMjY0Li5lN2U2ZGI3ZjZiZjE3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMKQEAgLTE1NTAsNyAmIzQzOzE1NTAsNyBAQCBzdGF0aWMgYm9vbCBmZWNfcnNfdmFsaWRhdGVfaGlzdF90eXBlKGludCBtb2RlLCBpbnQgaGlzdF90eXBlKQogCiBzdGF0aWMgdTgKIGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLAotCQkJICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqKnJhbmdlcykKJiM0MzsJCQkgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICpyYW5nZXMpCiB7CiAJc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBwcml2LSZndDttZGV2OwogCXUzMiBvdXRbTUxYNV9TVF9TWl9EVyhwcGhjcl9yZWcpXSA9IHswfTsKQEAgLTE1NTgsOCAmIzQzOzE1NTgsNiBAQCBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgbW9kZSwKIAlpbnQgc3ogPSBNTFg1X1NUX1NaX0JZVEVTKHBwaGNyX3JlZyk7CiAJdTggaGlzdF90eXBlLCBudW1fb2ZfYmluczsKIAotCW1lbXNldChwcml2LSZndDtmZWNfcmFuZ2VzLCAwLAotCSAgICAgICBFVEhUT09MX0ZFQ19ISVNUX01BWCAqIHNpemVvZigqcHJpdi0mZ3Q7ZmVjX3JhbmdlcykpOwogCU1MWDVfU0VUKHBwaGNyX3JlZywgaW4sIGxvY2FsX3BvcnQsIDEpOwogCWlmIChtbHg1X2NvcmVfYWNjZXNzX3JlZyhtZGV2LCBpbiwgc3osIG91dCwgc3osIE1MWDVfUkVHX1BQSENSLCAwLCAwKSkKIAkJcmV0dXJuIDA7CkBAIC0xNTc1LDEyICYjNDM7MTU3MywxMSBAQCBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgbW9kZSwKIAlmb3IgKGludCBpID0gMDsgaSAmbHQ7IG51bV9vZl9iaW5zOyBpJiM0MzsmIzQzOykgewogCQl2b2lkICpiaW5fcmFuZ2UgPSBNTFg1X0FERFJfT0YocHBoY3JfcmVnLCBvdXQsIGJpbl9yYW5nZVtpXSk7CiAKLQkJcHJpdi0mZ3Q7ZmVjX3Jhbmdlc1tpXS5oaWdoID0gTUxYNV9HRVQoYmluX3JhbmdlX2xheW91dCwgYmluX3JhbmdlLAotCQkJCQkJICAgIGhpZ2hfdmFsKTsKLQkJcHJpdi0mZ3Q7ZmVjX3Jhbmdlc1tpXS5sb3cgPSBNTFg1X0dFVChiaW5fcmFuZ2VfbGF5b3V0LCBiaW5fcmFuZ2UsCi0JCQkJCQkgICBsb3dfdmFsKTsKJiM0MzsJCXJhbmdlc1tpXS5oaWdoID0gTUxYNV9HRVQoYmluX3JhbmdlX2xheW91dCwgYmluX3JhbmdlLAomIzQzOwkJCQkJICBoaWdoX3ZhbCk7CiYjNDM7CQlyYW5nZXNbaV0ubG93ID0gTUxYNV9HRVQoYmluX3JhbmdlX2xheW91dCwgYmluX3JhbmdlLAomIzQzOwkJCQkJIGxvd192YWwpOwogCX0KLQkqcmFuZ2VzID0gcHJpdi0mZ3Q7ZmVjX3JhbmdlczsKIAogCXJldHVybiBudW1fb2ZfYmluczsKIH0KQEAgLTE2MjIsMTAgJiM0MzsxNjE5LDEyIEBAIHN0YXRpYyB2b2lkIGZlY19zZXRfaGlzdG9ncmFtc19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IG1vZGUsCiAJY2FzZSBNTFg1RV9GRUNfTExSU18yNzJfMjU3XzE6CiAJY2FzZSBNTFg1RV9GRUNfUlNfNTQ0XzUxNF9JTlRFUkxFQVZFRF9RVUFEOgogCQludW1fb2ZfYmlucyA9Ci0JCQlmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHByaXYsIG1vZGUsICZhbXA7aGlzdC0mZ3Q7cmFuZ2VzKTsKLQkJaWYgKG51bV9vZl9iaW5zKQomIzQzOwkJCWZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMocHJpdiwgbW9kZSwgaGlzdC0mZ3Q7cmFuZ2VzX2J1Zik7CiYjNDM7CQlpZiAobnVtX29mX2JpbnMpIHsKJiM0MzsJCQloaXN0LSZndDtyYW5nZXMgPSBoaXN0LSZndDtyYW5nZXNfYnVmOwogCQkJcmV0dXJuIGZlY19yc19oaXN0b2dyYW1fZmlsbF9zdGF0cyhwcml2LCBudW1fb2ZfYmlucywKIAkJCQkJCQkgICBoaXN0KTsKJiM0MzsJCX0KIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaAppbmRleCA1ZDQ5MWE5ODI2NWVmOS4uMTI2ODNiNWQxMjVlNDEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXRodG9vbC5oCkBAIC01NjIsNiAmIzQzOzU2Miw3IEBAIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0IHsKIAkJdTY0IHBlcl9sYW5lW0VUSFRPT0xfTUFYX0xBTkVTXTsKIAl9IHZhbHVlc1tFVEhUT09MX0ZFQ19ISVNUX01BWF07CiAJY29uc3Qgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKnJhbmdlczsKJiM0MzsJc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgcmFuZ2VzX2J1ZltFVEhUT09MX0ZFQ19ISVNUX01BWF07CiB9OwogLyoqCiAgKiBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgLSBzdGF0aXN0aWNzIGZvciBJRUVFIDgwMi4zIEZFQwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTgxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNjI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgTWVsbGFub3ggbWx4NSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIGFuZCBldGh0b29sLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBtb3ZpbmcgdGhlIGBmZWNfcmFuZ2VzYCBhbGxvY2F0aW9uIGZyb20gYG1seDVlX3ByaXZgIHRvIGFuIGVtYmVkZGVkIGJ1ZmZlciB3aXRoaW4gYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YCwgd2hpY2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gTXkgZmlyc3QgdGhvdWdodCBpczogZG9lcyB0aGlzIHdvcmsgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBjYW4gd2UgZXZlbiAqdGVzdCogaXQgaW4gb3VyIGVudmlyb25tZW50PwoKV2XigJlyZSBtb2RpZnlpbmcgYGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXNgIHRvIHdyaXRlIGRpcmVjdGx5IHRvIHRoZSBuZXcgYnVmZmVyIChgcmFuZ2VzX2J1ZmApIGFuZCB1cGRhdGluZyBgZmVjX3NldF9oaXN0b2dyYW1zX3N0YXRzYCBhY2NvcmRpbmdseS4gRnVuY3Rpb25hbGx5LCBpdCBzZWVtcyBzb3VuZC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXMgcmVhY2hhYmlsaXR5LiBUaGlzIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIsIHNvIHRoYXQgcmFpc2VzIGFuIGltbWVkaWF0ZSByZWQgZmxhZy4gQ2FuIHdlIGVtdWxhdGUgbWx4NSBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwPyBJIHRoaW5rIGV0aHRvb2wgc3RhdGlzdGljcyBhcmUgYWNjZXNzZWQgdGhyb3VnaCBuZXRsaW5rIG9yIGlvY3RsLCByaWdodD8gQnV0IHRoZSBkcml2ZXIgc3RpbGwgbmVlZHMgdG8gYmUgbG9hZGVkIGFuZCBhIG5ldGRldiByZWdpc3RlcmVkLgoKTGV0IG1lIHRoaW5rLCBkb2VzIHN5emthbGxlciBoYXZlIHN1cHBvcnQgZm9yIG1seDU/IE5vLCBpdCYjMzk7cyBub3QgdGhlIGRlZmF1bHQgUUVNVS9HQ0Ugc2V0dXAuIE9rYXksIHN5emthbGxlciBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBoYXJkd2FyZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGJlY29tZXM6IGNhbiB3ZSByZWFjaCB0aGlzIGNvZGUgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmU/IFNwZWNpZmljYWxseSwgd2hlcmUgaXMgYG1seDVlX3ByaXZfaW5pdGAgY2FsbGVkPyBEdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uLCByaWdodD8gSWYgdGhlcmUmIzM5O3Mgbm8gaGFyZHdhcmUsIHRoZSBkcml2ZXIgd29uJiMzOTt0IHByb2JlLCBhbmQgYG1seDVlX3ByaXZfaW5pdGAgd29uJiMzOTt0IGJlIGNhbGxlZC4gU28sIGNhbiB3ZSBwcm9iZSBtbHg1IHZpYSBzb21lIHNvZnR3YXJlIG1lY2hhbmlzbT8KCkkgbmVlZCB0byBxdWlja2x5IHNlYXJjaCBzeXprYWxsZXIgZm9yIGBtbHg1YCBvciBjaGVjayBpZiBpdCYjMzk7cyBmdXp6YWJsZS4gV2FpdCwgdGhlIHByb21wdCBpdHNlbGYgc2VlbXMgdG8gaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoaXMuLi4gaXQgc2F5cyB0aGF0IGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiBsaWtlIHVzYiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0sIGFyZSB3aGF0IHdlJiMzOTtyZSBsb29raW5nIGF0LiBNbDUgaXMgYSBQQ0llIGRldmljZSwgc28gdGhhdCYjMzk7cyBhIG5vLWdvLiBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgbWx4NS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG91Z2guIExldCYjMzk7cyBsb29rIHVwIFFFTVUmIzM5O3Mgc3VwcG9ydGVkIGRldmljZXMuIEkgcmVtZW1iZXIgZTEwMDAsIHJ0bDgxMzksIHZpcnRpby1uZXQsIHZteG5ldDMsIGlnYi4uLiBub25lIG9mIHdoaWNoIGFyZSBtbHg1LgoKV2FpdCwgSSB0aGluayB0aGVyZSBpcyBhIHZEUEEgbWx4NSBkcml2ZXIsIGJ1dCB0aGF0IHN0aWxsIGxpa2VseSBuZWVkcyBoYXJkd2FyZS4gT2theSwgdGhlIHF1ZXN0aW9uIGNvbWVzIGJhY2sgdG8gd2hldGhlciB0aGVyZSBpcyBhbnkgd2F5IHRvIHJlYWNoIGBtbHg1ZV9wcml2X2luaXRgLiBMZXQgbWUgcHVsbCB1cCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGV2ZW4gY2FsbGVkLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgaW5zaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1ZV9wcml2X2luaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg9MTI3NT1pbnQgbWx4NWVfZ2V0X3BmX251bV90aXJzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjEyNzY6aW50IG1seDVlX3ByaXZfaW5pdChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTEyNzctXHRcdCAgICBjb25zdCBzdHJ1Y3QgbWx4NWVfcHJvZmlsZSAqcHJvZmlsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTYzNTM9dm9pZCBtbHg1ZV9zZXRfcnhfbW9kZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTYzNjQtLyogbWx4NWUgZ2VuZXJpYyBuZXRkZXYgbWFuYWdlbWVudCBBUEkgKG1vdmUgdG8gZW5fY29tbW9uLmMpICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjYzNjU6aW50IG1seDVlX3ByaXZfaW5pdChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjM2Ni1cdFx0ICAgIGNvbnN0IHN0cnVjdCBtbHg1ZV9wcm9maWxlICpwcm9maWxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NjQ5Mz1tbHg1ZV9jcmVhdGVfbmV0ZGV2KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBjb25zdCBzdHJ1Y3QgbWx4NWVfcHJvZmlsZSAqcHJvZmlsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTY1MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjY1MDg6XHRlcnIgPSBtbHg1ZV9wcml2X2luaXQobmV0ZGV2X3ByaXYobmV0ZGV2KSwgcHJvZmlsZSwgbmV0ZGV2LCBtZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjUwOS1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NjUxMDpcdFx0bWx4NV9jb3JlX2VycihtZGV2LCBcJiMzNDttbHg1ZV9wcml2X2luaXQgZmFpbGVkLCBlcnI9JWRcXG5cJiMzNDssIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTY1MTEtXHRcdGdvdG8gZXJyX2ZyZWVfbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NjY1ND1tbHg1ZV9uZXRkZXZfaW5pdF9wcm9maWxlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjY1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NjY2MDpcdGVyciA9IG1seDVlX3ByaXZfaW5pdChwcml2LCBuZXdfcHJvZmlsZSwgbmV0ZGV2LCBtZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjY2MS1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NjY2MjpcdFx0bWx4NV9jb3JlX2VycihtZGV2LCBcJiMzNDttbHg1ZV9wcml2X2luaXQgZmFpbGVkLCBlcnI9JWRcXG5cJiMzNDssIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTY2NjMtXHRcdHJldHVybiBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmM9NzczPXN0YXRpYyBpbnQgbWx4NV9yZG1hX3NldHVwX3JuKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMtNzk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmM6ODAwOlx0ZXJyID0gbWx4NWVfcHJpdl9pbml0KGVwcml2LCBwcm9mLCBuZXRkZXYsIG1kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMtODAxLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODY2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgbWx4NSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gdGhlIGBtbHg1YCBkcml2ZXIgaXMgYmVpbmcgYSBiaXQgb2YgYSBzdGlja2xlci4gSXQgc2VlbXMgSSBuZWVkIGFjdHVhbCwgcGh5c2ljYWwgTWVsbGFub3ggaGFyZHdhcmUg4oCTIENvbm5lY3RYLTQsIDUsIDYsIG9yIDcsIHByZXN1bWFibHksIG9yIHNvbWV0aGluZyBlcXVpdmFsZW50IOKAkyB0byBldmVuIGdldCB0aGlzIHRoaW5nIG9mZiB0aGUgZ3JvdW5kLiBObyBoYXJkd2FyZSwgbm8gaW5pdGlhbGl6YXRpb24uIFRoaXMgbWVhbnMgYG1seDVlX3ByaXZfaW5pdGAgaXNuJiMzOTt0IGdvaW5nIHRvIGdldCBjYWxsZWQuIFRoYXQmIzM5O3MgYSBwcm9ibGVtIHdoZW4gSSYjMzk7bSB0cnlpbmcgdG8gdGVzdCBvciBkZXZlbG9wIHdpdGhvdXQgZGlyZWN0IGFjY2VzcyB0byB0aGUgaGFyZHdhcmUhCgpIbW0sIGlzIHRoZXJlICphbnkqIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBtbHg1IGJha2VkIGludG8gdGhlIGtlcm5lbD8gSSBzZWVtIHRvIHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgdGhhdCwgdGhvdWdoIEkgY2FuJiMzOTt0IHBsYWNlIGl0LiBNYXliZSBhIHZpcnR1YWwgZGV2aWNlIG9yIGEgbW9kdWxlIHRvIHNpbXVsYXRlIHRoZSBoYXJkd2FyZT8gSXQmIzM5O3Mgd29ydGggZGlnZ2luZyBpbnRvLgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG1vY2sgZHJpdmVycyBvciB0ZXN0IGltcGxlbWVudGF0aW9ucyB0aGF0IG1pZ2h0IHNpbXVsYXRlIHRoZSBtbHg1IGZ1bmN0aW9uYWxpdHkuIElmIHRoZXJlJiMzOTtzIHNvbWUga2luZCBvZiB0ZXN0IGZyYW1ld29yaywgdGhhdCB3b3VsZCBiZSBpZGVhbC4gSSBuZWVkIGEgd2F5IHRvIHByb2dyZXNzIG15IHdvcmsgd2l0aG91dCBiZWluZyBjb21wbGV0ZWx5IGJsb2NrZWQuIEZpbmRpbmcgYSBzdWl0YWJsZSBzb2Z0d2FyZS1iYXNlZCBhbHRlcm5hdGl2ZSB3aWxsIG1ha2UgbGlmZSBhIGxvdCBlYXNpZXIsIGZvciBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfY29yZV9kZXYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEzOTY2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jPTI0PXN0cnVjdCBtbHg1Y3RsX2RldiB7XG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTI1LVx0c3RydWN0IGZ3Y3RsX2RldmljZSBmd2N0bDtcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM6MjY6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMjctfTtcbi0tXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jPTExNj1zdGF0aWMgdm9pZCBtbHg1Y3RsX3JlbGVhc2VfdWlkKHN0cnVjdCBtbHg1Y3RsX2RldiAqbWNkZXYsIHUxNiB1aWQpXG4tLVxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYy0xMTgtXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhkZXN0cm95X3VjdHhfaW4pXSA9IHt9O1xuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYzoxMTk6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IG1jZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTEyMC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYz0zNzA9c3RhdGljIGludCBtbHg1Y3RsX3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LFxuLS1cbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMzc0LVx0c3RydWN0IG1seDVfYWRldiAqbWFkZXYgPSBjb250YWluZXJfb2YoYWRldiwgc3RydWN0IG1seDVfYWRldiwgYWRldik7XG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jOjM3NTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gbWFkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMzc2LVx0c3RydWN0IG1seDVjdGxfZGV2ICptY2RldiBfX2ZyZWUobWx4NWN0bCkgPSBmd2N0bF9hbGxvY19kZXZpY2UoXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM9OD1pbnQgbWx4NXJfY21kX3F1ZXJ5X3NwZWNpYWxfbWtleXMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNDQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo0NTppbnQgbWx4NV9jbWRfcXVlcnlfY29uZ19wYXJhbXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IGNvbmdfcG9pbnQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy00Ni1cdFx0XHQgICAgICAgdm9pZCAqb3V0KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTU2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6NTc6dm9pZCBtbHg1X2NtZF9kZXN0cm95X3RpcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGlybiwgdTE2IHVpZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTU4LXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy02Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjY3OnZvaWQgbWx4NV9jbWRfZGVzdHJveV90aXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRpc24sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy02OC17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNzYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo3NzppbnQgbWx4NV9jbWRfZGVzdHJveV9ycXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHJxdG4sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy03OC17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtODYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo4NzppbnQgbWx4NV9jbWRfYWxsb2NfdHJhbnNwb3J0X2RvbWFpbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnRkbixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTg4LVx0XHRcdFx0ICAgIHUxNiB1aWQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTA1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTA2OnZvaWQgbWx4NV9jbWRfZGVhbGxvY190cmFuc3BvcnRfZG9tYWluKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0ZG4sXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMDctXHRcdFx0XHQgICAgICAgdTE2IHVpZClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMTctXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxMTg6aW50IG1seDVfY21kX2RlYWxsb2NfcGQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHBkbiwgdTE2IHVpZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTExOS17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTI3LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTI4OmludCBtbHg1X2NtZF9hdHRhY2hfbWNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHVuaW9uIGliX2dpZCAqbWdpZCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEyOS1cdFx0XHR1MzIgcXBuLCB1MTYgdWlkKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTE0MS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjE0MjppbnQgbWx4NV9jbWRfZGV0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNDMtXHRcdFx0dTMyIHFwbiwgdTE2IHVpZClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNTUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxNTY6aW50IG1seDVfY21kX3hyY2RfYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICp4cmNkbiwgdTE2IHVpZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTE1Ny17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTY5LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTcwOmludCBtbHg1X2NtZF94cmNkX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHhyY2RuLCB1MTYgdWlkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTcxLXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYz0xODA9aW50IG1seDVfY21kX21hZF9pZmMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmluYiwgdm9pZCAqb3V0Yixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yMjItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoyMjM6aW50IG1seDVfY21kX3Vhcl9hbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnVhcm4sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yMjQte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTIzOC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjIzOTppbnQgbWx4NV9jbWRfdWFyX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHVhcm4sIHUxNiB1aWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yNDAte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTI0OC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjI0OTppbnQgbWx4NV9jbWRfcXVlcnlfdnVpZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBib29sIGRhdGFfZGlyZWN0LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjUwLVx0XHRcdGNoYXIgKm91dF92dWlkKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oPTQwPWludCBtbHg1cl9jbWRfcXVlcnlfc3BlY2lhbF9ta2V5cyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0MTppbnQgbWx4NV9jbWRfcXVlcnlfY29uZ19wYXJhbXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IGNvbmdfcG9pbnQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC00Mi1cdFx0XHQgICAgICAgdm9pZCAqb3V0KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQzOmludCBtbHg1X2NtZF9kZWFsbG9jX3BkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiBwZG4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDQ6dm9pZCBtbHg1X2NtZF9kZXN0cm95X3RpcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGlybiwgdTE2IHVpZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0NTp2b2lkIG1seDVfY21kX2Rlc3Ryb3lfdGlzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0aXNuLCB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ2OmludCBtbHg1X2NtZF9kZXN0cm95X3JxdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgcnF0biwgdTE2IHVpZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0NzppbnQgbWx4NV9jbWRfYWxsb2NfdHJhbnNwb3J0X2RvbWFpbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnRkbixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTQ4LVx0XHRcdFx0ICAgIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NDk6dm9pZCBtbHg1X2NtZF9kZWFsbG9jX3RyYW5zcG9ydF9kb21haW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRkbixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTUwLVx0XHRcdFx0ICAgICAgIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTE6aW50IG1seDVfY21kX2F0dGFjaF9tY2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdW5pb24gaWJfZ2lkICptZ2lkLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTItXHRcdFx0dTMyIHFwbiwgdTE2IHVpZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo1MzppbnQgbWx4NV9jbWRfZGV0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC01NC1cdFx0XHR1MzIgcXBuLCB1MTYgdWlkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjU1OmludCBtbHg1X2NtZF94cmNkX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqeHJjZG4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTY6aW50IG1seDVfY21kX3hyY2RfZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgeHJjZG4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTctaW50IG1seDVfY21kX21hZF9pZmMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmluYiwgdm9pZCAqb3V0YixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTU4LVx0XHQgICAgIHUxNiBvcG1vZCwgdTggcG9ydCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo1OTppbnQgbWx4NV9jbWRfdWFyX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqdWFybiwgdTE2IHVpZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo2MDppbnQgbWx4NV9jbWRfdWFyX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHVhcm4sIHUxNiB1aWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NjE6aW50IG1seDVfY21kX3F1ZXJ5X3Z1aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgYm9vbCBkYXRhX2RpcmVjdCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTYyLVx0XHRcdGNoYXIgKm91dF92dWlkKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM9MjkyPXN0YXRpYyBpbnQgbWx4NV9pYl9nZXRfY2NfcGFyYW1zKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTI5OS1cdGVudW0gbWx4NV9pYl9jb25nX25vZGVfdHlwZSBub2RlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jOjMwMDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTMwMS1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM9MzI5PXN0YXRpYyBpbnQgbWx4NV9pYl9zZXRfY2NfcGFyYW1zKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTMzNS1cdGVudW0gbWx4NV9pYl9jb25nX25vZGVfdHlwZSBub2RlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jOjMzNjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTMzNy1cdHUzMiBhdHRyX21hc2sgPSAwO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYz00MzQ9dm9pZCBtbHg1X2liX2luaXRfY29uZ19kZWJ1Z2ZzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0pXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTQzNi1cdHN0cnVjdCBtbHg1X2liX2RiZ19jY19wYXJhbXMgKmRiZ19jY19wYXJhbXM7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM6NDM3Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmMtNDM4LVx0aW50IGk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYz0yODg9bWx4NV9pYl9hbGxvY19od19wb3J0X3N0YXRzKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydF9udW0pXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0yOTUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jOjI5NjpzdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcV9jb3VudGVycyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMjk3LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBtbHg1X2liX2NvdW50ZXJzICpjbnRzLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM9MzUwPXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9xX2NvdW50ZXJzX3Zwb3J0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMzU3LVx0dTMyIGluW01MWDVfU1RfU1pfRFcocXVlcnlfcV9jb3VudGVyX2luKV0gPSB7fTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM6MzU4Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTM1OS1cdF9fYmUzMiB2YWw7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYz0zODc9c3RhdGljIGludCBkb19nZXRfaHdfc3RhdHMoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0zOTItXHRjb25zdCBzdHJ1Y3QgbWx4NV9pYl9jb3VudGVycyAqY250cyA9IGdldF9jb3VudGVycyhkZXYsIHBvcnRfbnVtKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM6MzkzOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTM5NC1cdGludCByZXQsIG51bV9jb3VudGVycztcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jPTYxMT1pbnQgbWx4NV9pYl9wb2xsX2NxKHN0cnVjdCBpYl9jcSAqaWJjcSwgaW50IG51bV9lbnRyaWVzLCBzdHJ1Y3QgaWJfd2MgKndjKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjE1LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGNxLVx1MDAzZWliY3EuZGV2aWNlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmM6NjE2Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjE3LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jPTY0OD1pbnQgbWx4NV9pYl9hcm1fY3Eoc3RydWN0IGliX2NxICppYmNxLCBlbnVtIGliX2NxX25vdGlmeV9mbGFncyBmbGFncylcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjQ5LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmM6NjUwOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSB0b19tZGV2KGliY3EtXHUwMDNlZGV2aWNlKS1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYy02NTEtXHRzdHJ1Y3QgbWx4NV9pYl9jcSAqY3EgPSB0b19tY3EoaWJjcSk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTEwNz1zdHJ1Y3QgZGV2eF91bWVtIHtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoxMDg6XHRzdHJ1Y3QgbWx4NV9jb3JlX2Rldlx0XHQqbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0xMDktXHRzdHJ1Y3QgaWJfdW1lbVx0XHRcdCp1bWVtO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0yMDA1PXN0YXRpYyBib29sIGlzX3ZhbGlkX2V2ZW50c19sZWdhY3koaW50IG51bV9ldmVudHMsIHUxNiAqZXZlbnRfdHlwZV9udW1fbGlzdCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjAyMy0jZGVmaW5lIE1BWF9TVVBQX0VWRU5UX05VTSAyNTVcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoyMDI0OnN0YXRpYyBib29sIGlzX3ZhbGlkX2V2ZW50cyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIwMjUtXHRcdFx0ICAgIGludCBudW1fZXZlbnRzLCB1MTYgKmV2ZW50X3R5cGVfbnVtX2xpc3QsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTI0NTE9c3RhdGljIGludCBkZXZ4X3VtZW1fY2xlYW51cChzdHJ1Y3QgaWJfdW9iamVjdCAqdW9iamVjdCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjQ2Ny1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoyNDY4OnN0YXRpYyBib29sIGlzX3VuYWZmaWxpYXRlZF9ldmVudChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI0NjktXHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgZXZlbnRfdHlwZSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTEyPXN0YXRpYyBpbnQgbWx4NV9jbWRfYWxsb2NfbWVtaWMoc3RydWN0IG1seDVfZG0gKmRtLCBwaHlzX2FkZHJfdCAqYWRkcixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTE0LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6MTU6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZG0tXHUwMDNlZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0xNi1cdHU2NCBudW1fbWVtaWNfaHdfcGFnZXMgPSBNTFg1X0NBUF9ERVZfTUVNKGRldiwgbWVtaWNfYmFyX3NpemUpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz04Nz12b2lkIG1seDVfY21kX2RlYWxsb2NfbWVtaWMoc3RydWN0IG1seDVfZG0gKmRtLCBwaHlzX2FkZHJfdCBhZGRyLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtODkte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYzo5MDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBkbS1cdTAwM2VkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTkxLVx0dTY0IGh3X3N0YXJ0X2FkZHIgPSBNTFg1X0NBUDY0X0RFVl9NRU0oZGV2LCBtZW1pY19iYXJfc3RhcnRfYWRkcik7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0xMTQ9dm9pZCBtbHg1X2NtZF9kZWFsbG9jX21lbWljX29wKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgYWRkcixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTExNy1cdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV9tZW1pY19pbildID0ge307XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jOjExODpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBkbS1cdTAwM2VkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTExOS1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTEyOD1zdGF0aWMgaW50IG1seDVfY21kX2FsbG9jX21lbWljX29wKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgYWRkcixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTEzMi1cdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV9tZW1pY19pbildID0ge307XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jOjEzMzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBkbS1cdTAwM2VkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTEzNC1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0zNTI9c3RhdGljIHN0cnVjdCBpYl9kbSAqaGFuZGxlX2FsbG9jX2RtX3N3X2ljbShzdHJ1Y3QgaWJfdWNvbnRleHQgKmN0eCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTM1Ni17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jOjM1NzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSB0b19tZGV2KGN0eC1cdTAwM2VkZXZpY2UpLVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTM1OC1cdGVudW0gbWx4NV9zd19pY21fdHlwZSBpY21fdHlwZTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTQ3MD1zdGF0aWMgaW50IG1seDVfZG1faWNtX2RlYWxsb2Moc3RydWN0IG1seDVfaWJfdWNvbnRleHQgKmN0eCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTQ3My1cdGVudW0gbWx4NV9zd19pY21fdHlwZSB0eXBlID0gZ2V0X2ljbV90eXBlKGRtLVx1MDAzZWJhc2UudHlwZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jOjQ3NDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSB0b19tZGV2KGRtLVx1MDAzZWJhc2UuaWJkbS5kZXZpY2UpLVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTQ3NS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTE1LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzoxNjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gdG9fbWRldihpYmRtYWgtXHUwMDNlZGV2aWNlKS1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTE3LVx0c3RydWN0IG1seDVfaWJfZG1haCAqZG1haCA9IHRvX21kbWFoKGliZG1haCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTM5PXN0YXRpYyBpbnQgbWx4NV9pYl9kZWFsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNDItXHRzdHJ1Y3QgbWx4NV9pYl9kbWFoICpkbWFoID0gdG9fbWRtYWgoaWJkbWFoKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzo0MzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gdG9fbWRldihpYmRtYWgtXHUwMDNlZGV2aWNlKS1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQ0LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM9MTQ5PWludCBwYXJzZV9mbG93X2Zsb3dfYWN0aW9uKHN0cnVjdCBtbHg1X2liX2Zsb3dfYWN0aW9uICptYWN0aW9uLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzoxODk6c3RhdGljIGludCBwYXJzZV9mbG93X2F0dHIoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE5MC1cdFx0XHQgICBzdHJ1Y3QgbWx4NV9mbG93X3NwZWMgKnNwZWMsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYz01NDc9c3RhdGljIGJvb2wgZmxvd19pc19tdWx0aWNhc3Rfb25seShjb25zdCBzdHJ1Y3QgaWJfZmxvd19hdHRyICppYl9hdHRyKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtNTc2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzo1Nzc6c3RhdGljIGJvb2wgaXNfdmFsaWRfZXRoZXJ0eXBlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy01NzgtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpYl9mbG93X2F0dHIgKmZsb3dfYXR0cixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTYyNS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6NjI2OnN0YXRpYyBib29sIGlzX3ZhbGlkX2F0dHIoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTYyNy1cdFx0XHQgIGNvbnN0IHN0cnVjdCBpYl9mbG93X2F0dHIgKmZsb3dfYXR0cilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTE4NzI9c3RhdGljIGludCBtbHg1X2liX2ZpbGxfdHJhbnNwb3J0X25zX2luZm8oc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy0xODc1LVx0XHRcdFx0XHQgIHUxNiAqdnBvcnQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jOjE4NzY6XHRcdFx0XHRcdCAgc3RydWN0IG1seDVfY29yZV9kZXYgKipmdF9tZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy0xODc3LVx0XHRcdFx0XHQgIHUzMiBpYl9wb3J0LCB1MTYgKmVzd19vd25lcl92aGNhX2lkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy0xODc4LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTg3OTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICplc3dfbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTg4MC1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTE5MDg9X2dldF9mbG93X3RhYmxlKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MTYgdXNlcl9wcmlvcml0eSxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE5MTEte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYzoxOTEyOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKmZ0X21kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtMTkxMy1cdHN0cnVjdCBtbHg1X2Zsb3dfdGFibGVfYXR0ciBmdF9hdHRyID0ge307XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MTE9c3RhdGljIGludFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MTI6bWx4NV9pYl9zZXRfdnBvcnRfcmVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMzpcdFx0ICAgICAgc3RydWN0IG1seDVfY29yZV9kZXYgKnJlcF9kZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xNC1cdFx0ICAgICAgc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy00MS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjQyOnN0YXRpYyB2b2lkIG1seDVfaWJfcmVnaXN0ZXJfcGVlcl92cG9ydF9yZXBzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTQzLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NDQ6c3RhdGljIHZvaWQgbWx4NV9pYl9udW1fcG9ydHNfdXBkYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqbnVtX3BvcnRzKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNDUte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NDY6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy00Ny1cdGludCBpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTU5LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NjA6c3RhdGljIGludCBtbHg1X2liX3NldF9vd25lcl90cmFuc3BvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmN1cl9vd25lcixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjYxOlx0XHRcdFx0XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbmV3X293bmVyKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNjIte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTg4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6ODk6c3RhdGljIHZvaWQgbWx4NV9pYl9yZWxlYXNlX3RyYW5zcG9ydChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtOTAte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6OTE6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcGVlcl9kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy05Mi1cdGludCBpLCByZXQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtOTktXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMDA6c3RhdGljIGludCBtbHg1X2liX3Rha2VfdHJhbnNwb3J0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMDEte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MTAyOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTAzLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0xMTc9c3RhdGljIGludFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MTE4Om1seDVfaWJfdnBvcnRfcmVwX2xvYWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTExOS17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMjAtXHR1MzIgbnVtX3BvcnRzID0gbWx4NV9lc3dpdGNoX2dldF90b3RhbF92cG9ydHMoZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEyMTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpsYWdfbWFzdGVyID0gZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTIyLVx0Y29uc3Qgc3RydWN0IG1seDVfaWJfcHJvZmlsZSAqcHJvZmlsZTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEyMzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpwZWVyX2RldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTEyNC1cdHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXY7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MjIxPW1seDVfaWJfdnBvcnRfcmVwX3VubG9hZChzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjIyLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjIyMzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gbWx4NV9lc3dpdGNoX2dldF9jb3JlX2RldihyZXAtXHUwMDNlZXN3KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTIyNC1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gbWx4NV9pYl9yZXBfdG9fZGV2KHJlcCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjYxLVx0XHRpZiAobWx4NV9sYWdfaXNfc2hhcmVkX2ZkYihtZGV2KSkge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MjYyOlx0XHRcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpwZWVyX21kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yNjMtXHRcdFx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jPTI3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1seDVfZXN3aXRjaF9yZXBfb3BzIHJlcF9vcHMgPSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjgxLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MjgyOnN0YXRpYyB2b2lkIG1seDVfaWJfcmVnaXN0ZXJfcGVlcl92cG9ydF9yZXBzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjgzLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjI4NDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpwZWVyX21kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yODUtXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MzE5PXN0YXRpYyBpbnQgbWx4NXJfcmVwX3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTMyMi1cdHN0cnVjdCBtbHg1X2FkZXYgKmlkZXYgPSBjb250YWluZXJfb2YoYWRldiwgc3RydWN0IG1seDVfYWRldiwgYWRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzozMjM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGlkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTMyNC1cdHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdztcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0zMzE9c3RhdGljIHZvaWQgbWx4NXJfcmVwX3JlbW92ZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMzMtXHRzdHJ1Y3QgbWx4NV9hZGV2ICppZGV2ID0gY29udGFpbmVyX29mKGFkZXYsIHN0cnVjdCBtbHg1X2FkZXYsIGFkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MzM0Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBpZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMzUtXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTUwPWludCBtbHg1X2liX2dldF92Zl9jb25maWcoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCBpbnQgdmYsIHUzMiBwb3J0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy01My1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjU0Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy01NS1cdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0ICpyZXA7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTkyPWludCBtbHg1X2liX3NldF92Zl9saW5rX3N0YXRlKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy05NS1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjk2Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy05Ny1cdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0ICppbjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MTIwPWludCBtbHg1X2liX2dldF92Zl9zdGF0cyhzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2Zixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTIzLVx0aW50IG91dF9zeiA9IE1MWDVfU1RfU1pfQllURVMocXVlcnlfdnBvcnRfY291bnRlcl9vdXQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjEyNDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTEyNS1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYz0xNTE9c3RhdGljIGludCBzZXRfdmZfbm9kZV9ndWlkKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTU0LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM6MTU1Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xNTYtXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqaW47XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTE3NT1zdGF0aWMgaW50IHNldF92Zl9wb3J0X2d1aWQoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCBpbnQgdmYsIHUzMiBwb3J0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xNzgtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoZGV2aWNlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzoxNzk6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTE4MC1cdHN0cnVjdCBtbHg1X2hjYV92cG9ydF9jb250ZXh0ICppbjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MjEwPWludCBtbHg1X2liX2dldF92Zl9ndWlkKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMjE0LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM6MjE1Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0yMTYtXHRzdHJ1Y3QgbWx4NV92Zl9jb250ZXh0ICp2ZnNfY3R4ID0gbWRldi1cdTAwM2Vwcml2LnNyaW92LnZmc19jdHg7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM9MTUwPXN0YXRpYyB2b2lkIHBtYV9jbnRfZXh0X2Fzc2lnbl9wcGNudChzdHJ1Y3QgaWJfcG1hX3BvcnRjb3VudGVyc19leHQgKmNudF9leHQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMTgwLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM6MTgxOnN0YXRpYyBpbnQgcXVlcnlfaWJfcHBjbnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTggcG9ydF9udW0sIHU4IHBsYW5lX251bSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jLTE4Mi1cdFx0XHQgIHZvaWQgKm91dCwgc2l6ZV90IHN6LCBib29sIGV4dClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYz0yMDk9c3RhdGljIGludCBwcm9jZXNzX3BtYV9jbWQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHUzMiBwb3J0X251bSxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy0yMTEte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM6MjEyOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy0yMTMtXHRib29sIG5hdGl2ZV9wb3J0ID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYz01OTc9aW50IG1seDVfcXVlcnlfbWFkX2lmY19wb3J0KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy02MDAtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM6NjAxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jLTYwMi1cdHN0cnVjdCBpYl9zbXAgKmluX21hZDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MjA1PXN0YXRpYyBpbnQgbWx4NV9uZXRkZXZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yMTEtXHRzdHJ1Y3QgbmV0X2RldmljZSAqaWJfbmRldiA9IE5VTEw7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjEyOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjEzLVx0c3RydWN0IG1seDVfaWJfZGV2ICppYmRldjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzExLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjMxMjpzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWx4NV9pYl9nZXRfbmF0aXZlX3BvcnRfbWRldihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmliZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMxMy1cdFx0XHRcdFx0XHQgICB1MzIgaWJfcG9ydF9udW0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMxNy1cdFx0XHRcdFx0XHRcdCAgaWJfcG9ydF9udW0pO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjMxODpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gTlVMTDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMTktXHRzdHJ1Y3QgbWx4NV9pYl9tdWx0aXBvcnRfaW5mbyAqbXBpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz01MzY9c3RhdGljIGludCBtbHg1X3F1ZXJ5X3BvcnRfcm9jZShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIHUzMiBwb3J0X251bSxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTQwLVx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKHB0eXNfcmVnKV0gPSB7MH07XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTQxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTQyLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsICp1cHBlcjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NzcyPXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9zeXN0ZW1faW1hZ2VfZ3VpZChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNzc1LVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo3NzY6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTc3Ny1cdHU2NCB0bXA7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTgwND1zdGF0aWMgaW50IG1seDVfcXVlcnlfbWF4X3BrZXlzKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy04MDctXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjgwODpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODA5LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz04NzU9c3RhdGljIGludCBtbHg1X3F1ZXJ5X25vZGVfZGVzYyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgY2hhciAqbm9kZV9kZXNjKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy04ODgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6ODg5OnN0YXRpYyB2b2lkIGZpbGxfZXN3X21ncl9yZWdfYzAoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODkwLVx0XHRcdFx0c3RydWN0IG1seDVfaWJfcXVlcnlfZGV2aWNlX3Jlc3AgKnJlc3ApXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTkyOT1zdGF0aWMgdTMyIG1seDVfaWJfY2FsY19tYXhfcXBfd3Ioc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtOTMwLXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo5MzE6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTkzMi1cdHUzMiBtYXhfd3FlX2JiX3VuaXRzID0gMSBcdTAwM2NcdTAwM2MgTUxYNV9DQVBfR0VOKG1kZXYsIGxvZ19tYXhfcXBfc3opO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz05NDU9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X2RldmljZShzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtOTUwLVx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo5NTE6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTk1Mi1cdGludCBlcnIgPSAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNDYyPXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9oY2FfcG9ydChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE0NjUtXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE0NjY6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE0NjctXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqcmVwO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNTQyPWludCBtbHg1X2liX3F1ZXJ5X3BvcnQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNTY2LVx0XHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoaWJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE1Njc6XHRcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE1NjgtXHRcdGJvb2wgcHV0X21kZXYgPSB0cnVlO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNjAzPXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fcG9ydChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTYyNi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNjI3OnN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fdnBvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTYyOC1cdFx0XHRcdFx0ICAgICAgIHU4IG9wX21vZCwgdTE2IHZwb3J0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNjUwPXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fYm9uZChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTY1Mi17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTY1MzpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTY1NC1cdHUzMiBib25kX3NwZWVkO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNjc5PXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX3JlcChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNjgyLVx0c3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNjgzOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTY4NC1cdHUxNiBvcF9tb2Q7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE3MjY9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X2dpZChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsIGludCBpbmRleCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTcyOS1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTczMDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTczMS1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTc0NT1zdGF0aWMgaW50IG1seDVfcXVlcnlfaGNhX25pY19wa2V5KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTc0OC1cdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTc0OTpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE3NTAtXHRib29sIHB1dF9tZGV2ID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTgxNj1zdGF0aWMgaW50IHNldF9wb3J0X2NhcHNfYXRvbWljKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sIHUzMiBtYXNrLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xODE5LVx0c3RydWN0IG1seDVfaGNhX3Zwb3J0X2NvbnRleHQgY3R4ID0ge307XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTgyMDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE4MjEtXHR1MzIgbWRldl9wb3J0X251bTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTk3Mz1zdGF0aWMgdm9pZCBkZWFsbG9jYXRlX3VhcnMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE5ODYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTk4NzpzdGF0aWMgaW50IG1seDVfaWJfZW5hYmxlX2xiX21wKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptYXN0ZXIsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTk4ODpcdFx0XHRcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpzbGF2ZSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xOTg5LVx0XHRcdFx0c3RydWN0IG1seDVfaWJfbGJfc3RhdGUgKmxiX3N0YXRlKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yMDA4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjIwMDk6c3RhdGljIHZvaWQgbWx4NV9pYl9kaXNhYmxlX2xiX21wKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptYXN0ZXIsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjAxMDpcdFx0XHRcdCAgc3RydWN0IG1seDVfY29yZV9kZXYgKnNsYXZlLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTIwMTEtXHRcdFx0XHQgIHN0cnVjdCBtbHg1X2liX2xiX3N0YXRlICpsYl9zdGF0ZSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzI1MT1zdGF0aWMgdm9pZCBtbHg1X2liX3N0YWdlX3N5c19lcnJvcl9ub3RpZmllcl9jbGVhbnVwKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMjU1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjMyNTY6c3RhdGljIGludCBtbHg1X2liX2dldF9wbGFuZV9udW0oc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4ICpudW1fcGxhbmUpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzI1Ny17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTM0Nzc9bWx4NV9pYl9jcmVhdGVfZGF0YV9kaXJlY3RfcmVzb3VyY2VzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNDc5LVx0aW50IGlubGVuID0gTUxYNV9TVF9TWl9CWVRFUyhjcmVhdGVfbWtleV9pbik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzQ4MDpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVx1MDAzZW1kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzQ4MS1cdGJvb2wgcm9fc3VwcCA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0zNjU3PXN0YXRpYyBpbnQgbGFnX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM2NjAtXHRcdFx0XHRcdCAgICAgICBsYWdfZXZlbnRzKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozNjYxOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXHUwMDNlbWRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNjYyLVx0c3RydWN0IGliX2RldmljZSAqaWJkZXYgPSBcdTAwMjZkZXYtXHUwMDNlaWJfZGV2O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0zNzE4PXN0YXRpYyBpbnQgbWx4NV9ldGhfbGFnX2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM3MjAtXHRzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlX2F0dHIgZnRfYXR0ciA9IHt9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjM3MjE6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cdTAwM2VtZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM3MjItXHRzdHJ1Y3QgbWx4NV9mbG93X25hbWVzcGFjZSAqbnM7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTM3NTE9c3RhdGljIHZvaWQgbWx4NV9ldGhfbGFnX2NsZWFudXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzc1Mi17XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA5NQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG1seDUgRHJpdmVyIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgTWVsbGFub3ggZHJpdmVyIGZpbGVzIOKAkyBgZHJpdmVycy9md2N0bC9tbHg1L21haW4uY2AsIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuY2AsIGFuZCBzbyBvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoZXJlIHNvbWUga2luZCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gaGVyZT8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGNvZGUgY291bGQgYmUgdGVzdGVkIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZS4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhIHRlc3QgZHJpdmVyIG9yIGV2ZW4gYSBtb2NrIGltcGxlbWVudGF0aW9uLgoKTm9wZSwgZnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBtbHg1IGRyaXZlciBpcyBjbGVhcmx5IGEgcGh5c2ljYWwgZGV2aWNlIGRyaXZlci4gSXQmIzM5O3MgbWVhbnQgdG8gZGlyZWN0bHkgaW50ZXJhY3Qgd2l0aCBoYXJkd2FyZSB0aHJvdWdoIFBDSS4gV2l0aG91dCB0aGUgaGFyZHdhcmUsIGl0IHdvbiYjMzk7dCBldmVuIGluaXRpYWxpemUuIFRoYXQgcnVsZXMgb3V0IGEgc2ltcGxlIHNldHVwLgoKTm93IEkgcmVtZW1iZXIgU3l6a2FsbGVyIGhhcyBzb21lIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBmb3IgZnV6emluZyDigJMgVVNCIGdhZGdldCBmdXp6aW5nLCBtYWM4MDIxMV9od3NpbSwgdmhjaSwgdGhhdCBzb3J0IG9mIHRoaW5nLiBCdXQgd2hhdCBhYm91dCBtbHg1PyBEb2VzIFN5emthbGxlciBoYXZlIGEgY29tcGFyYWJsZSBzZXR1cCBmb3IgZnV6emluZyB0aGlzIHNwZWNpZmljIGRyaXZlcj8gTm8sIGl0JiMzOTtzIG5vdCBlbXVsYXRpbmcgbWx4NSBQQ0kgZGV2aWNlcy4gV2XigJlyZSBnb2luZyB0byBoYXZlIHRvIGRvIHNvbWV0aGluZyBlbHNlLgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjay4gV2hhdCBpZiB0aGUgdGFyZ2V0IG9mIHRoZSBwYXRjaCBpcyBidXJpZWQgd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY2Agb3IgYGVuX21haW4uY2A/IElzIHRoYXQgY29kZSBldmVuIHJlYWNoYWJsZSB3aXRob3V0IGhhcmR3YXJlPyBUaGlzIGlzIGdvaW5nIHRvIHJlcXVpcmUgc29tZSBzbGV1dGhpbmcuCgpMZXQmIzM5O3MgY2hlY2sgd2hlcmUgYG1seDVlX3ByaXZfaW5pdGAgaXMgY2FsbGVkLiBJdCBsb29rcyBsaWtlIGl04oCZcyBjYWxsZWQgd2l0aGluIGBtbHg1ZV9jcmVhdGVfbmV0ZGV2YCwgYG1seDVlX25ldGRldl9pbml0X3Byb2ZpbGVgLCBhbmQgYG1seDVfcmRtYV9zZXR1cF9ybmAuIEFsbCBvZiB0aGVzZSByZXF1aXJlIGEgYG1seDVfY29yZV9kZXZgIHN0cnVjdHVyZS4gT2theSwgc28gdGhhdCBgbWx4NV9jb3JlX2RldmAgaXMgY3JlYXRlZCB3aGVuIHRoZSBQQ0kgZGV2aWNlIGlzIHByb2JlZC4gQW5kIHNpbmNlIHdlIGRvbuKAmXQgaGF2ZSBtbHg1IGhhcmR3YXJlIHdpdGhpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudCwgdGhhdCBlbnRpcmUgY29kZSBwYXRoIGlzIGdvaW5nIHRvIGJlIHVucmVhY2hhYmxlLgoKV2FpdCwgbGV0IG1lIHRoaW5rLiBJcyB0aGVyZSBhIHZpcnR1YWxpemVkIG9yIHNpbXVsYXRlZCBtbHg1IGRldmljZSAqc29tZXdoZXJlKj8gVGltZSB0byBzZWFyY2ggdGhlIGNvZGViYXNlIGZvciBgbWx4NV9jb3JlX2RldmAgY3JlYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxsb2NfZXRoZXJkZXYuKm1seDUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz02NDkzPW1seDVlX2NyZWF0ZV9uZXRkZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIGNvbnN0IHN0cnVjdCBtbHg1ZV9wcm9maWxlICpwcm9maWxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjUwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NjUwMjpcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2X21xcyhzaXplb2Yoc3RydWN0IG1seDVlX3ByaXYpLCB0eHFzLCByeHFzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjUwMy1cdGlmICghbmV0ZGV2KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExNzEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGlzc3VlOgoKKipEZWx2aW5nIGludG8gdGhlIE1MWDUgRHJpdmVyIFByb2JlKioKCk9rYXksIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBDb25zaWRlcmluZyB0aGlzIGlzIGxpa2VseSBhIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGlzc3VlLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb25zLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBgbWx4NV9wY2lfcHJvYmVgIGZ1bmN0aW9uIChvciBhIHNpbWlsYXIgb25lLCBkZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljIE1lbGxhbm94IGRyaXZlciB2ZXJzaW9uIGFuZCBhcmNoaXRlY3R1cmUpIGlzIHdoZXJlIHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIFBDSSBidXMgdG8gaWRlbnRpZnkgYW5kIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlLiBUaGF04oCZcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgdGhlcmUgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSByZXR1cm4gY29kZXMsIGVycm9yIGhhbmRsaW5nLCBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbiB3aXRoaW4gdGhhdCBmdW5jdGlvbiB0byBwaW5wb2ludCB0aGUgZXhhY3QgZmFpbHVyZS4gSXTigJlzIGxpa2VseSBhIHJlc291cmNlIGlzc3VlLCBhIGZpcm13YXJlIHZlcnNpb24gbWlzbWF0Y2gsIG9yIHBvdGVudGlhbGx5IGEgY29uZmlndXJhdGlvbiBwcm9ibGVtLiBUaW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlci4qbWx4NSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kYXRhX2RpcmVjdC5jPTIwMT1zdGF0aWMgdm9pZCBtbHg1X2RhdGFfZGlyZWN0X3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kYXRhX2RpcmVjdC5jLTIxMC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RhdGFfZGlyZWN0LmM6MjExOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtbHg1X2RhdGFfZGlyZWN0X2RyaXZlciA9IHtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RhdGFfZGlyZWN0LmMtMjEyLVx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIyNjU9aW50IG1seDVfcmVjb3Zlcl9kZXZpY2Uoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIyNzY6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1seDVfY29yZV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyNzctXHQubmFtZSAgICAgICAgICAgPSBLQlVJTERfTU9ETkFNRSxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jPTE0NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgbWx4NXZmX2Vycl9oYW5kbGVycyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTE0NDgtXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjE0NDk6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1seDV2Zl9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xNDUwLVx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTE0NTctXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjE0NTg6bW9kdWxlX3BjaV9kcml2ZXIobWx4NXZmX3BjaV9kcml2ZXIpO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xNDU5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTkxNQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDMxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIHRoZSBwcm9tcHQgaXMgYXNraW5nIGFib3V0IHdoZXRoZXIgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgY3V0LiBUaGlzIGNvbmZpcm1zIGl0IGlzIGEgUENJIGRyaXZlci4gVGhlIGNvZGUgY2hhbmdlcyBhcmUgYWxsIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NWAg4oCTIHNwZWNpZmljYWxseSB3aXRoaW4gYGVuX21haW4uY2AsIGBlbl9zdGF0cy5jYCwgYGVuLmhgLCBhbmQgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC4gSXQgbG9va3MgbGlrZSB0aGV5IGFyZSBhZGRpbmcgYSBidWZmZXIgdG8gYSBzdHJ1Y3QuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgZ29pbmcgdG8gYmUgYSBub24tc3RhcnRlciBmb3IgZnV6emluZywgd2hpY2ggbWVhbnMgdGhlIFdvcnRoRnV6emluZyBwYXJhbWV0ZXIgc2hvdWxkIGJlIGZhbHNlLgoKTGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaCBtZXRob2RpY2FsbHkuIElzIHRoZXJlICphbnkqIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBhbiBtbHg1IGRldmljZSBpbiB0aGUga2VybmVsPyBJIHJlbWVtYmVyIHRoYXQgdGhlcmUmIzM5O3Mgbm90LiBObywgdGhlcmUmIzM5O3Mgbm90aGluZyBJIGNhbiB0aGluayBvZiBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLiBXYWl0LCB3aGF0IGFib3V0IGBuZXRkZXZzaW1gPyBEb2VzICp0aGF0KiBlbXVsYXRlIG1seDU/IE5vLCB0aGF0IGlzIHRoZXJlIHRvIGVtdWxhdGUgYSBnZW5lcmljIG5ldHdvcmsgZGV2aWNlLCBmb3IgdGVzdGluZyBkZXZsaW5rIGFuZCB0YyBvZmZsb2Fkcy4gV2hhdCBhYm91dCBgdmRwYWA/IGB2ZHBhX3NpbWAgc3BlY2lmaWNhbGx5IGVtdWxhdGVzIHZpcnRpbywgbm90IG1seDUuCgpTbywgcmVhbGlzdGljYWxseSwgbWx4NSBjb2RlIHBhdGhzIGFyZSAqY29tcGxldGVseSogaW5hY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgaGFyZHdhcmUgcGFzc3Rocm91Z2guIFRoZSBwcm9tcHQgKmV4cGxpY2l0bHkqIHN0YXRlcyB0aGF0IHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgaW52b2x2ZSB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHRoZXNlIGVudmlyb25tZW50cy4gVGhlIHByb21wdCBzcGVjaWZpZXMgdGhpcyBmb3IgdGhpbmdzIHN1Y2ggYXMgVVNCIGdhZGdldHMgYW5kIG1hYzgwMjExX2h3c2ltLgoKU2luY2UgdGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIG1seDUgZHJpdmVyIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSwgdGhlIGNoYW5nZXMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gKm91ciogZnV6emluZyBlbnZpcm9ubWVudC4KCk5vdywgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gSXMgdGhhdCBgZXRodG9vbF9mZWNfaGlzdGAgc3RydWN0dXJlICpvbmx5KiB1c2VkIHdpdGhpbiB0aGUgbWx4NSBkcml2ZXI/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGluY2x1ZGUgZmlsZSBgaW5jbHVkZS9saW51eC9ldGh0b29sLmhgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gT2theSwgSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudC4gVGhlIFdvcnRoRnV6emluZyBwYXJhbWV0ZXIgc2hvdWxkIGJlIGZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldGh0b29sX2ZlY19oaXN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zdGF0aXN0aWNzLnJzdD0yMzc9dGhlbSB3aXRoIDAuXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3N0YXRpc3RpY3MucnN0LTI0MS0tIGBgc3RydWN0IGV0aHRvb2xfZXRoX3BoeV9zdGF0c2BgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc3RhdGlzdGljcy5yc3Q6MjQyOi0gYGBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdGBgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc3RhdGlzdGljcy5yc3QtMjQzLS0gYGBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHNgYFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmM9MzIwOD1zdGF0aWMgaW50IGJueHRfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYy0zMjUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYzozMjU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSBibnh0X2ZlY19yYW5nZXNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzI1NS1cdHsgMCwgMH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYz0zMjc0PXN0YXRpYyB2b2lkIGJueHRfaHdybV9wb3J0X3BoeV9mZHJzdGF0KHN0cnVjdCBibnh0ICpicCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmM6MzI3NTpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzI3Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jOjMyNzc6XHRzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF92YWx1ZSAqdmFsdWVzID0gaGlzdC1cdTAwM2V2YWx1ZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jLTMyNzgtXHRzdHJ1Y3QgaHdybV9wb3J0X3BoeV9mZHJzdGF0X291dHB1dCAqcmVzcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jPTMzMDQ9c3RhdGljIHZvaWQgYm54dF9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jLTMzMDUtXHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYzozMzA2Olx0XHRcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzMwNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmM9OTMyPXN0YXRpYyB2b2lkIGZ1bl9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvZnVuZXRoX2V0aHRvb2wuYy05MzMtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpzdGF0cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfZXRodG9vbC5jOjkzNDpcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfZXRodG9vbC5jLTkzNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM19ldGh0b29sLmM9MTY2ND1zdGF0aWMgdm9pZCBobnMzX2dldF9mZWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZXRodG9vbC5jLTE2NjUtXHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM19ldGh0b29sLmM6MTY2NjpcdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2V0aHRvb2wuYy0xNjY3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYz00NjM2PXN0YXRpYyB2b2lkIGljZV9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00NjM3LVx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM6NDYzODpcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ2Mzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuYz0xMjk3PXN0YXRpYyB2b2lkIG90eDJfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jLTEyOTgtXHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jOjEyOTk6XHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jLTEzMDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmM9MTkyNj1zdGF0aWMgdm9pZCBtbHg1ZV9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jLTE5MjctXHRcdFx0XHRzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgKmZlY19zdGF0cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmM6MTkyODpcdFx0XHRcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuYy0xOTI5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYz0xNTUyPWZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmM6MTU1MzpcdFx0XHQgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICpyYW5nZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYy0xNTU0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYz0xNTg1PXN0YXRpYyB2b2lkIGZlY19yc19oaXN0b2dyYW1fZmlsbF9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE1ODYtXHRcdFx0XHRcdHU4IG51bV9vZl9iaW5zLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmM6MTU4NzpcdFx0XHRcdFx0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYy0xNTg4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYz0xNjExPXN0YXRpYyB2b2lkIGZlY19zZXRfaGlzdG9ncmFtc19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IG1vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYzoxNjEyOlx0XHRcdFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE2MTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jPTE2MzQ9dm9pZCBtbHg1ZV9zdGF0c19mZWNfZ2V0KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMtMTYzNS1cdFx0XHQgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYzoxNjM2Olx0XHRcdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE2Mzcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5oPTExOT12b2lkIG1seDVlX3N0YXRzX2ZlY19nZXQoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuaC0xMjAtXHRcdFx0IHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmg6MTIxOlx0XHRcdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuaC0xMjItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19ldGh0b29sLmM9MTg2Mj1mYm5pY19nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuYy0xODYzLVx0XHQgICAgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuYzoxODY0Olx0XHQgICAgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuYy0xODY1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZXRodG9vbC5jPTIxOT1zdGF0aWMgdm9pZCBlZnhfZXRodG9vbF9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2V0aHRvb2wuYy0yMjAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgKmZlY19zdGF0cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9ldGh0b29sLmM6MjIxOlx0XHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZXRodG9vbC5jLTIyMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL3NpZW5hL2V0aHRvb2wuYz0yMTk9c3RhdGljIHZvaWQgZWZ4X2V0aHRvb2xfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2RldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9zaWVuYS9ldGh0b29sLmMtMjIwLVx0XHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvc2llbmEvZXRodG9vbC5jOjIyMTpcdFx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL3NpZW5hL2V0aHRvb2wuYy0yMjIte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM9MTUyPW5zaW1fc2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2ZlY3BhcmFtICpmZWNwYXJhbSlcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jLTE2Ny1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM6MTY4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSBuZXRkZXZzaW1fZmVjX3Jhbmdlc1tdID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy0xNjktXHR7IDAsIDB9LFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM9MTc2PW5zaW1fZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgKmZlY19zdGF0cyxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM6MTc3Olx0XHQgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmMtMTc4LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM6MTc5Olx0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfdmFsdWUgKnZhbHVlcyA9IGhpc3QtXHUwMDNldmFsdWVzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy0xODAtXG4tLVxuaW5jbHVkZS9saW51eC9ldGh0b29sLmg9NTMzPXN0cnVjdCBldGh0b29sX3BhdXNlX3N0YXRzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC01NDgtLyoqXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDo1NDk6ICogc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgLSBlcnJvciBiaXRzIHJhbmdlIGZvciBGRUMgaGlzdG9ncmFtXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC01NTAtICogc3RhdGlzdGljc1xuLS1cbmluY2x1ZGUvbGludXgvZXRodG9vbC5oLTU1My0gKi9cbmluY2x1ZGUvbGludXgvZXRodG9vbC5oOjU1NDpzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSB7XG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC01NTUtXHR1MTYgbG93O1xuLS1cbmluY2x1ZGUvbGludXgvZXRodG9vbC5oLTU1OC1cbmluY2x1ZGUvbGludXgvZXRodG9vbC5oOjU1OTpzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCB7XG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDo1NjA6XHRzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF92YWx1ZSB7XG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC01NjEtXHRcdHU2NCBzdW07XG4tLVxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTYzLVx0fSB2YWx1ZXNbRVRIVE9PTF9GRUNfSElTVF9NQVhdO1xuaW5jbHVkZS9saW51eC9ldGh0b29sLmg6NTY0Olx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKnJhbmdlcztcbmluY2x1ZGUvbGludXgvZXRodG9vbC5oOjU2NTpcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlIHJhbmdlc19idWZbRVRIVE9PTF9GRUNfSElTVF9NQVhdO1xuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTY2LX07XG4tLVxuaW5jbHVkZS9saW51eC9ldGh0b29sLmg9MTIwMD1zdHJ1Y3QgZXRodG9vbF9vcHMge1xuLS1cbmluY2x1ZGUvbGludXgvZXRodG9vbC5oLTEzMjAtXHRcdFx0XHQgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDoxMzIxOlx0XHRcdFx0IHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KTtcbmluY2x1ZGUvbGludXgvZXRodG9vbC5oLTEzMjItXHRpbnRcdCgqZ2V0X2ZlY3BhcmFtKShzdHJ1Y3QgbmV0X2RldmljZSAqLFxuLS1cbm5ldC9ldGh0b29sL2ZlYy5jPTExPXN0cnVjdCBmZWNfcmVwbHlfZGF0YSB7XG4tLVxubmV0L2V0aHRvb2wvZmVjLmMtMTktXHR9IGNvcnIsIHVuY29yciwgY29ycl9iaXRzO1xubmV0L2V0aHRvb2wvZmVjLmM6MjA6XHRzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCBmZWNfc3RhdF9oaXN0O1xubmV0L2V0aHRvb2wvZmVjLmMtMjEtfTtcbi0tXG5uZXQvZXRodG9vbC9mZWMuYz0xODA9c3RhdGljIGludCBmZWNfcHV0X2hpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9ldGh0b29sL2ZlYy5jOjE4MTpcdFx0XHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcbm5ldC9ldGh0b29sL2ZlYy5jLTE4Mi17XG5uZXQvZXRodG9vbC9mZWMuYzoxODM6XHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqcmFuZ2VzID0gaGlzdC1cdTAwM2VyYW5nZXM7XG5uZXQvZXRodG9vbC9mZWMuYzoxODQ6XHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF92YWx1ZSAqdmFsdWVzID0gaGlzdC1cdTAwM2V2YWx1ZXM7XG5uZXQvZXRodG9vbC9mZWMuYy0xODUtXHRzdHJ1Y3QgbmxhdHRyICpuZXN0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjQ2OAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBgcmFuZ2VzX2J1ZmAgdG8gYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YCBpbiBgaW5jbHVkZS9saW51eC9ldGh0b29sLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBhIHN0cnVjdCBjaGFuZ2UuLi4gbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGlzIGlzIHVzZWQuJiMzNDsgSSBzZWUgaXQmIzM5O3MgdXNlZCBpbiBgbmV0L2V0aHRvb2wvZmVjLmNgIGFuZCBhIGZldyBkcml2ZXJzLiBUaGUga2V5IGhlcmUgaXMgdGhhdCB0aGUgcGF0Y2ggYWxzbyB0d2Vha3MgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jYCBhbmQgYGVuX21haW4uY2AgdG8gKnVzZSogdGhpcyBuZXcgYnVmZmVyIGluc3RlYWQgb2YgYWxsb2NhdGluZyBpdCBvbiB0aGUgZmx5LiBIb2xkIG9uIGEgc2Vjb25kLCB0aGUgcmVhbCBsb2dpYyBjaGFuZ2UgaXMgKndpdGhpbiogdGhlIGBtbHg1YCBkcml2ZXIsIHdoaWNoIGlzIGhhcmR3YXJlLXNwZWNpZmljIGFuZCB0aHVzLCB1bmZvcnR1bmF0ZWx5LCB1bnJlYWNoYWJsZSBpbiBteSBmdXp6aW5nIHNldHVwLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSBubyBvdGhlciBkcml2ZXJzIGFyZSBtb2RpZmllZC4gTm9wZSwganVzdCBgbWx4NWAuIFNvLCBlZmZlY3RpdmVseSwgdGhlIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgZW50aXJlbHkgbG9jYWxpemVkIHRvIHRoZSBgbWx4NWAgZHJpdmVyLiBTaW5jZSB0aGF0IGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBoYXJkd2FyZSBhbmQgSSYjMzk7bSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBpdCYjMzk7cyBhIGRlYWQgZW5kIGZvciBteSBmdXp6aW5nIGVmZm9ydHMuIEl0IGRvZXNuJiMzOTt0IHNlZW0gbGlrZSB0aGUgcGF0Y2ggY2FuIGNhdXNlIGFueSBwcm9ibGVtcyBmb3IgbXkgdGVzdHMuCgpCdXQsIGJlaW5nIHRoZSBwYXJhbm9pZCBleHBlcnQgdGhhdCBJIGFtLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhpczogdGhlIGNoYW5nZSBpbiBgZXRodG9vbC5oYCBpcyBqdXN0IGEgc3RydWN0IGRlZmluaXRpb24gY2hhbmdlLCBidXQgaXQgaW5jcmVhc2VzIHRoZSBzdHJ1Y3Qgc2l6ZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIG5vdCBnb2luZyB0byBiaXRlIHVzIGRvd24gdGhlIGxpbmUuIFRoZSBzaXplIGluY3JlYXNlcyBieSBgRVRIVE9PTF9GRUNfSElTVF9NQVggKiBzaXplb2Yoc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UpYCB3aGljaCBpcyA4ICogNCA9IDMyIGJ5dGVzLiBOb3csIHdoZXJlIGlzIGBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdGAgZW1iZWRkZWQ/IEFoLCBpdCYjMzk7cyBlbWJlZGRlZCB3aXRoaW4gYHN0cnVjdCBmZWNfcmVwbHlfZGF0YWAgaW4gYG5ldC9ldGh0b29sL2ZlYy5jYC4gVGhlIHF1ZXN0aW9uIG5vdyBpcywgaXMgYHN0cnVjdCBmZWNfcmVwbHlfZGF0YWAgYWxsb2NhdGVkIHN0YXRpY2FsbHkgb3IgZHluYW1pY2FsbHksIGVpdGhlciBvbiBzdGFjayBvciBoZWFwPyBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYG5ldC9ldGh0b29sL2ZlYy5jYCBmb3IgYWxsb2NhdGlvbiBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmZWNfcmVwbHlfZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZXRodG9vbC9mZWMuYz03PXN0cnVjdCBmZWNfcmVxX2luZm8ge1xuLS1cbm5ldC9ldGh0b29sL2ZlYy5jLTEwLVxubmV0L2V0aHRvb2wvZmVjLmM6MTE6c3RydWN0IGZlY19yZXBseV9kYXRhIHtcbm5ldC9ldGh0b29sL2ZlYy5jLTEyLVx0c3RydWN0IGV0aG5sX3JlcGx5X2RhdGFcdFx0YmFzZTtcbi0tXG5uZXQvZXRodG9vbC9mZWMuYy0yMy0jZGVmaW5lIEZFQ19SRVBEQVRBKF9fcmVwbHlfYmFzZSkgXFxcbm5ldC9ldGh0b29sL2ZlYy5jOjI0Olx0Y29udGFpbmVyX29mKF9fcmVwbHlfYmFzZSwgc3RydWN0IGZlY19yZXBseV9kYXRhLCBiYXNlKVxubmV0L2V0aHRvb2wvZmVjLmMtMjUtXG4tLVxubmV0L2V0aHRvb2wvZmVjLmM9OTQ9c3RhdGljIGludCBmZWNfcHJlcGFyZV9kYXRhKGNvbnN0IHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXG4tLVxubmV0L2V0aHRvb2wvZmVjLmMtOTgtXHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyhhY3RpdmVfZmVjX21vZGVzKSA9IHt9O1xubmV0L2V0aHRvb2wvZmVjLmM6OTk6XHRzdHJ1Y3QgZmVjX3JlcGx5X2RhdGEgKmRhdGEgPSBGRUNfUkVQREFUQShyZXBseV9iYXNlKTtcbm5ldC9ldGh0b29sL2ZlYy5jLTEwMC1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSByZXBseV9iYXNlLVx1MDAzZWRldjtcbi0tXG5uZXQvZXRodG9vbC9mZWMuYz0xNDY9c3RhdGljIGludCBmZWNfcmVwbHlfc2l6ZShjb25zdCBzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxuLS1cbm5ldC9ldGh0b29sL2ZlYy5jLTE0OS1cdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVx1MDAzZWZsYWdzIFx1MDAyNiBFVEhUT09MX0ZMQUdfQ09NUEFDVF9CSVRTRVRTO1xubmV0L2V0aHRvb2wvZmVjLmM6MTUwOlx0Y29uc3Qgc3RydWN0IGZlY19yZXBseV9kYXRhICpkYXRhID0gRkVDX1JFUERBVEEocmVwbHlfYmFzZSk7XG5uZXQvZXRodG9vbC9mZWMuYy0xNTEtXHRpbnQgbGVuID0gMDtcbi0tXG5uZXQvZXRodG9vbC9mZWMuYz0xODA9c3RhdGljIGludCBmZWNfcHV0X2hpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvZXRodG9vbC9mZWMuYy0yMzQtXG5uZXQvZXRodG9vbC9mZWMuYzoyMzU6c3RhdGljIGludCBmZWNfcHV0X3N0YXRzKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBmZWNfcmVwbHlfZGF0YSAqZGF0YSlcbm5ldC9ldGh0b29sL2ZlYy5jLTIzNi17XG4tLVxubmV0L2V0aHRvb2wvZmVjLmM9MjY1PXN0YXRpYyBpbnQgZmVjX2ZpbGxfcmVwbHkoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvZXRodG9vbC9mZWMuYy0yNjktXHRib29sIGNvbXBhY3QgPSByZXFfYmFzZS1cdTAwM2VmbGFncyBcdTAwMjYgRVRIVE9PTF9GTEFHX0NPTVBBQ1RfQklUU0VUUztcbm5ldC9ldGh0b29sL2ZlYy5jOjI3MDpcdGNvbnN0IHN0cnVjdCBmZWNfcmVwbHlfZGF0YSAqZGF0YSA9IEZFQ19SRVBEQVRBKHJlcGx5X2Jhc2UpO1xubmV0L2V0aHRvb2wvZmVjLmMtMjcxLVx0aW50IHJldDtcbi0tXG5uZXQvZXRodG9vbC9mZWMuYz0zNTA9Y29uc3Qgc3RydWN0IGV0aG5sX3JlcXVlc3Rfb3BzIGV0aG5sX2ZlY19yZXF1ZXN0X29wcyA9IHtcbi0tXG5uZXQvZXRodG9vbC9mZWMuYy0zNTQtXHQucmVxX2luZm9fc2l6ZVx0XHQ9IHNpemVvZihzdHJ1Y3QgZmVjX3JlcV9pbmZvKSxcbm5ldC9ldGh0b29sL2ZlYy5jOjM1NTpcdC5yZXBseV9kYXRhX3NpemVcdD0gc2l6ZW9mKHN0cnVjdCBmZWNfcmVwbHlfZGF0YSksXG5uZXQvZXRodG9vbC9mZWMuYy0zNTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTUyCgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDEyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBldGh0b29sIG5ldGxpbmsgZnJhbWV3b3JrIGNoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgaW50byB0aGlzLiBUaGUgYGV0aG5sX2ZlY19yZXF1ZXN0X29wc2Agc3RydWN0dXJlIG5vdyBzcGVjaWZpZXMgYSBgLnJlcGx5X2RhdGFfc2l6ZWAgb2YgYHNpemVvZihzdHJ1Y3QgZmVjX3JlcGx5X2RhdGEpYC4gVGhpcyB0ZWxscyB0aGUgZXRodG9vbCBuZXRsaW5rIGZyYW1ld29yayBob3cgbXVjaCBtZW1vcnkgdG8gYWxsb2NhdGUgZm9yIHRoZSByZXBseSBkYXRhLiBUaGUgaW5jcmVhc2UgaXMgYWN0dWFsbHkgcHJldHR5IG1pbm9yLCBvbmx5IDMyIGJ5dGVzLCBhbmQgdGhlIGZyYW1ld29yayBpdHNlbGYgaGFuZGxlcyB0aGUgZHluYW1pYyBhbGxvY2F0aW9uLCBzbyB0aGF0JiMzOTtzIGdvb2QuIEZ1bmN0aW9uYWxseSwgdGhlIGltcGFjdCBpcyBpc29sYXRlZCB0byB0aGUgYG1seDVgIGRyaXZlci4gQnV0IGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogYG1seDVgIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLiBCZWNhdXNlIGl0JiMzOTtzIGhhcmR3YXJlLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgdHJpZ2dlcmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQgbWVhbnMsIGZyb20gYSBwcmFjdGljYWwgZnV6emluZyBzdGFuZHBvaW50LCBpdCYjMzk7cyBub3QgYSByZWxldmFudCBhcmVhIG9mIGNvbmNlcm4uIFRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIE5vIHBvaW50IHNwZW5kaW5nIHJlc291cmNlcyBvbiBzb21ldGhpbmcgdGhhdCB3ZSBjYW4mIzM5O3QgZWZmZWN0aXZlbHkgdGVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgdG8gdXNlIGFuIGVtYmVkZGVkIGJ1ZmZlciBmb3IgRkVDIGhpc3RvZ3JhbSByYW5nZXMgaW5zdGVhZCBvZiBkeW5hbWljYWxseSBhbGxvY2F0aW5nIGl0LiBTaW5jZSBtbHg1IGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBUaGUgY2hhbmdlIHRvIGBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdGAgb25seSBpbmNyZWFzZXMgaXRzIHNpemUgc2xpZ2h0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBuZXcgcmVhY2hhYmxlIGxvZ2ljIGZvciBvdGhlciBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIHRvIHVzZSBhbiBlbWJlZGRlZCBidWZmZXIgZm9yIEZFQyBoaXN0b2dyYW0gcmFuZ2VzIGluc3RlYWQgb2YgZHluYW1pY2FsbHkgYWxsb2NhdGluZyBpdC4gU2luY2UgbWx4NSBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4gVGhlIGNoYW5nZSB0byBgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RgIG9ubHkgaW5jcmVhc2VzIGl0cyBzaXplIHNsaWdodGx5IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IHJlYWNoYWJsZSBsb2dpYyBmb3Igb3RoZXIgZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoxOTo0My4zNDI1MjYyODFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Nzc0NzI4MTUxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIHRvIHVzZSBhbiBlbWJlZGRlZCBidWZmZXIgZm9yIEZFQyBoaXN0b2dyYW0gcmFuZ2VzIGluc3RlYWQgb2YgZHluYW1pY2FsbHkgYWxsb2NhdGluZyBpdC4gU2luY2UgbWx4NSBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4gVGhlIGNoYW5nZSB0byBgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RgIG9ubHkgaW5jcmVhc2VzIGl0cyBzaXplIHNsaWdodGx5IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IHJlYWNoYWJsZSBsb2dpYyBmb3Igb3RoZXIgZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjE5OjQzLjM0MjUzMzIxMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI3NzI4OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTBlMmQyMDQ4NTg3ZmE2ZWU1OWQxOThlY2ZhYWM1NjUyMzkzMjNkY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAyNCAwODoxOTo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oXFxuaW5kZXggZDUwNzI4OTA5NmMyMDYuLjY4NjdhNWFlZDQyYzA4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcXG5AQCAtOTg0LDcgKzk4NCw2IEBAIHN0cnVjdCBtbHg1ZV9wcml2IHtcXG4gXFx0c3RydWN0IG1seDVlX21xcHJpb19ybCAgICAqbXFwcmlvX3JsO1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICAgICAgICAgICAgICpkZnNfcm9vdDtcXG4gXFx0c3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICpkZXZjb207XFxuLVxcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICpmZWNfcmFuZ2VzO1xcbiB9O1xcbiBcXG4gc3RhdGljIGlubGluZSB1MTYgbWx4NWVfc3RhdHNfbmNoX3JlYWQoY29uc3Qgc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXFxuaW5kZXggYzFhY2I5MDEyZDNmOWUuLjdkNDdhMWRhOGI2YjY0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXFxuQEAgLTY0MTUsMTQgKzY0MTUsOCBAQCBpbnQgbWx4NWVfcHJpdl9pbml0KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxcbiBcXHRpZiAoIXByaXYtXFx1MDAzZWNoYW5uZWxfc3RhdHMpXFxuIFxcdFxcdGdvdG8gZXJyX2ZyZWVfdHhfcmF0ZXM7XFxuIFxcbi1cXHRwcml2LVxcdTAwM2VmZWNfcmFuZ2VzID0ga3phbGxvY19vYmpzKCpwcml2LVxcdTAwM2VmZWNfcmFuZ2VzLCBFVEhUT09MX0ZFQ19ISVNUX01BWCk7XFxuLVxcdGlmICghcHJpdi1cXHUwMDNlZmVjX3JhbmdlcylcXG4tXFx0XFx0Z290byBlcnJfZnJlZV9jaGFubmVsX3N0YXRzO1xcbi1cXG4gXFx0cmV0dXJuIDA7XFxuIFxcbi1lcnJfZnJlZV9jaGFubmVsX3N0YXRzOlxcbi1cXHRrZnJlZShwcml2LVxcdTAwM2VjaGFubmVsX3N0YXRzKTtcXG4gZXJyX2ZyZWVfdHhfcmF0ZXM6XFxuIFxcdGtmcmVlKHByaXYtXFx1MDAzZXR4X3JhdGVzKTtcXG4gZXJyX2ZyZWVfdHhxMnNxX3N0YXRzOlxcbkBAIC02NDQ3LDcgKzY0NDEsNiBAQCB2b2lkIG1seDVlX3ByaXZfY2xlYW51cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcXG4gXFx0aWYgKCFwcml2LVxcdTAwM2VtZGV2KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRrZnJlZShwcml2LVxcdTAwM2VmZWNfcmFuZ2VzKTtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHByaXYtXFx1MDAzZXN0YXRzX25jaDsgaSsrKVxcbiBcXHRcXHRrdmZyZWUocHJpdi1cXHUwMDNlY2hhbm5lbF9zdGF0c1tpXSk7XFxuIFxcdGtmcmVlKHByaXYtXFx1MDAzZWNoYW5uZWxfc3RhdHMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXFxuaW5kZXggZGUzOGI2MDgwNmMyNjQuLmU3ZTZkYjdmNmJmMTc1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmNcXG5AQCAtMTU1MCw3ICsxNTUwLDcgQEAgc3RhdGljIGJvb2wgZmVjX3JzX3ZhbGlkYXRlX2hpc3RfdHlwZShpbnQgbW9kZSwgaW50IGhpc3RfdHlwZSlcXG4gXFxuIHN0YXRpYyB1OFxcbiBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgbW9kZSxcXG4tXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqKnJhbmdlcylcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqcmFuZ2VzKVxcbiB7XFxuIFxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gcHJpdi1cXHUwMDNlbWRldjtcXG4gXFx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKHBwaGNyX3JlZyldID0gezB9O1xcbkBAIC0xNTU4LDggKzE1NTgsNiBAQCBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgbW9kZSxcXG4gXFx0aW50IHN6ID0gTUxYNV9TVF9TWl9CWVRFUyhwcGhjcl9yZWcpO1xcbiBcXHR1OCBoaXN0X3R5cGUsIG51bV9vZl9iaW5zO1xcbiBcXG4tXFx0bWVtc2V0KHByaXYtXFx1MDAzZWZlY19yYW5nZXMsIDAsXFxuLVxcdCAgICAgICBFVEhUT09MX0ZFQ19ISVNUX01BWCAqIHNpemVvZigqcHJpdi1cXHUwMDNlZmVjX3JhbmdlcykpO1xcbiBcXHRNTFg1X1NFVChwcGhjcl9yZWcsIGluLCBsb2NhbF9wb3J0LCAxKTtcXG4gXFx0aWYgKG1seDVfY29yZV9hY2Nlc3NfcmVnKG1kZXYsIGluLCBzeiwgb3V0LCBzeiwgTUxYNV9SRUdfUFBIQ1IsIDAsIDApKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG5AQCAtMTU3NSwxMiArMTU3MywxMSBAQCBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgbW9kZSxcXG4gXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBudW1fb2ZfYmluczsgaSsrKSB7XFxuIFxcdFxcdHZvaWQgKmJpbl9yYW5nZSA9IE1MWDVfQUREUl9PRihwcGhjcl9yZWcsIG91dCwgYmluX3JhbmdlW2ldKTtcXG4gXFxuLVxcdFxcdHByaXYtXFx1MDAzZWZlY19yYW5nZXNbaV0uaGlnaCA9IE1MWDVfR0VUKGJpbl9yYW5nZV9sYXlvdXQsIGJpbl9yYW5nZSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGhpZ2hfdmFsKTtcXG4tXFx0XFx0cHJpdi1cXHUwMDNlZmVjX3Jhbmdlc1tpXS5sb3cgPSBNTFg1X0dFVChiaW5fcmFuZ2VfbGF5b3V0LCBiaW5fcmFuZ2UsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgIGxvd192YWwpO1xcbitcXHRcXHRyYW5nZXNbaV0uaGlnaCA9IE1MWDVfR0VUKGJpbl9yYW5nZV9sYXlvdXQsIGJpbl9yYW5nZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICBoaWdoX3ZhbCk7XFxuK1xcdFxcdHJhbmdlc1tpXS5sb3cgPSBNTFg1X0dFVChiaW5fcmFuZ2VfbGF5b3V0LCBiaW5fcmFuZ2UsXFxuK1xcdFxcdFxcdFxcdFxcdCBsb3dfdmFsKTtcXG4gXFx0fVxcbi1cXHQqcmFuZ2VzID0gcHJpdi1cXHUwMDNlZmVjX3JhbmdlcztcXG4gXFxuIFxcdHJldHVybiBudW1fb2ZfYmlucztcXG4gfVxcbkBAIC0xNjIyLDEwICsxNjE5LDEyIEBAIHN0YXRpYyB2b2lkIGZlY19zZXRfaGlzdG9ncmFtc19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IG1vZGUsXFxuIFxcdGNhc2UgTUxYNUVfRkVDX0xMUlNfMjcyXzI1N18xOlxcbiBcXHRjYXNlIE1MWDVFX0ZFQ19SU181NDRfNTE0X0lOVEVSTEVBVkVEX1FVQUQ6XFxuIFxcdFxcdG51bV9vZl9iaW5zID1cXG4tXFx0XFx0XFx0ZmVjX3JzX2hpc3RvZ3JhbV9maWxsX3Jhbmdlcyhwcml2LCBtb2RlLCBcXHUwMDI2aGlzdC1cXHUwMDNlcmFuZ2VzKTtcXG4tXFx0XFx0aWYgKG51bV9vZl9iaW5zKVxcbitcXHRcXHRcXHRmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHByaXYsIG1vZGUsIGhpc3QtXFx1MDAzZXJhbmdlc19idWYpO1xcbitcXHRcXHRpZiAobnVtX29mX2JpbnMpIHtcXG4rXFx0XFx0XFx0aGlzdC1cXHUwMDNlcmFuZ2VzID0gaGlzdC1cXHUwMDNlcmFuZ2VzX2J1ZjtcXG4gXFx0XFx0XFx0cmV0dXJuIGZlY19yc19oaXN0b2dyYW1fZmlsbF9zdGF0cyhwcml2LCBudW1fb2ZfYmlucyxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgaGlzdCk7XFxuK1xcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdHJldHVybjtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxcbmluZGV4IDVkNDkxYTk4MjY1ZWY5Li4xMjY4M2I1ZDEyNWU0MSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXFxuQEAgLTU2Miw2ICs1NjIsNyBAQCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCB7XFxuIFxcdFxcdHU2NCBwZXJfbGFuZVtFVEhUT09MX01BWF9MQU5FU107XFxuIFxcdH0gdmFsdWVzW0VUSFRPT0xfRkVDX0hJU1RfTUFYXTtcXG4gXFx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKnJhbmdlcztcXG4rXFx0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgcmFuZ2VzX2J1ZltFVEhUT09MX0ZFQ19ISVNUX01BWF07XFxuIH07XFxuIC8qKlxcbiAgKiBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgLSBzdGF0aXN0aWNzIGZvciBJRUVFIDgwMi4zIEZFQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoxOTo0NC4wNzEyNzQwMjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2NzAxODUyNDQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIHRvIHVzZSBhbiBlbWJlZGRlZCBidWZmZXIgZm9yIEZFQyBoaXN0b2dyYW0gcmFuZ2VzIGluc3RlYWQgb2YgZHluYW1pY2FsbHkgYWxsb2NhdGluZyBpdC4gU2luY2UgbWx4NSBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4gVGhlIGNoYW5nZSB0byBgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RgIG9ubHkgaW5jcmVhc2VzIGl0cyBzaXplIHNsaWdodGx5IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IHJlYWNoYWJsZSBsb2dpYyBmb3Igb3RoZXIgZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTBlMmQyMDQ4NTg3ZmE2ZWU1OWQxOThlY2ZhYWM1NjUyMzkzMjNkY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDA4OjE5OjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaFxuaW5kZXggZDUwNzI4OTA5NmMyMDYuLjY4NjdhNWFlZDQyYzA4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oXG5AQCAtOTg0LDcgKzk4NCw2IEBAIHN0cnVjdCBtbHg1ZV9wcml2IHtcbiBcdHN0cnVjdCBtbHg1ZV9tcXByaW9fcmwgICAgKm1xcHJpb19ybDtcbiBcdHN0cnVjdCBkZW50cnkgICAgICAgICAgICAgKmRmc19yb290O1xuIFx0c3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICpkZXZjb207XG4tXHRzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqZmVjX3JhbmdlcztcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmUgdTE2IG1seDVlX3N0YXRzX25jaF9yZWFkKGNvbnN0IHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXG5pbmRleCBjMWFjYjkwMTJkM2Y5ZS4uN2Q0N2ExZGE4YjZiNjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXG5AQCAtNjQxNSwxNCArNjQxNSw4IEBAIGludCBtbHg1ZV9wcml2X2luaXQoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXG4gXHRpZiAoIXByaXYtXHUwMDNlY2hhbm5lbF9zdGF0cylcbiBcdFx0Z290byBlcnJfZnJlZV90eF9yYXRlcztcbiBcbi1cdHByaXYtXHUwMDNlZmVjX3JhbmdlcyA9IGt6YWxsb2Nfb2JqcygqcHJpdi1cdTAwM2VmZWNfcmFuZ2VzLCBFVEhUT09MX0ZFQ19ISVNUX01BWCk7XG4tXHRpZiAoIXByaXYtXHUwMDNlZmVjX3Jhbmdlcylcbi1cdFx0Z290byBlcnJfZnJlZV9jaGFubmVsX3N0YXRzO1xuLVxuIFx0cmV0dXJuIDA7XG4gXG4tZXJyX2ZyZWVfY2hhbm5lbF9zdGF0czpcbi1cdGtmcmVlKHByaXYtXHUwMDNlY2hhbm5lbF9zdGF0cyk7XG4gZXJyX2ZyZWVfdHhfcmF0ZXM6XG4gXHRrZnJlZShwcml2LVx1MDAzZXR4X3JhdGVzKTtcbiBlcnJfZnJlZV90eHEyc3Ffc3RhdHM6XG5AQCAtNjQ0Nyw3ICs2NDQxLDYgQEAgdm9pZCBtbHg1ZV9wcml2X2NsZWFudXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4gXHRpZiAoIXByaXYtXHUwMDNlbWRldilcbiBcdFx0cmV0dXJuO1xuIFxuLVx0a2ZyZWUocHJpdi1cdTAwM2VmZWNfcmFuZ2VzKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlc3RhdHNfbmNoOyBpKyspXG4gXHRcdGt2ZnJlZShwcml2LVx1MDAzZWNoYW5uZWxfc3RhdHNbaV0pO1xuIFx0a2ZyZWUocHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXG5pbmRleCBkZTM4YjYwODA2YzI2NC4uZTdlNmRiN2Y2YmYxNzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmNcbkBAIC0xNTUwLDcgKzE1NTAsNyBAQCBzdGF0aWMgYm9vbCBmZWNfcnNfdmFsaWRhdGVfaGlzdF90eXBlKGludCBtb2RlLCBpbnQgaGlzdF90eXBlKVxuIFxuIHN0YXRpYyB1OFxuIGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxuLVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKipyYW5nZXMpXG4rXHRcdFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqcmFuZ2VzKVxuIHtcbiBcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gcHJpdi1cdTAwM2VtZGV2O1xuIFx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKHBwaGNyX3JlZyldID0gezB9O1xuQEAgLTE1NTgsOCArMTU1OCw2IEBAIGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxuIFx0aW50IHN6ID0gTUxYNV9TVF9TWl9CWVRFUyhwcGhjcl9yZWcpO1xuIFx0dTggaGlzdF90eXBlLCBudW1fb2ZfYmlucztcbiBcbi1cdG1lbXNldChwcml2LVx1MDAzZWZlY19yYW5nZXMsIDAsXG4tXHQgICAgICAgRVRIVE9PTF9GRUNfSElTVF9NQVggKiBzaXplb2YoKnByaXYtXHUwMDNlZmVjX3JhbmdlcykpO1xuIFx0TUxYNV9TRVQocHBoY3JfcmVnLCBpbiwgbG9jYWxfcG9ydCwgMSk7XG4gXHRpZiAobWx4NV9jb3JlX2FjY2Vzc19yZWcobWRldiwgaW4sIHN6LCBvdXQsIHN6LCBNTFg1X1JFR19QUEhDUiwgMCwgMCkpXG4gXHRcdHJldHVybiAwO1xuQEAgLTE1NzUsMTIgKzE1NzMsMTEgQEAgZmVjX3JzX2hpc3RvZ3JhbV9maWxsX3JhbmdlcyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IG1vZGUsXG4gXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgbnVtX29mX2JpbnM7IGkrKykge1xuIFx0XHR2b2lkICpiaW5fcmFuZ2UgPSBNTFg1X0FERFJfT0YocHBoY3JfcmVnLCBvdXQsIGJpbl9yYW5nZVtpXSk7XG4gXG4tXHRcdHByaXYtXHUwMDNlZmVjX3Jhbmdlc1tpXS5oaWdoID0gTUxYNV9HRVQoYmluX3JhbmdlX2xheW91dCwgYmluX3JhbmdlLFxuLVx0XHRcdFx0XHRcdCAgICBoaWdoX3ZhbCk7XG4tXHRcdHByaXYtXHUwMDNlZmVjX3Jhbmdlc1tpXS5sb3cgPSBNTFg1X0dFVChiaW5fcmFuZ2VfbGF5b3V0LCBiaW5fcmFuZ2UsXG4tXHRcdFx0XHRcdFx0ICAgbG93X3ZhbCk7XG4rXHRcdHJhbmdlc1tpXS5oaWdoID0gTUxYNV9HRVQoYmluX3JhbmdlX2xheW91dCwgYmluX3JhbmdlLFxuK1x0XHRcdFx0XHQgIGhpZ2hfdmFsKTtcbitcdFx0cmFuZ2VzW2ldLmxvdyA9IE1MWDVfR0VUKGJpbl9yYW5nZV9sYXlvdXQsIGJpbl9yYW5nZSxcbitcdFx0XHRcdFx0IGxvd192YWwpO1xuIFx0fVxuLVx0KnJhbmdlcyA9IHByaXYtXHUwMDNlZmVjX3JhbmdlcztcbiBcbiBcdHJldHVybiBudW1fb2ZfYmlucztcbiB9XG5AQCAtMTYyMiwxMCArMTYxOSwxMiBAQCBzdGF0aWMgdm9pZCBmZWNfc2V0X2hpc3RvZ3JhbXNfc3RhdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxuIFx0Y2FzZSBNTFg1RV9GRUNfTExSU18yNzJfMjU3XzE6XG4gXHRjYXNlIE1MWDVFX0ZFQ19SU181NDRfNTE0X0lOVEVSTEVBVkVEX1FVQUQ6XG4gXHRcdG51bV9vZl9iaW5zID1cbi1cdFx0XHRmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfcmFuZ2VzKHByaXYsIG1vZGUsIFx1MDAyNmhpc3QtXHUwMDNlcmFuZ2VzKTtcbi1cdFx0aWYgKG51bV9vZl9iaW5zKVxuK1x0XHRcdGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMocHJpdiwgbW9kZSwgaGlzdC1cdTAwM2VyYW5nZXNfYnVmKTtcbitcdFx0aWYgKG51bV9vZl9iaW5zKSB7XG4rXHRcdFx0aGlzdC1cdTAwM2VyYW5nZXMgPSBoaXN0LVx1MDAzZXJhbmdlc19idWY7XG4gXHRcdFx0cmV0dXJuIGZlY19yc19oaXN0b2dyYW1fZmlsbF9zdGF0cyhwcml2LCBudW1fb2ZfYmlucyxcbiBcdFx0XHRcdFx0XHRcdCAgIGhpc3QpO1xuK1x0XHR9XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcbmluZGV4IDVkNDkxYTk4MjY1ZWY5Li4xMjY4M2I1ZDEyNWU0MSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuQEAgLTU2Miw2ICs1NjIsNyBAQCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCB7XG4gXHRcdHU2NCBwZXJfbGFuZVtFVEhUT09MX01BWF9MQU5FU107XG4gXHR9IHZhbHVlc1tFVEhUT09MX0ZFQ19ISVNUX01BWF07XG4gXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqcmFuZ2VzO1xuK1x0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgcmFuZ2VzX2J1ZltFVEhUT09MX0ZFQ19ISVNUX01BWF07XG4gfTtcbiAvKipcbiAgKiBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgLSBzdGF0aXN0aWNzIGZvciBJRUVFIDgwMi4zIEZFQ1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MTk6NDQuMDcxMjc2NTk2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQ5MTM2NjY3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhIE1lbGxhbm94IG1seDUgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgYW5kIGV0aHRvb2wuIEl0J3MgZXNzZW50aWFsbHkgbW92aW5nIHRoZSBgZmVjX3Jhbmdlc2AgYWxsb2NhdGlvbiBmcm9tIGBtbHg1ZV9wcml2YCB0byBhbiBlbWJlZGRlZCBidWZmZXIgd2l0aGluIGBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdGAsIHdoaWNoIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIE15IGZpcnN0IHRob3VnaHQgaXM6IGRvZXMgdGhpcyB3b3JrIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgY2FuIHdlIGV2ZW4gKnRlc3QqIGl0IGluIG91ciBlbnZpcm9ubWVudD9cblxuV2XigJlyZSBtb2RpZnlpbmcgYGZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXNgIHRvIHdyaXRlIGRpcmVjdGx5IHRvIHRoZSBuZXcgYnVmZmVyIChgcmFuZ2VzX2J1ZmApIGFuZCB1cGRhdGluZyBgZmVjX3NldF9oaXN0b2dyYW1zX3N0YXRzYCBhY2NvcmRpbmdseS4gRnVuY3Rpb25hbGx5LCBpdCBzZWVtcyBzb3VuZC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXMgcmVhY2hhYmlsaXR5LiBUaGlzIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIsIHNvIHRoYXQgcmFpc2VzIGFuIGltbWVkaWF0ZSByZWQgZmxhZy4gQ2FuIHdlIGVtdWxhdGUgbWx4NSBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwPyBJIHRoaW5rIGV0aHRvb2wgc3RhdGlzdGljcyBhcmUgYWNjZXNzZWQgdGhyb3VnaCBuZXRsaW5rIG9yIGlvY3RsLCByaWdodD8gQnV0IHRoZSBkcml2ZXIgc3RpbGwgbmVlZHMgdG8gYmUgbG9hZGVkIGFuZCBhIG5ldGRldiByZWdpc3RlcmVkLlxuXG5MZXQgbWUgdGhpbmssIGRvZXMgc3l6a2FsbGVyIGhhdmUgc3VwcG9ydCBmb3IgbWx4NT8gTm8sIGl0J3Mgbm90IHRoZSBkZWZhdWx0IFFFTVUvR0NFIHNldHVwLiBPa2F5LCBzeXprYWxsZXIgZG9lc24ndCBlbXVsYXRlIHRoZSBoYXJkd2FyZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGJlY29tZXM6IGNhbiB3ZSByZWFjaCB0aGlzIGNvZGUgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmU/IFNwZWNpZmljYWxseSwgd2hlcmUgaXMgYG1seDVlX3ByaXZfaW5pdGAgY2FsbGVkPyBEdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uLCByaWdodD8gSWYgdGhlcmUncyBubyBoYXJkd2FyZSwgdGhlIGRyaXZlciB3b24ndCBwcm9iZSwgYW5kIGBtbHg1ZV9wcml2X2luaXRgIHdvbid0IGJlIGNhbGxlZC4gU28sIGNhbiB3ZSBwcm9iZSBtbHg1IHZpYSBzb21lIHNvZnR3YXJlIG1lY2hhbmlzbT9cblxuSSBuZWVkIHRvIHF1aWNrbHkgc2VhcmNoIHN5emthbGxlciBmb3IgYG1seDVgIG9yIGNoZWNrIGlmIGl0J3MgZnV6emFibGUuIFdhaXQsIHRoZSBwcm9tcHQgaXRzZWxmIHNlZW1zIHRvIGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGlzLi4uIGl0IHNheXMgdGhhdCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24gbGlrZSB1c2IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLCBhcmUgd2hhdCB3ZSdyZSBsb29raW5nIGF0LiBNbDUgaXMgYSBQQ0llIGRldmljZSwgc28gdGhhdCdzIGEgbm8tZ28uIFFFTVUgZG9lc24ndCBlbXVsYXRlIG1seDUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvdWdoLiBMZXQncyBsb29rIHVwIFFFTVUncyBzdXBwb3J0ZWQgZGV2aWNlcy4gSSByZW1lbWJlciBlMTAwMCwgcnRsODEzOSwgdmlydGlvLW5ldCwgdm14bmV0MywgaWdiLi4uIG5vbmUgb2Ygd2hpY2ggYXJlIG1seDUuXG5cbldhaXQsIEkgdGhpbmsgdGhlcmUgaXMgYSB2RFBBIG1seDUgZHJpdmVyLCBidXQgdGhhdCBzdGlsbCBsaWtlbHkgbmVlZHMgaGFyZHdhcmUuIE9rYXksIHRoZSBxdWVzdGlvbiBjb21lcyBiYWNrIHRvIHdoZXRoZXIgdGhlcmUgaXMgYW55IHdheSB0byByZWFjaCBgbWx4NWVfcHJpdl9pbml0YC4gTGV0IG1lIHB1bGwgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBldmVuIGNhbGxlZC4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgZ2l2ZSBtZSBzb21lIGluc2lnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1ODEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoxOTo1My41NjI2NDYwMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjI3OTkyOTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVlX3ByaXZfaW5pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD0xMjc1PWludCBtbHg1ZV9nZXRfcGZfbnVtX3RpcnMoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjEyNzY6aW50IG1seDVlX3ByaXZfaW5pdChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC0xMjc3LVxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbWx4NWVfcHJvZmlsZSAqcHJvZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NjM1Mz12b2lkIG1seDVlX3NldF9yeF9tb2RlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy02MzY0LS8qIG1seDVlIGdlbmVyaWMgbmV0ZGV2IG1hbmFnZW1lbnQgQVBJIChtb3ZlIHRvIGVuX2NvbW1vbi5jKSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NjM2NTppbnQgbWx4NWVfcHJpdl9pbml0KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjM2Ni1cXHRcXHQgICAgY29uc3Qgc3RydWN0IG1seDVlX3Byb2ZpbGUgKnByb2ZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTY0OTM9bWx4NWVfY3JlYXRlX25ldGRldihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgY29uc3Qgc3RydWN0IG1seDVlX3Byb2ZpbGUgKnByb2ZpbGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTY1MDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo2NTA4OlxcdGVyciA9IG1seDVlX3ByaXZfaW5pdChuZXRkZXZfcHJpdihuZXRkZXYpLCBwcm9maWxlLCBuZXRkZXYsIG1kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjUwOS1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo2NTEwOlxcdFxcdG1seDVfY29yZV9lcnIobWRldiwgXFxcIm1seDVlX3ByaXZfaW5pdCBmYWlsZWQsIGVycj0lZFxcXFxuXFxcIiwgZXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTY1MTEtXFx0XFx0Z290byBlcnJfZnJlZV9uZXRkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTY2NTQ9bWx4NWVfbmV0ZGV2X2luaXRfcHJvZmlsZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjY1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjY2NjA6XFx0ZXJyID0gbWx4NWVfcHJpdl9pbml0KHByaXYsIG5ld19wcm9maWxlLCBuZXRkZXYsIG1kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjY2MS1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo2NjYyOlxcdFxcdG1seDVfY29yZV9lcnIobWRldiwgXFxcIm1seDVlX3ByaXZfaW5pdCBmYWlsZWQsIGVycj0lZFxcXFxuXFxcIiwgZXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTY2NjMtXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jPTc3Mz1zdGF0aWMgaW50IG1seDVfcmRtYV9zZXR1cF9ybihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnRfbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMtNzk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jOjgwMDpcXHRlcnIgPSBtbHg1ZV9wcml2X2luaXQoZXByaXYsIHByb2YsIG5ldGRldiwgbWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMtODAxLVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjE5OjU3Ljc5MDY0NDAwNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTgwODQ0NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgbWx4NSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYG1seDVgIGRyaXZlciBpcyBiZWluZyBhIGJpdCBvZiBhIHN0aWNrbGVyLiBJdCBzZWVtcyBJIG5lZWQgYWN0dWFsLCBwaHlzaWNhbCBNZWxsYW5veCBoYXJkd2FyZSDigJMgQ29ubmVjdFgtNCwgNSwgNiwgb3IgNywgcHJlc3VtYWJseSwgb3Igc29tZXRoaW5nIGVxdWl2YWxlbnQg4oCTIHRvIGV2ZW4gZ2V0IHRoaXMgdGhpbmcgb2ZmIHRoZSBncm91bmQuIE5vIGhhcmR3YXJlLCBubyBpbml0aWFsaXphdGlvbi4gVGhpcyBtZWFucyBgbWx4NWVfcHJpdl9pbml0YCBpc24ndCBnb2luZyB0byBnZXQgY2FsbGVkLiBUaGF0J3MgYSBwcm9ibGVtIHdoZW4gSSdtIHRyeWluZyB0byB0ZXN0IG9yIGRldmVsb3Agd2l0aG91dCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZSFcblxuSG1tLCBpcyB0aGVyZSAqYW55KiBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgbWx4NSBiYWtlZCBpbnRvIHRoZSBrZXJuZWw/IEkgc2VlbSB0byByZWNhbGwgc29tZXRoaW5nIGFib3V0IHRoYXQsIHRob3VnaCBJIGNhbid0IHBsYWNlIGl0LiBNYXliZSBhIHZpcnR1YWwgZGV2aWNlIG9yIGEgbW9kdWxlIHRvIHNpbXVsYXRlIHRoZSBoYXJkd2FyZT8gSXQncyB3b3J0aCBkaWdnaW5nIGludG8uXG5cbkFscmlnaHQsIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG1vY2sgZHJpdmVycyBvciB0ZXN0IGltcGxlbWVudGF0aW9ucyB0aGF0IG1pZ2h0IHNpbXVsYXRlIHRoZSBtbHg1IGZ1bmN0aW9uYWxpdHkuIElmIHRoZXJlJ3Mgc29tZSBraW5kIG9mIHRlc3QgZnJhbWV3b3JrLCB0aGF0IHdvdWxkIGJlIGlkZWFsLiBJIG5lZWQgYSB3YXkgdG8gcHJvZ3Jlc3MgbXkgd29yayB3aXRob3V0IGJlaW5nIGNvbXBsZXRlbHkgYmxvY2tlZC4gRmluZGluZyBhIHN1aXRhYmxlIHNvZnR3YXJlLWJhc2VkIGFsdGVybmF0aXZlIHdpbGwgbWFrZSBsaWZlIGEgbG90IGVhc2llciwgZm9yIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NjYsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDowMi41NDg3MzE0ODZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2NDQ4NjI2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2NvcmVfZGV2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTM5NjYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM9MjQ9c3RydWN0IG1seDVjdGxfZGV2IHtcXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTI1LVxcdHN0cnVjdCBmd2N0bF9kZXZpY2UgZndjdGw7XFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYzoyNjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTI3LX07XFxuLS1cXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jPTExNj1zdGF0aWMgdm9pZCBtbHg1Y3RsX3JlbGVhc2VfdWlkKHN0cnVjdCBtbHg1Y3RsX2RldiAqbWNkZXYsIHUxNiB1aWQpXFxuLS1cXG5kcml2ZXJzL2Z3Y3RsL21seDUvbWFpbi5jLTExOC1cXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhkZXN0cm95X3VjdHhfaW4pXSA9IHt9O1xcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM6MTE5OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gbWNkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYy0xMjAtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM9MzcwPXN0YXRpYyBpbnQgbWx4NWN0bF9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcXG4tLVxcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmMtMzc0LVxcdHN0cnVjdCBtbHg1X2FkZXYgKm1hZGV2ID0gY29udGFpbmVyX29mKGFkZXYsIHN0cnVjdCBtbHg1X2FkZXYsIGFkZXYpO1xcbmRyaXZlcnMvZndjdGwvbWx4NS9tYWluLmM6Mzc1OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gbWFkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9md2N0bC9tbHg1L21haW4uYy0zNzYtXFx0c3RydWN0IG1seDVjdGxfZGV2ICptY2RldiBfX2ZyZWUobWx4NWN0bCkgPSBmd2N0bF9hbGxvY19kZXZpY2UoXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYz04PWludCBtbHg1cl9jbWRfcXVlcnlfc3BlY2lhbF9ta2V5cyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTQ0LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjQ1OmludCBtbHg1X2NtZF9xdWVyeV9jb25nX3BhcmFtcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgY29uZ19wb2ludCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy00Ni1cXHRcXHRcXHQgICAgICAgdm9pZCAqb3V0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtNTYtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6NTc6dm9pZCBtbHg1X2NtZF9kZXN0cm95X3RpcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGlybiwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy01OC17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy02Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo2Nzp2b2lkIG1seDVfY21kX2Rlc3Ryb3lfdGlzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0aXNuLCB1MTYgdWlkKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTY4LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTc2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjc3OmludCBtbHg1X2NtZF9kZXN0cm95X3JxdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgcnF0biwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy03OC17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy04Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzo4NzppbnQgbWx4NV9jbWRfYWxsb2NfdHJhbnNwb3J0X2RvbWFpbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnRkbixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy04OC1cXHRcXHRcXHRcXHQgICAgdTE2IHVpZClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEwNS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxMDY6dm9pZCBtbHg1X2NtZF9kZWFsbG9jX3RyYW5zcG9ydF9kb21haW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHRkbixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMDctXFx0XFx0XFx0XFx0ICAgICAgIHUxNiB1aWQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xMTctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTE4OmludCBtbHg1X2NtZF9kZWFsbG9jX3BkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiBwZG4sIHUxNiB1aWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTE5LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEyNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxMjg6aW50IG1seDVfY21kX2F0dGFjaF9tY2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdW5pb24gaWJfZ2lkICptZ2lkLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTEyOS1cXHRcXHRcXHR1MzIgcXBuLCB1MTYgdWlkKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTQxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjE0MjppbnQgbWx4NV9jbWRfZGV0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTQzLVxcdFxcdFxcdHUzMiBxcG4sIHUxNiB1aWQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0xNTUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmM6MTU2OmludCBtbHg1X2NtZF94cmNkX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqeHJjZG4sIHUxNiB1aWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTU3LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTE2OS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoxNzA6aW50IG1seDVfY21kX3hyY2RfZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgeHJjZG4sIHUxNiB1aWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMTcxLXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jPTE4MD1pbnQgbWx4NV9jbWRfbWFkX2lmYyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgY29uc3Qgdm9pZCAqaW5iLCB2b2lkICpvdXRiLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjIyLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjIyMzppbnQgbWx4NV9jbWRfdWFyX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqdWFybiwgdTE2IHVpZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yMjQte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjM4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jOjIzOTppbnQgbWx4NV9jbWRfdWFyX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHVhcm4sIHUxNiB1aWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmMtMjQwLXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5jLTI0OC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYzoyNDk6aW50IG1seDVfY21kX3F1ZXJ5X3Z1aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgYm9vbCBkYXRhX2RpcmVjdCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuYy0yNTAtXFx0XFx0XFx0Y2hhciAqb3V0X3Z1aWQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaD00MD1pbnQgbWx4NXJfY21kX3F1ZXJ5X3NwZWNpYWxfbWtleXMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQxOmludCBtbHg1X2NtZF9xdWVyeV9jb25nX3BhcmFtcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgY29uZ19wb2ludCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC00Mi1cXHRcXHRcXHQgICAgICAgdm9pZCAqb3V0KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0MzppbnQgbWx4NV9jbWRfZGVhbGxvY19wZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgcGRuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0NDp2b2lkIG1seDVfY21kX2Rlc3Ryb3lfdGlyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0aXJuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0NTp2b2lkIG1seDVfY21kX2Rlc3Ryb3lfdGlzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB0aXNuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0NjppbnQgbWx4NV9jbWRfZGVzdHJveV9ycXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHJxdG4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjQ3OmludCBtbHg1X2NtZF9hbGxvY190cmFuc3BvcnRfZG9tYWluKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqdGRuLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTQ4LVxcdFxcdFxcdFxcdCAgICB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo0OTp2b2lkIG1seDVfY21kX2RlYWxsb2NfdHJhbnNwb3J0X2RvbWFpbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgdGRuLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTUwLVxcdFxcdFxcdFxcdCAgICAgICB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo1MTppbnQgbWx4NV9jbWRfYXR0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmgtNTItXFx0XFx0XFx0dTMyIHFwbiwgdTE2IHVpZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NTM6aW50IG1seDVfY21kX2RldGFjaF9tY2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdW5pb24gaWJfZ2lkICptZ2lkLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTU0LVxcdFxcdFxcdHUzMiBxcG4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjU1OmludCBtbHg1X2NtZF94cmNkX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqeHJjZG4sIHUxNiB1aWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oOjU2OmludCBtbHg1X2NtZF94cmNkX2RlYWxsb2Moc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIHhyY2RuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaC01Ny1pbnQgbWx4NV9jbWRfbWFkX2lmYyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgY29uc3Qgdm9pZCAqaW5iLCB2b2lkICpvdXRiLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTU4LVxcdFxcdCAgICAgdTE2IG9wbW9kLCB1OCBwb3J0KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo1OTppbnQgbWx4NV9jbWRfdWFyX2FsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqdWFybiwgdTE2IHVpZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY21kLmg6NjA6aW50IG1seDVfY21kX3Vhcl9kZWFsbG9jKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiB1YXJuLCB1MTYgdWlkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuaDo2MTppbnQgbWx4NV9jbWRfcXVlcnlfdnVpZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBib29sIGRhdGFfZGlyZWN0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NtZC5oLTYyLVxcdFxcdFxcdGNoYXIgKm91dF92dWlkKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYz0yOTI9c3RhdGljIGludCBtbHg1X2liX2dldF9jY19wYXJhbXMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHUzMiBwb3J0X251bSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0yOTktXFx0ZW51bSBtbHg1X2liX2Nvbmdfbm9kZV90eXBlIG5vZGU7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jOjMwMDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmMtMzAxLVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jPTMyOT1zdGF0aWMgaW50IG1seDVfaWJfc2V0X2NjX3BhcmFtcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTMzNS1cXHRlbnVtIG1seDVfaWJfY29uZ19ub2RlX3R5cGUgbm9kZTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM6MzM2OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYy0zMzctXFx0dTMyIGF0dHJfbWFzayA9IDA7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb25nLmM9NDM0PXZvaWQgbWx4NV9pYl9pbml0X2NvbmdfZGVidWdmcyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTQzNi1cXHRzdHJ1Y3QgbWx4NV9pYl9kYmdfY2NfcGFyYW1zICpkYmdfY2NfcGFyYW1zO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvbmcuYzo0Mzc6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY29uZy5jLTQzOC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM9Mjg4PW1seDVfaWJfYWxsb2NfaHdfcG9ydF9zdGF0cyhzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnRfbnVtKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0yOTUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYzoyOTY6c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3FfY291bnRlcnMoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYy0yOTctXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBtbHg1X2liX2NvdW50ZXJzICpjbnRzLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY291bnRlcnMuYz0zNTA9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3FfY291bnRlcnNfdnBvcnQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jLTM1Ny1cXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhxdWVyeV9xX2NvdW50ZXJfaW4pXSA9IHt9O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM6MzU4OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMzU5LVxcdF9fYmUzMiB2YWw7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jb3VudGVycy5jPTM4Nz1zdGF0aWMgaW50IGRvX2dldF9od19zdGF0cyhzdHJ1Y3QgaWJfZGV2aWNlICppYmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMzkyLVxcdGNvbnN0IHN0cnVjdCBtbHg1X2liX2NvdW50ZXJzICpjbnRzID0gZ2V0X2NvdW50ZXJzKGRldiwgcG9ydF9udW0pO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmM6MzkzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NvdW50ZXJzLmMtMzk0LVxcdGludCByZXQsIG51bV9jb3VudGVycztcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmM9NjExPWludCBtbHg1X2liX3BvbGxfY3Eoc3RydWN0IGliX2NxICppYmNxLCBpbnQgbnVtX2VudHJpZXMsIHN0cnVjdCBpYl93YyAqd2MpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jLTYxNS1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiA9IHRvX21kZXYoY3EtXFx1MDAzZWliY3EuZGV2aWNlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jOjYxNjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jLTYxNy1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYz02NDg9aW50IG1seDVfaWJfYXJtX2NxKHN0cnVjdCBpYl9jcSAqaWJjcSwgZW51bSBpYl9jcV9ub3RpZnlfZmxhZ3MgZmxhZ3MpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYy02NDkte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmM6NjUwOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gdG9fbWRldihpYmNxLVxcdTAwM2VkZXZpY2UpLVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMtNjUxLVxcdHN0cnVjdCBtbHg1X2liX2NxICpjcSA9IHRvX21jcShpYmNxKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0xMDc9c3RydWN0IGRldnhfdW1lbSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjEwODpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldlxcdFxcdCptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0xMDktXFx0c3RydWN0IGliX3VtZW1cXHRcXHRcXHQqdW1lbTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0yMDA1PXN0YXRpYyBib29sIGlzX3ZhbGlkX2V2ZW50c19sZWdhY3koaW50IG51bV9ldmVudHMsIHUxNiAqZXZlbnRfdHlwZV9udW1fbGlzdCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yMDIzLSNkZWZpbmUgTUFYX1NVUFBfRVZFTlRfTlVNIDI1NVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoyMDI0OnN0YXRpYyBib29sIGlzX3ZhbGlkX2V2ZW50cyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yMDI1LVxcdFxcdFxcdCAgICBpbnQgbnVtX2V2ZW50cywgdTE2ICpldmVudF90eXBlX251bV9saXN0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTI0NTE9c3RhdGljIGludCBkZXZ4X3VtZW1fY2xlYW51cChzdHJ1Y3QgaWJfdW9iamVjdCAqdW9iamVjdCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yNDY3LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoyNDY4OnN0YXRpYyBib29sIGlzX3VuYWZmaWxpYXRlZF9ldmVudChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yNDY5LVxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyBldmVudF90eXBlKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0xMj1zdGF0aWMgaW50IG1seDVfY21kX2FsbG9jX21lbWljKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgKmFkZHIsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTE0LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jOjE1OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBkbS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTYtXFx0dTY0IG51bV9tZW1pY19od19wYWdlcyA9IE1MWDVfQ0FQX0RFVl9NRU0oZGV2LCBtZW1pY19iYXJfc2l6ZSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9ODc9dm9pZCBtbHg1X2NtZF9kZWFsbG9jX21lbWljKHN0cnVjdCBtbHg1X2RtICpkbSwgcGh5c19hZGRyX3QgYWRkcixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtODkte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6OTA6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGRtLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy05MS1cXHR1NjQgaHdfc3RhcnRfYWRkciA9IE1MWDVfQ0FQNjRfREVWX01FTShkZXYsIG1lbWljX2Jhcl9zdGFydF9hZGRyKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM9MTE0PXZvaWQgbWx4NV9jbWRfZGVhbGxvY19tZW1pY19vcChzdHJ1Y3QgbWx4NV9kbSAqZG0sIHBoeXNfYWRkcl90IGFkZHIsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTExNy1cXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhtb2RpZnlfbWVtaWNfaW4pXSA9IHt9O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6MTE4OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBkbS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTE5LVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYz0xMjg9c3RhdGljIGludCBtbHg1X2NtZF9hbGxvY19tZW1pY19vcChzdHJ1Y3QgbWx4NV9kbSAqZG0sIHBoeXNfYWRkcl90IGFkZHIsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTEzMi1cXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhtb2RpZnlfbWVtaWNfaW4pXSA9IHt9O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6MTMzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBkbS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtMTM0LVxcdGludCBlcnI7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTM1Mj1zdGF0aWMgc3RydWN0IGliX2RtICpoYW5kbGVfYWxsb2NfZG1fc3dfaWNtKHN0cnVjdCBpYl91Y29udGV4dCAqY3R4LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG0uYy0zNTYte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6MzU3OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSB0b19tZGV2KGN0eC1cXHUwMDNlZGV2aWNlKS1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTM1OC1cXHRlbnVtIG1seDVfc3dfaWNtX3R5cGUgaWNtX3R5cGU7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jPTQ3MD1zdGF0aWMgaW50IG1seDVfZG1faWNtX2RlYWxsb2Moc3RydWN0IG1seDVfaWJfdWNvbnRleHQgKmN0eCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmMtNDczLVxcdGVudW0gbWx4NV9zd19pY21fdHlwZSB0eXBlID0gZ2V0X2ljbV90eXBlKGRtLVxcdTAwM2ViYXNlLnR5cGUpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtLmM6NDc0OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSB0b19tZGV2KGRtLVxcdTAwM2ViYXNlLmliZG0uZGV2aWNlKS1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbS5jLTQ3NS1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMTUte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzoxNjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IHRvX21kZXYoaWJkbWFoLVxcdTAwM2VkZXZpY2UpLVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0xNy1cXHRzdHJ1Y3QgbWx4NV9pYl9kbWFoICpkbWFoID0gdG9fbWRtYWgoaWJkbWFoKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYz0zOT1zdGF0aWMgaW50IG1seDVfaWJfZGVhbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNDItXFx0c3RydWN0IG1seDVfaWJfZG1haCAqZG1haCA9IHRvX21kbWFoKGliZG1haCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjQzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gdG9fbWRldihpYmRtYWgtXFx1MDAzZWRldmljZSktXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQ0LVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYz0xNDk9aW50IHBhcnNlX2Zsb3dfZmxvd19hY3Rpb24oc3RydWN0IG1seDVfaWJfZmxvd19hY3Rpb24gKm1hY3Rpb24sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4OC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jOjE4OTpzdGF0aWMgaW50IHBhcnNlX2Zsb3dfYXR0cihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE5MC1cXHRcXHRcXHQgICBzdHJ1Y3QgbWx4NV9mbG93X3NwZWMgKnNwZWMsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTU0Nz1zdGF0aWMgYm9vbCBmbG93X2lzX211bHRpY2FzdF9vbmx5KGNvbnN0IHN0cnVjdCBpYl9mbG93X2F0dHIgKmliX2F0dHIpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTU3Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jOjU3NzpzdGF0aWMgYm9vbCBpc192YWxpZF9ldGhlcnR5cGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy01NzgtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpYl9mbG93X2F0dHIgKmZsb3dfYXR0cixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmMtNjI1LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6NjI2OnN0YXRpYyBib29sIGlzX3ZhbGlkX2F0dHIoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy02MjctXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgaWJfZmxvd19hdHRyICpmbG93X2F0dHIpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jPTE4NzI9c3RhdGljIGludCBtbHg1X2liX2ZpbGxfdHJhbnNwb3J0X25zX2luZm8oc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4NzUtXFx0XFx0XFx0XFx0XFx0ICB1MTYgKnZwb3J0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTg3NjpcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2NvcmVfZGV2ICoqZnRfbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4NzctXFx0XFx0XFx0XFx0XFx0ICB1MzIgaWJfcG9ydCwgdTE2ICplc3dfb3duZXJfdmhjYV9pZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE4Nzgte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTg3OTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZXN3X21kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYy0xODgwLVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZnMuYz0xOTA4PV9nZXRfZmxvd190YWJsZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTE2IHVzZXJfcHJpb3JpdHksXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE5MTEte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2ZzLmM6MTkxMjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZnRfbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9mcy5jLTE5MTMtXFx0c3RydWN0IG1seDVfZmxvd190YWJsZV9hdHRyIGZ0X2F0dHIgPSB7fTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jPTExPXN0YXRpYyBpbnRcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMjptbHg1X2liX3NldF92cG9ydF9yZXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMzpcXHRcXHQgICAgICBzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqcmVwX2RldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xNC1cXHRcXHQgICAgICBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNDEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NDI6c3RhdGljIHZvaWQgbWx4NV9pYl9yZWdpc3Rlcl9wZWVyX3Zwb3J0X3JlcHMoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTQzLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjQ0OnN0YXRpYyB2b2lkIG1seDVfaWJfbnVtX3BvcnRzX3VwZGF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKm51bV9wb3J0cylcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy00NS17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NDY6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTQ3LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtNTktXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6NjA6c3RhdGljIGludCBtbHg1X2liX3NldF9vd25lcl90cmFuc3BvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmN1cl9vd25lcixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzo2MTpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbmV3X293bmVyKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTYyLXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTg4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjg5OnN0YXRpYyB2b2lkIG1seDVfaWJfcmVsZWFzZV90cmFuc3BvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy05MC17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6OTE6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTkyLVxcdGludCBpLCByZXQ7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy05OS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMDA6c3RhdGljIGludCBtbHg1X2liX3Rha2VfdHJhbnNwb3J0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTAxLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMDI6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTEwMy1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MTE3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMTg6bWx4NV9pYl92cG9ydF9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTExOS17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTIwLVxcdHUzMiBudW1fcG9ydHMgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3RvdGFsX3Zwb3J0cyhkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjEyMTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbGFnX21hc3RlciA9IGRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xMjItXFx0Y29uc3Qgc3RydWN0IG1seDVfaWJfcHJvZmlsZSAqcHJvZmlsZTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoxMjM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTEyNC1cXHRzdHJ1Y3QgbWx4NV9pYl9kZXYgKmliZGV2O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MjIxPW1seDVfaWJfdnBvcnRfcmVwX3VubG9hZChzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTIyMi17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MjIzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gbWx4NV9lc3dpdGNoX2dldF9jb3JlX2RldihyZXAtXFx1MDAzZWVzdyk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjI0LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gbWx4NV9pYl9yZXBfdG9fZGV2KHJlcCk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yNjEtXFx0XFx0aWYgKG1seDVfbGFnX2lzX3NoYXJlZF9mZGIobWRldikpIHtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoyNjI6XFx0XFx0XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yNjMtXFx0XFx0XFx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9Mjc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcF9vcHMgcmVwX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTI4MS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoyODI6c3RhdGljIHZvaWQgbWx4NV9pYl9yZWdpc3Rlcl9wZWVyX3Zwb3J0X3JlcHMoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMjgzLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzoyODQ6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKnBlZXJfbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0yODUtXFx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MzE5PXN0YXRpYyBpbnQgbWx4NXJfcmVwX3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMzIyLVxcdHN0cnVjdCBtbHg1X2FkZXYgKmlkZXYgPSBjb250YWluZXJfb2YoYWRldiwgc3RydWN0IG1seDVfYWRldiwgYWRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM6MzIzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gaWRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMjQtXFx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmM9MzMxPXN0YXRpYyB2b2lkIG1seDVyX3JlcF9yZW1vdmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0zMzMtXFx0c3RydWN0IG1seDVfYWRldiAqaWRldiA9IGNvbnRhaW5lcl9vZihhZGV2LCBzdHJ1Y3QgbWx4NV9hZGV2LCBhZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYzozMzQ6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBpZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTMzNS1cXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9NTA9aW50IG1seDVfaWJfZ2V0X3ZmX2NvbmZpZyhzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2ZiwgdTMyIHBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtNTMtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjU0OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy01NS1cXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqcmVwO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTkyPWludCBtbHg1X2liX3NldF92Zl9saW5rX3N0YXRlKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTk1LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzo5NjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtOTctXFx0c3RydWN0IG1seDVfaGNhX3Zwb3J0X2NvbnRleHQgKmluO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jPTEyMD1pbnQgbWx4NV9pYl9nZXRfdmZfc3RhdHMoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCBpbnQgdmYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTIzLVxcdGludCBvdXRfc3ogPSBNTFg1X1NUX1NaX0JZVEVTKHF1ZXJ5X3Zwb3J0X2NvdW50ZXJfb3V0KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM6MTI0OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0xMjUtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXY7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MTUxPXN0YXRpYyBpbnQgc2V0X3ZmX25vZGVfZ3VpZChzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2ZiwgdTMyIHBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTU0LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzoxNTU6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTE1Ni1cXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqaW47XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MTc1PXN0YXRpYyBpbnQgc2V0X3ZmX3BvcnRfZ3VpZChzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsIGludCB2ZiwgdTMyIHBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMTc4LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihkZXZpY2UpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYzoxNzk6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jLTE4MC1cXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCAqaW47XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmM9MjEwPWludCBtbHg1X2liX2dldF92Zl9ndWlkKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSwgaW50IHZmLCB1MzIgcG9ydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3ZpcnQuYy0yMTQtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGRldmljZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfdmlydC5jOjIxNTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl92aXJ0LmMtMjE2LVxcdHN0cnVjdCBtbHg1X3ZmX2NvbnRleHQgKnZmc19jdHggPSBtZGV2LVxcdTAwM2Vwcml2LnNyaW92LnZmc19jdHg7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYz0xNTA9c3RhdGljIHZvaWQgcG1hX2NudF9leHRfYXNzaWduX3BwY250KHN0cnVjdCBpYl9wbWFfcG9ydGNvdW50ZXJzX2V4dCAqY250X2V4dCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jLTE4MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYzoxODE6c3RhdGljIGludCBxdWVyeV9pYl9wcGNudChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1OCBwb3J0X251bSwgdTggcGxhbmVfbnVtLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jLTE4Mi1cXHRcXHRcXHQgIHZvaWQgKm91dCwgc2l6ZV90IHN6LCBib29sIGV4dClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21hZC5jPTIwOT1zdGF0aWMgaW50IHByb2Nlc3NfcG1hX2NtZChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgdTMyIHBvcnRfbnVtLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMjExLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYzoyMTI6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtMjEzLVxcdGJvb2wgbmF0aXZlX3BvcnQgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmM9NTk3PWludCBtbHg1X3F1ZXJ5X21hZF9pZmNfcG9ydChzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdTMyIHBvcnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYy02MDAtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWQuYzo2MDE6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFkLmMtNjAyLVxcdHN0cnVjdCBpYl9zbXAgKmluX21hZDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0yMDU9c3RhdGljIGludCBtbHg1X25ldGRldl9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjExLVxcdHN0cnVjdCBuZXRfZGV2aWNlICppYl9uZGV2ID0gTlVMTDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjEyOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yMTMtXFx0c3RydWN0IG1seDVfaWJfZGV2ICppYmRldjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMTEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjMxMjpzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWx4NV9pYl9nZXRfbmF0aXZlX3BvcnRfbWRldihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmliZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zMTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgdTMyIGliX3BvcnRfbnVtLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMxNy1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIGliX3BvcnRfbnVtKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MzE4OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gTlVMTDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMzE5LVxcdHN0cnVjdCBtbHg1X2liX211bHRpcG9ydF9pbmZvICptcGk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NTM2PXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9wb3J0X3JvY2Uoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLCB1MzIgcG9ydF9udW0sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTQwLVxcdHUzMiBvdXRbTUxYNV9TVF9TWl9EVyhwdHlzX3JlZyldID0gezB9O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1NDE6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTU0Mi1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgKnVwcGVyO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTc3Mj1zdGF0aWMgaW50IG1seDVfcXVlcnlfc3lzdGVtX2ltYWdlX2d1aWQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNzc1LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjc3NjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNzc3LVxcdHU2NCB0bXA7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9ODA0PXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9tYXhfcGtleXMoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODA3LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjgwODpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODA5LVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTg3NT1zdGF0aWMgaW50IG1seDVfcXVlcnlfbm9kZV9kZXNjKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBjaGFyICpub2RlX2Rlc2MpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODg4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo4ODk6c3RhdGljIHZvaWQgZmlsbF9lc3dfbWdyX3JlZ19jMChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtODkwLVxcdFxcdFxcdFxcdHN0cnVjdCBtbHg1X2liX3F1ZXJ5X2RldmljZV9yZXNwICpyZXNwKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTkyOT1zdGF0aWMgdTMyIG1seDVfaWJfY2FsY19tYXhfcXBfd3Ioc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTkzMC17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjkzMTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtOTMyLVxcdHUzMiBtYXhfd3FlX2JiX3VuaXRzID0gMSBcXHUwMDNjXFx1MDAzYyBNTFg1X0NBUF9HRU4obWRldiwgbG9nX21heF9xcF9zeik7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9OTQ1PXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9kZXZpY2Uoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtOTUwLVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjk1MTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtOTUyLVxcdGludCBlcnIgPSAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE0NjI9c3RhdGljIGludCBtbHg1X3F1ZXJ5X2hjYV9wb3J0KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNDY1LVxcdHN0cnVjdCBtbHg1X2liX2RldiAqZGV2ID0gdG9fbWRldihpYmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjE0NjY6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE0NjctXFx0c3RydWN0IG1seDVfaGNhX3Zwb3J0X2NvbnRleHQgKnJlcDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNTQyPWludCBtbHg1X2liX3F1ZXJ5X3BvcnQoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE1NjYtXFx0XFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTU2NzpcXHRcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTU2OC1cXHRcXHRib29sIHB1dF9tZGV2ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNjAzPXN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fcG9ydChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNjI2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNjI3OnN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fdnBvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2MjgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHU4IG9wX21vZCwgdTE2IHZwb3J0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE2NTA9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3BvcnRfc3BlZWRfZnJvbV9ib25kKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE2NTIte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNjUzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNjU0LVxcdHUzMiBib25kX3NwZWVkO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTE2Nzk9c3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3BvcnRfc3BlZWRfcmVwKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTY4Mi1cXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxNjgzOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xNjg0LVxcdHUxNiBvcF9tb2Q7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MTcyNj1zdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfZ2lkKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB1MzIgcG9ydCwgaW50IGluZGV4LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE3MjktXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTczMDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGRldi1cXHUwMDNlbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTczMS1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xNzQ1PXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9oY2FfbmljX3BrZXkoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHUzMiBwb3J0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE3NDgtXFx0c3RydWN0IG1seDVfaWJfZGV2ICpkZXYgPSB0b19tZGV2KGliZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTc0OTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTc1MC1cXHRib29sIHB1dF9tZGV2ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xODE2PXN0YXRpYyBpbnQgc2V0X3BvcnRfY2Fwc19hdG9taWMoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHUzMiBwb3J0X251bSwgdTMyIG1hc2ssXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTgxOS1cXHRzdHJ1Y3QgbWx4NV9oY2FfdnBvcnRfY29udGV4dCBjdHggPSB7fTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTgyMDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMTgyMS1cXHR1MzIgbWRldl9wb3J0X251bTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0xOTczPXN0YXRpYyB2b2lkIGRlYWxsb2NhdGVfdWFycyhzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0xOTg2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzoxOTg3OnN0YXRpYyBpbnQgbWx4NV9pYl9lbmFibGVfbGJfbXAoc3RydWN0IG1seDVfY29yZV9kZXYgKm1hc3RlcixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MTk4ODpcXHRcXHRcXHRcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqc2xhdmUsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTE5ODktXFx0XFx0XFx0XFx0c3RydWN0IG1seDVfaWJfbGJfc3RhdGUgKmxiX3N0YXRlKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTIwMDgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjIwMDk6c3RhdGljIHZvaWQgbWx4NV9pYl9kaXNhYmxlX2xiX21wKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptYXN0ZXIsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjIwMTA6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqc2xhdmUsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTIwMTEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbWx4NV9pYl9sYl9zdGF0ZSAqbGJfc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzI1MT1zdGF0aWMgdm9pZCBtbHg1X2liX3N0YWdlX3N5c19lcnJvcl9ub3RpZmllcl9jbGVhbnVwKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMyNTUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjMyNTY6c3RhdGljIGludCBtbHg1X2liX2dldF9wbGFuZV9udW0oc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4ICpudW1fcGxhbmUpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTMyNTcte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTM0Nzc9bWx4NV9pYl9jcmVhdGVfZGF0YV9kaXJlY3RfcmVzb3VyY2VzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM0NzktXFx0aW50IGlubGVuID0gTUxYNV9TVF9TWl9CWVRFUyhjcmVhdGVfbWtleV9pbik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjM0ODA6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM0ODEtXFx0Ym9vbCByb19zdXBwID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MzY1Nz1zdGF0aWMgaW50IGxhZ19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM2NjAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGxhZ19ldmVudHMpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzozNjYxOlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZGV2LVxcdTAwM2VtZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNjYyLVxcdHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlaWJfZGV2O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTM3MTg9c3RhdGljIGludCBtbHg1X2V0aF9sYWdfaW5pdChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0zNzIwLVxcdHN0cnVjdCBtbHg1X2Zsb3dfdGFibGVfYXR0ciBmdF9hdHRyID0ge307XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjM3MjE6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBkZXYtXFx1MDAzZW1kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM3MjItXFx0c3RydWN0IG1seDVfZmxvd19uYW1lc3BhY2UgKm5zO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTM3NTE9c3RhdGljIHZvaWQgbWx4NV9ldGhfbGFnX2NsZWFudXAoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTM3NTIte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDowNS40MTMyMjk2MjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzI0MjcyNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbWx4NSBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgTWVsbGFub3ggZHJpdmVyIGZpbGVzIOKAkyBgZHJpdmVycy9md2N0bC9tbHg1L21haW4uY2AsIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jbWQuY2AsIGFuZCBzbyBvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoZXJlIHNvbWUga2luZCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gaGVyZT9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGNvZGUgY291bGQgYmUgdGVzdGVkIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZS4gSSdsbCB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY2AgdG8gc2VlIGlmIHRoZXJlJ3MgYSB0ZXN0IGRyaXZlciBvciBldmVuIGEgbW9jayBpbXBsZW1lbnRhdGlvbi5cblxuTm9wZSwgZnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBtbHg1IGRyaXZlciBpcyBjbGVhcmx5IGEgcGh5c2ljYWwgZGV2aWNlIGRyaXZlci4gSXQncyBtZWFudCB0byBkaXJlY3RseSBpbnRlcmFjdCB3aXRoIGhhcmR3YXJlIHRocm91Z2ggUENJLiBXaXRob3V0IHRoZSBoYXJkd2FyZSwgaXQgd29uJ3QgZXZlbiBpbml0aWFsaXplLiBUaGF0IHJ1bGVzIG91dCBhIHNpbXBsZSBzZXR1cC5cblxuTm93IEkgcmVtZW1iZXIgU3l6a2FsbGVyIGhhcyBzb21lIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBmb3IgZnV6emluZyDigJMgVVNCIGdhZGdldCBmdXp6aW5nLCBtYWM4MDIxMV9od3NpbSwgdmhjaSwgdGhhdCBzb3J0IG9mIHRoaW5nLiBCdXQgd2hhdCBhYm91dCBtbHg1PyBEb2VzIFN5emthbGxlciBoYXZlIGEgY29tcGFyYWJsZSBzZXR1cCBmb3IgZnV6emluZyB0aGlzIHNwZWNpZmljIGRyaXZlcj8gTm8sIGl0J3Mgbm90IGVtdWxhdGluZyBtbHg1IFBDSSBkZXZpY2VzLiBXZeKAmXJlIGdvaW5nIHRvIGhhdmUgdG8gZG8gc29tZXRoaW5nIGVsc2UuXG5cbk9rYXksIGxldCdzIHN0ZXAgYmFjay4gV2hhdCBpZiB0aGUgdGFyZ2V0IG9mIHRoZSBwYXRjaCBpcyBidXJpZWQgd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY2Agb3IgYGVuX21haW4uY2A/IElzIHRoYXQgY29kZSBldmVuIHJlYWNoYWJsZSB3aXRob3V0IGhhcmR3YXJlPyBUaGlzIGlzIGdvaW5nIHRvIHJlcXVpcmUgc29tZSBzbGV1dGhpbmcuXG5cbkxldCdzIGNoZWNrIHdoZXJlIGBtbHg1ZV9wcml2X2luaXRgIGlzIGNhbGxlZC4gSXQgbG9va3MgbGlrZSBpdOKAmXMgY2FsbGVkIHdpdGhpbiBgbWx4NWVfY3JlYXRlX25ldGRldmAsIGBtbHg1ZV9uZXRkZXZfaW5pdF9wcm9maWxlYCwgYW5kIGBtbHg1X3JkbWFfc2V0dXBfcm5gLiBBbGwgb2YgdGhlc2UgcmVxdWlyZSBhIGBtbHg1X2NvcmVfZGV2YCBzdHJ1Y3R1cmUuIE9rYXksIHNvIHRoYXQgYG1seDVfY29yZV9kZXZgIGlzIGNyZWF0ZWQgd2hlbiB0aGUgUENJIGRldmljZSBpcyBwcm9iZWQuIEFuZCBzaW5jZSB3ZSBkb27igJl0IGhhdmUgbWx4NSBoYXJkd2FyZSB3aXRoaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQsIHRoYXQgZW50aXJlIGNvZGUgcGF0aCBpcyBnb2luZyB0byBiZSB1bnJlYWNoYWJsZS5cblxuV2FpdCwgbGV0IG1lIHRoaW5rLiBJcyB0aGVyZSBhIHZpcnR1YWxpemVkIG9yIHNpbXVsYXRlZCBtbHg1IGRldmljZSAqc29tZXdoZXJlKj8gVGltZSB0byBzZWFyY2ggdGhlIGNvZGViYXNlIGZvciBgbWx4NV9jb3JlX2RldmAgY3JlYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDk1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjE1LjEzNzUwNTE5N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTUxNDE0NjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFsbG9jX2V0aGVyZGV2LiptbHg1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NjQ5Mz1tbHg1ZV9jcmVhdGVfbmV0ZGV2KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBjb25zdCBzdHJ1Y3QgbWx4NWVfcHJvZmlsZSAqcHJvZmlsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjUwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjY1MDI6XFx0bmV0ZGV2ID0gYWxsb2NfZXRoZXJkZXZfbXFzKHNpemVvZihzdHJ1Y3QgbWx4NWVfcHJpdiksIHR4cXMsIHJ4cXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNjUwMy1cXHRpZiAoIW5ldGRldikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDoxOC4wODg5MjQ4N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDU1NDM5ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGlzc3VlOlxuXG4qKkRlbHZpbmcgaW50byB0aGUgTUxYNSBEcml2ZXIgUHJvYmUqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gQ29uc2lkZXJpbmcgdGhpcyBpcyBsaWtlbHkgYSBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBpc3N1ZSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgUENJIHByb2JlIGZ1bmN0aW9ucy4gTGV0J3Mgc2VlLi4uIHRoZSBgbWx4NV9wY2lfcHJvYmVgIGZ1bmN0aW9uIChvciBhIHNpbWlsYXIgb25lLCBkZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljIE1lbGxhbm94IGRyaXZlciB2ZXJzaW9uIGFuZCBhcmNoaXRlY3R1cmUpIGlzIHdoZXJlIHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIFBDSSBidXMgdG8gaWRlbnRpZnkgYW5kIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlLiBUaGF04oCZcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB0aGVyZSBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgcmV0dXJuIGNvZGVzLCBlcnJvciBoYW5kbGluZywgYW5kIHJlc291cmNlIGFsbG9jYXRpb24gd2l0aGluIHRoYXQgZnVuY3Rpb24gdG8gcGlucG9pbnQgdGhlIGV4YWN0IGZhaWx1cmUuIEl04oCZcyBsaWtlbHkgYSByZXNvdXJjZSBpc3N1ZSwgYSBmaXJtd2FyZSB2ZXJzaW9uIG1pc21hdGNoLCBvciBwb3RlbnRpYWxseSBhIGNvbmZpZ3VyYXRpb24gcHJvYmxlbS4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTcxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MjA6MjEuOTM0NDcyODY0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzY2NDUxNTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kcml2ZXIuKm1seDVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGF0YV9kaXJlY3QuYz0yMDE9c3RhdGljIHZvaWQgbWx4NV9kYXRhX2RpcmVjdF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kYXRhX2RpcmVjdC5jLTIxMC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kYXRhX2RpcmVjdC5jOjIxMTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9kYXRhX2RpcmVjdF9kcml2ZXIgPSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGF0YV9kaXJlY3QuYy0yMTItXFx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjI2NT1pbnQgbWx4NV9yZWNvdmVyX2RldmljZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjI3NjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9jb3JlX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyNzctXFx0Lm5hbWUgICAgICAgICAgID0gS0JVSUxEX01PRE5BTUUsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jPTE0NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgbWx4NXZmX2Vycl9oYW5kbGVycyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTQ0OC1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjE0NDk6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1seDV2Zl9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTQ1MC1cXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xNDU3LVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6MTQ1ODptb2R1bGVfcGNpX2RyaXZlcihtbHg1dmZfcGNpX2RyaXZlcik7XFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xNDU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDoyNC43MDA5MzM4NTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg5MTA5MzE2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGUgcHJvbXB0IGlzIGFza2luZyBhYm91dCB3aGV0aGVyIHRoaXMgcGF0Y2ggaXMgd29ydGggZnV6emluZywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBwcmV0dHkgY2xlYXIgY3V0LiBUaGlzIGNvbmZpcm1zIGl0IGlzIGEgUENJIGRyaXZlci4gVGhlIGNvZGUgY2hhbmdlcyBhcmUgYWxsIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NWAg4oCTIHNwZWNpZmljYWxseSB3aXRoaW4gYGVuX21haW4uY2AsIGBlbl9zdGF0cy5jYCwgYGVuLmhgLCBhbmQgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC4gSXQgbG9va3MgbGlrZSB0aGV5IGFyZSBhZGRpbmcgYSBidWZmZXIgdG8gYSBzdHJ1Y3QuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgZ29pbmcgdG8gYmUgYSBub24tc3RhcnRlciBmb3IgZnV6emluZywgd2hpY2ggbWVhbnMgdGhlIFdvcnRoRnV6emluZyBwYXJhbWV0ZXIgc2hvdWxkIGJlIGZhbHNlLlxuXG5MZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoIG1ldGhvZGljYWxseS4gSXMgdGhlcmUgKmFueSogc29mdHdhcmUgZW11bGF0aW9uIG9mIGFuIG1seDUgZGV2aWNlIGluIHRoZSBrZXJuZWw/IEkgcmVtZW1iZXIgdGhhdCB0aGVyZSdzIG5vdC4gTm8sIHRoZXJlJ3Mgbm90aGluZyBJIGNhbiB0aGluayBvZiBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLiBXYWl0LCB3aGF0IGFib3V0IGBuZXRkZXZzaW1gPyBEb2VzICp0aGF0KiBlbXVsYXRlIG1seDU/IE5vLCB0aGF0IGlzIHRoZXJlIHRvIGVtdWxhdGUgYSBnZW5lcmljIG5ldHdvcmsgZGV2aWNlLCBmb3IgdGVzdGluZyBkZXZsaW5rIGFuZCB0YyBvZmZsb2Fkcy4gV2hhdCBhYm91dCBgdmRwYWA/IGB2ZHBhX3NpbWAgc3BlY2lmaWNhbGx5IGVtdWxhdGVzIHZpcnRpbywgbm90IG1seDUuXG5cblNvLCByZWFsaXN0aWNhbGx5LCBtbHg1IGNvZGUgcGF0aHMgYXJlICpjb21wbGV0ZWx5KiBpbmFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgd2l0aG91dCBoYXJkd2FyZSBwYXNzdGhyb3VnaC4gVGhlIHByb21wdCAqZXhwbGljaXRseSogc3RhdGVzIHRoYXQgd2Ugc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY2hhbmdlcyBpbnZvbHZlIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBUaGUgcHJvbXB0IHNwZWNpZmllcyB0aGlzIGZvciB0aGluZ3Mgc3VjaCBhcyBVU0IgZ2FkZ2V0cyBhbmQgbWFjODAyMTFfaHdzaW0uXG5cblNpbmNlIHRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBtbHg1IGRyaXZlciBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUsIHRoZSBjaGFuZ2VzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluICpvdXIqIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cbk5vdywgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gSXMgdGhhdCBgZXRodG9vbF9mZWNfaGlzdGAgc3RydWN0dXJlICpvbmx5KiB1c2VkIHdpdGhpbiB0aGUgbWx4NSBkcml2ZXI/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGluY2x1ZGUgZmlsZSBgaW5jbHVkZS9saW51eC9ldGh0b29sLmhgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gT2theSwgSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LiBUaGUgV29ydGhGdXp6aW5nIHBhcmFtZXRlciBzaG91bGQgYmUgZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTE1LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjMxLjU5MjAyOTg5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDk1OTQ0ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV0aHRvb2xfZmVjX2hpc3RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3N0YXRpc3RpY3MucnN0PTIzNz10aGVtIHdpdGggMC5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zdGF0aXN0aWNzLnJzdC0yNDEtLSBgYHN0cnVjdCBldGh0b29sX2V0aF9waHlfc3RhdHNgYFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zdGF0aXN0aWNzLnJzdDoyNDI6LSBgYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YGBcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc3RhdGlzdGljcy5yc3QtMjQzLS0gYGBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHNgYFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYz0zMjA4PXN0YXRpYyBpbnQgYm54dF9nZXRfZmVjcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzI1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jOjMyNTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlIGJueHRfZmVjX3Jhbmdlc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzI1NS1cXHR7IDAsIDB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYz0zMjc0PXN0YXRpYyB2b2lkIGJueHRfaHdybV9wb3J0X3BoeV9mZHJzdGF0KHN0cnVjdCBibnh0ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jOjMyNzU6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzI3Ni17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYzozMjc3OlxcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3ZhbHVlICp2YWx1ZXMgPSBoaXN0LVxcdTAwM2V2YWx1ZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYy0zMjc4LVxcdHN0cnVjdCBod3JtX3BvcnRfcGh5X2ZkcnN0YXRfb3V0cHV0ICpyZXNwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYz0zMzA0PXN0YXRpYyB2b2lkIGJueHRfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dF9ldGh0b29sLmMtMzMwNS1cXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0X2V0aHRvb2wuYzozMzA2OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHRfZXRodG9vbC5jLTMzMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmM9OTMyPXN0YXRpYyB2b2lkIGZ1bl9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmMtOTMzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqc3RhdHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmM6OTM0OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfZXRodG9vbC5jLTkzNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2V0aHRvb2wuYz0xNjY0PXN0YXRpYyB2b2lkIGhuczNfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZXRodG9vbC5jLTE2NjUtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZXRodG9vbC5jOjE2NjY6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZXRodG9vbC5jLTE2Njcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM9NDYzNj1zdGF0aWMgdm9pZCBpY2VfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ2MzctXFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM6NDYzODpcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00NjM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuYz0xMjk3PXN0YXRpYyB2b2lkIG90eDJfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2V0aHRvb2wuYy0xMjk4LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgKmZlY19zdGF0cyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9ldGh0b29sLmM6MTI5OTpcXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZXRodG9vbC5jLTEzMDAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuYz0xOTI2PXN0YXRpYyB2b2lkIG1seDVlX2dldF9mZWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jLTE5MjctXFx0XFx0XFx0XFx0c3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuYzoxOTI4OlxcdFxcdFxcdFxcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmMtMTkyOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYz0xNTUyPWZlY19yc19oaXN0b2dyYW1fZmlsbF9yYW5nZXMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jOjE1NTM6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqcmFuZ2VzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE1NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmM9MTU4NT1zdGF0aWMgdm9pZCBmZWNfcnNfaGlzdG9ncmFtX2ZpbGxfc3RhdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMtMTU4Ni1cXHRcXHRcXHRcXHRcXHR1OCBudW1fb2ZfYmlucyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYzoxNTg3OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE1ODgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmM9MTYxMT1zdGF0aWMgdm9pZCBmZWNfc2V0X2hpc3RvZ3JhbXNfc3RhdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jOjE2MTI6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYy0xNjEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jPTE2MzQ9dm9pZCBtbHg1ZV9zdGF0c19mZWNfZ2V0KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE2MzUtXFx0XFx0XFx0IHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jOjE2MzY6XFx0XFx0XFx0IHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jLTE2Mzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmg9MTE5PXZvaWQgbWx4NWVfc3RhdHNfZmVjX2dldChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuaC0xMjAtXFx0XFx0XFx0IHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5oOjEyMTpcXHRcXHRcXHQgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5oLTEyMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jPTE4NjI9ZmJuaWNfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jLTE4NjMtXFx0XFx0ICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jOjE4NjQ6XFx0XFx0ICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jLTE4NjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2V0aHRvb2wuYz0yMTk9c3RhdGljIHZvaWQgZWZ4X2V0aHRvb2xfZ2V0X2ZlY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2RldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZXRodG9vbC5jLTIyMC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgKmZlY19zdGF0cyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZXRodG9vbC5jOjIyMTpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZXRodG9vbC5jLTIyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvc2llbmEvZXRodG9vbC5jPTIxOT1zdGF0aWMgdm9pZCBlZnhfZXRodG9vbF9nZXRfZmVjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9zaWVuYS9ldGh0b29sLmMtMjIwLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19zdGF0cyAqZmVjX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9zaWVuYS9ldGh0b29sLmM6MjIxOlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2ZlY19oaXN0ICpoaXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9zaWVuYS9ldGh0b29sLmMtMjIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM9MTUyPW5zaW1fc2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2ZlY3BhcmFtICpmZWNwYXJhbSlcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmMtMTY3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM6MTY4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSBuZXRkZXZzaW1fZmVjX3Jhbmdlc1tdID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmMtMTY5LVxcdHsgMCwgMH0sXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jPTE3Nj1uc2ltX2dldF9mZWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfZmVjX3N0YXRzICpmZWNfc3RhdHMsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYzoxNzc6XFx0XFx0ICAgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3QgKmhpc3QpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy0xNzgte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM6MTc5OlxcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3ZhbHVlICp2YWx1ZXMgPSBoaXN0LVxcdTAwM2V2YWx1ZXM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy0xODAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaD01MzM9c3RydWN0IGV0aHRvb2xfcGF1c2Vfc3RhdHMge1xcbi0tXFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTQ4LS8qKlxcbmluY2x1ZGUvbGludXgvZXRodG9vbC5oOjU0OTogKiBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAtIGVycm9yIGJpdHMgcmFuZ2UgZm9yIEZFQyBoaXN0b2dyYW1cXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC01NTAtICogc3RhdGlzdGljc1xcbi0tXFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTUzLSAqL1xcbmluY2x1ZGUvbGludXgvZXRodG9vbC5oOjU1NDpzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSB7XFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTU1LVxcdHUxNiBsb3c7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC01NTgtXFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmg6NTU5OnN0cnVjdCBldGh0b29sX2ZlY19oaXN0IHtcXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDo1NjA6XFx0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfdmFsdWUge1xcbmluY2x1ZGUvbGludXgvZXRodG9vbC5oLTU2MS1cXHRcXHR1NjQgc3VtO1xcbi0tXFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTYzLVxcdH0gdmFsdWVzW0VUSFRPT0xfRkVDX0hJU1RfTUFYXTtcXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDo1NjQ6XFx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKnJhbmdlcztcXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDo1NjU6XFx0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgcmFuZ2VzX2J1ZltFVEhUT09MX0ZFQ19ISVNUX01BWF07XFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtNTY2LX07XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaD0xMjAwPXN0cnVjdCBldGh0b29sX29wcyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaC0xMzIwLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgZXRodG9vbF9mZWNfc3RhdHMgKmZlY19zdGF0cyxcXG5pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDoxMzIxOlxcdFxcdFxcdFxcdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdCk7XFxuaW5jbHVkZS9saW51eC9ldGh0b29sLmgtMTMyMi1cXHRpbnRcXHQoKmdldF9mZWNwYXJhbSkoc3RydWN0IG5ldF9kZXZpY2UgKixcXG4tLVxcbm5ldC9ldGh0b29sL2ZlYy5jPTExPXN0cnVjdCBmZWNfcmVwbHlfZGF0YSB7XFxuLS1cXG5uZXQvZXRodG9vbC9mZWMuYy0xOS1cXHR9IGNvcnIsIHVuY29yciwgY29ycl9iaXRzO1xcbm5ldC9ldGh0b29sL2ZlYy5jOjIwOlxcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0IGZlY19zdGF0X2hpc3Q7XFxubmV0L2V0aHRvb2wvZmVjLmMtMjEtfTtcXG4tLVxcbm5ldC9ldGh0b29sL2ZlYy5jPTE4MD1zdGF0aWMgaW50IGZlY19wdXRfaGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9ldGh0b29sL2ZlYy5jOjE4MTpcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdCAqaGlzdClcXG5uZXQvZXRodG9vbC9mZWMuYy0xODIte1xcbm5ldC9ldGh0b29sL2ZlYy5jOjE4MzpcXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqcmFuZ2VzID0gaGlzdC1cXHUwMDNlcmFuZ2VzO1xcbm5ldC9ldGh0b29sL2ZlYy5jOjE4NDpcXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF92YWx1ZSAqdmFsdWVzID0gaGlzdC1cXHUwMDNldmFsdWVzO1xcbm5ldC9ldGh0b29sL2ZlYy5jLTE4NS1cXHRzdHJ1Y3QgbmxhdHRyICpuZXN0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDozNC4wODc5Nzk3OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDg0NzY2MTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgYHJhbmdlc19idWZgIHRvIGBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdGAgaW4gYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgYSBzdHJ1Y3QgY2hhbmdlLi4uIGxldCdzIHNlZSB3aGVyZSB0aGlzIGlzIHVzZWQuXCIgSSBzZWUgaXQncyB1c2VkIGluIGBuZXQvZXRodG9vbC9mZWMuY2AgYW5kIGEgZmV3IGRyaXZlcnMuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBhbHNvIHR3ZWFrcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmNgIGFuZCBgZW5fbWFpbi5jYCB0byAqdXNlKiB0aGlzIG5ldyBidWZmZXIgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGl0IG9uIHRoZSBmbHkuIEhvbGQgb24gYSBzZWNvbmQsIHRoZSByZWFsIGxvZ2ljIGNoYW5nZSBpcyAqd2l0aGluKiB0aGUgYG1seDVgIGRyaXZlciwgd2hpY2ggaXMgaGFyZHdhcmUtc3BlY2lmaWMgYW5kIHRodXMsIHVuZm9ydHVuYXRlbHksIHVucmVhY2hhYmxlIGluIG15IGZ1enppbmcgc2V0dXAuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSBubyBvdGhlciBkcml2ZXJzIGFyZSBtb2RpZmllZC4gTm9wZSwganVzdCBgbWx4NWAuIFNvLCBlZmZlY3RpdmVseSwgdGhlIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgZW50aXJlbHkgbG9jYWxpemVkIHRvIHRoZSBgbWx4NWAgZHJpdmVyLiBTaW5jZSB0aGF0IGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBoYXJkd2FyZSBhbmQgSSdtIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGl0J3MgYSBkZWFkIGVuZCBmb3IgbXkgZnV6emluZyBlZmZvcnRzLiBJdCBkb2Vzbid0IHNlZW0gbGlrZSB0aGUgcGF0Y2ggY2FuIGNhdXNlIGFueSBwcm9ibGVtcyBmb3IgbXkgdGVzdHMuXG5cbkJ1dCwgYmVpbmcgdGhlIHBhcmFub2lkIGV4cGVydCB0aGF0IEkgYW0sIEknbGwgZG91YmxlLWNoZWNrIHRoaXM6IHRoZSBjaGFuZ2UgaW4gYGV0aHRvb2wuaGAgaXMganVzdCBhIHN0cnVjdCBkZWZpbml0aW9uIGNoYW5nZSwgYnV0IGl0IGluY3JlYXNlcyB0aGUgc3RydWN0IHNpemUuIExldCdzIG1ha2Ugc3VyZSB0aGF0J3Mgbm90IGdvaW5nIHRvIGJpdGUgdXMgZG93biB0aGUgbGluZS4gVGhlIHNpemUgaW5jcmVhc2VzIGJ5IGBFVEhUT09MX0ZFQ19ISVNUX01BWCAqIHNpemVvZihzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSlgIHdoaWNoIGlzIDggKiA0ID0gMzIgYnl0ZXMuIE5vdywgd2hlcmUgaXMgYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YCBlbWJlZGRlZD8gQWgsIGl0J3MgZW1iZWRkZWQgd2l0aGluIGBzdHJ1Y3QgZmVjX3JlcGx5X2RhdGFgIGluIGBuZXQvZXRodG9vbC9mZWMuY2AuIFRoZSBxdWVzdGlvbiBub3cgaXMsIGlzIGBzdHJ1Y3QgZmVjX3JlcGx5X2RhdGFgIGFsbG9jYXRlZCBzdGF0aWNhbGx5IG9yIGR5bmFtaWNhbGx5LCBlaXRoZXIgb24gc3RhY2sgb3IgaGVhcD8gTGV0J3MgdGFrZSBhIGxvb2sgYXQgYG5ldC9ldGh0b29sL2ZlYy5jYCBmb3IgYWxsb2NhdGlvbiBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQ2OCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDo0Mi41NzI3NDk2NTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzgzMzk1NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmVjX3JlcGx5X2RhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2V0aHRvb2wvZmVjLmM9Nz1zdHJ1Y3QgZmVjX3JlcV9pbmZvIHtcXG4tLVxcbm5ldC9ldGh0b29sL2ZlYy5jLTEwLVxcbm5ldC9ldGh0b29sL2ZlYy5jOjExOnN0cnVjdCBmZWNfcmVwbHlfZGF0YSB7XFxubmV0L2V0aHRvb2wvZmVjLmMtMTItXFx0c3RydWN0IGV0aG5sX3JlcGx5X2RhdGFcXHRcXHRiYXNlO1xcbi0tXFxubmV0L2V0aHRvb2wvZmVjLmMtMjMtI2RlZmluZSBGRUNfUkVQREFUQShfX3JlcGx5X2Jhc2UpIFxcXFxcXG5uZXQvZXRodG9vbC9mZWMuYzoyNDpcXHRjb250YWluZXJfb2YoX19yZXBseV9iYXNlLCBzdHJ1Y3QgZmVjX3JlcGx5X2RhdGEsIGJhc2UpXFxubmV0L2V0aHRvb2wvZmVjLmMtMjUtXFxuLS1cXG5uZXQvZXRodG9vbC9mZWMuYz05ND1zdGF0aWMgaW50IGZlY19wcmVwYXJlX2RhdGEoY29uc3Qgc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG4tLVxcbm5ldC9ldGh0b29sL2ZlYy5jLTk4LVxcdF9fRVRIVE9PTF9ERUNMQVJFX0xJTktfTU9ERV9NQVNLKGFjdGl2ZV9mZWNfbW9kZXMpID0ge307XFxubmV0L2V0aHRvb2wvZmVjLmM6OTk6XFx0c3RydWN0IGZlY19yZXBseV9kYXRhICpkYXRhID0gRkVDX1JFUERBVEEocmVwbHlfYmFzZSk7XFxubmV0L2V0aHRvb2wvZmVjLmMtMTAwLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSByZXBseV9iYXNlLVxcdTAwM2VkZXY7XFxuLS1cXG5uZXQvZXRodG9vbC9mZWMuYz0xNDY9c3RhdGljIGludCBmZWNfcmVwbHlfc2l6ZShjb25zdCBzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxcbi0tXFxubmV0L2V0aHRvb2wvZmVjLmMtMTQ5LVxcdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVxcdTAwM2VmbGFncyBcXHUwMDI2IEVUSFRPT0xfRkxBR19DT01QQUNUX0JJVFNFVFM7XFxubmV0L2V0aHRvb2wvZmVjLmM6MTUwOlxcdGNvbnN0IHN0cnVjdCBmZWNfcmVwbHlfZGF0YSAqZGF0YSA9IEZFQ19SRVBEQVRBKHJlcGx5X2Jhc2UpO1xcbm5ldC9ldGh0b29sL2ZlYy5jLTE1MS1cXHRpbnQgbGVuID0gMDtcXG4tLVxcbm5ldC9ldGh0b29sL2ZlYy5jPTE4MD1zdGF0aWMgaW50IGZlY19wdXRfaGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2V0aHRvb2wvZmVjLmMtMjM0LVxcbm5ldC9ldGh0b29sL2ZlYy5jOjIzNTpzdGF0aWMgaW50IGZlY19wdXRfc3RhdHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IGZlY19yZXBseV9kYXRhICpkYXRhKVxcbm5ldC9ldGh0b29sL2ZlYy5jLTIzNi17XFxuLS1cXG5uZXQvZXRodG9vbC9mZWMuYz0yNjU9c3RhdGljIGludCBmZWNfZmlsbF9yZXBseShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2V0aHRvb2wvZmVjLmMtMjY5LVxcdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVxcdTAwM2VmbGFncyBcXHUwMDI2IEVUSFRPT0xfRkxBR19DT01QQUNUX0JJVFNFVFM7XFxubmV0L2V0aHRvb2wvZmVjLmM6MjcwOlxcdGNvbnN0IHN0cnVjdCBmZWNfcmVwbHlfZGF0YSAqZGF0YSA9IEZFQ19SRVBEQVRBKHJlcGx5X2Jhc2UpO1xcbm5ldC9ldGh0b29sL2ZlYy5jLTI3MS1cXHRpbnQgcmV0O1xcbi0tXFxubmV0L2V0aHRvb2wvZmVjLmM9MzUwPWNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF9mZWNfcmVxdWVzdF9vcHMgPSB7XFxuLS1cXG5uZXQvZXRodG9vbC9mZWMuYy0zNTQtXFx0LnJlcV9pbmZvX3NpemVcXHRcXHQ9IHNpemVvZihzdHJ1Y3QgZmVjX3JlcV9pbmZvKSxcXG5uZXQvZXRodG9vbC9mZWMuYzozNTU6XFx0LnJlcGx5X2RhdGFfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBmZWNfcmVwbHlfZGF0YSksXFxubmV0L2V0aHRvb2wvZmVjLmMtMzU2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDo0NS4xMTEwOTQyOThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk3ODY4MDY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBldGh0b29sIG5ldGxpbmsgZnJhbWV3b3JrIGNoYW5nZSoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGludG8gdGhpcy4gVGhlIGBldGhubF9mZWNfcmVxdWVzdF9vcHNgIHN0cnVjdHVyZSBub3cgc3BlY2lmaWVzIGEgYC5yZXBseV9kYXRhX3NpemVgIG9mIGBzaXplb2Yoc3RydWN0IGZlY19yZXBseV9kYXRhKWAuIFRoaXMgdGVsbHMgdGhlIGV0aHRvb2wgbmV0bGluayBmcmFtZXdvcmsgaG93IG11Y2ggbWVtb3J5IHRvIGFsbG9jYXRlIGZvciB0aGUgcmVwbHkgZGF0YS4gVGhlIGluY3JlYXNlIGlzIGFjdHVhbGx5IHByZXR0eSBtaW5vciwgb25seSAzMiBieXRlcywgYW5kIHRoZSBmcmFtZXdvcmsgaXRzZWxmIGhhbmRsZXMgdGhlIGR5bmFtaWMgYWxsb2NhdGlvbiwgc28gdGhhdCdzIGdvb2QuIEZ1bmN0aW9uYWxseSwgdGhlIGltcGFjdCBpcyBpc29sYXRlZCB0byB0aGUgYG1seDVgIGRyaXZlci4gQnV0IGhlcmUncyB0aGUga2lja2VyOiBgbWx4NWAgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIuIEJlY2F1c2UgaXQncyBoYXJkd2FyZSwgaXQncyBub3QgZ29pbmcgdG8gYmUgdHJpZ2dlcmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQgbWVhbnMsIGZyb20gYSBwcmFjdGljYWwgZnV6emluZyBzdGFuZHBvaW50LCBpdCdzIG5vdCBhIHJlbGV2YW50IGFyZWEgb2YgY29uY2Vybi4gVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gbWFyayB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBwb2ludCBzcGVuZGluZyByZXNvdXJjZXMgb24gc29tZXRoaW5nIHRoYXQgd2UgY2FuJ3QgZWZmZWN0aXZlbHkgdGVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgxNTIsIk91dHB1dFRva2VucyI6MTIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjUxLjA4OTc3NzAwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciB0byB1c2UgYW4gZW1iZWRkZWQgYnVmZmVyIGZvciBGRUMgaGlzdG9ncmFtIHJhbmdlcyBpbnN0ZWFkIG9mIGR5bmFtaWNhbGx5IGFsbG9jYXRpbmcgaXQuIFNpbmNlIG1seDUgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuIFRoZSBjaGFuZ2UgdG8gYHN0cnVjdCBldGh0b29sX2ZlY19oaXN0YCBvbmx5IGluY3JlYXNlcyBpdHMgc2l6ZSBzbGlnaHRseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyByZWFjaGFibGUgbG9naWMgZm9yIG90aGVyIGRyaXZlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgdG8gdXNlIGFuIGVtYmVkZGVkIGJ1ZmZlciBmb3IgRkVDIGhpc3RvZ3JhbSByYW5nZXMgaW5zdGVhZCBvZiBkeW5hbWljYWxseSBhbGxvY2F0aW5nIGl0LiBTaW5jZSBtbHg1IGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBUaGUgY2hhbmdlIHRvIGBzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdGAgb25seSBpbmNyZWFzZXMgaXRzIHNpemUgc2xpZ2h0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBuZXcgcmVhY2hhYmxlIGxvZ2ljIGZvciBvdGhlciBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowxg9rj[1] Phase: Running StartedAt: 2026-07-24 08:21:02 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxg9rj[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-24 08:21:02 +0000 UTC FinishedAt: 2026-07-24 08:21:09 +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,}