Name: series-workflowg7gsg Phase: Failed StartedAt: 2026-06-28 23:15:12 +0000 UTC FinishedAt: 2026-06-28 23:21:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg7gsg[0] Phase: Succeeded StartedAt: 2026-06-28 23:15:12 +0000 UTC FinishedAt: 2026-06-28 23:21:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg7gsg[0].run-triage Phase: Succeeded StartedAt: 2026-06-28 23:15:12 +0000 UTC FinishedAt: 2026-06-28 23:21:04 +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+CgkJCTx0ZD4yMDI2LzA2LzI4IDIzOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGFnNzF4eCBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igb24tY2hpcCBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBNSVBTIFNvQ3MgKEFSN3h4eC9BUjl4eHgpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIGdlbmVyaWMgUUVNVSkgdXNlZCBmb3IgZnV6emluZy4gRXZlbiBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHZpYSBDT01QSUxFX1RFU1QsIHRoZSBsYWNrIG9mIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYW5kIGVtdWxhdGVkIE1NSU8vRE1BIGhhcmR3YXJlIG1ha2VzIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGFuZCB1bmZ1enphYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc1MDIyZWIyM2NlZjEyMDZlOTVjZDU4YjczOWQxOTAxNGVkZWEyZGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1biAyOCAyMzoyMDoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xuaW5kZXggNGU0Nzk0YzRkZmRjZWEuLmE3OGJlNTFhMDFjYzRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xuQEAgLTQwLDExICYjNDM7NDAsNiBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvc2VsZnRlc3RzLmhcdTAwM2VcbiBcbi0vKiBGb3Igb3VyIE5BUEkgd2VpZ2h0IGJpZ2dlciBkb2VzICpOT1QqIG1lYW4gYmV0dGVyIC0gaXQgbWVhbnMgbW9yZVxuLSAqIEQtY2FjaGUgbWlzc2VzIGFuZCBsb3RzIG1vcmUgd2FzdGVkIGN5Y2xlcyB0aGFuIHdlJiMzOTtsbCBldmVyXG4tICogcG9zc2libHkgZ2FpbiBmcm9tIHNhdmluZyBpbnN0cnVjdGlvbnMuXG4tICovXG4tI2RlZmluZSBBRzcxWFhfTkFQSV9XRUlHSFRcdDMyXG4gI2RlZmluZSBBRzcxWFhfT09NX1JFRklMTFx0KDEgJiM0MzsgSFogLyAxMClcbiBcbiAjZGVmaW5lIEFHNzFYWF9JTlRfRVJSXHQoQUc3MVhYX0lOVF9SWF9CRSB8IEFHNzFYWF9JTlRfVFhfQkUpXG5AQCAtNDAyLDExICYjNDM7Mzk3LDEzIEBAIHN0YXRpYyBib29sIGFnNzF4eF9pcyhzdHJ1Y3QgYWc3MXh4ICphZywgZW51bSBhZzcxeHhfdHlwZSB0eXBlKVxuIFx0cmV0dXJuIGFnLVx1MDAzZWRjZmctXHUwMDNldHlwZSA9PSB0eXBlO1xuIH1cbiBcbiYjNDM7LyogYXRoNzkgb24tY2hpcCBNTUlPIGJ1cyBpcyBub24tcG9zdGVkIC0gaW93cml0ZTMyL2lvd3JpdGUzMmJlIGNvbXBsZXRlc1xuJiM0MzsgKiBiZWZvcmUgdGhlIG5leHQgaW5zdHJ1Y3Rpb24gZXhlY3V0ZXMuIE5vIHJlYWQtYmFjayBkcmFpbiBpcyBuZWVkZWQuXG4mIzQzOyAqL1xuJiM0MztcbiBzdGF0aWMgdm9pZCBhZzcxeHhfd3Ioc3RydWN0IGFnNzF4eCAqYWcsIHVuc2lnbmVkIGludCByZWcsIHUzMiB2YWx1ZSlcbiB7XG4gXHRpb3dyaXRlMzIodmFsdWUsIGFnLVx1MDAzZW1hY19iYXNlICYjNDM7IHJlZyk7XG4tXHQvKiBmbHVzaCB3cml0ZSAqL1xuLVx0KHZvaWQpaW9yZWFkMzIoYWctXHUwMDNlbWFjX2Jhc2UgJiM0MzsgcmVnKTtcbiB9XG4gXG4gc3RhdGljIHUzMiBhZzcxeHhfcnIoc3RydWN0IGFnNzF4eCAqYWcsIHVuc2lnbmVkIGludCByZWcpXG5AQCAtNDE2LDIyICYjNDM7NDEzLDE2IEBAIHN0YXRpYyB1MzIgYWc3MXh4X3JyKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnKVxuIFxuIHN0YXRpYyB2b2lkIGFnNzF4eF9zYihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZywgdTMyIG1hc2spXG4ge1xuLVx0dm9pZCBfX2lvbWVtICpyO1xuJiM0MztcdHZvaWQgX19pb21lbSAqciA9IGFnLVx1MDAzZW1hY19iYXNlICYjNDM7IHJlZztcbiBcbi1cdHIgPSBhZy1cdTAwM2VtYWNfYmFzZSAmIzQzOyByZWc7XG4gXHRpb3dyaXRlMzIoaW9yZWFkMzIocikgfCBtYXNrLCByKTtcbi1cdC8qIGZsdXNoIHdyaXRlICovXG4tXHQodm9pZClpb3JlYWQzMihyKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgYWc3MXh4X2NiKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgbWFzaylcbiB7XG4tXHR2b2lkIF9faW9tZW0gKnI7XG4mIzQzO1x0dm9pZCBfX2lvbWVtICpyID0gYWctXHUwMDNlbWFjX2Jhc2UgJiM0MzsgcmVnO1xuIFxuLVx0ciA9IGFnLVx1MDAzZW1hY19iYXNlICYjNDM7IHJlZztcbiBcdGlvd3JpdGUzMihpb3JlYWQzMihyKSBcdTAwMjYgfm1hc2ssIHIpO1xuLVx0LyogZmx1c2ggd3JpdGUgKi9cbi1cdCh2b2lkKWlvcmVhZDMyKHIpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBhZzcxeHhfaW50X2VuYWJsZShzdHJ1Y3QgYWc3MXh4ICphZywgdTMyIGludHMpXG5AQCAtMTcyOSw2ICYjNDM7MTcyMCw3IEBAIHN0YXRpYyBpbnQgYWc3MXh4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgbGltaXQpXG4gXG4gXHRtb2RfdGltZXIoXHUwMDI2YWctXHUwMDNlb29tX3RpbWVyLCBqaWZmaWVzICYjNDM7IEFHNzFYWF9PT01fUkVGSUxMKTtcbiBcdG5hcGlfY29tcGxldGUobmFwaSk7XG4mIzQzO1x0YWc3MXh4X2ludF9lbmFibGUoYWcsIEFHNzFYWF9JTlRfVFgpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTE5MTMsOCAmIzQzOzE5MDUsNyBAQCBzdGF0aWMgaW50IGFnNzF4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuLVx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFx1MDAyNmFnLVx1MDAzZW5hcGksIGFnNzF4eF9wb2xsLFxuLVx0XHRcdCAgICAgIEFHNzFYWF9OQVBJX1dFSUdIVCk7XG4mIzQzO1x0bmV0aWZfbmFwaV9hZGQobmRldiwgXHUwMDI2YWctXHUwMDNlbmFwaSwgYWc3MXh4X3BvbGwpO1xuIFxuIFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcxLCAwKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhZzcxeHggRXRoZXJuZXQgTUFDIGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIG9uLWNoaXAgaGFyZHdhcmUgZm91bmQgaW4gc3BlY2lmaWMgTUlQUyBTb0NzIChBUjd4eHgvQVI5eHh4KS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBnZW5lcmljIFFFTVUpIHVzZWQgZm9yIGZ1enppbmcuIEV2ZW4gaWYgdGhlIGRyaXZlciBpcyBjb21waWxlZCB2aWEgQ09NUElMRV9URVNULCB0aGUgbGFjayBvZiBhIGNvcnJlc3BvbmRpbmcgcGxhdGZvcm0gZGV2aWNlIGFuZCBlbXVsYXRlZCBNTUlPL0RNQSBoYXJkd2FyZSBtYWtlcyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBhbmQgdW5mdXp6YWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc1MDIyZWIyM2NlZjEyMDZlOTVjZDU4YjczOWQxOTAxNGVkZWEyZGEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1biAyOCAyMzoyMDoxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jCmluZGV4IDRlNDc5NGM0ZGZkY2VhLi5hNzhiZTUxYTAxY2M0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jCkBAIC00MCwxMSAmIzQzOzQwLDYgQEAKICNpbmNsdWRlICZsdDtsaW51eC9pby5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9zZWxmdGVzdHMuaCZndDsKIAotLyogRm9yIG91ciBOQVBJIHdlaWdodCBiaWdnZXIgZG9lcyAqTk9UKiBtZWFuIGJldHRlciAtIGl0IG1lYW5zIG1vcmUKLSAqIEQtY2FjaGUgbWlzc2VzIGFuZCBsb3RzIG1vcmUgd2FzdGVkIGN5Y2xlcyB0aGFuIHdlJiMzOTtsbCBldmVyCi0gKiBwb3NzaWJseSBnYWluIGZyb20gc2F2aW5nIGluc3RydWN0aW9ucy4KLSAqLwotI2RlZmluZSBBRzcxWFhfTkFQSV9XRUlHSFQJMzIKICNkZWZpbmUgQUc3MVhYX09PTV9SRUZJTEwJKDEgJiM0MzsgSFogLyAxMCkKIAogI2RlZmluZSBBRzcxWFhfSU5UX0VSUgkoQUc3MVhYX0lOVF9SWF9CRSB8IEFHNzFYWF9JTlRfVFhfQkUpCkBAIC00MDIsMTEgJiM0MzszOTcsMTMgQEAgc3RhdGljIGJvb2wgYWc3MXh4X2lzKHN0cnVjdCBhZzcxeHggKmFnLCBlbnVtIGFnNzF4eF90eXBlIHR5cGUpCiAJcmV0dXJuIGFnLSZndDtkY2ZnLSZndDt0eXBlID09IHR5cGU7CiB9CiAKJiM0MzsvKiBhdGg3OSBvbi1jaGlwIE1NSU8gYnVzIGlzIG5vbi1wb3N0ZWQgLSBpb3dyaXRlMzIvaW93cml0ZTMyYmUgY29tcGxldGVzCiYjNDM7ICogYmVmb3JlIHRoZSBuZXh0IGluc3RydWN0aW9uIGV4ZWN1dGVzLiBObyByZWFkLWJhY2sgZHJhaW4gaXMgbmVlZGVkLgomIzQzOyAqLwomIzQzOwogc3RhdGljIHZvaWQgYWc3MXh4X3dyKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgdmFsdWUpCiB7CiAJaW93cml0ZTMyKHZhbHVlLCBhZy0mZ3Q7bWFjX2Jhc2UgJiM0MzsgcmVnKTsKLQkvKiBmbHVzaCB3cml0ZSAqLwotCSh2b2lkKWlvcmVhZDMyKGFnLSZndDttYWNfYmFzZSAmIzQzOyByZWcpOwogfQogCiBzdGF0aWMgdTMyIGFnNzF4eF9ycihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZykKQEAgLTQxNiwyMiAmIzQzOzQxMywxNiBAQCBzdGF0aWMgdTMyIGFnNzF4eF9ycihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZykKIAogc3RhdGljIHZvaWQgYWc3MXh4X3NiKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgbWFzaykKIHsKLQl2b2lkIF9faW9tZW0gKnI7CiYjNDM7CXZvaWQgX19pb21lbSAqciA9IGFnLSZndDttYWNfYmFzZSAmIzQzOyByZWc7CiAKLQlyID0gYWctJmd0O21hY19iYXNlICYjNDM7IHJlZzsKIAlpb3dyaXRlMzIoaW9yZWFkMzIocikgfCBtYXNrLCByKTsKLQkvKiBmbHVzaCB3cml0ZSAqLwotCSh2b2lkKWlvcmVhZDMyKHIpOwogfQogCiBzdGF0aWMgdm9pZCBhZzcxeHhfY2Ioc3RydWN0IGFnNzF4eCAqYWcsIHVuc2lnbmVkIGludCByZWcsIHUzMiBtYXNrKQogewotCXZvaWQgX19pb21lbSAqcjsKJiM0MzsJdm9pZCBfX2lvbWVtICpyID0gYWctJmd0O21hY19iYXNlICYjNDM7IHJlZzsKIAotCXIgPSBhZy0mZ3Q7bWFjX2Jhc2UgJiM0MzsgcmVnOwogCWlvd3JpdGUzMihpb3JlYWQzMihyKSAmYW1wOyB+bWFzaywgcik7Ci0JLyogZmx1c2ggd3JpdGUgKi8KLQkodm9pZClpb3JlYWQzMihyKTsKIH0KIAogc3RhdGljIHZvaWQgYWc3MXh4X2ludF9lbmFibGUoc3RydWN0IGFnNzF4eCAqYWcsIHUzMiBpbnRzKQpAQCAtMTcyOSw2ICYjNDM7MTcyMCw3IEBAIHN0YXRpYyBpbnQgYWc3MXh4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgbGltaXQpCiAKIAltb2RfdGltZXIoJmFtcDthZy0mZ3Q7b29tX3RpbWVyLCBqaWZmaWVzICYjNDM7IEFHNzFYWF9PT01fUkVGSUxMKTsKIAluYXBpX2NvbXBsZXRlKG5hcGkpOwomIzQzOwlhZzcxeHhfaW50X2VuYWJsZShhZywgQUc3MVhYX0lOVF9UWCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE5MTMsOCAmIzQzOzE5MDUsNyBAQCBzdGF0aWMgaW50IGFnNzF4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlyZXR1cm4gZXJyOwogCX0KIAotCW5ldGlmX25hcGlfYWRkX3dlaWdodChuZGV2LCAmYW1wO2FnLSZndDtuYXBpLCBhZzcxeHhfcG9sbCwKLQkJCSAgICAgIEFHNzFYWF9OQVBJX1dFSUdIVCk7CiYjNDM7CW5ldGlmX25hcGlfYWRkKG5kZXYsICZhbXA7YWctJmd0O25hcGksIGFnNzF4eF9wb2xsKTsKIAogCWFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NQUNfQ0ZHMSwgMCk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMjM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFHNzFYWCBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCBvbiB0aGUgc3VyZmFjZS4gRmlyc3QsIHRoZXkmIzM5O3ZlIGNsZWFuZWQgdXAgc29tZSBuYXBpLXJlbGF0ZWQgY29kZSwgcmVtb3ZpbmcgYEFHNzFYWF9OQVBJX1dFSUdIVGAgYW5kIG9wdGluZyBmb3IgYG5ldGlmX25hcGlfYWRkYCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZSBub3cuIEdvb2QuIFRoZXkmIzM5O3ZlIGFsc28gZ290dGVuIHJpZCBvZiB0aGUgcmVhZC1iYWNrIGRyYWlucyBpbiB0aG9zZSB3cml0ZSBmdW5jdGlvbnMg4oCTIGBhZzcxeHhfd3JgLCBgYWc3MXh4X3NiYCwgYGFnNzF4eF9jYmAuIFByb2JhYmx5IGFuIG9wdGltaXphdGlvbiwgbGVzcyBidXN5LXdhaXRpbmcuIEFuZCBmaW5hbGx5LCB0aGV5JiMzOTt2ZSBhZGRlZCBhbiBpbnRlcnJ1cHQgZW5hYmxlIGZvciBUWCBpbiBgYWc3MXh4X3BvbGxgLCB3aGljaCBpcyBsaWtlbHkgYWJvdXQgb3B0aW1pemluZyBpbnRlcnJ1cHQgaGFuZGxpbmcuIEZpbmUsIEkgZ2V0IHRoZSBjaGFuZ2VzLgoKTm93LCB0aGlzIGlzIGFuIEF0aGVyb3MgZHJpdmVyLiBJdCYjMzk7cyBidWlsdCBmb3IgdGhvc2Ugb2xkZXIgU29DczogQVI3MXh4LCBBUjcyNHgsIEFSOTEzeCwgdGhlIHdob2xlIGdhbmcsIHJpZ2h0IHRocm91Z2ggdGhlIFFDQSBzZXJpZXMuIEl0JiMzOTtzIGEgYnVpbHQtaW4gRXRoZXJuZXQgTUFDLCBzbyB0aGlzIGlzIGdvaW5nIHRvIGJlIHBsYXRmb3JtLXNwZWNpZmljLCB2ZXJ5IHRpZ2h0bHkgY291cGxlZCB0byB0aGUgaGFyZHdhcmUuIFRoYXQmIzM5O3Mgd2hhdCBJJiMzOTttIGNvbmNlcm5lZCBhYm91dC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiB3aWxsIGl0IGV2ZW4gYmUgKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSSBkb3VidCBpdC4gVGhpcyBpc24mIzM5O3QgYSBnZW5lcmljIE5JQyBkcml2ZXI7IGl0JiMzOTtzIGEgZGlyZWN0IGludGVyZmFjZSB0byBvbi1jaGlwIGhhcmR3YXJlLgoKTGV0JiMzOTtzIGNvbmZpcm0gaXQmIzM5O3MgdXNpbmcgdGhlIGBwbGF0Zm9ybV9kZXZpY2VgIGluZnJhc3RydWN0dXJlLiBZdXAsIGl0IGlzLiBBcyBJIHN1c3BlY3RlZC4gQ2FuIHdlIGVtdWxhdGUgdGhpcyBlYXNpbHk/IEFic29sdXRlbHkgbm90LCBpdCYjMzk7cyBub3QgYSBzdGFuZGFyZCBOSUMsIGl0JiMzOTtzIGEgc3BlY2lmaWMgTUFDLiBXZSYjMzk7ZCBoYXZlIHRvIGVtdWxhdGUgdGhlIGVudGlyZSBBdGhlcm9zIFNvQyEgVGhhdCYjMzk7cyBhIGh1Z2UgdW5kZXJ0YWtpbmcuIEFscmlnaHQsIGxldCYjMzk7cyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlIGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9gIGRpcmVjdG9yeSBzYXlzIGFib3V0IGl0cyBkZXBlbmRlbmNpZXMuIEdvdHRhIGNoZWNrIGZvciBhbnkgc3VidGxlIGJ1aWxkIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQUc3MVhYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX0FUSEVST1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZzoyMDpjb25maWcgQUc3MVhYXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEFSN1hYWC9BUjlYWFggYnVpbHQtaW4gZXRoZXJuZXQgbWFjIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTMyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEF0aGVyb3MgRXRoZXJuZXQgS2NvbmZpZyoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBBdGhlcm9zIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLCBzbyBteSBmb2N1cyBpcyBub3cgb24gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyMC4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBLY29uZmlnIHN0cnVjdHVyZSBpcyBpbXBsZW1lbnRlZCB0byBzZWUgd2hhdCBvcHRpb25zIGFyZSBiZWluZyBtYWRlIGF2YWlsYWJsZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGRlcGVuZGVuY2llcywgZGVmYXVsdCBzZXR0aW5ncywgYW5kIG1heWJlIHNvbWUgaGVscCB0ZXh0IHRoYXQgd2lsbCBpbGx1bWluYXRlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIEhvcGVmdWxseSwgdGhlIGZpbGUgaXMgd2VsbC1jb21tZW50ZWQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgdmFyaW91cyBBdGhlcm9zIEV0aGVybmV0IGNoaXBzZXRzLCB3aGF0IGZlYXR1cmVzIGFyZSBjb25maWd1cmFibGUgKGxpa2UgVkxBTiBzdXBwb3J0LCBqdW1ibyBmcmFtZXMsIHBvd2VyIG1hbmFnZW1lbnQsIGV0Yy4pLCBhbmQgaG93IGFsbCBvZiB0aGlzIGlzIHN0cnVjdHVyZWQgd2l0aGluIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3RhY2suIFRoZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2Ygd2hhdCBzZXR0aW5ncyBJIGNhbiB0d2VhayBhbmQgd2hhdCB0aGVpciBpbXBsaWNhdGlvbnMgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDIzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxODpcdGlmIE5FVF9WRU5ET1JfQVRIRVJPU1xuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBBRzcxWFhcbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgQVI3WFhYL0FSOVhYWCBidWlsdC1pbiBldGhlcm5ldCBtYWMgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBBVEg3OSB8fCBDT01QSUxFX1RFU1RcbiAgMjM6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDI0Olx0XHRpbXBseSBORVRfU0VMRlRFU1RTXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIElmIHlvdSB3aXNoIHRvIGNvbXBpbGUgYSBrZXJuZWwgZm9yIEFSN1hYWC85MVhYWCBhbmQgZW5hYmxlXG4gIDI3Olx0XHQgIGV0aGVybmV0IHN1cHBvcnQsIHRoZW4geW91IHNob3VsZCBhbHdheXMgYW5zd2VyIFkgdG8gdGhpcy5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgQVRMMlxuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBMMiBGYXN0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdGRlcGVuZHMgb24gUENJXG4gIDMyOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMzM6XHRcdHNlbGVjdCBNSUlcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEF0aGVyb3MgTDIgZmFzdCBldGhlcm5ldCBhZGFwdGVyLlxuICAzNjpcdFxuICAzNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgVGhlIG1vZHVsZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDIzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwODkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGFnNzF4eGAgRHJpdmVyOiBBIFRob3VnaHQgUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgYWc3MXh4YCBkcml2ZXIsIGFuZCBpbW1lZGlhdGVseSBteSBtaW5kIGdvZXMgdG8gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uOiBpcyBpdCBgQVRINzlgIG9yIGBDT01QSUxFX1RFU1RgPyBUaGF0IHdpbGwgZGljdGF0ZSBhIGxvdC4gQ2FuIEkgZXZlbiBmdXp6IHRoaXMgdGhpbmcgaW4gUUVNVT8gSSYjMzk7bSBwcmV0dHkgc3VyZSBgQVRINzlgIGlzIE1JUFMsIGFuZCB3aGlsZSBRRU1VICpkb2VzKiBzdXBwb3J0IE1JUFMsIHN5emthbGxlciBwcmltYXJpbHkgZm9jdXNlcyBvbiB4ODZfNjQgb3IgYXJtNjQuIEV2ZW4gaWYgSSBjYW4gZ2V0IGl0IHRvIGNvbXBpbGUgb24geDg2XzY0IHdpdGggYENPTVBJTEVfVEVTVGAsIGl0JiMzOTtzIGEgKnBsYXRmb3JtKiBkcml2ZXIuIFBsYXRmb3JtIGRyaXZlcnMgYXJlIGEgaGVhZGFjaGUuCgpQbGF0Zm9ybSBkcml2ZXJzIG1lYW4gSSBuZWVkIGEgcGxhdGZvcm0gZGV2aWNlIHJlZ2lzdGVyZWQsIHVzdWFsbHkgdGhyb3VnaCBEZXZpY2UgVHJlZSBvciBzb21lIGN1c3RvbSBib2FyZCBjb2RlLiBEb2VzIHN5emthbGxlciBoYXZlIGEgd2F5IHRvIGhhbmRsZSB0aGlzIGF1dG9tYXRpY2FsbHk/IEkga25vdyBpdCAqY2FuKiBpbnN0YW50aWF0ZSBjZXJ0YWluIHBsYXRmb3JtIGRldmljZXMgdXNpbmcgdGhpbmdzIGxpa2UgYHN5el9kZXZfY3JlYXRlYCwgYnV0IHRoYXQmIzM5O3MgdHlwaWNhbGx5IGZvciBwc2V1ZG8tZGV2aWNlcyBvciBvbmVzIHRoYXQgYXJlIGV4cGxpY2l0bHkgc3VwcG9ydGVkLiBOb3QgYSByYW5kb20gU29DIGRyaXZlciwgZ2VuZXJhbGx5LiBXYWl0LCBJIHRha2UgdGhhdCBiYWNrOyBpdCAqY2FuKiBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcyBpZiBpdCBrbm93cyBob3csIGJ1dCB1c3VhbGx5IGl0IGRvZXNuJiMzOTt0IHVubGVzcyB0aGVyZSYjMzk7cyBhIGZ1enplciBzcGVjaWZpY2FsbHkgZm9yIGl0LgoKVGhlbiBJIHJlbWVtYmVyIHRob3NlIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlfaWRgIGV0Yy4gY2FsbHMgaW4gc3l6a2FsbGVyLiBNYXliZSB0aGVyZSYjMzk7cyBhIHdheS4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyBgYWc3MXh4YCAqcmVhY2hhYmxlKj8gQmVjYXVzZSwgbGV0JiMzOTtzIGJlIGhvbmVzdCwgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycywgZXNwZWNpYWxseSBmb3IgTUlQUyBTb0NzLCBhcmUgcmFyZWx5IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB4ODZfNjQgVk1zLiBUaGUgcGxhdGZvcm0gZGV2aWNlIGlzIGp1c3QgbmV2ZXIgcmVnaXN0ZXJlZC4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkga2VybmVsIHJlZmVyZW5jZXMgdG8gYGFnNzF4eGAgdGhhdCB3b3VsZCByZWdpc3RlciBpdCBvbiB4ODYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMjM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZzcxeHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMjM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgyMgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBTb3VyY2UgTmF2aWdhdGlvbiAtIFdoZXJlJiMzOTtzIHRoZSBDb2RlPyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGZvciBzb21ldGhpbmcgc3BlY2lmaWMuIE5vIGhpdHMgaW4gYGFyY2gvYCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIHRhc2sgYXQgaGFuZC4gVGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGEgYml0LCBkb2VzbiYjMzk7dCBpdD8gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byBgZHJpdmVycy9gLiBJdCYjMzk7cyBhIHZhc3QgZGlyZWN0b3J5LCBidXQgdHlwaWNhbGx5IHdoZXJlIEkgZmluZCB0aGUgYnVsayBvZiB0aGUgZGV2aWNlIGRyaXZlcnMgYW5kIGhhcmR3YXJlLXNwZWNpZmljIGludGVyYWN0aW9uIGNvZGUuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyB0aGVyZSBhbmQgc2VlIGlmIEkgY2FuIHVuZWFydGggd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIHdpdGhpbiB0aGF0IHN0cnVjdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRyZWFzdXJlIEkgY2FuIHVuY292ZXIgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDIzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FnNzF4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5OTUgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQUc3MVhYKSAmIzQzOz0gYWc3MXh4Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfQVRMMSkgJiM0Mzs9IGF0bHgvXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjIzMzpzdHJ1Y3QgYWc3MXh4X3N0YXRpc3RpYyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTIzNC1cdHVuc2lnbmVkIHNob3J0IG9mZnNldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTIzOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MjM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYWc3MXh4X3N0YXRpc3RpYyBhZzcxeHhfc3RhdGlzdGljc1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yNDAtXHR7IDB4MDA4MCwgR0VOTUFTSygxNywgMCksIFwmIzM0O1R4L1J4IDY0IEJ5dGVcJiMzNDssIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yODgtI2RlZmluZSBERVNDX1BLVExFTl9NXHRcdDB4ZmZmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjI4OTpzdHJ1Y3QgYWc3MXh4X2Rlc2Mge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yOTAtXHR1MzIgZGF0YTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTI5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Mjk2OiNkZWZpbmUgQUc3MVhYX0RFU0NfU0laRVx0cm91bmR1cChzaXplb2Yoc3RydWN0IGFnNzF4eF9kZXNjKSwgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjk3LVx0XHRcdFx0XHRMMV9DQUNIRV9CWVRFUylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoyOTk6c3RydWN0IGFnNzF4eF9idWYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMDAtXHR1bmlvbiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjMxMjpzdHJ1Y3QgYWc3MXh4X3Jpbmcge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMTMtXHQvKiBcJiMzNDtIb3RcJiMzNDsgZmllbGRzIGluIHRoZSBkYXRhIHBhdGguICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMTctXHQvKiBcJiMzNDtDb2xkXCYjMzQ7IGZpZWxkcyAtIG5vdCB1c2VkIGluIHRoZSBkYXRhIHBhdGguICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjMxODpcdHN0cnVjdCBhZzcxeHhfYnVmICpidWY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMxOS1cdHUxNiBvcmRlcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MzI1OmVudW0gYWc3MXh4X3R5cGUge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMjYtXHRBUjcxMDAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjMzNTpzdHJ1Y3QgYWc3MXh4X2RjZmcge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMzYtXHR1MzIgbWF4X2ZyYW1lX2xlbjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMzOS1cdGJvb2wgdHhfaGFuZ193b3JrYXJvdW5kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNDA6XHRlbnVtIGFnNzF4eF90eXBlIHR5cGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM0MS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjM0MzpzdHJ1Y3QgYWc3MXh4IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzQ0LVx0LyogQ3JpdGljYWwgZGF0YSByZWxhdGVkIHRvIHRoZSBwZXItcGFja2V0IGRhdGEgcGF0aCBhcmUgY2x1c3RlcmVkXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNDYtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MzQ3Olx0c3RydWN0IGFnNzF4eF9yaW5nIHJ4X3JpbmcgX19fX2NhY2hlbGluZV9hbGlnbmVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNDg6XHRzdHJ1Y3QgYWc3MXh4X3JpbmcgdHhfcmluZyBfX19fY2FjaGVsaW5lX2FsaWduZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM1Ni1cdHUzMiBtc2dfZW5hYmxlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNTc6XHRjb25zdCBzdHJ1Y3QgYWc3MXh4X2RjZmcgKmRjZmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM1OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MzYyOlx0c3RydWN0IGFnNzF4eF9kZXNjICpzdG9wX2Rlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM2My1cdGRtYV9hZGRyX3Qgc3RvcF9kZXNjX2RtYTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MzgwOnN0YXRpYyBpbnQgYWc3MXh4X2Rlc2NfZW1wdHkoc3RydWN0IGFnNzF4eF9kZXNjICpkZXNjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zODEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozODU6c3RhdGljIHN0cnVjdCBhZzcxeHhfZGVzYyAqYWc3MXh4X3JpbmdfZGVzYyhzdHJ1Y3QgYWc3MXh4X3JpbmcgKnJpbmcsIGludCBpZHgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM4Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjM4NzpcdHJldHVybiAoc3RydWN0IGFnNzF4eF9kZXNjICopXHUwMDI2cmluZy1cdTAwM2VkZXNjc19jcHVbaWR4ICogQUc3MVhYX0RFU0NfU0laRV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM4OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MzkwOnN0YXRpYyBpbnQgYWc3MXh4X3Jpbmdfc2l6ZV9vcmRlcihpbnQgc2l6ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzkxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Mzk1OnN0YXRpYyBib29sIGFnNzF4eF9pcyhzdHJ1Y3QgYWc3MXh4ICphZywgZW51bSBhZzcxeHhfdHlwZSB0eXBlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zOTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0MDQ6c3RhdGljIHZvaWQgYWc3MXh4X3dyKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgdmFsdWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQwNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00MDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQwOTpzdGF0aWMgdTMyIGFnNzF4eF9ycihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDEwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDE0OnN0YXRpYyB2b2lkIGFnNzF4eF9zYihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZywgdTMyIG1hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQxNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQyMTpzdGF0aWMgdm9pZCBhZzcxeHhfY2Ioc3RydWN0IGFnNzF4eCAqYWcsIHVuc2lnbmVkIGludCByZWcsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00MjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0Mjg6c3RhdGljIHZvaWQgYWc3MXh4X2ludF9lbmFibGUoc3RydWN0IGFnNzF4eCAqYWcsIHUzMiBpbnRzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00Mjkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0MzA6XHRhZzcxeHhfc2IoYWcsIEFHNzFYWF9SRUdfSU5UX0VOQUJMRSwgaW50cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQzMS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDMzOnN0YXRpYyB2b2lkIGFnNzF4eF9pbnRfZGlzYWJsZShzdHJ1Y3QgYWc3MXh4ICphZywgdTMyIGludHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQzNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQzNTpcdGFnNzF4eF9jYihhZywgQUc3MVhYX1JFR19JTlRfRU5BQkxFLCBpbnRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDM2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0Mzg6c3RhdGljIGludCBhZzcxeHhfZG9faW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00Mzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NDA6XHRzdHJ1Y3QgYWc3MXh4ICphZyA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQ0NTpzdGF0aWMgdm9pZCBhZzcxeHhfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ0Ni1cdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqaW5mbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDQ4Olx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NTA6XHRzdHJzY3B5KGluZm8tXHUwMDNlZHJpdmVyLCBcJiMzNDthZzcxeHhcJiMzNDssIHNpemVvZihpbmZvLVx1MDAzZWRyaXZlcikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NTEtXHRzdHJzY3B5KGluZm8tXHUwMDNlYnVzX2luZm8sIG9mX25vZGVfZnVsbF9uYW1lKGFnLVx1MDAzZXBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NTU6c3RhdGljIGludCBhZzcxeHhfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NTYtXHRcdFx0XHQgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3NldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDU3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDU4Olx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NjM6c3RhdGljIGludCBhZzcxeHhfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NjQtXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3NldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDY1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDY2Olx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDY3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NzE6c3RhdGljIGludCBhZzcxeHhfZXRodG9vbF9ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NzIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NzM6XHRzdHJ1Y3QgYWc3MXh4ICphZyA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQ3ODpzdGF0aWMgdm9pZCBhZzcxeHhfZXRodG9vbF9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDc5LVx0XHRcdFx0XHQgIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKnBhdXNlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00ODAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0ODE6XHRzdHJ1Y3QgYWc3MXh4ICphZyA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00ODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00ODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQ4NjpzdGF0aWMgaW50IGFnNzF4eF9ldGh0b29sX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00ODctXHRcdFx0XHRcdCBzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtICpwYXVzZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDg4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDg5Olx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDkwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0OTQ6c3RhdGljIHZvaWQgYWc3MXh4X2V0aHRvb2xfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIHNzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ5NS1cdFx0XHRcdCAgICAgICB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUwMC1cdGNhc2UgRVRIX1NTX1NUQVRTOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1MDE6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoYWc3MXh4X3N0YXRpc3RpY3MpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTAyOlx0XHRcdGV0aHRvb2xfcHV0cyhcdTAwMjZkYXRhLCBhZzcxeHhfc3RhdGlzdGljc1tpXS5uYW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTAzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTEwOnN0YXRpYyB2b2lkIGFnNzF4eF9ldGh0b29sX2dldF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTExLVx0XHRcdFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsIHU2NCAqZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTEyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTEzOlx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTE0LVx0aW50IGk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTE2Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShhZzcxeHhfc3RhdGlzdGljcyk7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1MTc6XHRcdCpkYXRhJiM0MzsmIzQzOyA9IGFnNzF4eF9ycihhZywgYWc3MXh4X3N0YXRpc3RpY3NbaV0ub2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1MTg6XHRcdFx0XHRcdTAwMjYgYWc3MXh4X3N0YXRpc3RpY3NbaV0ubWFzaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTE5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1MjE6c3RhdGljIGludCBhZzcxeHhfZXRodG9vbF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgaW50IHNzZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUyMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01MjQtXHRjYXNlIEVUSF9TU19TVEFUUzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTI1Olx0XHRyZXR1cm4gQVJSQVlfU0laRShhZzcxeHhfc3RhdGlzdGljcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUyNi1cdGNhc2UgRVRIX1NTX1RFU1Q6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUzMzpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFnNzF4eF9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTM0Olx0LmdldF9kcnZpbmZvXHRcdFx0PSBhZzcxeHhfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUzNS1cdC5nZXRfbGlua1x0XHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTM2LVx0LmdldF90c19pbmZvXHRcdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1Mzc6XHQuZ2V0X2xpbmtfa3NldHRpbmdzXHRcdD0gYWc3MXh4X2dldF9saW5rX2tzZXR0aW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTM4Olx0LnNldF9saW5rX2tzZXR0aW5nc1x0XHQ9IGFnNzF4eF9zZXRfbGlua19rc2V0dGluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUzOTpcdC5ud2F5X3Jlc2V0XHRcdFx0PSBhZzcxeHhfZXRodG9vbF9ud2F5X3Jlc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDA6XHQuZ2V0X3BhdXNlcGFyYW1cdFx0XHQ9IGFnNzF4eF9ldGh0b29sX2dldF9wYXVzZXBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDE6XHQuc2V0X3BhdXNlcGFyYW1cdFx0XHQ9IGFnNzF4eF9ldGh0b29sX3NldF9wYXVzZXBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDI6XHQuZ2V0X3N0cmluZ3NcdFx0XHQ9IGFnNzF4eF9ldGh0b29sX2dldF9zdHJpbmdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDM6XHQuZ2V0X2V0aHRvb2xfc3RhdHNcdFx0PSBhZzcxeHhfZXRodG9vbF9nZXRfc3RhdHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU0NDpcdC5nZXRfc3NldF9jb3VudFx0XHRcdD0gYWc3MXh4X2V0aHRvb2xfZ2V0X3NzZXRfY291bnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU0NS1cdC5zZWxmX3Rlc3RcdFx0XHQ9IG5ldF9zZWxmdGVzdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTQ4OnN0YXRpYyBpbnQgYWc3MXh4X21kaW9fd2FpdF9idXN5KHN0cnVjdCBhZzcxeHggKmFnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NDkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NTg6XHRcdGJ1c3kgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfTUlJX0lORCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU1OS1cdFx0aWYgKCFidXN5KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NzA6c3RhdGljIGludCBhZzcxeHhfbWRpb19taWlfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTcxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTcyOlx0c3RydWN0IGFnNzF4eCAqYWcgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTczLVx0aW50IGVyciwgdmFsO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU3NTpcdGVyciA9IGFnNzF4eF9tZGlvX3dhaXRfYnVzeShhZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU3Ni1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU3OTpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NSUlfQUREUixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTgwLVx0XHQgICgoYWRkciBcdTAwMjYgMHgxZikgXHUwMDNjXHUwMDNjIE1JSV9BRERSX1NISUZUKSB8IChyZWcgXHUwMDI2IDB4ZmYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTgxLVx0LyogZW5hYmxlIHJlYWQgbW9kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1ODI6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUlJX0NNRCwgTUlJX0NNRF9SRUFEKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1ODQ6XHRlcnIgPSBhZzcxeHhfbWRpb193YWl0X2J1c3koYWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01ODUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1ODg6XHR2YWwgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfTUlJX1NUQVRVUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU4OS1cdC8qIGRpc2FibGUgcmVhZCBtb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU5MDpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NSUlfQ01ELCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTkxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1OTg6c3RhdGljIGludCBhZzcxeHhfbWRpb19taWlfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU5OS1cdFx0XHRcdCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo2MDE6XHRzdHJ1Y3QgYWc3MXh4ICphZyA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjYwNjpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NSUlfQUREUixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjA3LVx0XHQgICgoYWRkciBcdTAwMjYgMHgxZikgXHUwMDNjXHUwMDNjIE1JSV9BRERSX1NISUZUKSB8IChyZWcgXHUwMDI2IDB4ZmYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjA4Olx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01JSV9DVFJMLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjYxMDpcdHJldHVybiBhZzcxeHhfbWRpb193YWl0X2J1c3koYWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MTEtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9NjIxPXN0YXRpYyBjb25zdCB1MzIgYXI5MzN4X21kaW9fZGl2X3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjYyNTpzdGF0aWMgaW50IGFnNzF4eF9tZGlvX2dldF9kaXZpZGVyKHN0cnVjdCBhZzcxeHggKmFnLCB1MzIgKmRpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjI2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTYzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjM1Olx0aWYgKGFnNzF4eF9pcyhhZywgQVI5MzMwKSB8fCBhZzcxeHhfaXMoYWcsIEFSOTM0MCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjM2LVx0XHR0YWJsZSA9IGFyOTMzeF9tZGlvX2Rpdl90YWJsZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjM3LVx0XHRuZGl2cyA9IEFSUkFZX1NJWkUoYXI5MzN4X21kaW9fZGl2X3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjM4Olx0fSBlbHNlIGlmIChhZzcxeHhfaXMoYWcsIEFSNzI0MCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjM5LVx0XHR0YWJsZSA9IGFyNzI0MF9tZGlvX2Rpdl90YWJsZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTY1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjU5OnN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcmVzZXQoc3RydWN0IG1paV9idXMgKmJ1cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjYwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjYxOlx0c3RydWN0IGFnNzF4eCAqYWcgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjYyLVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTY2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjY1Olx0ZXJyID0gYWc3MXh4X21kaW9fZ2V0X2RpdmlkZXIoYWcsIFx1MDAyNnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NjYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo2Njk6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUlJX0NGRywgdCB8IE1JSV9DRkdfUkVTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NzAtXHR1c2xlZXBfcmFuZ2UoMTAwLCAyMDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjY3MjpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NSUlfQ0ZHLCB0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjczLVx0dXNsZWVwX3JhbmdlKDEwMCwgMjAwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTY3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Njc4OnN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcHJvYmUoc3RydWN0IGFnNzF4eCAqYWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTY3OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjcwNTpcdG1paV9idXMtXHUwMDNlbmFtZSA9IFwmIzM0O2FnNzF4eF9tZGlvXCYjMzQ7O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3MDY6XHRtaWlfYnVzLVx1MDAzZXJlYWQgPSBhZzcxeHhfbWRpb19taWlfcmVhZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzA3Olx0bWlpX2J1cy1cdTAwM2V3cml0ZSA9IGFnNzF4eF9tZGlvX21paV93cml0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzA4Olx0bWlpX2J1cy1cdTAwM2VyZXNldCA9IGFnNzF4eF9tZGlvX3Jlc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MDktXHRtaWlfYnVzLVx1MDAzZXByaXYgPSBhZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzI3OnN0YXRpYyB2b2lkIGFnNzF4eF9od19zdG9wKHN0cnVjdCBhZzcxeHggKmFnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03Mjgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjktXHQvKiBkaXNhYmxlIGFsbCBpbnRlcnJ1cHRzIGFuZCBzdG9wIHRoZSByeC90eCBlbmdpbmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzMwOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX0lOVF9FTkFCTEUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3MzE6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfUlhfQ1RSTCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjczMjpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19UWF9DVFJMLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzMzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3MzU6c3RhdGljIGJvb2wgYWc3MXh4X2NoZWNrX2RtYV9zdHVjayhzdHJ1Y3QgYWc3MXh4ICphZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzM2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzQ3Olx0cnhfc20gPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfUlhfU00pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NDgtXHRpZiAoKHJ4X3NtIFx1MDAyNiAweDcpID09IDB4MyBcdTAwMjZcdTAwMjYgKChyeF9zbSBcdTAwM2VcdTAwM2UgNCkgXHUwMDI2IDB4NykgPT0gMHg2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3NTE6XHR0eF9zbSA9IGFnNzF4eF9ycihhZywgQUc3MVhYX1JFR19UWF9TTSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjc1MjpcdHJ4X2ZkID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fREVQVEgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NTMtXHRpZiAoKCh0eF9zbSBcdTAwM2VcdTAwM2UgNCkgXHUwMDI2IDB4NykgPT0gMCBcdTAwMjZcdTAwMjYgKChyeF9zbSBcdTAwMjYgMHg3KSA9PSAwKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzYwOnN0YXRpYyBpbnQgYWc3MXh4X3R4X3BhY2tldHMoc3RydWN0IGFnNzF4eCAqYWcsIGJvb2wgZmx1c2gsIGludCBidWRnZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc2MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjc2MjpcdHN0cnVjdCBhZzcxeHhfcmluZyAqcmluZyA9IFx1MDAyNmFnLVx1MDAzZXR4X3Jpbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc2My1cdGludCBzZW50ID0gMCwgYnl0ZXNfY29tcGwgPSAwLCBuID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc3My1cdHdoaWxlIChyaW5nLVx1MDAzZWRpcnR5ICYjNDM7IG4gIT0gcmluZy1cdTAwM2VjdXJyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjc3NDpcdFx0c3RydWN0IGFnNzF4eF9kZXNjICpkZXNjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NzUtXHRcdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NzgtXHRcdGkgPSAocmluZy1cdTAwM2VkaXJ0eSAmIzQzOyBuKSBcdTAwMjYgcmluZ19tYXNrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Nzk6XHRcdGRlc2MgPSBhZzcxeHhfcmluZ19kZXNjKHJpbmcsIGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03ODAtXHRcdHNrYiA9IHJpbmctXHUwMDNlYnVmW2ldLnR4LnNrYjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3ODI6XHRcdGlmICghZmx1c2ggXHUwMDI2XHUwMDI2ICFhZzcxeHhfZGVzY19lbXB0eShkZXNjKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03ODMtXHRcdFx0aWYgKGFnLVx1MDAzZWRjZmctXHUwMDNldHhfaGFuZ193b3JrYXJvdW5kIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3ODQ6XHRcdFx0ICAgIGFnNzF4eF9jaGVja19kbWFfc3R1Y2soYWcpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc4NS1cdFx0XHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZhZy1cdTAwM2VyZXN0YXJ0X3dvcmssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04MDctXHRcdHdoaWxlIChuIFx1MDAzZSAwKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjgwODpcdFx0XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfVFhfU1RBVFVTLCBUWF9TVEFUVVNfUFMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04MDktXHRcdFx0bi0tO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4MzE6c3RhdGljIHZvaWQgYWc3MXh4X2RtYV93YWl0X3N0b3Aoc3RydWN0IGFnNzF4eCAqYWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTgzMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04NDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg0MTpcdFx0cnggPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfUlhfQ1RSTCkgXHUwMDI2IFJYX0NUUkxfUlhFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4NDI6XHRcdHR4ID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX1RYX0NUUkwpIFx1MDAyNiBUWF9DVFJMX1RYRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODQzLVx0XHRpZiAoIXJ4IFx1MDAyNlx1MDAyNiAhdHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg1MDpzdGF0aWMgdm9pZCBhZzcxeHhfZG1hX3Jlc2V0KHN0cnVjdCBhZzcxeHggKmFnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04NTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODU2LVx0Lyogc3RvcCBSWCBhbmQgVFggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODU3Olx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1JYX0NUUkwsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4NTg6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfVFhfQ1RSTCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg1OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg2Mi1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4NjM6XHRhZzcxeHhfZG1hX3dhaXRfc3RvcChhZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODY1LVx0LyogY2xlYXIgZGVzY3JpcHRvciBhZGRyZXNzZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODY2Olx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1RYX0RFU0MsIGFnLVx1MDAzZXN0b3BfZGVzY19kbWEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4Njc6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfUlhfREVTQywgYWctXHUwMDNlc3RvcF9kZXNjX2RtYSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg2OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3MC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDI1NjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODcxOlx0XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfUlhfU1RBVFVTLCBSWF9TVEFUVVNfUFIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4NzI6XHRcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19UWF9TVEFUVVMsIFRYX1NUQVRVU19QUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3My1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3NS1cdC8qIGNsZWFyIHBlbmRpbmcgZXJyb3JzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg3NjpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19SWF9TVEFUVVMsIFJYX1NUQVRVU19CRSB8IFJYX1NUQVRVU19PRik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg3NzpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19UWF9TVEFUVVMsIFRYX1NUQVRVU19CRSB8IFRYX1NUQVRVU19VUik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODc5Olx0dmFsID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX1JYX1NUQVRVUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg4MC1cdGlmICh2YWwpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg4NDpcdHZhbCA9IGFnNzF4eF9ycihhZywgQUc3MVhYX1JFR19UWF9TVEFUVVMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04ODUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg5NDpzdGF0aWMgdm9pZCBhZzcxeHhfaHdfc2V0dXAoc3RydWN0IGFnNzF4eCAqYWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg5NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04OTgtXHQvKiBzZXR1cCBNQUMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODk5Olx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcxLCBpbml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTAwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MDE6XHRhZzcxeHhfc2IoYWcsIEFHNzFYWF9SRUdfTUFDX0NGRzIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkwMi1cdFx0ICBNQUNfQ0ZHMl9QQURfQ1JDX0VOIHwgTUFDX0NGRzJfTEVOX0NIRUNLKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkwNC1cdC8qIHNldHVwIG1heCBmcmFtZSBsZW5ndGggdG8gemVybyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MDU6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUFDX01GTCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTA3LVx0Lyogc2V0dXAgRklGTyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MDg6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfRklGT19DRkcwLCBGSUZPX0NGRzBfSU5JVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkwOTpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19GSUZPX0NGRzEsIGFnLVx1MDAzZWZpZm9kYXRhWzBdKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTEwOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fQ0ZHMiwgYWctXHUwMDNlZmlmb2RhdGFbMV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MTE6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfRklGT19DRkc0LCBGSUZPX0NGRzRfSU5JVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkxMjpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19GSUZPX0NGRzUsIEZJRk9fQ0ZHNV9JTklUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTEzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MTU6c3RhdGljIHVuc2lnbmVkIGludCBhZzcxeHhfbWF4X2ZyYW1lX2xlbih1bnNpZ25lZCBpbnQgbXR1KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MjA6c3RhdGljIHZvaWQgYWc3MXh4X2h3X3NldF9tYWNhZGRyKHN0cnVjdCBhZzcxeHggKmFnLCBjb25zdCB1bnNpZ25lZCBjaGFyICptYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkyMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkyNzpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NQUNfQUREUjEsIHQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkyOS1cdHQgPSAoKCh1MzIpbWFjWzFdKSBcdTAwM2NcdTAwM2MgMjQpIHwgKCgodTMyKW1hY1swXSkgXHUwMDNjXHUwMDNjIDE2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTMwOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19BRERSMiwgdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkzMS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTMzOnN0YXRpYyB2b2lkIGFnNzF4eF9mYXN0X3Jlc2V0KHN0cnVjdCBhZzcxeHggKmFnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5Mzk6XHRhZzcxeHhfaHdfc3RvcChhZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTQxOlx0bWlpX3JlZyA9IGFnNzF4eF9ycihhZywgQUc3MVhYX1JFR19NSUlfQ0ZHKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTQyOlx0cnhfZHMgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfUlhfREVTQyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTQ0Olx0YWc3MXh4X3R4X3BhY2tldHMoYWcsIHRydWUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk1MTpcdGFnNzF4eF9kbWFfcmVzZXQoYWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NTI6XHRhZzcxeHhfaHdfc2V0dXAoYWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NTMtXHRhZy1cdTAwM2V0eF9yaW5nLmN1cnIgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTU3LVx0Lyogc2V0dXAgbWF4IGZyYW1lIGxlbmd0aCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NTg6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUFDX01GTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTU5Olx0XHQgIGFnNzF4eF9tYXhfZnJhbWVfbGVuKGFnLVx1MDAzZW5kZXYtXHUwMDNlbXR1KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTYxOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1JYX0RFU0MsIHJ4X2RzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTYyOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1RYX0RFU0MsIGFnLVx1MDAzZXR4X3JpbmcuZGVzY3NfZG1hKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTYzOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01JSV9DRkcsIG1paV9yZWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk2NTpcdGFnNzF4eF9od19zZXRfbWFjYWRkcihhZywgZGV2LVx1MDAzZWRldl9hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTY2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5Njg6c3RhdGljIHZvaWQgYWc3MXh4X2h3X3N0YXJ0KHN0cnVjdCBhZzcxeHggKmFnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05Njkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NzAtXHQvKiBzdGFydCBSWCBlbmdpbmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTcxOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1JYX0NUUkwsIFJYX0NUUkxfUlhFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NzMtXHQvKiBlbmFibGUgaW50ZXJydXB0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NzQ6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfSU5UX0VOQUJMRSwgQUc3MVhYX0lOVF9JTklUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTc1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5Nzk6c3RhdGljIHZvaWQgYWc3MXh4X21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05ODAtXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk4MjpcdHN0cnVjdCBhZzcxeHggKmFnID0gbmV0ZGV2X3ByaXYodG9fbmV0X2Rldihjb25maWctXHUwMDNlZGV2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTg3Olx0aWYgKCFhZzcxeHhfaXMoYWcsIEFSNzEwMCkgXHUwMDI2XHUwMDI2ICFhZzcxeHhfaXMoYWcsIEFSOTEzMCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk4ODpcdFx0YWc3MXh4X2Zhc3RfcmVzZXQoYWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05ODktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk5NTpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19GSUZPX0NGRzMsIGFnLVx1MDAzZWZpZm9kYXRhWzJdKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTk2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5OTg6c3RhdGljIHZvaWQgYWc3MXh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk5OS1cdFx0XHRcdCB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAwMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwMDE6XHRzdHJ1Y3QgYWc3MXh4ICphZyA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoY29uZmlnLVx1MDAzZWRldikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDAzOlx0YWc3MXh4X2h3X3N0b3AoYWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDA0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTAwNjpzdGF0aWMgdm9pZCBhZzcxeHhfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMDctXHRcdFx0ICAgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDExLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTAxMjpcdHN0cnVjdCBhZzcxeHggKmFnID0gbmV0ZGV2X3ByaXYodG9fbmV0X2Rldihjb25maWctXHUwMDNlZGV2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMTMtXHR1MzIgY2ZnMSwgY2ZnMjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwMTc6XHRjZmcyID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAxOC1cdGNmZzIgXHUwMDI2PSB+KE1BQ19DRkcyX0lGXzEwMDAgfCBNQUNfQ0ZHMl9JRl8xMF8xMDAgfCBNQUNfQ0ZHMl9GRFgpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTAyMTpcdGlmY3RsID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX01BQ19JRkNUTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMjItXHRpZmN0bCBcdTAwMjY9IH4oTUFDX0lGQ1RMX1NQRUVEKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTAyNDpcdGZpZm81ID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fQ0ZHNSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMjUtXHRmaWZvNSBcdTAwMjY9IH5GSUZPX0NGRzVfQk07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDQzOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcyLCBjZmcyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA0NDpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19GSUZPX0NGRzUsIGZpZm81KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA0NTpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NQUNfSUZDVEwsIGlmY3RsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTA0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA0NzpcdGNmZzEgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfTUFDX0NGRzEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDQ4LVx0Y2ZnMSBcdTAwMjY9IH4oTUFDX0NGRzFfVEZDIHwgTUFDX0NGRzFfUkZDKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwNTMtXHRcdGNmZzEgfD0gTUFDX0NGRzFfUkZDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDU0Olx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcxLCBjZmcxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTA1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA1NjpcdGFnNzF4eF9od19zdGFydChhZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwNTctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDU5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGFnNzF4eF9waHlsaW5rX21hY19vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwNjA6XHQubWFjX2NvbmZpZyA9IGFnNzF4eF9tYWNfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDYxOlx0Lm1hY19saW5rX2Rvd24gPSBhZzcxeHhfbWFjX2xpbmtfZG93bixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA2MjpcdC5tYWNfbGlua191cCA9IGFnNzF4eF9tYWNfbGlua191cCxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQwNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDc2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBhZzcxeHggUGxhdGZvcm0gRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBhZzcxeHhfZHJpdmVyYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkOyBpdCYjMzk7cyBhIHN0YW5kYXJkIHBsYXRmb3JtIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcz8gVGhlIGltbWVkaWF0ZSBhbnN3ZXIgaXMgdXN1YWxseSBubywgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHR5cGljYWxseSBqdXN0IGNvbmp1cmUgdXAgcGxhdGZvcm0gZGV2aWNlcyB2aWEgZGV2aWNlIHRyZWUgb3ZlcmxheXMgd2l0aG91dCBzb21lIHNwZWNpZmljIHNldHVwLgoKTXkgYnJhaW4ganVtcHMgdG8gd2hldGhlciB0aGVyZSBpcyBzb21lIGBzeXpfZGV2X2NyZWF0ZWAgZXF1aXZhbGVudCwgYnV0IG5vdGhpbmcgY29tZXMgdG8gbWluZCwganVzdCB0aGUgbW9yZSBzcGVjaWZpYyBzeXprYWxsZXIgY2FsbHMgZm9yIFVTQiwgODAyLjExLCBldGMuIFBsYXRmb3JtIGRyaXZlcnMgbmVlZCB0byBiZSAqaW5zdGFudGlhdGVkKiB0byBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyLiBJZiBpdOKAmXMgYSBwc2V1ZG8tZGV2aWNlIG9yIHdlIGhhdmUgYSBzcGVjaWZpYyB3YXkgdG8gbG9hZCBEVCBvdmVybGF5cywgdGhlbiBpdCB3b24mIzM5O3QgYmUgcHJvYmVkLgoKQnV0IHdhaXQsIHRoZSBwcm9tcHQgcmVtaW5kcyBtZSBhYm91dCBjb2RlIHRoYXTigJlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBkcml2ZXIgaXMgZm9yIGFuIG9uLWNoaXAgRXRoZXJuZXQgTUFDIG9uIEF0aGVyb3MgTUlQUyBTb0NzLiBJdCYjMzk7cyBkaXJlY3RseSBoaXR0aW5nIE1NSU8gcmVnaXN0ZXJzLCBkb2luZyBgaW93cml0ZTMyYCBhbmQgc3VjaC4gSWYgd2UgbWFnaWNhbGx5IGluc3RhbnRpYXRlZCB0aGlzLCBpdCB3b3VsZCB0cnkgdG8gdGFsayB0byBwaHlzaWNhbCBtZW1vcnkgYWRkcmVzc2VzIHdoaWNoLCBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIHdvdWxkIGVpdGhlciBjcmFzaCBvciBkbyBub3RoaW5nIGJlY2F1c2UgdGhhdCBoYXJkd2FyZSBpc24mIzM5O3QgdGhlcmUuCgpUaGUgcXVlc3Rpb24gdGhlbiBpcywgZG9lcyBRRU1VIGVtdWxhdGUgdGhlIEFSNzF4eCBTb0M/IEFuZCBkb2VzIHN5emthbGxlciBldmVuICpydW4qIG9uIE1JUFM/IEkga25vdyBzeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgTUlQUy4gQXMgZm9yIFFFTVUsIEkmIzM5O20gcHJldHR5IHN1cmUgaXQgaGFzIGEgYG1hbHRhYCB0YXJnZXQgYW5kIG1heWJlIGEgZmV3IG90aGVyIE1JUFMgYm9hcmRzLCBidXQgSSBkb3VidCBpdCBoYXMgZnVsbC1ibG93biBBUjcxeHggc3VwcG9ydCwgYXQgbGVhc3Qgbm90IGluIGEgZ2VuZXJpYyBtYWNoaW5lIHR5cGUuIE9wZW5XcnQgdXNlcyBRRU1VLCBidXQgZm9yIHNwZWNpZmljIEF0aGVyb3MgYm9hcmRzLgoKU28sIGxldCYjMzk7cyBzZWUgaWYgdGhpcyB0aGluZyBpcyBhY3R1YWxseSByZWFjaGFibGUuIEl04oCZcyBhbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyLCByaWdodD8gU28gdW5sZXNzIHdlJiMzOTtyZSBydW5uaW5nIG9uIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIGl0JiMzOTtzIGdlbmVyYWxseSBhIGRlYWQgZW5kLiBCdXQsIHRoZSBwcm9tcHQgYWxzbyBzYXlzIHRoYXQgaWYgaXQgbW9kaWZpZXMgKnJlYWNoYWJsZSogY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIGl0JiMzOTtzIHBvdGVudGlhbGx5IHdvcnRoIGZ1enppbmcuCgpPa2F5LCBpcyB0aGVyZSBhIHRyaWdnZXI/IEl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBpdCBwcm9iZXMgd2hlbiBhIGRldmljZSB3aXRoIGEgJiMzNDtxY2EsYXI3MTAwLWV0aCYjMzQ7IGNvbXBhdGlibGUgc3RyaW5nIChvciBzaW1pbGFyKSBpcyBwcmVzZW50IGluIHRoZSBkZXZpY2UgdHJlZS4gSWYgd2UmIzM5O3JlIG9uIHg4Nl82NCwgaXQmIzM5O3MgYSBkZWZpbml0ZSBuby1nby4gRXZlbiBpZiB3ZSBjb21waWxlIGl0IHdpdGggQ09NUElMRV9URVNUIG9uIHg4Nl82NCwgdGhlIHBsYXRmb3JtIGRldmljZSB3aWxsIG5vdCBiZSB0aGVyZSwgc28gYGFnNzF4eF9wcm9iZWAgd291bGQgbmV2ZXIgYmUgY2FsbGVkLiBTbywgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQsIHNpbmNlIGl0JiMzOTtzIGhhcmR3YXJlIE1BQy4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgYGFnNzF4eF9tYXRjaGAgdGFibGUgdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZzcxeHhfbWF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTk5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGFnNzF4eF9kY2ZnIGFnNzF4eF9kY2ZnX3FjYTk1NTAgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yMDAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoyMDA0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFnNzF4eF9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yMDA1LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3FjYSxhcjcxMDAtZXRoXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNmFnNzF4eF9kY2ZnX2FyNzEwMCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjAxNi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoyMDE3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGFnNzF4eF9tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTIwMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTIwMTk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWc3MXh4X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTIwMjItXHRcdC5uYW1lXHQ9IFwmIzM0O2FnNzF4eFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MjAyMzpcdFx0Lm9mX21hdGNoX3RhYmxlID0gYWc3MXh4X21hdGNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yMDI0LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTIzNQoJCQkJCQkJb3V0cHV0OiAxMzUKCQkJCQkJCXRob3VnaHRzOiA0MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5mdXp6YWJsZSBQbGF0Zm9ybSBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBpcyBhIHN0YW5kYXJkIE9wZW4gRmlybXdhcmUgKE9GKSBwbGF0Zm9ybSBkcml2ZXIuIFN0cmFpZ2h0IGF3YXksIEkgY2FuIHRlbGwgaXQmIzM5O3MgdGllZCB0byBhIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGUsIHNvbWV0aGluZyBsaWtlICYjMzQ7cWNhLGFyNzEwMC1ldGgmIzM0OywgYW5kIGl0JiMzOTtzIGFjY2Vzc2luZyBwaHlzaWNhbCBNTUlPIHJlZ2lzdGVycyDigJMgdGhhdCYjMzk7cyBhIGh1Z2UgcmVkIGZsYWcuIEl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBmdXp6YWJsZSBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdW5sZXNzIHlvdSBoYXZlIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLCB3aGljaCBRRU1VICptaWdodCogaGF2ZSwgYnV0IFN5emthbGxlciB0eXBpY2FsbHkgZG9lc24mIzM5O3QgZXZlbiBib290IHRoYXQgc3BlY2lmaWMgbWFjaGluZSB0eXBlIGZvciBnZW5lcmFsIGZ1enppbmcsIHlvdSBrbm93PwoKSG1tLCBJIHdvbmRlciwgd2hhdCBpZiBTeXprYWxsZXIgdHJpZXMgdG8gaW5qZWN0IGEgcGxhdGZvcm0gZGV2aWNlIHVzaW5nIGBzeXpfZGV2X2NyZWF0ZWAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IEV2ZW4gKmlmKiBpdCBjb3VsZCwgdGhpcyBkcml2ZXIgd291bGQgaW1tZWRpYXRlbHkgaGl0IGEgd2FsbC4gSXQgd291bGQgdXNlIGBpb3JlbWFwYCBvbiBzb21lIHJhbmRvbSBwaHlzaWNhbCBhZGRyZXNzIGFuZCB0cnkgdG8gcmVhZCBvciB3cml0ZSBpdC4gSWYgdGhhdCBwaHlzaWNhbCBhZGRyZXNzIGlzbiYjMzk7dCBhY3R1YWxseSBiYWNrZWQgYnkgZW11bGF0ZWQgaGFyZHdhcmUsIGl0JiMzOTtzIGVpdGhlciBnb2luZyB0byByZWFkIGFsbCAweEZGcywgYW5kIGJlIHVzZWxlc3MsIG9yIGl0JiMzOTtsbCBjcmFzaCBpbW1lZGlhdGVseSBhbmQgYmUgdW5hYmxlIHRvIHBlcmZvcm0gYW55IG1lYW5pbmdmdWwgbmV0d29yayBvcGVyYXRpb25zIHRoYXQgcmVxdWlyZSBETUEgb3IgaW50ZXJydXB0cy4KClNvLCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBkcml2ZXIgaXMgbm90IGdvaW5nIHRvIGJlIGZ1enphYmxlLiBMZXQgbWUgZ28gYmFjayB0byB0aGUgcHJvbXB0LCBhbmQgc2VlIGlmIEkgaGF2ZSBhIHRlc3QuCgpBaCwgaGVyZSBpdCBpczogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBOYWlsZWQgaXQuIFRoaXMgcGVyZmVjdGx5IGRlc2NyaWJlcyB0aGUgc2l0dWF0aW9uLiBUaGUgZHJpdmVyIGlzIGZvciB0aGUgQXRoZXJvcyBBUjd4eHgvQVI5eHh4IG9uLWNoaXAgRXRoZXJuZXQgTUFDcy4gVGhhdCBoYXJkd2FyZSBpc24mIzM5O3QgZW11bGF0ZWQgaW4gdGhlIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudHMuCgpJJiMzOTttIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IHNvbGlkOiBUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGFnNzF4eCBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBvbi1jaGlwIGhhcmR3YXJlIGZvdW5kIGluIEFSN3h4eC9BUjl4eHggTUlQUyBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGFuZCBldmVuIGlmIENPTVBJTEVfVEVTVCBjb21waWxlcyBpdCwgdGhlIGFic2VuY2Ugb2YgYSBjb3JyZXNwb25kaW5nIHBsYXRmb3JtIGRldmljZSBhbmQgZW11bGF0ZWQgTU1JTy9ETUEgaGFyZHdhcmUgbWFrZXMgdGhlIGNoYW5nZWQgY29kZSBwYXRocyBlbnRpcmVseSB1bnJlYWNoYWJsZSBhbmQgdW5mdXp6YWJsZS4gVGhhdCYjMzk7cyBhIGRlZmluaXRlICYjMzQ7bm8gZ28mIzM0OyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMjM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhZzcxeHggRXRoZXJuZXQgTUFDIGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIG9uLWNoaXAgaGFyZHdhcmUgZm91bmQgaW4gc3BlY2lmaWMgTUlQUyBTb0NzIChBUjd4eHgvQVI5eHh4KS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBnZW5lcmljIFFFTVUpIHVzZWQgZm9yIGZ1enppbmcuIEV2ZW4gaWYgdGhlIGRyaXZlciBpcyBjb21waWxlZCB2aWEgQ09NUElMRV9URVNULCB0aGUgbGFjayBvZiBhIGNvcnJlc3BvbmRpbmcgcGxhdGZvcm0gZGV2aWNlIGFuZCBlbXVsYXRlZCBNTUlPL0RNQSBoYXJkd2FyZSBtYWtlcyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBhbmQgdW5mdXp6YWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGFnNzF4eCBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igb24tY2hpcCBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBNSVBTIFNvQ3MgKEFSN3h4eC9BUjl4eHgpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIGdlbmVyaWMgUUVNVSkgdXNlZCBmb3IgZnV6emluZy4gRXZlbiBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHZpYSBDT01QSUxFX1RFU1QsIHRoZSBsYWNrIG9mIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYW5kIGVtdWxhdGVkIE1NSU8vRE1BIGhhcmR3YXJlIG1ha2VzIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGFuZCB1bmZ1enphYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjEzLjEwNjU3NzEyMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMDgyNTk4NTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhZzcxeHggRXRoZXJuZXQgTUFDIGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIG9uLWNoaXAgaGFyZHdhcmUgZm91bmQgaW4gc3BlY2lmaWMgTUlQUyBTb0NzIChBUjd4eHgvQVI5eHh4KS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBnZW5lcmljIFFFTVUpIHVzZWQgZm9yIGZ1enppbmcuIEV2ZW4gaWYgdGhlIGRyaXZlciBpcyBjb21waWxlZCB2aWEgQ09NUElMRV9URVNULCB0aGUgbGFjayBvZiBhIGNvcnJlc3BvbmRpbmcgcGxhdGZvcm0gZGV2aWNlIGFuZCBlbXVsYXRlZCBNTUlPL0RNQSBoYXJkd2FyZSBtYWtlcyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBhbmQgdW5mdXp6YWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjEzLjEwNjU4MzYzMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM4ODQzNTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzUwMjJlYjIzY2VmMTIwNmU5NWNkNThiNzM5ZDE5MDE0ZWRlYTJkYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1biAyOCAyMzoyMDoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xcbmluZGV4IDRlNDc5NGM0ZGZkY2VhLi5hNzhiZTUxYTAxY2M0YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xcbkBAIC00MCwxMSArNDAsNiBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9zZWxmdGVzdHMuaFxcdTAwM2VcXG4gXFxuLS8qIEZvciBvdXIgTkFQSSB3ZWlnaHQgYmlnZ2VyIGRvZXMgKk5PVCogbWVhbiBiZXR0ZXIgLSBpdCBtZWFucyBtb3JlXFxuLSAqIEQtY2FjaGUgbWlzc2VzIGFuZCBsb3RzIG1vcmUgd2FzdGVkIGN5Y2xlcyB0aGFuIHdlJ2xsIGV2ZXJcXG4tICogcG9zc2libHkgZ2FpbiBmcm9tIHNhdmluZyBpbnN0cnVjdGlvbnMuXFxuLSAqL1xcbi0jZGVmaW5lIEFHNzFYWF9OQVBJX1dFSUdIVFxcdDMyXFxuICNkZWZpbmUgQUc3MVhYX09PTV9SRUZJTExcXHQoMSArIEhaIC8gMTApXFxuIFxcbiAjZGVmaW5lIEFHNzFYWF9JTlRfRVJSXFx0KEFHNzFYWF9JTlRfUlhfQkUgfCBBRzcxWFhfSU5UX1RYX0JFKVxcbkBAIC00MDIsMTEgKzM5NywxMyBAQCBzdGF0aWMgYm9vbCBhZzcxeHhfaXMoc3RydWN0IGFnNzF4eCAqYWcsIGVudW0gYWc3MXh4X3R5cGUgdHlwZSlcXG4gXFx0cmV0dXJuIGFnLVxcdTAwM2VkY2ZnLVxcdTAwM2V0eXBlID09IHR5cGU7XFxuIH1cXG4gXFxuKy8qIGF0aDc5IG9uLWNoaXAgTU1JTyBidXMgaXMgbm9uLXBvc3RlZCAtIGlvd3JpdGUzMi9pb3dyaXRlMzJiZSBjb21wbGV0ZXNcXG4rICogYmVmb3JlIHRoZSBuZXh0IGluc3RydWN0aW9uIGV4ZWN1dGVzLiBObyByZWFkLWJhY2sgZHJhaW4gaXMgbmVlZGVkLlxcbisgKi9cXG4rXFxuIHN0YXRpYyB2b2lkIGFnNzF4eF93cihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZywgdTMyIHZhbHVlKVxcbiB7XFxuIFxcdGlvd3JpdGUzMih2YWx1ZSwgYWctXFx1MDAzZW1hY19iYXNlICsgcmVnKTtcXG4tXFx0LyogZmx1c2ggd3JpdGUgKi9cXG4tXFx0KHZvaWQpaW9yZWFkMzIoYWctXFx1MDAzZW1hY19iYXNlICsgcmVnKTtcXG4gfVxcbiBcXG4gc3RhdGljIHUzMiBhZzcxeHhfcnIoc3RydWN0IGFnNzF4eCAqYWcsIHVuc2lnbmVkIGludCByZWcpXFxuQEAgLTQxNiwyMiArNDEzLDE2IEBAIHN0YXRpYyB1MzIgYWc3MXh4X3JyKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnKVxcbiBcXG4gc3RhdGljIHZvaWQgYWc3MXh4X3NiKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgbWFzaylcXG4ge1xcbi1cXHR2b2lkIF9faW9tZW0gKnI7XFxuK1xcdHZvaWQgX19pb21lbSAqciA9IGFnLVxcdTAwM2VtYWNfYmFzZSArIHJlZztcXG4gXFxuLVxcdHIgPSBhZy1cXHUwMDNlbWFjX2Jhc2UgKyByZWc7XFxuIFxcdGlvd3JpdGUzMihpb3JlYWQzMihyKSB8IG1hc2ssIHIpO1xcbi1cXHQvKiBmbHVzaCB3cml0ZSAqL1xcbi1cXHQodm9pZClpb3JlYWQzMihyKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgYWc3MXh4X2NiKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgbWFzaylcXG4ge1xcbi1cXHR2b2lkIF9faW9tZW0gKnI7XFxuK1xcdHZvaWQgX19pb21lbSAqciA9IGFnLVxcdTAwM2VtYWNfYmFzZSArIHJlZztcXG4gXFxuLVxcdHIgPSBhZy1cXHUwMDNlbWFjX2Jhc2UgKyByZWc7XFxuIFxcdGlvd3JpdGUzMihpb3JlYWQzMihyKSBcXHUwMDI2IH5tYXNrLCByKTtcXG4tXFx0LyogZmx1c2ggd3JpdGUgKi9cXG4tXFx0KHZvaWQpaW9yZWFkMzIocik7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGFnNzF4eF9pbnRfZW5hYmxlKHN0cnVjdCBhZzcxeHggKmFnLCB1MzIgaW50cylcXG5AQCAtMTcyOSw2ICsxNzIwLDcgQEAgc3RhdGljIGludCBhZzcxeHhfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBsaW1pdClcXG4gXFxuIFxcdG1vZF90aW1lcihcXHUwMDI2YWctXFx1MDAzZW9vbV90aW1lciwgamlmZmllcyArIEFHNzFYWF9PT01fUkVGSUxMKTtcXG4gXFx0bmFwaV9jb21wbGV0ZShuYXBpKTtcXG4rXFx0YWc3MXh4X2ludF9lbmFibGUoYWcsIEFHNzFYWF9JTlRfVFgpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtMTkxMyw4ICsxOTA1LDcgQEAgc3RhdGljIGludCBhZzcxeHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbiBcXG4tXFx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFxcdTAwMjZhZy1cXHUwMDNlbmFwaSwgYWc3MXh4X3BvbGwsXFxuLVxcdFxcdFxcdCAgICAgIEFHNzFYWF9OQVBJX1dFSUdIVCk7XFxuK1xcdG5ldGlmX25hcGlfYWRkKG5kZXYsIFxcdTAwMjZhZy1cXHUwMDNlbmFwaSwgYWc3MXh4X3BvbGwpO1xcbiBcXG4gXFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcxLCAwKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjEzLjQ0NjEyMjQzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk3NDMwNDI2MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGFnNzF4eCBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igb24tY2hpcCBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBNSVBTIFNvQ3MgKEFSN3h4eC9BUjl4eHgpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIGdlbmVyaWMgUUVNVSkgdXNlZCBmb3IgZnV6emluZy4gRXZlbiBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHZpYSBDT01QSUxFX1RFU1QsIHRoZSBsYWNrIG9mIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYW5kIGVtdWxhdGVkIE1NSU8vRE1BIGhhcmR3YXJlIG1ha2VzIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGFuZCB1bmZ1enphYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NTAyMmViMjNjZWYxMjA2ZTk1Y2Q1OGI3MzlkMTkwMTRlZGVhMmRhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdW4gMjggMjM6MjA6MTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xuaW5kZXggNGU0Nzk0YzRkZmRjZWEuLmE3OGJlNTFhMDFjYzRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xuQEAgLTQwLDExICs0MCw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9zZWxmdGVzdHMuaFx1MDAzZVxuIFxuLS8qIEZvciBvdXIgTkFQSSB3ZWlnaHQgYmlnZ2VyIGRvZXMgKk5PVCogbWVhbiBiZXR0ZXIgLSBpdCBtZWFucyBtb3JlXG4tICogRC1jYWNoZSBtaXNzZXMgYW5kIGxvdHMgbW9yZSB3YXN0ZWQgY3ljbGVzIHRoYW4gd2UnbGwgZXZlclxuLSAqIHBvc3NpYmx5IGdhaW4gZnJvbSBzYXZpbmcgaW5zdHJ1Y3Rpb25zLlxuLSAqL1xuLSNkZWZpbmUgQUc3MVhYX05BUElfV0VJR0hUXHQzMlxuICNkZWZpbmUgQUc3MVhYX09PTV9SRUZJTExcdCgxICsgSFogLyAxMClcbiBcbiAjZGVmaW5lIEFHNzFYWF9JTlRfRVJSXHQoQUc3MVhYX0lOVF9SWF9CRSB8IEFHNzFYWF9JTlRfVFhfQkUpXG5AQCAtNDAyLDExICszOTcsMTMgQEAgc3RhdGljIGJvb2wgYWc3MXh4X2lzKHN0cnVjdCBhZzcxeHggKmFnLCBlbnVtIGFnNzF4eF90eXBlIHR5cGUpXG4gXHRyZXR1cm4gYWctXHUwMDNlZGNmZy1cdTAwM2V0eXBlID09IHR5cGU7XG4gfVxuIFxuKy8qIGF0aDc5IG9uLWNoaXAgTU1JTyBidXMgaXMgbm9uLXBvc3RlZCAtIGlvd3JpdGUzMi9pb3dyaXRlMzJiZSBjb21wbGV0ZXNcbisgKiBiZWZvcmUgdGhlIG5leHQgaW5zdHJ1Y3Rpb24gZXhlY3V0ZXMuIE5vIHJlYWQtYmFjayBkcmFpbiBpcyBuZWVkZWQuXG4rICovXG4rXG4gc3RhdGljIHZvaWQgYWc3MXh4X3dyKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgdmFsdWUpXG4ge1xuIFx0aW93cml0ZTMyKHZhbHVlLCBhZy1cdTAwM2VtYWNfYmFzZSArIHJlZyk7XG4tXHQvKiBmbHVzaCB3cml0ZSAqL1xuLVx0KHZvaWQpaW9yZWFkMzIoYWctXHUwMDNlbWFjX2Jhc2UgKyByZWcpO1xuIH1cbiBcbiBzdGF0aWMgdTMyIGFnNzF4eF9ycihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZylcbkBAIC00MTYsMjIgKzQxMywxNiBAQCBzdGF0aWMgdTMyIGFnNzF4eF9ycihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZylcbiBcbiBzdGF0aWMgdm9pZCBhZzcxeHhfc2Ioc3RydWN0IGFnNzF4eCAqYWcsIHVuc2lnbmVkIGludCByZWcsIHUzMiBtYXNrKVxuIHtcbi1cdHZvaWQgX19pb21lbSAqcjtcbitcdHZvaWQgX19pb21lbSAqciA9IGFnLVx1MDAzZW1hY19iYXNlICsgcmVnO1xuIFxuLVx0ciA9IGFnLVx1MDAzZW1hY19iYXNlICsgcmVnO1xuIFx0aW93cml0ZTMyKGlvcmVhZDMyKHIpIHwgbWFzaywgcik7XG4tXHQvKiBmbHVzaCB3cml0ZSAqL1xuLVx0KHZvaWQpaW9yZWFkMzIocik7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGFnNzF4eF9jYihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZywgdTMyIG1hc2spXG4ge1xuLVx0dm9pZCBfX2lvbWVtICpyO1xuK1x0dm9pZCBfX2lvbWVtICpyID0gYWctXHUwMDNlbWFjX2Jhc2UgKyByZWc7XG4gXG4tXHRyID0gYWctXHUwMDNlbWFjX2Jhc2UgKyByZWc7XG4gXHRpb3dyaXRlMzIoaW9yZWFkMzIocikgXHUwMDI2IH5tYXNrLCByKTtcbi1cdC8qIGZsdXNoIHdyaXRlICovXG4tXHQodm9pZClpb3JlYWQzMihyKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgYWc3MXh4X2ludF9lbmFibGUoc3RydWN0IGFnNzF4eCAqYWcsIHUzMiBpbnRzKVxuQEAgLTE3MjksNiArMTcyMCw3IEBAIHN0YXRpYyBpbnQgYWc3MXh4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgbGltaXQpXG4gXG4gXHRtb2RfdGltZXIoXHUwMDI2YWctXHUwMDNlb29tX3RpbWVyLCBqaWZmaWVzICsgQUc3MVhYX09PTV9SRUZJTEwpO1xuIFx0bmFwaV9jb21wbGV0ZShuYXBpKTtcbitcdGFnNzF4eF9pbnRfZW5hYmxlKGFnLCBBRzcxWFhfSU5UX1RYKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0xOTEzLDggKzE5MDUsNyBAQCBzdGF0aWMgaW50IGFnNzF4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuLVx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFx1MDAyNmFnLVx1MDAzZW5hcGksIGFnNzF4eF9wb2xsLFxuLVx0XHRcdCAgICAgIEFHNzFYWF9OQVBJX1dFSUdIVCk7XG4rXHRuZXRpZl9uYXBpX2FkZChuZGV2LCBcdTAwMjZhZy1cdTAwM2VuYXBpLCBhZzcxeHhfcG9sbCk7XG4gXG4gXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUFDX0NGRzEsIDApO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMjM6MjA6MTMuNDQ2MTI0NzU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc0Mzk1NDg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFHNzFYWCBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggb24gdGhlIHN1cmZhY2UuIEZpcnN0LCB0aGV5J3ZlIGNsZWFuZWQgdXAgc29tZSBuYXBpLXJlbGF0ZWQgY29kZSwgcmVtb3ZpbmcgYEFHNzFYWF9OQVBJX1dFSUdIVGAgYW5kIG9wdGluZyBmb3IgYG5ldGlmX25hcGlfYWRkYCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZSBub3cuIEdvb2QuIFRoZXkndmUgYWxzbyBnb3R0ZW4gcmlkIG9mIHRoZSByZWFkLWJhY2sgZHJhaW5zIGluIHRob3NlIHdyaXRlIGZ1bmN0aW9ucyDigJMgYGFnNzF4eF93cmAsIGBhZzcxeHhfc2JgLCBgYWc3MXh4X2NiYC4gUHJvYmFibHkgYW4gb3B0aW1pemF0aW9uLCBsZXNzIGJ1c3ktd2FpdGluZy4gQW5kIGZpbmFsbHksIHRoZXkndmUgYWRkZWQgYW4gaW50ZXJydXB0IGVuYWJsZSBmb3IgVFggaW4gYGFnNzF4eF9wb2xsYCwgd2hpY2ggaXMgbGlrZWx5IGFib3V0IG9wdGltaXppbmcgaW50ZXJydXB0IGhhbmRsaW5nLiBGaW5lLCBJIGdldCB0aGUgY2hhbmdlcy5cblxuTm93LCB0aGlzIGlzIGFuIEF0aGVyb3MgZHJpdmVyLiBJdCdzIGJ1aWx0IGZvciB0aG9zZSBvbGRlciBTb0NzOiBBUjcxeHgsIEFSNzI0eCwgQVI5MTN4LCB0aGUgd2hvbGUgZ2FuZywgcmlnaHQgdGhyb3VnaCB0aGUgUUNBIHNlcmllcy4gSXQncyBhIGJ1aWx0LWluIEV0aGVybmV0IE1BQywgc28gdGhpcyBpcyBnb2luZyB0byBiZSBwbGF0Zm9ybS1zcGVjaWZpYywgdmVyeSB0aWdodGx5IGNvdXBsZWQgdG8gdGhlIGhhcmR3YXJlLiBUaGF0J3Mgd2hhdCBJJ20gY29uY2VybmVkIGFib3V0LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdpbGwgaXQgZXZlbiBiZSAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJIGRvdWJ0IGl0LiBUaGlzIGlzbid0IGEgZ2VuZXJpYyBOSUMgZHJpdmVyOyBpdCdzIGEgZGlyZWN0IGludGVyZmFjZSB0byBvbi1jaGlwIGhhcmR3YXJlLlxuXG5MZXQncyBjb25maXJtIGl0J3MgdXNpbmcgdGhlIGBwbGF0Zm9ybV9kZXZpY2VgIGluZnJhc3RydWN0dXJlLiBZdXAsIGl0IGlzLiBBcyBJIHN1c3BlY3RlZC4gQ2FuIHdlIGVtdWxhdGUgdGhpcyBlYXNpbHk/IEFic29sdXRlbHkgbm90LCBpdCdzIG5vdCBhIHN0YW5kYXJkIE5JQywgaXQncyBhIHNwZWNpZmljIE1BQy4gV2UnZCBoYXZlIHRvIGVtdWxhdGUgdGhlIGVudGlyZSBBdGhlcm9zIFNvQyEgVGhhdCdzIGEgaHVnZSB1bmRlcnRha2luZy4gQWxyaWdodCwgbGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYCBkaXJlY3Rvcnkgc2F5cyBhYm91dCBpdHMgZGVwZW5kZW5jaWVzLiBHb3R0YSBjaGVjayBmb3IgYW55IHN1YnRsZSBidWlsZCBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NzcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQyMzoyMDoyMC4xOTAwODI0ODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczOTI2OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFHNzFYWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnPTE4PWlmIE5FVF9WRU5ET1JfQVRIRVJPU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc6MjA6Y29uZmlnIEFHNzFYWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBBUjdYWFgvQVI5WFhYIGJ1aWx0LWluIGV0aGVybmV0IG1hYyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQyMzoyMDoyMC4yNDc0Nzk2MDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTczMzcyNTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBFdGhlcm5ldCBLY29uZmlnKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBBdGhlcm9zIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLCBzbyBteSBmb2N1cyBpcyBub3cgb24gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyMC4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEtjb25maWcgc3RydWN0dXJlIGlzIGltcGxlbWVudGVkIHRvIHNlZSB3aGF0IG9wdGlvbnMgYXJlIGJlaW5nIG1hZGUgYXZhaWxhYmxlLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBtYXliZSBzb21lIGhlbHAgdGV4dCB0aGF0IHdpbGwgaWxsdW1pbmF0ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBIb3BlZnVsbHksIHRoZSBmaWxlIGlzIHdlbGwtY29tbWVudGVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgdmFyaW91cyBBdGhlcm9zIEV0aGVybmV0IGNoaXBzZXRzLCB3aGF0IGZlYXR1cmVzIGFyZSBjb25maWd1cmFibGUgKGxpa2UgVkxBTiBzdXBwb3J0LCBqdW1ibyBmcmFtZXMsIHBvd2VyIG1hbmFnZW1lbnQsIGV0Yy4pLCBhbmQgaG93IGFsbCBvZiB0aGlzIGlzIHN0cnVjdHVyZWQgd2l0aGluIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3RhY2suIFRoZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2Ygd2hhdCBzZXR0aW5ncyBJIGNhbiB0d2VhayBhbmQgd2hhdCB0aGVpciBpbXBsaWNhdGlvbnMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTMyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMjM6MjA6MjMuODIwODU0Nzk5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE4OlxcdGlmIE5FVF9WRU5ET1JfQVRIRVJPU1xcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgQUc3MVhYXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBBUjdYWFgvQVI5WFhYIGJ1aWx0LWluIGV0aGVybmV0IG1hYyBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBBVEg3OSB8fCBDT01QSUxFX1RFU1RcXG4gIDIzOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAyNDpcXHRcXHRpbXBseSBORVRfU0VMRlRFU1RTXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIElmIHlvdSB3aXNoIHRvIGNvbXBpbGUgYSBrZXJuZWwgZm9yIEFSN1hYWC85MVhYWCBhbmQgZW5hYmxlXFxuICAyNzpcXHRcXHQgIGV0aGVybmV0IHN1cHBvcnQsIHRoZW4geW91IHNob3VsZCBhbHdheXMgYW5zd2VyIFkgdG8gdGhpcy5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIEFUTDJcXG4gIDMwOlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIEwyIEZhc3QgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDMxOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAzMjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDMzOlxcdFxcdHNlbGVjdCBNSUlcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEF0aGVyb3MgTDIgZmFzdCBldGhlcm5ldCBhZGFwdGVyLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBUaGUgbW9kdWxlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjIzLjgyMDkyNzM1OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNzEzNzMzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYGFnNzF4eGAgRHJpdmVyOiBBIFRob3VnaHQgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGFnNzF4eGAgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgbXkgbWluZCBnb2VzIHRvIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbjogaXMgaXQgYEFUSDc5YCBvciBgQ09NUElMRV9URVNUYD8gVGhhdCB3aWxsIGRpY3RhdGUgYSBsb3QuIENhbiBJIGV2ZW4gZnV6eiB0aGlzIHRoaW5nIGluIFFFTVU/IEknbSBwcmV0dHkgc3VyZSBgQVRINzlgIGlzIE1JUFMsIGFuZCB3aGlsZSBRRU1VICpkb2VzKiBzdXBwb3J0IE1JUFMsIHN5emthbGxlciBwcmltYXJpbHkgZm9jdXNlcyBvbiB4ODZfNjQgb3IgYXJtNjQuIEV2ZW4gaWYgSSBjYW4gZ2V0IGl0IHRvIGNvbXBpbGUgb24geDg2XzY0IHdpdGggYENPTVBJTEVfVEVTVGAsIGl0J3MgYSAqcGxhdGZvcm0qIGRyaXZlci4gUGxhdGZvcm0gZHJpdmVycyBhcmUgYSBoZWFkYWNoZS5cblxuUGxhdGZvcm0gZHJpdmVycyBtZWFuIEkgbmVlZCBhIHBsYXRmb3JtIGRldmljZSByZWdpc3RlcmVkLCB1c3VhbGx5IHRocm91Z2ggRGV2aWNlIFRyZWUgb3Igc29tZSBjdXN0b20gYm9hcmQgY29kZS4gRG9lcyBzeXprYWxsZXIgaGF2ZSBhIHdheSB0byBoYW5kbGUgdGhpcyBhdXRvbWF0aWNhbGx5PyBJIGtub3cgaXQgKmNhbiogaW5zdGFudGlhdGUgY2VydGFpbiBwbGF0Zm9ybSBkZXZpY2VzIHVzaW5nIHRoaW5ncyBsaWtlIGBzeXpfZGV2X2NyZWF0ZWAsIGJ1dCB0aGF0J3MgdHlwaWNhbGx5IGZvciBwc2V1ZG8tZGV2aWNlcyBvciBvbmVzIHRoYXQgYXJlIGV4cGxpY2l0bHkgc3VwcG9ydGVkLiBOb3QgYSByYW5kb20gU29DIGRyaXZlciwgZ2VuZXJhbGx5LiBXYWl0LCBJIHRha2UgdGhhdCBiYWNrOyBpdCAqY2FuKiBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcyBpZiBpdCBrbm93cyBob3csIGJ1dCB1c3VhbGx5IGl0IGRvZXNuJ3QgdW5sZXNzIHRoZXJlJ3MgYSBmdXp6ZXIgc3BlY2lmaWNhbGx5IGZvciBpdC5cblxuVGhlbiBJIHJlbWVtYmVyIHRob3NlIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlfaWRgIGV0Yy4gY2FsbHMgaW4gc3l6a2FsbGVyLiBNYXliZSB0aGVyZSdzIGEgd2F5LiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXM6IGlzIGBhZzcxeHhgICpyZWFjaGFibGUqPyBCZWNhdXNlLCBsZXQncyBiZSBob25lc3QsIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMsIGVzcGVjaWFsbHkgZm9yIE1JUFMgU29DcywgYXJlIHJhcmVseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgeDg2XzY0IFZNcy4gVGhlIHBsYXRmb3JtIGRldmljZSBpcyBqdXN0IG5ldmVyIHJlZ2lzdGVyZWQuIFNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGtlcm5lbCByZWZlcmVuY2VzIHRvIGBhZzcxeHhgIHRoYXQgd291bGQgcmVnaXN0ZXIgaXQgb24geDg2LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDg5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMjM6MjA6MjkuOTkyMzAzNDMzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzUxNzcxMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWc3MXh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQyMzoyMDozMC40NTk4MzYzMzZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTg5ODc4ODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgU291cmNlIE5hdmlnYXRpb24gLSBXaGVyZSdzIHRoZSBDb2RlPyoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBmb3Igc29tZXRoaW5nIHNwZWNpZmljLiBObyBoaXRzIGluIGBhcmNoL2AsIHdoaWNoIGlzIGFzIGV4cGVjdGVkLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSB0YXNrIGF0IGhhbmQuIFRoYXQgbmFycm93cyB0aGluZ3MgZG93biBhIGJpdCwgZG9lc24ndCBpdD8gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byBgZHJpdmVycy9gLiBJdCdzIGEgdmFzdCBkaXJlY3RvcnksIGJ1dCB0eXBpY2FsbHkgd2hlcmUgSSBmaW5kIHRoZSBidWxrIG9mIHRoZSBkZXZpY2UgZHJpdmVycyBhbmQgaGFyZHdhcmUtc3BlY2lmaWMgaW50ZXJhY3Rpb24gY29kZS4gVGltZSB0byBzdGFydCBkaWdnaW5nIHRoZXJlIGFuZCBzZWUgaWYgSSBjYW4gdW5lYXJ0aCB3aGF0IEknbSBsb29raW5nIGZvciB3aXRoaW4gdGhhdCBzdHJ1Y3R1cmUuIExldCdzIHNlZSB3aGF0IHRyZWFzdXJlIEkgY2FuIHVuY292ZXIgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MjIsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQyMzoyMDozMy4wNDk3MTc4MTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODQ4NzgwNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWc3MXh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgOTk1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19BRzcxWFgpICs9IGFnNzF4eC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9NYWtlZmlsZS03LW9iai0kKENPTkZJR19BVEwxKSArPSBhdGx4L1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoyMzM6c3RydWN0IGFnNzF4eF9zdGF0aXN0aWMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjM0LVxcdHVuc2lnbmVkIHNob3J0IG9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MjM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYWc3MXh4X3N0YXRpc3RpYyBhZzcxeHhfc3RhdGlzdGljc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjQwLVxcdHsgMHgwMDgwLCBHRU5NQVNLKDE3LCAwKSwgXFxcIlR4L1J4IDY0IEJ5dGVcXFwiLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yODgtI2RlZmluZSBERVNDX1BLVExFTl9NXFx0XFx0MHhmZmZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjI4OTpzdHJ1Y3QgYWc3MXh4X2Rlc2Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjkwLVxcdHUzMiBkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoyOTY6I2RlZmluZSBBRzcxWFhfREVTQ19TSVpFXFx0cm91bmR1cChzaXplb2Yoc3RydWN0IGFnNzF4eF9kZXNjKSwgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjk3LVxcdFxcdFxcdFxcdFxcdEwxX0NBQ0hFX0JZVEVTKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Mjk5OnN0cnVjdCBhZzcxeHhfYnVmIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMwMC1cXHR1bmlvbiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjMxMjpzdHJ1Y3QgYWc3MXh4X3Jpbmcge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzEzLVxcdC8qIFxcXCJIb3RcXFwiIGZpZWxkcyBpbiB0aGUgZGF0YSBwYXRoLiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMTctXFx0LyogXFxcIkNvbGRcXFwiIGZpZWxkcyAtIG5vdCB1c2VkIGluIHRoZSBkYXRhIHBhdGguICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozMTg6XFx0c3RydWN0IGFnNzF4eF9idWYgKmJ1ZjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMxOS1cXHR1MTYgb3JkZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjMyNTplbnVtIGFnNzF4eF90eXBlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMyNi1cXHRBUjcxMDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjMzNTpzdHJ1Y3QgYWc3MXh4X2RjZmcge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzM2LVxcdHUzMiBtYXhfZnJhbWVfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMzktXFx0Ym9vbCB0eF9oYW5nX3dvcmthcm91bmQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNDA6XFx0ZW51bSBhZzcxeHhfdHlwZSB0eXBlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzQxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNDM6c3RydWN0IGFnNzF4eCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNDQtXFx0LyogQ3JpdGljYWwgZGF0YSByZWxhdGVkIHRvIHRoZSBwZXItcGFja2V0IGRhdGEgcGF0aCBhcmUgY2x1c3RlcmVkXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM0Ni1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjM0NzpcXHRzdHJ1Y3QgYWc3MXh4X3JpbmcgcnhfcmluZyBfX19fY2FjaGVsaW5lX2FsaWduZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNDg6XFx0c3RydWN0IGFnNzF4eF9yaW5nIHR4X3JpbmcgX19fX2NhY2hlbGluZV9hbGlnbmVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNTYtXFx0dTMyIG1zZ19lbmFibGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNTc6XFx0Y29uc3Qgc3RydWN0IGFnNzF4eF9kY2ZnICpkY2ZnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNjI6XFx0c3RydWN0IGFnNzF4eF9kZXNjICpzdG9wX2Rlc2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNjMtXFx0ZG1hX2FkZHJfdCBzdG9wX2Rlc2NfZG1hO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozODA6c3RhdGljIGludCBhZzcxeHhfZGVzY19lbXB0eShzdHJ1Y3QgYWc3MXh4X2Rlc2MgKmRlc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zODEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozODU6c3RhdGljIHN0cnVjdCBhZzcxeHhfZGVzYyAqYWc3MXh4X3JpbmdfZGVzYyhzdHJ1Y3QgYWc3MXh4X3JpbmcgKnJpbmcsIGludCBpZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zODYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Mzg3OlxcdHJldHVybiAoc3RydWN0IGFnNzF4eF9kZXNjICopXFx1MDAyNnJpbmctXFx1MDAzZWRlc2NzX2NwdVtpZHggKiBBRzcxWFhfREVTQ19TSVpFXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM4OC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozOTA6c3RhdGljIGludCBhZzcxeHhfcmluZ19zaXplX29yZGVyKGludCBzaXplKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Mzk1OnN0YXRpYyBib29sIGFnNzF4eF9pcyhzdHJ1Y3QgYWc3MXh4ICphZywgZW51bSBhZzcxeHhfdHlwZSB0eXBlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDA0OnN0YXRpYyB2b2lkIGFnNzF4eF93cihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZywgdTMyIHZhbHVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDA5OnN0YXRpYyB1MzIgYWc3MXh4X3JyKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDE0OnN0YXRpYyB2b2lkIGFnNzF4eF9zYihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZywgdTMyIG1hc2spXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00MTUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0MjE6c3RhdGljIHZvaWQgYWc3MXh4X2NiKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgbWFzaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQyODpzdGF0aWMgdm9pZCBhZzcxeHhfaW50X2VuYWJsZShzdHJ1Y3QgYWc3MXh4ICphZywgdTMyIGludHMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00Mjkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDMwOlxcdGFnNzF4eF9zYihhZywgQUc3MVhYX1JFR19JTlRfRU5BQkxFLCBpbnRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQzMS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0MzM6c3RhdGljIHZvaWQgYWc3MXh4X2ludF9kaXNhYmxlKHN0cnVjdCBhZzcxeHggKmFnLCB1MzIgaW50cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQzNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0MzU6XFx0YWc3MXh4X2NiKGFnLCBBRzcxWFhfUkVHX0lOVF9FTkFCTEUsIGludHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDM2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQzODpzdGF0aWMgaW50IGFnNzF4eF9kb19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00Mzkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDQwOlxcdHN0cnVjdCBhZzcxeHggKmFnID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQ0NTpzdGF0aWMgdm9pZCBhZzcxeHhfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NDYtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmluZm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NDcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDQ4OlxcdHN0cnVjdCBhZzcxeHggKmFnID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NTA6XFx0c3Ryc2NweShpbmZvLVxcdTAwM2Vkcml2ZXIsIFxcXCJhZzcxeHhcXFwiLCBzaXplb2YoaW5mby1cXHUwMDNlZHJpdmVyKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NTEtXFx0c3Ryc2NweShpbmZvLVxcdTAwM2VidXNfaW5mbywgb2Zfbm9kZV9mdWxsX25hbWUoYWctXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDU1OnN0YXRpYyBpbnQgYWc3MXh4X2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ1Ni1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3NldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ1Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NTg6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDYzOnN0YXRpYyBpbnQgYWc3MXh4X3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ2NC1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3NldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ2NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NjY6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDcxOnN0YXRpYyBpbnQgYWc3MXh4X2V0aHRvb2xfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ3Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NzM6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDc4OnN0YXRpYyB2b2lkIGFnNzF4eF9ldGh0b29sX2dldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDc5LVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00ODAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDgxOlxcdHN0cnVjdCBhZzcxeHggKmFnID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00ODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQ4NjpzdGF0aWMgaW50IGFnNzF4eF9ldGh0b29sX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDg3LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtICpwYXVzZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ4OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0ODk6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ5MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDk0OnN0YXRpYyB2b2lkIGFnNzF4eF9ldGh0b29sX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBzc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDk1LVxcdFxcdFxcdFxcdCAgICAgICB1OCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTAwLVxcdGNhc2UgRVRIX1NTX1NUQVRTOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTAxOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGFnNzF4eF9zdGF0aXN0aWNzKTsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTAyOlxcdFxcdFxcdGV0aHRvb2xfcHV0cyhcXHUwMDI2ZGF0YSwgYWc3MXh4X3N0YXRpc3RpY3NbaV0ubmFtZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01MDMtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUxMDpzdGF0aWMgdm9pZCBhZzcxeHhfZXRodG9vbF9nZXRfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01MTEtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsIHU2NCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUxMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1MTM6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUxNC1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUxNjpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShhZzcxeHhfc3RhdGlzdGljcyk7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUxNzpcXHRcXHQqZGF0YSsrID0gYWc3MXh4X3JyKGFnLCBhZzcxeHhfc3RhdGlzdGljc1tpXS5vZmZzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1MTg6XFx0XFx0XFx0XFx0XFx1MDAyNiBhZzcxeHhfc3RhdGlzdGljc1tpXS5tYXNrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTE5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUyMTpzdGF0aWMgaW50IGFnNzF4eF9ldGh0b29sX2dldF9zc2V0X2NvdW50KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgc3NldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUyNC1cXHRjYXNlIEVUSF9TU19TVEFUUzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUyNTpcXHRcXHRyZXR1cm4gQVJSQVlfU0laRShhZzcxeHhfc3RhdGlzdGljcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01MjYtXFx0Y2FzZSBFVEhfU1NfVEVTVDpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTMzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYWc3MXh4X2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTM0OlxcdC5nZXRfZHJ2aW5mb1xcdFxcdFxcdD0gYWc3MXh4X2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTM1LVxcdC5nZXRfbGlua1xcdFxcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUzNi1cXHQuZ2V0X3RzX2luZm9cXHRcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1Mzc6XFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdFxcdD0gYWc3MXh4X2dldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUzODpcXHQuc2V0X2xpbmtfa3NldHRpbmdzXFx0XFx0PSBhZzcxeHhfc2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTM5OlxcdC5ud2F5X3Jlc2V0XFx0XFx0XFx0PSBhZzcxeHhfZXRodG9vbF9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTQwOlxcdC5nZXRfcGF1c2VwYXJhbVxcdFxcdFxcdD0gYWc3MXh4X2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDE6XFx0LnNldF9wYXVzZXBhcmFtXFx0XFx0XFx0PSBhZzcxeHhfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU0MjpcXHQuZ2V0X3N0cmluZ3NcXHRcXHRcXHQ9IGFnNzF4eF9ldGh0b29sX2dldF9zdHJpbmdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTQzOlxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdFxcdD0gYWc3MXh4X2V0aHRvb2xfZ2V0X3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTQ0OlxcdC5nZXRfc3NldF9jb3VudFxcdFxcdFxcdD0gYWc3MXh4X2V0aHRvb2xfZ2V0X3NzZXRfY291bnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NDUtXFx0LnNlbGZfdGVzdFxcdFxcdFxcdD0gbmV0X3NlbGZ0ZXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDg6c3RhdGljIGludCBhZzcxeHhfbWRpb193YWl0X2J1c3koc3RydWN0IGFnNzF4eCAqYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NTg6XFx0XFx0YnVzeSA9IGFnNzF4eF9ycihhZywgQUc3MVhYX1JFR19NSUlfSU5EKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU1OS1cXHRcXHRpZiAoIWJ1c3kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU3MDpzdGF0aWMgaW50IGFnNzF4eF9tZGlvX21paV9yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTcxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU3MjpcXHRzdHJ1Y3QgYWc3MXh4ICphZyA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU3My1cXHRpbnQgZXJyLCB2YWw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NzU6XFx0ZXJyID0gYWc3MXh4X21kaW9fd2FpdF9idXN5KGFnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU3Ni1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1Nzk6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01JSV9BRERSLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTgwLVxcdFxcdCAgKChhZGRyIFxcdTAwMjYgMHgxZikgXFx1MDAzY1xcdTAwM2MgTUlJX0FERFJfU0hJRlQpIHwgKHJlZyBcXHUwMDI2IDB4ZmYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU4MS1cXHQvKiBlbmFibGUgcmVhZCBtb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1ODI6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01JSV9DTUQsIE1JSV9DTURfUkVBRCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01ODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1ODQ6XFx0ZXJyID0gYWc3MXh4X21kaW9fd2FpdF9idXN5KGFnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU4NS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1ODg6XFx0dmFsID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX01JSV9TVEFUVVMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTg5LVxcdC8qIGRpc2FibGUgcmVhZCBtb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1OTA6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01JSV9DTUQsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1OTg6c3RhdGljIGludCBhZzcxeHhfbWRpb19taWlfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01OTktXFx0XFx0XFx0XFx0IHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjAxOlxcdHN0cnVjdCBhZzcxeHggKmFnID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo2MDY6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01JSV9BRERSLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjA3LVxcdFxcdCAgKChhZGRyIFxcdTAwMjYgMHgxZikgXFx1MDAzY1xcdTAwM2MgTUlJX0FERFJfU0hJRlQpIHwgKHJlZyBcXHUwMDI2IDB4ZmYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjYwODpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUlJX0NUUkwsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo2MTA6XFx0cmV0dXJuIGFnNzF4eF9tZGlvX3dhaXRfYnVzeShhZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MTEtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz02MjE9c3RhdGljIGNvbnN0IHUzMiBhcjkzM3hfbWRpb19kaXZfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjI1OnN0YXRpYyBpbnQgYWc3MXh4X21kaW9fZ2V0X2RpdmlkZXIoc3RydWN0IGFnNzF4eCAqYWcsIHUzMiAqZGl2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjM1OlxcdGlmIChhZzcxeHhfaXMoYWcsIEFSOTMzMCkgfHwgYWc3MXh4X2lzKGFnLCBBUjkzNDApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MzYtXFx0XFx0dGFibGUgPSBhcjkzM3hfbWRpb19kaXZfdGFibGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MzctXFx0XFx0bmRpdnMgPSBBUlJBWV9TSVpFKGFyOTMzeF9tZGlvX2Rpdl90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo2Mzg6XFx0fSBlbHNlIGlmIChhZzcxeHhfaXMoYWcsIEFSNzI0MCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTYzOS1cXHRcXHR0YWJsZSA9IGFyNzI0MF9tZGlvX2Rpdl90YWJsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjU5OnN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcmVzZXQoc3RydWN0IG1paV9idXMgKmJ1cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTY2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo2NjE6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NjItXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjY1OlxcdGVyciA9IGFnNzF4eF9tZGlvX2dldF9kaXZpZGVyKGFnLCBcXHUwMDI2dCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NjYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjY5OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NSUlfQ0ZHLCB0IHwgTUlJX0NGR19SRVNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NzAtXFx0dXNsZWVwX3JhbmdlKDEwMCwgMjAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTY3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjY3MjpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUlJX0NGRywgdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NzMtXFx0dXNsZWVwX3JhbmdlKDEwMCwgMjAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Njc4OnN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcHJvYmUoc3RydWN0IGFnNzF4eCAqYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02Nzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3MDU6XFx0bWlpX2J1cy1cXHUwMDNlbmFtZSA9IFxcXCJhZzcxeHhfbWRpb1xcXCI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3MDY6XFx0bWlpX2J1cy1cXHUwMDNlcmVhZCA9IGFnNzF4eF9tZGlvX21paV9yZWFkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzA3OlxcdG1paV9idXMtXFx1MDAzZXdyaXRlID0gYWc3MXh4X21kaW9fbWlpX3dyaXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzA4OlxcdG1paV9idXMtXFx1MDAzZXJlc2V0ID0gYWc3MXh4X21kaW9fcmVzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MDktXFx0bWlpX2J1cy1cXHUwMDNlcHJpdiA9IGFnO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Mjc6c3RhdGljIHZvaWQgYWc3MXh4X2h3X3N0b3Aoc3RydWN0IGFnNzF4eCAqYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03Mjgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI5LVxcdC8qIGRpc2FibGUgYWxsIGludGVycnVwdHMgYW5kIHN0b3AgdGhlIHJ4L3R4IGVuZ2luZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzMwOlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19JTlRfRU5BQkxFLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjczMTpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfUlhfQ1RSTCwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3MzI6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1RYX0NUUkwsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzMzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTczNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjczNTpzdGF0aWMgYm9vbCBhZzcxeHhfY2hlY2tfZG1hX3N0dWNrKHN0cnVjdCBhZzcxeHggKmFnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzM2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzQ3OlxcdHJ4X3NtID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX1JYX1NNKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc0OC1cXHRpZiAoKHJ4X3NtIFxcdTAwMjYgMHg3KSA9PSAweDMgXFx1MDAyNlxcdTAwMjYgKChyeF9zbSBcXHUwMDNlXFx1MDAzZSA0KSBcXHUwMDI2IDB4NykgPT0gMHg2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3NTE6XFx0dHhfc20gPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfVFhfU00pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzUyOlxcdHJ4X2ZkID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fREVQVEgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzUzLVxcdGlmICgoKHR4X3NtIFxcdTAwM2VcXHUwMDNlIDQpIFxcdTAwMjYgMHg3KSA9PSAwIFxcdTAwMjZcXHUwMDI2ICgocnhfc20gXFx1MDAyNiAweDcpID09IDApIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjc2MDpzdGF0aWMgaW50IGFnNzF4eF90eF9wYWNrZXRzKHN0cnVjdCBhZzcxeHggKmFnLCBib29sIGZsdXNoLCBpbnQgYnVkZ2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzYxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjc2MjpcXHRzdHJ1Y3QgYWc3MXh4X3JpbmcgKnJpbmcgPSBcXHUwMDI2YWctXFx1MDAzZXR4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NjMtXFx0aW50IHNlbnQgPSAwLCBieXRlc19jb21wbCA9IDAsIG4gPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NzMtXFx0d2hpbGUgKHJpbmctXFx1MDAzZWRpcnR5ICsgbiAhPSByaW5nLVxcdTAwM2VjdXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3NzQ6XFx0XFx0c3RydWN0IGFnNzF4eF9kZXNjICpkZXNjO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzc1LVxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc3OC1cXHRcXHRpID0gKHJpbmctXFx1MDAzZWRpcnR5ICsgbikgXFx1MDAyNiByaW5nX21hc2s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Nzk6XFx0XFx0ZGVzYyA9IGFnNzF4eF9yaW5nX2Rlc2MocmluZywgaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03ODAtXFx0XFx0c2tiID0gcmluZy1cXHUwMDNlYnVmW2ldLnR4LnNrYjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjc4MjpcXHRcXHRpZiAoIWZsdXNoIFxcdTAwMjZcXHUwMDI2ICFhZzcxeHhfZGVzY19lbXB0eShkZXNjKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzgzLVxcdFxcdFxcdGlmIChhZy1cXHUwMDNlZGNmZy1cXHUwMDNldHhfaGFuZ193b3JrYXJvdW5kIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3ODQ6XFx0XFx0XFx0ICAgIGFnNzF4eF9jaGVja19kbWFfc3R1Y2soYWcpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03ODUtXFx0XFx0XFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZhZy1cXHUwMDNlcmVzdGFydF93b3JrLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04MDctXFx0XFx0d2hpbGUgKG4gXFx1MDAzZSAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4MDg6XFx0XFx0XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1RYX1NUQVRVUywgVFhfU1RBVFVTX1BTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTgwOS1cXHRcXHRcXHRuLS07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTgzMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjgzMTpzdGF0aWMgdm9pZCBhZzcxeHhfZG1hX3dhaXRfc3RvcChzdHJ1Y3QgYWc3MXh4ICphZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTgzMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg0MTpcXHRcXHRyeCA9IGFnNzF4eF9ycihhZywgQUc3MVhYX1JFR19SWF9DVFJMKSBcXHUwMDI2IFJYX0NUUkxfUlhFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODQyOlxcdFxcdHR4ID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX1RYX0NUUkwpIFxcdTAwMjYgVFhfQ1RSTF9UWEU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04NDMtXFx0XFx0aWYgKCFyeCBcXHUwMDI2XFx1MDAyNiAhdHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg1MDpzdGF0aWMgdm9pZCBhZzcxeHhfZG1hX3Jlc2V0KHN0cnVjdCBhZzcxeHggKmFnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODU2LVxcdC8qIHN0b3AgUlggYW5kIFRYICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4NTc6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1JYX0NUUkwsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODU4OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19UWF9DVFJMLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODYyLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODYzOlxcdGFnNzF4eF9kbWFfd2FpdF9zdG9wKGFnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg2NS1cXHQvKiBjbGVhciBkZXNjcmlwdG9yIGFkZHJlc3NlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODY2OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19UWF9ERVNDLCBhZy1cXHUwMDNlc3RvcF9kZXNjX2RtYSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4Njc6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1JYX0RFU0MsIGFnLVxcdTAwM2VzdG9wX2Rlc2NfZG1hKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODcwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAyNTY7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODcxOlxcdFxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19SWF9TVEFUVVMsIFJYX1NUQVRVU19QUik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4NzI6XFx0XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1RYX1NUQVRVUywgVFhfU1RBVFVTX1BTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3NS1cXHQvKiBjbGVhciBwZW5kaW5nIGVycm9ycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODc2OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19SWF9TVEFUVVMsIFJYX1NUQVRVU19CRSB8IFJYX1NUQVRVU19PRik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4Nzc6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1RYX1NUQVRVUywgVFhfU1RBVFVTX0JFIHwgVFhfU1RBVFVTX1VSKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg3OTpcXHR2YWwgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfUlhfU1RBVFVTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg4MC1cXHRpZiAodmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04ODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4ODQ6XFx0dmFsID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX1RYX1NUQVRVUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04ODUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg5NDpzdGF0aWMgdm9pZCBhZzcxeHhfaHdfc2V0dXAoc3RydWN0IGFnNzF4eCAqYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04OTUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04OTgtXFx0Lyogc2V0dXAgTUFDIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4OTk6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcxLCBpbml0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkwMTpcXHRhZzcxeHhfc2IoYWcsIEFHNzFYWF9SRUdfTUFDX0NGRzIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MDItXFx0XFx0ICBNQUNfQ0ZHMl9QQURfQ1JDX0VOIHwgTUFDX0NGRzJfTEVOX0NIRUNLKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTA0LVxcdC8qIHNldHVwIG1heCBmcmFtZSBsZW5ndGggdG8gemVybyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTA1OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NQUNfTUZMLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkwNy1cXHQvKiBzZXR1cCBGSUZPIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MDg6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fQ0ZHMCwgRklGT19DRkcwX0lOSVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTA5OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19GSUZPX0NGRzEsIGFnLVxcdTAwM2VmaWZvZGF0YVswXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MTA6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fQ0ZHMiwgYWctXFx1MDAzZWZpZm9kYXRhWzFdKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkxMTpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfRklGT19DRkc0LCBGSUZPX0NGRzRfSU5JVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MTI6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fQ0ZHNSwgRklGT19DRkc1X0lOSVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTEzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkxNTpzdGF0aWMgdW5zaWduZWQgaW50IGFnNzF4eF9tYXhfZnJhbWVfbGVuKHVuc2lnbmVkIGludCBtdHUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MjA6c3RhdGljIHZvaWQgYWc3MXh4X2h3X3NldF9tYWNhZGRyKHN0cnVjdCBhZzcxeHggKmFnLCBjb25zdCB1bnNpZ25lZCBjaGFyICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5Mjc6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19BRERSMSwgdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MjktXFx0dCA9ICgoKHUzMiltYWNbMV0pIFxcdTAwM2NcXHUwMDNjIDI0KSB8ICgoKHUzMiltYWNbMF0pIFxcdTAwM2NcXHUwMDNjIDE2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkzMDpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUFDX0FERFIyLCB0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkzMS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MzM6c3RhdGljIHZvaWQgYWc3MXh4X2Zhc3RfcmVzZXQoc3RydWN0IGFnNzF4eCAqYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5Mzk6XFx0YWc3MXh4X2h3X3N0b3AoYWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTQxOlxcdG1paV9yZWcgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfTUlJX0NGRyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NDI6XFx0cnhfZHMgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfUlhfREVTQyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NDQ6XFx0YWc3MXh4X3R4X3BhY2tldHMoYWcsIHRydWUsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NTE6XFx0YWc3MXh4X2RtYV9yZXNldChhZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NTI6XFx0YWc3MXh4X2h3X3NldHVwKGFnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk1My1cXHRhZy1cXHUwMDNldHhfcmluZy5jdXJyID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTU3LVxcdC8qIHNldHVwIG1heCBmcmFtZSBsZW5ndGggKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk1ODpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUFDX01GTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk1OTpcXHRcXHQgIGFnNzF4eF9tYXhfZnJhbWVfbGVuKGFnLVxcdTAwM2VuZGV2LVxcdTAwM2VtdHUpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk2MTpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfUlhfREVTQywgcnhfZHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTYyOlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19UWF9ERVNDLCBhZy1cXHUwMDNldHhfcmluZy5kZXNjc19kbWEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTYzOlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NSUlfQ0ZHLCBtaWlfcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk2NTpcXHRhZzcxeHhfaHdfc2V0X21hY2FkZHIoYWcsIGRldi1cXHUwMDNlZGV2X2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTY2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk2ODpzdGF0aWMgdm9pZCBhZzcxeHhfaHdfc3RhcnQoc3RydWN0IGFnNzF4eCAqYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05Njkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTcwLVxcdC8qIHN0YXJ0IFJYIGVuZ2luZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTcxOlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19SWF9DVFJMLCBSWF9DVFJMX1JYRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NzMtXFx0LyogZW5hYmxlIGludGVycnVwdHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk3NDpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfSU5UX0VOQUJMRSwgQUc3MVhYX0lOVF9JTklUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTc5OnN0YXRpYyB2b2lkIGFnNzF4eF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4MC1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5ODI6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGNvbmZpZy1cXHUwMDNlZGV2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05ODMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk4NzpcXHRpZiAoIWFnNzF4eF9pcyhhZywgQVI3MTAwKSBcXHUwMDI2XFx1MDAyNiAhYWc3MXh4X2lzKGFnLCBBUjkxMzApKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTg4OlxcdFxcdGFnNzF4eF9mYXN0X3Jlc2V0KGFnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTk1OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19GSUZPX0NGRzMsIGFnLVxcdTAwM2VmaWZvZGF0YVsyXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05OTYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTk4OnN0YXRpYyB2b2lkIGFnNzF4eF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTk5LVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTAwMTpcXHRzdHJ1Y3QgYWc3MXh4ICphZyA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoY29uZmlnLVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDAzOlxcdGFnNzF4eF9od19zdG9wKGFnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMDQtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwMDY6c3RhdGljIHZvaWQgYWc3MXh4X21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAwNy1cXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAxMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDEyOlxcdHN0cnVjdCBhZzcxeHggKmFnID0gbmV0ZGV2X3ByaXYodG9fbmV0X2Rldihjb25maWctXFx1MDAzZWRldikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAxMy1cXHR1MzIgY2ZnMSwgY2ZnMjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwMTc6XFx0Y2ZnMiA9IGFnNzF4eF9ycihhZywgQUc3MVhYX1JFR19NQUNfQ0ZHMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDE4LVxcdGNmZzIgXFx1MDAyNj0gfihNQUNfQ0ZHMl9JRl8xMDAwIHwgTUFDX0NGRzJfSUZfMTBfMTAwIHwgTUFDX0NGRzJfRkRYKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwMjE6XFx0aWZjdGwgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfTUFDX0lGQ1RMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMjItXFx0aWZjdGwgXFx1MDAyNj0gfihNQUNfSUZDVExfU1BFRUQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwMjQ6XFx0ZmlmbzUgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfRklGT19DRkc1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMjUtXFx0ZmlmbzUgXFx1MDAyNj0gfkZJRk9fQ0ZHNV9CTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTA0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwNDM6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcyLCBjZmcyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwNDQ6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fQ0ZHNSwgZmlmbzUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA0NTpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUFDX0lGQ1RMLCBpZmN0bCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA0NzpcXHRjZmcxID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwNDgtXFx0Y2ZnMSBcXHUwMDI2PSB+KE1BQ19DRkcxX1RGQyB8IE1BQ19DRkcxX1JGQyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwNTMtXFx0XFx0Y2ZnMSB8PSBNQUNfQ0ZHMV9SRkM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDU0OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NQUNfQ0ZHMSwgY2ZnMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA1NjpcXHRhZzcxeHhfaHdfc3RhcnQoYWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTA1Ny19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA1OTpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBhZzcxeHhfcGh5bGlua19tYWNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA2MDpcXHQubWFjX2NvbmZpZyA9IGFnNzF4eF9tYWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA2MTpcXHQubWFjX2xpbmtfZG93biA9IGFnNzF4eF9tYWNfbGlua19kb3duLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA2MjpcXHQubWFjX2xpbmtfdXAgPSBhZzcxeHhfbWFjX2xpbmtfdXAsXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjM0LjEzNDYwNDcyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTAxMzcxNTA2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBhZzcxeHggUGxhdGZvcm0gRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgYWc3MXh4X2RyaXZlcmAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDsgaXQncyBhIHN0YW5kYXJkIHBsYXRmb3JtIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcz8gVGhlIGltbWVkaWF0ZSBhbnN3ZXIgaXMgdXN1YWxseSBubywgc3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IGp1c3QgY29uanVyZSB1cCBwbGF0Zm9ybSBkZXZpY2VzIHZpYSBkZXZpY2UgdHJlZSBvdmVybGF5cyB3aXRob3V0IHNvbWUgc3BlY2lmaWMgc2V0dXAuXG5cbk15IGJyYWluIGp1bXBzIHRvIHdoZXRoZXIgdGhlcmUgaXMgc29tZSBgc3l6X2Rldl9jcmVhdGVgIGVxdWl2YWxlbnQsIGJ1dCBub3RoaW5nIGNvbWVzIHRvIG1pbmQsIGp1c3QgdGhlIG1vcmUgc3BlY2lmaWMgc3l6a2FsbGVyIGNhbGxzIGZvciBVU0IsIDgwMi4xMSwgZXRjLiBQbGF0Zm9ybSBkcml2ZXJzIG5lZWQgdG8gYmUgKmluc3RhbnRpYXRlZCogdG8gYmUgZnV6emVkIGJ5IHN5emthbGxlci4gSWYgaXTigJlzIGEgcHNldWRvLWRldmljZSBvciB3ZSBoYXZlIGEgc3BlY2lmaWMgd2F5IHRvIGxvYWQgRFQgb3ZlcmxheXMsIHRoZW4gaXQgd29uJ3QgYmUgcHJvYmVkLlxuXG5CdXQgd2FpdCwgdGhlIHByb21wdCByZW1pbmRzIG1lIGFib3V0IGNvZGUgdGhhdOKAmXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGlzIGRyaXZlciBpcyBmb3IgYW4gb24tY2hpcCBFdGhlcm5ldCBNQUMgb24gQXRoZXJvcyBNSVBTIFNvQ3MuIEl0J3MgZGlyZWN0bHkgaGl0dGluZyBNTUlPIHJlZ2lzdGVycywgZG9pbmcgYGlvd3JpdGUzMmAgYW5kIHN1Y2guIElmIHdlIG1hZ2ljYWxseSBpbnN0YW50aWF0ZWQgdGhpcywgaXQgd291bGQgdHJ5IHRvIHRhbGsgdG8gcGh5c2ljYWwgbWVtb3J5IGFkZHJlc3NlcyB3aGljaCwgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLCB3b3VsZCBlaXRoZXIgY3Jhc2ggb3IgZG8gbm90aGluZyBiZWNhdXNlIHRoYXQgaGFyZHdhcmUgaXNuJ3QgdGhlcmUuXG5cblRoZSBxdWVzdGlvbiB0aGVuIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSB0aGUgQVI3MXh4IFNvQz8gQW5kIGRvZXMgc3l6a2FsbGVyIGV2ZW4gKnJ1biogb24gTUlQUz8gSSBrbm93IHN5emthbGxlciAqZG9lcyogc3VwcG9ydCBNSVBTLiBBcyBmb3IgUUVNVSwgSSdtIHByZXR0eSBzdXJlIGl0IGhhcyBhIGBtYWx0YWAgdGFyZ2V0IGFuZCBtYXliZSBhIGZldyBvdGhlciBNSVBTIGJvYXJkcywgYnV0IEkgZG91YnQgaXQgaGFzIGZ1bGwtYmxvd24gQVI3MXh4IHN1cHBvcnQsIGF0IGxlYXN0IG5vdCBpbiBhIGdlbmVyaWMgbWFjaGluZSB0eXBlLiBPcGVuV3J0IHVzZXMgUUVNVSwgYnV0IGZvciBzcGVjaWZpYyBBdGhlcm9zIGJvYXJkcy5cblxuU28sIGxldCdzIHNlZSBpZiB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IHJlYWNoYWJsZS4gSXTigJlzIGFuIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIsIHJpZ2h0PyBTbyB1bmxlc3Mgd2UncmUgcnVubmluZyBvbiB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLCBpdCdzIGdlbmVyYWxseSBhIGRlYWQgZW5kLiBCdXQsIHRoZSBwcm9tcHQgYWxzbyBzYXlzIHRoYXQgaWYgaXQgbW9kaWZpZXMgKnJlYWNoYWJsZSogY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIGl0J3MgcG90ZW50aWFsbHkgd29ydGggZnV6emluZy5cblxuT2theSwgaXMgdGhlcmUgYSB0cmlnZ2VyPyBJdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBpdCBwcm9iZXMgd2hlbiBhIGRldmljZSB3aXRoIGEgXCJxY2EsYXI3MTAwLWV0aFwiIGNvbXBhdGlibGUgc3RyaW5nIChvciBzaW1pbGFyKSBpcyBwcmVzZW50IGluIHRoZSBkZXZpY2UgdHJlZS4gSWYgd2UncmUgb24geDg2XzY0LCBpdCdzIGEgZGVmaW5pdGUgbm8tZ28uIEV2ZW4gaWYgd2UgY29tcGlsZSBpdCB3aXRoIENPTVBJTEVfVEVTVCBvbiB4ODZfNjQsIHRoZSBwbGF0Zm9ybSBkZXZpY2Ugd2lsbCBub3QgYmUgdGhlcmUsIHNvIGBhZzcxeHhfcHJvYmVgIHdvdWxkIG5ldmVyIGJlIGNhbGxlZC4gU28sIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGl0LCBzaW5jZSBpdCdzIGhhcmR3YXJlIE1BQy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBgYWc3MXh4X21hdGNoYCB0YWJsZSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NDA1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjQ1LjE0ODMyMzI2N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4OTQ3ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWc3MXh4X21hdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz0xOTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWc3MXh4X2RjZmcgYWc3MXh4X2RjZmdfcWNhOTU1MCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjAwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjIwMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYWc3MXh4X21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yMDA1LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwicWNhLGFyNzEwMC1ldGhcXFwiLCAuZGF0YSA9IFxcdTAwMjZhZzcxeHhfZGNmZ19hcjcxMDAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjAxNi19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MjAxNzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhZzcxeHhfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjAxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTIwMTk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWc3MXh4X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjAyMi1cXHRcXHQubmFtZVxcdD0gXFxcImFnNzF4eFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoyMDIzOlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGFnNzF4eF9tYXRjaCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTIwMjQtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQyMzoyMDo0NS4yMDYyMjczODFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzk4Mjg5NjczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbmZ1enphYmxlIFBsYXRmb3JtIERyaXZlcioqXG5cbk9rYXksIHNvIHRoaXMgaXMgYSBzdGFuZGFyZCBPcGVuIEZpcm13YXJlIChPRikgcGxhdGZvcm0gZHJpdmVyLiBTdHJhaWdodCBhd2F5LCBJIGNhbiB0ZWxsIGl0J3MgdGllZCB0byBhIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGUsIHNvbWV0aGluZyBsaWtlIFwicWNhLGFyNzEwMC1ldGhcIiwgYW5kIGl0J3MgYWNjZXNzaW5nIHBoeXNpY2FsIE1NSU8gcmVnaXN0ZXJzIOKAkyB0aGF0J3MgYSBodWdlIHJlZCBmbGFnLiBJdCdzIG5vdCBnb2luZyB0byBiZSBmdXp6YWJsZSBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdW5sZXNzIHlvdSBoYXZlIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLCB3aGljaCBRRU1VICptaWdodCogaGF2ZSwgYnV0IFN5emthbGxlciB0eXBpY2FsbHkgZG9lc24ndCBldmVuIGJvb3QgdGhhdCBzcGVjaWZpYyBtYWNoaW5lIHR5cGUgZm9yIGdlbmVyYWwgZnV6emluZywgeW91IGtub3c/XG5cbkhtbSwgSSB3b25kZXIsIHdoYXQgaWYgU3l6a2FsbGVyIHRyaWVzIHRvIGluamVjdCBhIHBsYXRmb3JtIGRldmljZSB1c2luZyBgc3l6X2Rldl9jcmVhdGVgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBFdmVuICppZiogaXQgY291bGQsIHRoaXMgZHJpdmVyIHdvdWxkIGltbWVkaWF0ZWx5IGhpdCBhIHdhbGwuIEl0IHdvdWxkIHVzZSBgaW9yZW1hcGAgb24gc29tZSByYW5kb20gcGh5c2ljYWwgYWRkcmVzcyBhbmQgdHJ5IHRvIHJlYWQgb3Igd3JpdGUgaXQuIElmIHRoYXQgcGh5c2ljYWwgYWRkcmVzcyBpc24ndCBhY3R1YWxseSBiYWNrZWQgYnkgZW11bGF0ZWQgaGFyZHdhcmUsIGl0J3MgZWl0aGVyIGdvaW5nIHRvIHJlYWQgYWxsIDB4RkZzLCBhbmQgYmUgdXNlbGVzcywgb3IgaXQnbGwgY3Jhc2ggaW1tZWRpYXRlbHkgYW5kIGJlIHVuYWJsZSB0byBwZXJmb3JtIGFueSBtZWFuaW5nZnVsIG5ldHdvcmsgb3BlcmF0aW9ucyB0aGF0IHJlcXVpcmUgRE1BIG9yIGludGVycnVwdHMuXG5cblNvLCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBkcml2ZXIgaXMgbm90IGdvaW5nIHRvIGJlIGZ1enphYmxlLiBMZXQgbWUgZ28gYmFjayB0byB0aGUgcHJvbXB0LCBhbmQgc2VlIGlmIEkgaGF2ZSBhIHRlc3QuXG5cbkFoLCBoZXJlIGl0IGlzOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuIE5haWxlZCBpdC4gVGhpcyBwZXJmZWN0bHkgZGVzY3JpYmVzIHRoZSBzaXR1YXRpb24uIFRoZSBkcml2ZXIgaXMgZm9yIHRoZSBBdGhlcm9zIEFSN3h4eC9BUjl4eHggb24tY2hpcCBFdGhlcm5ldCBNQUNzLiBUaGF0IGhhcmR3YXJlIGlzbid0IGVtdWxhdGVkIGluIHRoZSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnRzLlxuXG5JJ20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5UaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzb2xpZDogVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhZzcxeHggRXRoZXJuZXQgTUFDIGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aGUgb24tY2hpcCBoYXJkd2FyZSBmb3VuZCBpbiBBUjd4eHgvQVI5eHh4IE1JUFMgU29Dcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhbmQgZXZlbiBpZiBDT01QSUxFX1RFU1QgY29tcGlsZXMgaXQsIHRoZSBhYnNlbmNlIG9mIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYW5kIGVtdWxhdGVkIE1NSU8vRE1BIGhhcmR3YXJlIG1ha2VzIHRoZSBjaGFuZ2VkIGNvZGUgcGF0aHMgZW50aXJlbHkgdW5yZWFjaGFibGUgYW5kIHVuZnV6emFibGUuIFRoYXQncyBhIGRlZmluaXRlIFwibm8gZ29cIiBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEyMzUsIk91dHB1dFRva2VucyI6MTM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjUzLjE4OTEyNzkxM1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGFnNzF4eCBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igb24tY2hpcCBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBNSVBTIFNvQ3MgKEFSN3h4eC9BUjl4eHgpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIGdlbmVyaWMgUUVNVSkgdXNlZCBmb3IgZnV6emluZy4gRXZlbiBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHZpYSBDT01QSUxFX1RFU1QsIHRoZSBsYWNrIG9mIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYW5kIGVtdWxhdGVkIE1NSU8vRE1BIGhhcmR3YXJlIG1ha2VzIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGFuZCB1bmZ1enphYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEF0aGVyb3MgYWc3MXh4IEV0aGVybmV0IE1BQyBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBvbi1jaGlwIGhhcmR3YXJlIGZvdW5kIGluIHNwZWNpZmljIE1JUFMgU29DcyAoQVI3eHh4L0FSOXh4eCkuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgZ2VuZXJpYyBRRU1VKSB1c2VkIGZvciBmdXp6aW5nLiBFdmVuIGlmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgdmlhIENPTVBJTEVfVEVTVCwgdGhlIGxhY2sgb2YgYSBjb3JyZXNwb25kaW5nIHBsYXRmb3JtIGRldmljZSBhbmQgZW11bGF0ZWQgTU1JTy9ETUEgaGFyZHdhcmUgbWFrZXMgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgYW5kIHVuZnV6emFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg7gsg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-28 23:15:12 +0000 UTC FinishedAt: 2026-06-28 23:20:54 +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+CgkJCTx0ZD4yMDI2LzA2LzI4IDIzOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGFnNzF4eCBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igb24tY2hpcCBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBNSVBTIFNvQ3MgKEFSN3h4eC9BUjl4eHgpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIGdlbmVyaWMgUUVNVSkgdXNlZCBmb3IgZnV6emluZy4gRXZlbiBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHZpYSBDT01QSUxFX1RFU1QsIHRoZSBsYWNrIG9mIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYW5kIGVtdWxhdGVkIE1NSU8vRE1BIGhhcmR3YXJlIG1ha2VzIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGFuZCB1bmZ1enphYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc1MDIyZWIyM2NlZjEyMDZlOTVjZDU4YjczOWQxOTAxNGVkZWEyZGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1biAyOCAyMzoyMDoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xuaW5kZXggNGU0Nzk0YzRkZmRjZWEuLmE3OGJlNTFhMDFjYzRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xuQEAgLTQwLDExICYjNDM7NDAsNiBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvc2VsZnRlc3RzLmhcdTAwM2VcbiBcbi0vKiBGb3Igb3VyIE5BUEkgd2VpZ2h0IGJpZ2dlciBkb2VzICpOT1QqIG1lYW4gYmV0dGVyIC0gaXQgbWVhbnMgbW9yZVxuLSAqIEQtY2FjaGUgbWlzc2VzIGFuZCBsb3RzIG1vcmUgd2FzdGVkIGN5Y2xlcyB0aGFuIHdlJiMzOTtsbCBldmVyXG4tICogcG9zc2libHkgZ2FpbiBmcm9tIHNhdmluZyBpbnN0cnVjdGlvbnMuXG4tICovXG4tI2RlZmluZSBBRzcxWFhfTkFQSV9XRUlHSFRcdDMyXG4gI2RlZmluZSBBRzcxWFhfT09NX1JFRklMTFx0KDEgJiM0MzsgSFogLyAxMClcbiBcbiAjZGVmaW5lIEFHNzFYWF9JTlRfRVJSXHQoQUc3MVhYX0lOVF9SWF9CRSB8IEFHNzFYWF9JTlRfVFhfQkUpXG5AQCAtNDAyLDExICYjNDM7Mzk3LDEzIEBAIHN0YXRpYyBib29sIGFnNzF4eF9pcyhzdHJ1Y3QgYWc3MXh4ICphZywgZW51bSBhZzcxeHhfdHlwZSB0eXBlKVxuIFx0cmV0dXJuIGFnLVx1MDAzZWRjZmctXHUwMDNldHlwZSA9PSB0eXBlO1xuIH1cbiBcbiYjNDM7LyogYXRoNzkgb24tY2hpcCBNTUlPIGJ1cyBpcyBub24tcG9zdGVkIC0gaW93cml0ZTMyL2lvd3JpdGUzMmJlIGNvbXBsZXRlc1xuJiM0MzsgKiBiZWZvcmUgdGhlIG5leHQgaW5zdHJ1Y3Rpb24gZXhlY3V0ZXMuIE5vIHJlYWQtYmFjayBkcmFpbiBpcyBuZWVkZWQuXG4mIzQzOyAqL1xuJiM0MztcbiBzdGF0aWMgdm9pZCBhZzcxeHhfd3Ioc3RydWN0IGFnNzF4eCAqYWcsIHVuc2lnbmVkIGludCByZWcsIHUzMiB2YWx1ZSlcbiB7XG4gXHRpb3dyaXRlMzIodmFsdWUsIGFnLVx1MDAzZW1hY19iYXNlICYjNDM7IHJlZyk7XG4tXHQvKiBmbHVzaCB3cml0ZSAqL1xuLVx0KHZvaWQpaW9yZWFkMzIoYWctXHUwMDNlbWFjX2Jhc2UgJiM0MzsgcmVnKTtcbiB9XG4gXG4gc3RhdGljIHUzMiBhZzcxeHhfcnIoc3RydWN0IGFnNzF4eCAqYWcsIHVuc2lnbmVkIGludCByZWcpXG5AQCAtNDE2LDIyICYjNDM7NDEzLDE2IEBAIHN0YXRpYyB1MzIgYWc3MXh4X3JyKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnKVxuIFxuIHN0YXRpYyB2b2lkIGFnNzF4eF9zYihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZywgdTMyIG1hc2spXG4ge1xuLVx0dm9pZCBfX2lvbWVtICpyO1xuJiM0MztcdHZvaWQgX19pb21lbSAqciA9IGFnLVx1MDAzZW1hY19iYXNlICYjNDM7IHJlZztcbiBcbi1cdHIgPSBhZy1cdTAwM2VtYWNfYmFzZSAmIzQzOyByZWc7XG4gXHRpb3dyaXRlMzIoaW9yZWFkMzIocikgfCBtYXNrLCByKTtcbi1cdC8qIGZsdXNoIHdyaXRlICovXG4tXHQodm9pZClpb3JlYWQzMihyKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgYWc3MXh4X2NiKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgbWFzaylcbiB7XG4tXHR2b2lkIF9faW9tZW0gKnI7XG4mIzQzO1x0dm9pZCBfX2lvbWVtICpyID0gYWctXHUwMDNlbWFjX2Jhc2UgJiM0MzsgcmVnO1xuIFxuLVx0ciA9IGFnLVx1MDAzZW1hY19iYXNlICYjNDM7IHJlZztcbiBcdGlvd3JpdGUzMihpb3JlYWQzMihyKSBcdTAwMjYgfm1hc2ssIHIpO1xuLVx0LyogZmx1c2ggd3JpdGUgKi9cbi1cdCh2b2lkKWlvcmVhZDMyKHIpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBhZzcxeHhfaW50X2VuYWJsZShzdHJ1Y3QgYWc3MXh4ICphZywgdTMyIGludHMpXG5AQCAtMTcyOSw2ICYjNDM7MTcyMCw3IEBAIHN0YXRpYyBpbnQgYWc3MXh4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgbGltaXQpXG4gXG4gXHRtb2RfdGltZXIoXHUwMDI2YWctXHUwMDNlb29tX3RpbWVyLCBqaWZmaWVzICYjNDM7IEFHNzFYWF9PT01fUkVGSUxMKTtcbiBcdG5hcGlfY29tcGxldGUobmFwaSk7XG4mIzQzO1x0YWc3MXh4X2ludF9lbmFibGUoYWcsIEFHNzFYWF9JTlRfVFgpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTE5MTMsOCAmIzQzOzE5MDUsNyBAQCBzdGF0aWMgaW50IGFnNzF4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuLVx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFx1MDAyNmFnLVx1MDAzZW5hcGksIGFnNzF4eF9wb2xsLFxuLVx0XHRcdCAgICAgIEFHNzFYWF9OQVBJX1dFSUdIVCk7XG4mIzQzO1x0bmV0aWZfbmFwaV9hZGQobmRldiwgXHUwMDI2YWctXHUwMDNlbmFwaSwgYWc3MXh4X3BvbGwpO1xuIFxuIFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcxLCAwKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhZzcxeHggRXRoZXJuZXQgTUFDIGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIG9uLWNoaXAgaGFyZHdhcmUgZm91bmQgaW4gc3BlY2lmaWMgTUlQUyBTb0NzIChBUjd4eHgvQVI5eHh4KS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBnZW5lcmljIFFFTVUpIHVzZWQgZm9yIGZ1enppbmcuIEV2ZW4gaWYgdGhlIGRyaXZlciBpcyBjb21waWxlZCB2aWEgQ09NUElMRV9URVNULCB0aGUgbGFjayBvZiBhIGNvcnJlc3BvbmRpbmcgcGxhdGZvcm0gZGV2aWNlIGFuZCBlbXVsYXRlZCBNTUlPL0RNQSBoYXJkd2FyZSBtYWtlcyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBhbmQgdW5mdXp6YWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc1MDIyZWIyM2NlZjEyMDZlOTVjZDU4YjczOWQxOTAxNGVkZWEyZGEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1biAyOCAyMzoyMDoxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jCmluZGV4IDRlNDc5NGM0ZGZkY2VhLi5hNzhiZTUxYTAxY2M0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jCkBAIC00MCwxMSAmIzQzOzQwLDYgQEAKICNpbmNsdWRlICZsdDtsaW51eC9pby5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9zZWxmdGVzdHMuaCZndDsKIAotLyogRm9yIG91ciBOQVBJIHdlaWdodCBiaWdnZXIgZG9lcyAqTk9UKiBtZWFuIGJldHRlciAtIGl0IG1lYW5zIG1vcmUKLSAqIEQtY2FjaGUgbWlzc2VzIGFuZCBsb3RzIG1vcmUgd2FzdGVkIGN5Y2xlcyB0aGFuIHdlJiMzOTtsbCBldmVyCi0gKiBwb3NzaWJseSBnYWluIGZyb20gc2F2aW5nIGluc3RydWN0aW9ucy4KLSAqLwotI2RlZmluZSBBRzcxWFhfTkFQSV9XRUlHSFQJMzIKICNkZWZpbmUgQUc3MVhYX09PTV9SRUZJTEwJKDEgJiM0MzsgSFogLyAxMCkKIAogI2RlZmluZSBBRzcxWFhfSU5UX0VSUgkoQUc3MVhYX0lOVF9SWF9CRSB8IEFHNzFYWF9JTlRfVFhfQkUpCkBAIC00MDIsMTEgJiM0MzszOTcsMTMgQEAgc3RhdGljIGJvb2wgYWc3MXh4X2lzKHN0cnVjdCBhZzcxeHggKmFnLCBlbnVtIGFnNzF4eF90eXBlIHR5cGUpCiAJcmV0dXJuIGFnLSZndDtkY2ZnLSZndDt0eXBlID09IHR5cGU7CiB9CiAKJiM0MzsvKiBhdGg3OSBvbi1jaGlwIE1NSU8gYnVzIGlzIG5vbi1wb3N0ZWQgLSBpb3dyaXRlMzIvaW93cml0ZTMyYmUgY29tcGxldGVzCiYjNDM7ICogYmVmb3JlIHRoZSBuZXh0IGluc3RydWN0aW9uIGV4ZWN1dGVzLiBObyByZWFkLWJhY2sgZHJhaW4gaXMgbmVlZGVkLgomIzQzOyAqLwomIzQzOwogc3RhdGljIHZvaWQgYWc3MXh4X3dyKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgdmFsdWUpCiB7CiAJaW93cml0ZTMyKHZhbHVlLCBhZy0mZ3Q7bWFjX2Jhc2UgJiM0MzsgcmVnKTsKLQkvKiBmbHVzaCB3cml0ZSAqLwotCSh2b2lkKWlvcmVhZDMyKGFnLSZndDttYWNfYmFzZSAmIzQzOyByZWcpOwogfQogCiBzdGF0aWMgdTMyIGFnNzF4eF9ycihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZykKQEAgLTQxNiwyMiAmIzQzOzQxMywxNiBAQCBzdGF0aWMgdTMyIGFnNzF4eF9ycihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZykKIAogc3RhdGljIHZvaWQgYWc3MXh4X3NiKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgbWFzaykKIHsKLQl2b2lkIF9faW9tZW0gKnI7CiYjNDM7CXZvaWQgX19pb21lbSAqciA9IGFnLSZndDttYWNfYmFzZSAmIzQzOyByZWc7CiAKLQlyID0gYWctJmd0O21hY19iYXNlICYjNDM7IHJlZzsKIAlpb3dyaXRlMzIoaW9yZWFkMzIocikgfCBtYXNrLCByKTsKLQkvKiBmbHVzaCB3cml0ZSAqLwotCSh2b2lkKWlvcmVhZDMyKHIpOwogfQogCiBzdGF0aWMgdm9pZCBhZzcxeHhfY2Ioc3RydWN0IGFnNzF4eCAqYWcsIHVuc2lnbmVkIGludCByZWcsIHUzMiBtYXNrKQogewotCXZvaWQgX19pb21lbSAqcjsKJiM0MzsJdm9pZCBfX2lvbWVtICpyID0gYWctJmd0O21hY19iYXNlICYjNDM7IHJlZzsKIAotCXIgPSBhZy0mZ3Q7bWFjX2Jhc2UgJiM0MzsgcmVnOwogCWlvd3JpdGUzMihpb3JlYWQzMihyKSAmYW1wOyB+bWFzaywgcik7Ci0JLyogZmx1c2ggd3JpdGUgKi8KLQkodm9pZClpb3JlYWQzMihyKTsKIH0KIAogc3RhdGljIHZvaWQgYWc3MXh4X2ludF9lbmFibGUoc3RydWN0IGFnNzF4eCAqYWcsIHUzMiBpbnRzKQpAQCAtMTcyOSw2ICYjNDM7MTcyMCw3IEBAIHN0YXRpYyBpbnQgYWc3MXh4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgbGltaXQpCiAKIAltb2RfdGltZXIoJmFtcDthZy0mZ3Q7b29tX3RpbWVyLCBqaWZmaWVzICYjNDM7IEFHNzFYWF9PT01fUkVGSUxMKTsKIAluYXBpX2NvbXBsZXRlKG5hcGkpOwomIzQzOwlhZzcxeHhfaW50X2VuYWJsZShhZywgQUc3MVhYX0lOVF9UWCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE5MTMsOCAmIzQzOzE5MDUsNyBAQCBzdGF0aWMgaW50IGFnNzF4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlyZXR1cm4gZXJyOwogCX0KIAotCW5ldGlmX25hcGlfYWRkX3dlaWdodChuZGV2LCAmYW1wO2FnLSZndDtuYXBpLCBhZzcxeHhfcG9sbCwKLQkJCSAgICAgIEFHNzFYWF9OQVBJX1dFSUdIVCk7CiYjNDM7CW5ldGlmX25hcGlfYWRkKG5kZXYsICZhbXA7YWctJmd0O25hcGksIGFnNzF4eF9wb2xsKTsKIAogCWFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NQUNfQ0ZHMSwgMCk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMjM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFHNzFYWCBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCBvbiB0aGUgc3VyZmFjZS4gRmlyc3QsIHRoZXkmIzM5O3ZlIGNsZWFuZWQgdXAgc29tZSBuYXBpLXJlbGF0ZWQgY29kZSwgcmVtb3ZpbmcgYEFHNzFYWF9OQVBJX1dFSUdIVGAgYW5kIG9wdGluZyBmb3IgYG5ldGlmX25hcGlfYWRkYCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZSBub3cuIEdvb2QuIFRoZXkmIzM5O3ZlIGFsc28gZ290dGVuIHJpZCBvZiB0aGUgcmVhZC1iYWNrIGRyYWlucyBpbiB0aG9zZSB3cml0ZSBmdW5jdGlvbnMg4oCTIGBhZzcxeHhfd3JgLCBgYWc3MXh4X3NiYCwgYGFnNzF4eF9jYmAuIFByb2JhYmx5IGFuIG9wdGltaXphdGlvbiwgbGVzcyBidXN5LXdhaXRpbmcuIEFuZCBmaW5hbGx5LCB0aGV5JiMzOTt2ZSBhZGRlZCBhbiBpbnRlcnJ1cHQgZW5hYmxlIGZvciBUWCBpbiBgYWc3MXh4X3BvbGxgLCB3aGljaCBpcyBsaWtlbHkgYWJvdXQgb3B0aW1pemluZyBpbnRlcnJ1cHQgaGFuZGxpbmcuIEZpbmUsIEkgZ2V0IHRoZSBjaGFuZ2VzLgoKTm93LCB0aGlzIGlzIGFuIEF0aGVyb3MgZHJpdmVyLiBJdCYjMzk7cyBidWlsdCBmb3IgdGhvc2Ugb2xkZXIgU29DczogQVI3MXh4LCBBUjcyNHgsIEFSOTEzeCwgdGhlIHdob2xlIGdhbmcsIHJpZ2h0IHRocm91Z2ggdGhlIFFDQSBzZXJpZXMuIEl0JiMzOTtzIGEgYnVpbHQtaW4gRXRoZXJuZXQgTUFDLCBzbyB0aGlzIGlzIGdvaW5nIHRvIGJlIHBsYXRmb3JtLXNwZWNpZmljLCB2ZXJ5IHRpZ2h0bHkgY291cGxlZCB0byB0aGUgaGFyZHdhcmUuIFRoYXQmIzM5O3Mgd2hhdCBJJiMzOTttIGNvbmNlcm5lZCBhYm91dC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiB3aWxsIGl0IGV2ZW4gYmUgKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSSBkb3VidCBpdC4gVGhpcyBpc24mIzM5O3QgYSBnZW5lcmljIE5JQyBkcml2ZXI7IGl0JiMzOTtzIGEgZGlyZWN0IGludGVyZmFjZSB0byBvbi1jaGlwIGhhcmR3YXJlLgoKTGV0JiMzOTtzIGNvbmZpcm0gaXQmIzM5O3MgdXNpbmcgdGhlIGBwbGF0Zm9ybV9kZXZpY2VgIGluZnJhc3RydWN0dXJlLiBZdXAsIGl0IGlzLiBBcyBJIHN1c3BlY3RlZC4gQ2FuIHdlIGVtdWxhdGUgdGhpcyBlYXNpbHk/IEFic29sdXRlbHkgbm90LCBpdCYjMzk7cyBub3QgYSBzdGFuZGFyZCBOSUMsIGl0JiMzOTtzIGEgc3BlY2lmaWMgTUFDLiBXZSYjMzk7ZCBoYXZlIHRvIGVtdWxhdGUgdGhlIGVudGlyZSBBdGhlcm9zIFNvQyEgVGhhdCYjMzk7cyBhIGh1Z2UgdW5kZXJ0YWtpbmcuIEFscmlnaHQsIGxldCYjMzk7cyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlIGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9gIGRpcmVjdG9yeSBzYXlzIGFib3V0IGl0cyBkZXBlbmRlbmNpZXMuIEdvdHRhIGNoZWNrIGZvciBhbnkgc3VidGxlIGJ1aWxkIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQUc3MVhYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX0FUSEVST1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZzoyMDpjb25maWcgQUc3MVhYXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEFSN1hYWC9BUjlYWFggYnVpbHQtaW4gZXRoZXJuZXQgbWFjIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTMyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEF0aGVyb3MgRXRoZXJuZXQgS2NvbmZpZyoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBBdGhlcm9zIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLCBzbyBteSBmb2N1cyBpcyBub3cgb24gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyMC4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBLY29uZmlnIHN0cnVjdHVyZSBpcyBpbXBsZW1lbnRlZCB0byBzZWUgd2hhdCBvcHRpb25zIGFyZSBiZWluZyBtYWRlIGF2YWlsYWJsZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGRlcGVuZGVuY2llcywgZGVmYXVsdCBzZXR0aW5ncywgYW5kIG1heWJlIHNvbWUgaGVscCB0ZXh0IHRoYXQgd2lsbCBpbGx1bWluYXRlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIEhvcGVmdWxseSwgdGhlIGZpbGUgaXMgd2VsbC1jb21tZW50ZWQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgdmFyaW91cyBBdGhlcm9zIEV0aGVybmV0IGNoaXBzZXRzLCB3aGF0IGZlYXR1cmVzIGFyZSBjb25maWd1cmFibGUgKGxpa2UgVkxBTiBzdXBwb3J0LCBqdW1ibyBmcmFtZXMsIHBvd2VyIG1hbmFnZW1lbnQsIGV0Yy4pLCBhbmQgaG93IGFsbCBvZiB0aGlzIGlzIHN0cnVjdHVyZWQgd2l0aGluIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3RhY2suIFRoZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2Ygd2hhdCBzZXR0aW5ncyBJIGNhbiB0d2VhayBhbmQgd2hhdCB0aGVpciBpbXBsaWNhdGlvbnMgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDIzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxODpcdGlmIE5FVF9WRU5ET1JfQVRIRVJPU1xuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBBRzcxWFhcbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgQVI3WFhYL0FSOVhYWCBidWlsdC1pbiBldGhlcm5ldCBtYWMgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBBVEg3OSB8fCBDT01QSUxFX1RFU1RcbiAgMjM6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDI0Olx0XHRpbXBseSBORVRfU0VMRlRFU1RTXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIElmIHlvdSB3aXNoIHRvIGNvbXBpbGUgYSBrZXJuZWwgZm9yIEFSN1hYWC85MVhYWCBhbmQgZW5hYmxlXG4gIDI3Olx0XHQgIGV0aGVybmV0IHN1cHBvcnQsIHRoZW4geW91IHNob3VsZCBhbHdheXMgYW5zd2VyIFkgdG8gdGhpcy5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgQVRMMlxuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBMMiBGYXN0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdGRlcGVuZHMgb24gUENJXG4gIDMyOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMzM6XHRcdHNlbGVjdCBNSUlcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEF0aGVyb3MgTDIgZmFzdCBldGhlcm5ldCBhZGFwdGVyLlxuICAzNjpcdFxuICAzNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgVGhlIG1vZHVsZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDIzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwODkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGFnNzF4eGAgRHJpdmVyOiBBIFRob3VnaHQgUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgYWc3MXh4YCBkcml2ZXIsIGFuZCBpbW1lZGlhdGVseSBteSBtaW5kIGdvZXMgdG8gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uOiBpcyBpdCBgQVRINzlgIG9yIGBDT01QSUxFX1RFU1RgPyBUaGF0IHdpbGwgZGljdGF0ZSBhIGxvdC4gQ2FuIEkgZXZlbiBmdXp6IHRoaXMgdGhpbmcgaW4gUUVNVT8gSSYjMzk7bSBwcmV0dHkgc3VyZSBgQVRINzlgIGlzIE1JUFMsIGFuZCB3aGlsZSBRRU1VICpkb2VzKiBzdXBwb3J0IE1JUFMsIHN5emthbGxlciBwcmltYXJpbHkgZm9jdXNlcyBvbiB4ODZfNjQgb3IgYXJtNjQuIEV2ZW4gaWYgSSBjYW4gZ2V0IGl0IHRvIGNvbXBpbGUgb24geDg2XzY0IHdpdGggYENPTVBJTEVfVEVTVGAsIGl0JiMzOTtzIGEgKnBsYXRmb3JtKiBkcml2ZXIuIFBsYXRmb3JtIGRyaXZlcnMgYXJlIGEgaGVhZGFjaGUuCgpQbGF0Zm9ybSBkcml2ZXJzIG1lYW4gSSBuZWVkIGEgcGxhdGZvcm0gZGV2aWNlIHJlZ2lzdGVyZWQsIHVzdWFsbHkgdGhyb3VnaCBEZXZpY2UgVHJlZSBvciBzb21lIGN1c3RvbSBib2FyZCBjb2RlLiBEb2VzIHN5emthbGxlciBoYXZlIGEgd2F5IHRvIGhhbmRsZSB0aGlzIGF1dG9tYXRpY2FsbHk/IEkga25vdyBpdCAqY2FuKiBpbnN0YW50aWF0ZSBjZXJ0YWluIHBsYXRmb3JtIGRldmljZXMgdXNpbmcgdGhpbmdzIGxpa2UgYHN5el9kZXZfY3JlYXRlYCwgYnV0IHRoYXQmIzM5O3MgdHlwaWNhbGx5IGZvciBwc2V1ZG8tZGV2aWNlcyBvciBvbmVzIHRoYXQgYXJlIGV4cGxpY2l0bHkgc3VwcG9ydGVkLiBOb3QgYSByYW5kb20gU29DIGRyaXZlciwgZ2VuZXJhbGx5LiBXYWl0LCBJIHRha2UgdGhhdCBiYWNrOyBpdCAqY2FuKiBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcyBpZiBpdCBrbm93cyBob3csIGJ1dCB1c3VhbGx5IGl0IGRvZXNuJiMzOTt0IHVubGVzcyB0aGVyZSYjMzk7cyBhIGZ1enplciBzcGVjaWZpY2FsbHkgZm9yIGl0LgoKVGhlbiBJIHJlbWVtYmVyIHRob3NlIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlfaWRgIGV0Yy4gY2FsbHMgaW4gc3l6a2FsbGVyLiBNYXliZSB0aGVyZSYjMzk7cyBhIHdheS4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyBgYWc3MXh4YCAqcmVhY2hhYmxlKj8gQmVjYXVzZSwgbGV0JiMzOTtzIGJlIGhvbmVzdCwgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycywgZXNwZWNpYWxseSBmb3IgTUlQUyBTb0NzLCBhcmUgcmFyZWx5IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB4ODZfNjQgVk1zLiBUaGUgcGxhdGZvcm0gZGV2aWNlIGlzIGp1c3QgbmV2ZXIgcmVnaXN0ZXJlZC4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkga2VybmVsIHJlZmVyZW5jZXMgdG8gYGFnNzF4eGAgdGhhdCB3b3VsZCByZWdpc3RlciBpdCBvbiB4ODYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMjM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZzcxeHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMjM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgyMgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBTb3VyY2UgTmF2aWdhdGlvbiAtIFdoZXJlJiMzOTtzIHRoZSBDb2RlPyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGZvciBzb21ldGhpbmcgc3BlY2lmaWMuIE5vIGhpdHMgaW4gYGFyY2gvYCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIHRhc2sgYXQgaGFuZC4gVGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGEgYml0LCBkb2VzbiYjMzk7dCBpdD8gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byBgZHJpdmVycy9gLiBJdCYjMzk7cyBhIHZhc3QgZGlyZWN0b3J5LCBidXQgdHlwaWNhbGx5IHdoZXJlIEkgZmluZCB0aGUgYnVsayBvZiB0aGUgZGV2aWNlIGRyaXZlcnMgYW5kIGhhcmR3YXJlLXNwZWNpZmljIGludGVyYWN0aW9uIGNvZGUuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyB0aGVyZSBhbmQgc2VlIGlmIEkgY2FuIHVuZWFydGggd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIHdpdGhpbiB0aGF0IHN0cnVjdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRyZWFzdXJlIEkgY2FuIHVuY292ZXIgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDIzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FnNzF4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5OTUgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQUc3MVhYKSAmIzQzOz0gYWc3MXh4Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfQVRMMSkgJiM0Mzs9IGF0bHgvXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjIzMzpzdHJ1Y3QgYWc3MXh4X3N0YXRpc3RpYyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTIzNC1cdHVuc2lnbmVkIHNob3J0IG9mZnNldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTIzOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MjM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYWc3MXh4X3N0YXRpc3RpYyBhZzcxeHhfc3RhdGlzdGljc1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yNDAtXHR7IDB4MDA4MCwgR0VOTUFTSygxNywgMCksIFwmIzM0O1R4L1J4IDY0IEJ5dGVcJiMzNDssIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yODgtI2RlZmluZSBERVNDX1BLVExFTl9NXHRcdDB4ZmZmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjI4OTpzdHJ1Y3QgYWc3MXh4X2Rlc2Mge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yOTAtXHR1MzIgZGF0YTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTI5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Mjk2OiNkZWZpbmUgQUc3MVhYX0RFU0NfU0laRVx0cm91bmR1cChzaXplb2Yoc3RydWN0IGFnNzF4eF9kZXNjKSwgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjk3LVx0XHRcdFx0XHRMMV9DQUNIRV9CWVRFUylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoyOTk6c3RydWN0IGFnNzF4eF9idWYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMDAtXHR1bmlvbiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjMxMjpzdHJ1Y3QgYWc3MXh4X3Jpbmcge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMTMtXHQvKiBcJiMzNDtIb3RcJiMzNDsgZmllbGRzIGluIHRoZSBkYXRhIHBhdGguICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMTctXHQvKiBcJiMzNDtDb2xkXCYjMzQ7IGZpZWxkcyAtIG5vdCB1c2VkIGluIHRoZSBkYXRhIHBhdGguICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjMxODpcdHN0cnVjdCBhZzcxeHhfYnVmICpidWY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMxOS1cdHUxNiBvcmRlcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MzI1OmVudW0gYWc3MXh4X3R5cGUge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMjYtXHRBUjcxMDAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjMzNTpzdHJ1Y3QgYWc3MXh4X2RjZmcge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMzYtXHR1MzIgbWF4X2ZyYW1lX2xlbjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMzOS1cdGJvb2wgdHhfaGFuZ193b3JrYXJvdW5kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNDA6XHRlbnVtIGFnNzF4eF90eXBlIHR5cGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM0MS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjM0MzpzdHJ1Y3QgYWc3MXh4IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzQ0LVx0LyogQ3JpdGljYWwgZGF0YSByZWxhdGVkIHRvIHRoZSBwZXItcGFja2V0IGRhdGEgcGF0aCBhcmUgY2x1c3RlcmVkXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNDYtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MzQ3Olx0c3RydWN0IGFnNzF4eF9yaW5nIHJ4X3JpbmcgX19fX2NhY2hlbGluZV9hbGlnbmVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNDg6XHRzdHJ1Y3QgYWc3MXh4X3JpbmcgdHhfcmluZyBfX19fY2FjaGVsaW5lX2FsaWduZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM1Ni1cdHUzMiBtc2dfZW5hYmxlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNTc6XHRjb25zdCBzdHJ1Y3QgYWc3MXh4X2RjZmcgKmRjZmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM1OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MzYyOlx0c3RydWN0IGFnNzF4eF9kZXNjICpzdG9wX2Rlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM2My1cdGRtYV9hZGRyX3Qgc3RvcF9kZXNjX2RtYTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MzgwOnN0YXRpYyBpbnQgYWc3MXh4X2Rlc2NfZW1wdHkoc3RydWN0IGFnNzF4eF9kZXNjICpkZXNjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zODEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozODU6c3RhdGljIHN0cnVjdCBhZzcxeHhfZGVzYyAqYWc3MXh4X3JpbmdfZGVzYyhzdHJ1Y3QgYWc3MXh4X3JpbmcgKnJpbmcsIGludCBpZHgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM4Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjM4NzpcdHJldHVybiAoc3RydWN0IGFnNzF4eF9kZXNjICopXHUwMDI2cmluZy1cdTAwM2VkZXNjc19jcHVbaWR4ICogQUc3MVhYX0RFU0NfU0laRV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM4OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MzkwOnN0YXRpYyBpbnQgYWc3MXh4X3Jpbmdfc2l6ZV9vcmRlcihpbnQgc2l6ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzkxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Mzk1OnN0YXRpYyBib29sIGFnNzF4eF9pcyhzdHJ1Y3QgYWc3MXh4ICphZywgZW51bSBhZzcxeHhfdHlwZSB0eXBlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zOTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0MDQ6c3RhdGljIHZvaWQgYWc3MXh4X3dyKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgdmFsdWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQwNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00MDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQwOTpzdGF0aWMgdTMyIGFnNzF4eF9ycihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDEwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDE0OnN0YXRpYyB2b2lkIGFnNzF4eF9zYihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZywgdTMyIG1hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQxNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQyMTpzdGF0aWMgdm9pZCBhZzcxeHhfY2Ioc3RydWN0IGFnNzF4eCAqYWcsIHVuc2lnbmVkIGludCByZWcsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00MjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0Mjg6c3RhdGljIHZvaWQgYWc3MXh4X2ludF9lbmFibGUoc3RydWN0IGFnNzF4eCAqYWcsIHUzMiBpbnRzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00Mjkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0MzA6XHRhZzcxeHhfc2IoYWcsIEFHNzFYWF9SRUdfSU5UX0VOQUJMRSwgaW50cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQzMS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDMzOnN0YXRpYyB2b2lkIGFnNzF4eF9pbnRfZGlzYWJsZShzdHJ1Y3QgYWc3MXh4ICphZywgdTMyIGludHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQzNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQzNTpcdGFnNzF4eF9jYihhZywgQUc3MVhYX1JFR19JTlRfRU5BQkxFLCBpbnRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDM2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0Mzg6c3RhdGljIGludCBhZzcxeHhfZG9faW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00Mzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NDA6XHRzdHJ1Y3QgYWc3MXh4ICphZyA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQ0NTpzdGF0aWMgdm9pZCBhZzcxeHhfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ0Ni1cdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqaW5mbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDQ4Olx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NTA6XHRzdHJzY3B5KGluZm8tXHUwMDNlZHJpdmVyLCBcJiMzNDthZzcxeHhcJiMzNDssIHNpemVvZihpbmZvLVx1MDAzZWRyaXZlcikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NTEtXHRzdHJzY3B5KGluZm8tXHUwMDNlYnVzX2luZm8sIG9mX25vZGVfZnVsbF9uYW1lKGFnLVx1MDAzZXBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NTU6c3RhdGljIGludCBhZzcxeHhfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NTYtXHRcdFx0XHQgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3NldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDU3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDU4Olx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NjM6c3RhdGljIGludCBhZzcxeHhfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NjQtXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3NldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDY1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDY2Olx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDY3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NzE6c3RhdGljIGludCBhZzcxeHhfZXRodG9vbF9ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NzIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NzM6XHRzdHJ1Y3QgYWc3MXh4ICphZyA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQ3ODpzdGF0aWMgdm9pZCBhZzcxeHhfZXRodG9vbF9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDc5LVx0XHRcdFx0XHQgIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKnBhdXNlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00ODAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0ODE6XHRzdHJ1Y3QgYWc3MXh4ICphZyA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00ODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00ODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQ4NjpzdGF0aWMgaW50IGFnNzF4eF9ldGh0b29sX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00ODctXHRcdFx0XHRcdCBzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtICpwYXVzZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDg4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDg5Olx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDkwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0OTQ6c3RhdGljIHZvaWQgYWc3MXh4X2V0aHRvb2xfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIHNzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ5NS1cdFx0XHRcdCAgICAgICB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUwMC1cdGNhc2UgRVRIX1NTX1NUQVRTOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1MDE6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoYWc3MXh4X3N0YXRpc3RpY3MpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTAyOlx0XHRcdGV0aHRvb2xfcHV0cyhcdTAwMjZkYXRhLCBhZzcxeHhfc3RhdGlzdGljc1tpXS5uYW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTAzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTEwOnN0YXRpYyB2b2lkIGFnNzF4eF9ldGh0b29sX2dldF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTExLVx0XHRcdFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsIHU2NCAqZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTEyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTEzOlx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTE0LVx0aW50IGk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTE2Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShhZzcxeHhfc3RhdGlzdGljcyk7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1MTc6XHRcdCpkYXRhJiM0MzsmIzQzOyA9IGFnNzF4eF9ycihhZywgYWc3MXh4X3N0YXRpc3RpY3NbaV0ub2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1MTg6XHRcdFx0XHRcdTAwMjYgYWc3MXh4X3N0YXRpc3RpY3NbaV0ubWFzaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTE5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1MjE6c3RhdGljIGludCBhZzcxeHhfZXRodG9vbF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgaW50IHNzZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUyMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01MjQtXHRjYXNlIEVUSF9TU19TVEFUUzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTI1Olx0XHRyZXR1cm4gQVJSQVlfU0laRShhZzcxeHhfc3RhdGlzdGljcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUyNi1cdGNhc2UgRVRIX1NTX1RFU1Q6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUzMzpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFnNzF4eF9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTM0Olx0LmdldF9kcnZpbmZvXHRcdFx0PSBhZzcxeHhfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUzNS1cdC5nZXRfbGlua1x0XHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTM2LVx0LmdldF90c19pbmZvXHRcdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1Mzc6XHQuZ2V0X2xpbmtfa3NldHRpbmdzXHRcdD0gYWc3MXh4X2dldF9saW5rX2tzZXR0aW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTM4Olx0LnNldF9saW5rX2tzZXR0aW5nc1x0XHQ9IGFnNzF4eF9zZXRfbGlua19rc2V0dGluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUzOTpcdC5ud2F5X3Jlc2V0XHRcdFx0PSBhZzcxeHhfZXRodG9vbF9ud2F5X3Jlc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDA6XHQuZ2V0X3BhdXNlcGFyYW1cdFx0XHQ9IGFnNzF4eF9ldGh0b29sX2dldF9wYXVzZXBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDE6XHQuc2V0X3BhdXNlcGFyYW1cdFx0XHQ9IGFnNzF4eF9ldGh0b29sX3NldF9wYXVzZXBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDI6XHQuZ2V0X3N0cmluZ3NcdFx0XHQ9IGFnNzF4eF9ldGh0b29sX2dldF9zdHJpbmdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDM6XHQuZ2V0X2V0aHRvb2xfc3RhdHNcdFx0PSBhZzcxeHhfZXRodG9vbF9nZXRfc3RhdHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU0NDpcdC5nZXRfc3NldF9jb3VudFx0XHRcdD0gYWc3MXh4X2V0aHRvb2xfZ2V0X3NzZXRfY291bnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU0NS1cdC5zZWxmX3Rlc3RcdFx0XHQ9IG5ldF9zZWxmdGVzdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTQ4OnN0YXRpYyBpbnQgYWc3MXh4X21kaW9fd2FpdF9idXN5KHN0cnVjdCBhZzcxeHggKmFnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NDkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NTg6XHRcdGJ1c3kgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfTUlJX0lORCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU1OS1cdFx0aWYgKCFidXN5KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NzA6c3RhdGljIGludCBhZzcxeHhfbWRpb19taWlfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTcxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTcyOlx0c3RydWN0IGFnNzF4eCAqYWcgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTczLVx0aW50IGVyciwgdmFsO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU3NTpcdGVyciA9IGFnNzF4eF9tZGlvX3dhaXRfYnVzeShhZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU3Ni1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU3OTpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NSUlfQUREUixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTgwLVx0XHQgICgoYWRkciBcdTAwMjYgMHgxZikgXHUwMDNjXHUwMDNjIE1JSV9BRERSX1NISUZUKSB8IChyZWcgXHUwMDI2IDB4ZmYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTgxLVx0LyogZW5hYmxlIHJlYWQgbW9kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1ODI6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUlJX0NNRCwgTUlJX0NNRF9SRUFEKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1ODQ6XHRlcnIgPSBhZzcxeHhfbWRpb193YWl0X2J1c3koYWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01ODUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1ODg6XHR2YWwgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfTUlJX1NUQVRVUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU4OS1cdC8qIGRpc2FibGUgcmVhZCBtb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU5MDpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NSUlfQ01ELCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTkxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1OTg6c3RhdGljIGludCBhZzcxeHhfbWRpb19taWlfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU5OS1cdFx0XHRcdCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo2MDE6XHRzdHJ1Y3QgYWc3MXh4ICphZyA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjYwNjpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NSUlfQUREUixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjA3LVx0XHQgICgoYWRkciBcdTAwMjYgMHgxZikgXHUwMDNjXHUwMDNjIE1JSV9BRERSX1NISUZUKSB8IChyZWcgXHUwMDI2IDB4ZmYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjA4Olx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01JSV9DVFJMLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjYxMDpcdHJldHVybiBhZzcxeHhfbWRpb193YWl0X2J1c3koYWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MTEtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9NjIxPXN0YXRpYyBjb25zdCB1MzIgYXI5MzN4X21kaW9fZGl2X3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjYyNTpzdGF0aWMgaW50IGFnNzF4eF9tZGlvX2dldF9kaXZpZGVyKHN0cnVjdCBhZzcxeHggKmFnLCB1MzIgKmRpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjI2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTYzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjM1Olx0aWYgKGFnNzF4eF9pcyhhZywgQVI5MzMwKSB8fCBhZzcxeHhfaXMoYWcsIEFSOTM0MCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjM2LVx0XHR0YWJsZSA9IGFyOTMzeF9tZGlvX2Rpdl90YWJsZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjM3LVx0XHRuZGl2cyA9IEFSUkFZX1NJWkUoYXI5MzN4X21kaW9fZGl2X3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjM4Olx0fSBlbHNlIGlmIChhZzcxeHhfaXMoYWcsIEFSNzI0MCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjM5LVx0XHR0YWJsZSA9IGFyNzI0MF9tZGlvX2Rpdl90YWJsZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTY1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjU5OnN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcmVzZXQoc3RydWN0IG1paV9idXMgKmJ1cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjYwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjYxOlx0c3RydWN0IGFnNzF4eCAqYWcgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjYyLVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTY2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjY1Olx0ZXJyID0gYWc3MXh4X21kaW9fZ2V0X2RpdmlkZXIoYWcsIFx1MDAyNnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NjYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo2Njk6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUlJX0NGRywgdCB8IE1JSV9DRkdfUkVTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NzAtXHR1c2xlZXBfcmFuZ2UoMTAwLCAyMDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjY3MjpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NSUlfQ0ZHLCB0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjczLVx0dXNsZWVwX3JhbmdlKDEwMCwgMjAwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTY3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Njc4OnN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcHJvYmUoc3RydWN0IGFnNzF4eCAqYWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTY3OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjcwNTpcdG1paV9idXMtXHUwMDNlbmFtZSA9IFwmIzM0O2FnNzF4eF9tZGlvXCYjMzQ7O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3MDY6XHRtaWlfYnVzLVx1MDAzZXJlYWQgPSBhZzcxeHhfbWRpb19taWlfcmVhZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzA3Olx0bWlpX2J1cy1cdTAwM2V3cml0ZSA9IGFnNzF4eF9tZGlvX21paV93cml0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzA4Olx0bWlpX2J1cy1cdTAwM2VyZXNldCA9IGFnNzF4eF9tZGlvX3Jlc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MDktXHRtaWlfYnVzLVx1MDAzZXByaXYgPSBhZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzI3OnN0YXRpYyB2b2lkIGFnNzF4eF9od19zdG9wKHN0cnVjdCBhZzcxeHggKmFnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03Mjgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjktXHQvKiBkaXNhYmxlIGFsbCBpbnRlcnJ1cHRzIGFuZCBzdG9wIHRoZSByeC90eCBlbmdpbmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzMwOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX0lOVF9FTkFCTEUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3MzE6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfUlhfQ1RSTCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjczMjpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19UWF9DVFJMLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzMzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3MzU6c3RhdGljIGJvb2wgYWc3MXh4X2NoZWNrX2RtYV9zdHVjayhzdHJ1Y3QgYWc3MXh4ICphZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzM2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzQ3Olx0cnhfc20gPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfUlhfU00pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NDgtXHRpZiAoKHJ4X3NtIFx1MDAyNiAweDcpID09IDB4MyBcdTAwMjZcdTAwMjYgKChyeF9zbSBcdTAwM2VcdTAwM2UgNCkgXHUwMDI2IDB4NykgPT0gMHg2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3NTE6XHR0eF9zbSA9IGFnNzF4eF9ycihhZywgQUc3MVhYX1JFR19UWF9TTSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjc1MjpcdHJ4X2ZkID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fREVQVEgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NTMtXHRpZiAoKCh0eF9zbSBcdTAwM2VcdTAwM2UgNCkgXHUwMDI2IDB4NykgPT0gMCBcdTAwMjZcdTAwMjYgKChyeF9zbSBcdTAwMjYgMHg3KSA9PSAwKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzYwOnN0YXRpYyBpbnQgYWc3MXh4X3R4X3BhY2tldHMoc3RydWN0IGFnNzF4eCAqYWcsIGJvb2wgZmx1c2gsIGludCBidWRnZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc2MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjc2MjpcdHN0cnVjdCBhZzcxeHhfcmluZyAqcmluZyA9IFx1MDAyNmFnLVx1MDAzZXR4X3Jpbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc2My1cdGludCBzZW50ID0gMCwgYnl0ZXNfY29tcGwgPSAwLCBuID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc3My1cdHdoaWxlIChyaW5nLVx1MDAzZWRpcnR5ICYjNDM7IG4gIT0gcmluZy1cdTAwM2VjdXJyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjc3NDpcdFx0c3RydWN0IGFnNzF4eF9kZXNjICpkZXNjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NzUtXHRcdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NzgtXHRcdGkgPSAocmluZy1cdTAwM2VkaXJ0eSAmIzQzOyBuKSBcdTAwMjYgcmluZ19tYXNrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Nzk6XHRcdGRlc2MgPSBhZzcxeHhfcmluZ19kZXNjKHJpbmcsIGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03ODAtXHRcdHNrYiA9IHJpbmctXHUwMDNlYnVmW2ldLnR4LnNrYjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3ODI6XHRcdGlmICghZmx1c2ggXHUwMDI2XHUwMDI2ICFhZzcxeHhfZGVzY19lbXB0eShkZXNjKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03ODMtXHRcdFx0aWYgKGFnLVx1MDAzZWRjZmctXHUwMDNldHhfaGFuZ193b3JrYXJvdW5kIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3ODQ6XHRcdFx0ICAgIGFnNzF4eF9jaGVja19kbWFfc3R1Y2soYWcpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc4NS1cdFx0XHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZhZy1cdTAwM2VyZXN0YXJ0X3dvcmssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04MDctXHRcdHdoaWxlIChuIFx1MDAzZSAwKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjgwODpcdFx0XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfVFhfU1RBVFVTLCBUWF9TVEFUVVNfUFMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04MDktXHRcdFx0bi0tO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4MzE6c3RhdGljIHZvaWQgYWc3MXh4X2RtYV93YWl0X3N0b3Aoc3RydWN0IGFnNzF4eCAqYWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTgzMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04NDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg0MTpcdFx0cnggPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfUlhfQ1RSTCkgXHUwMDI2IFJYX0NUUkxfUlhFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4NDI6XHRcdHR4ID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX1RYX0NUUkwpIFx1MDAyNiBUWF9DVFJMX1RYRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODQzLVx0XHRpZiAoIXJ4IFx1MDAyNlx1MDAyNiAhdHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg1MDpzdGF0aWMgdm9pZCBhZzcxeHhfZG1hX3Jlc2V0KHN0cnVjdCBhZzcxeHggKmFnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04NTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODU2LVx0Lyogc3RvcCBSWCBhbmQgVFggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODU3Olx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1JYX0NUUkwsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4NTg6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfVFhfQ1RSTCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg1OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg2Mi1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4NjM6XHRhZzcxeHhfZG1hX3dhaXRfc3RvcChhZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODY1LVx0LyogY2xlYXIgZGVzY3JpcHRvciBhZGRyZXNzZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODY2Olx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1RYX0RFU0MsIGFnLVx1MDAzZXN0b3BfZGVzY19kbWEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4Njc6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfUlhfREVTQywgYWctXHUwMDNlc3RvcF9kZXNjX2RtYSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg2OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3MC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDI1NjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODcxOlx0XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfUlhfU1RBVFVTLCBSWF9TVEFUVVNfUFIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4NzI6XHRcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19UWF9TVEFUVVMsIFRYX1NUQVRVU19QUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3My1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3NS1cdC8qIGNsZWFyIHBlbmRpbmcgZXJyb3JzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg3NjpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19SWF9TVEFUVVMsIFJYX1NUQVRVU19CRSB8IFJYX1NUQVRVU19PRik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg3NzpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19UWF9TVEFUVVMsIFRYX1NUQVRVU19CRSB8IFRYX1NUQVRVU19VUik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODc5Olx0dmFsID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX1JYX1NUQVRVUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg4MC1cdGlmICh2YWwpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg4NDpcdHZhbCA9IGFnNzF4eF9ycihhZywgQUc3MVhYX1JFR19UWF9TVEFUVVMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04ODUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg5NDpzdGF0aWMgdm9pZCBhZzcxeHhfaHdfc2V0dXAoc3RydWN0IGFnNzF4eCAqYWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg5NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04OTgtXHQvKiBzZXR1cCBNQUMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODk5Olx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcxLCBpbml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTAwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MDE6XHRhZzcxeHhfc2IoYWcsIEFHNzFYWF9SRUdfTUFDX0NGRzIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkwMi1cdFx0ICBNQUNfQ0ZHMl9QQURfQ1JDX0VOIHwgTUFDX0NGRzJfTEVOX0NIRUNLKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkwNC1cdC8qIHNldHVwIG1heCBmcmFtZSBsZW5ndGggdG8gemVybyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MDU6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUFDX01GTCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTA3LVx0Lyogc2V0dXAgRklGTyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MDg6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfRklGT19DRkcwLCBGSUZPX0NGRzBfSU5JVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkwOTpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19GSUZPX0NGRzEsIGFnLVx1MDAzZWZpZm9kYXRhWzBdKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTEwOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fQ0ZHMiwgYWctXHUwMDNlZmlmb2RhdGFbMV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MTE6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfRklGT19DRkc0LCBGSUZPX0NGRzRfSU5JVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkxMjpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19GSUZPX0NGRzUsIEZJRk9fQ0ZHNV9JTklUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTEzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MTU6c3RhdGljIHVuc2lnbmVkIGludCBhZzcxeHhfbWF4X2ZyYW1lX2xlbih1bnNpZ25lZCBpbnQgbXR1KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MjA6c3RhdGljIHZvaWQgYWc3MXh4X2h3X3NldF9tYWNhZGRyKHN0cnVjdCBhZzcxeHggKmFnLCBjb25zdCB1bnNpZ25lZCBjaGFyICptYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkyMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkyNzpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NQUNfQUREUjEsIHQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkyOS1cdHQgPSAoKCh1MzIpbWFjWzFdKSBcdTAwM2NcdTAwM2MgMjQpIHwgKCgodTMyKW1hY1swXSkgXHUwMDNjXHUwMDNjIDE2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTMwOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19BRERSMiwgdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkzMS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTMzOnN0YXRpYyB2b2lkIGFnNzF4eF9mYXN0X3Jlc2V0KHN0cnVjdCBhZzcxeHggKmFnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5Mzk6XHRhZzcxeHhfaHdfc3RvcChhZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTQxOlx0bWlpX3JlZyA9IGFnNzF4eF9ycihhZywgQUc3MVhYX1JFR19NSUlfQ0ZHKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTQyOlx0cnhfZHMgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfUlhfREVTQyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTQ0Olx0YWc3MXh4X3R4X3BhY2tldHMoYWcsIHRydWUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk1MTpcdGFnNzF4eF9kbWFfcmVzZXQoYWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NTI6XHRhZzcxeHhfaHdfc2V0dXAoYWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NTMtXHRhZy1cdTAwM2V0eF9yaW5nLmN1cnIgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTU3LVx0Lyogc2V0dXAgbWF4IGZyYW1lIGxlbmd0aCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NTg6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUFDX01GTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTU5Olx0XHQgIGFnNzF4eF9tYXhfZnJhbWVfbGVuKGFnLVx1MDAzZW5kZXYtXHUwMDNlbXR1KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTYxOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1JYX0RFU0MsIHJ4X2RzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTYyOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1RYX0RFU0MsIGFnLVx1MDAzZXR4X3JpbmcuZGVzY3NfZG1hKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTYzOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01JSV9DRkcsIG1paV9yZWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk2NTpcdGFnNzF4eF9od19zZXRfbWFjYWRkcihhZywgZGV2LVx1MDAzZWRldl9hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTY2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5Njg6c3RhdGljIHZvaWQgYWc3MXh4X2h3X3N0YXJ0KHN0cnVjdCBhZzcxeHggKmFnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05Njkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NzAtXHQvKiBzdGFydCBSWCBlbmdpbmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTcxOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1JYX0NUUkwsIFJYX0NUUkxfUlhFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NzMtXHQvKiBlbmFibGUgaW50ZXJydXB0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NzQ6XHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfSU5UX0VOQUJMRSwgQUc3MVhYX0lOVF9JTklUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTc1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5Nzk6c3RhdGljIHZvaWQgYWc3MXh4X21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05ODAtXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk4MjpcdHN0cnVjdCBhZzcxeHggKmFnID0gbmV0ZGV2X3ByaXYodG9fbmV0X2Rldihjb25maWctXHUwMDNlZGV2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTg3Olx0aWYgKCFhZzcxeHhfaXMoYWcsIEFSNzEwMCkgXHUwMDI2XHUwMDI2ICFhZzcxeHhfaXMoYWcsIEFSOTEzMCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk4ODpcdFx0YWc3MXh4X2Zhc3RfcmVzZXQoYWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05ODktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk5NTpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19GSUZPX0NGRzMsIGFnLVx1MDAzZWZpZm9kYXRhWzJdKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTk2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5OTg6c3RhdGljIHZvaWQgYWc3MXh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk5OS1cdFx0XHRcdCB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAwMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwMDE6XHRzdHJ1Y3QgYWc3MXh4ICphZyA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoY29uZmlnLVx1MDAzZWRldikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDAzOlx0YWc3MXh4X2h3X3N0b3AoYWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDA0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTAwNjpzdGF0aWMgdm9pZCBhZzcxeHhfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMDctXHRcdFx0ICAgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDExLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTAxMjpcdHN0cnVjdCBhZzcxeHggKmFnID0gbmV0ZGV2X3ByaXYodG9fbmV0X2Rldihjb25maWctXHUwMDNlZGV2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMTMtXHR1MzIgY2ZnMSwgY2ZnMjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwMTc6XHRjZmcyID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAxOC1cdGNmZzIgXHUwMDI2PSB+KE1BQ19DRkcyX0lGXzEwMDAgfCBNQUNfQ0ZHMl9JRl8xMF8xMDAgfCBNQUNfQ0ZHMl9GRFgpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTAyMTpcdGlmY3RsID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX01BQ19JRkNUTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMjItXHRpZmN0bCBcdTAwMjY9IH4oTUFDX0lGQ1RMX1NQRUVEKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTAyNDpcdGZpZm81ID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fQ0ZHNSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMjUtXHRmaWZvNSBcdTAwMjY9IH5GSUZPX0NGRzVfQk07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDQzOlx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcyLCBjZmcyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA0NDpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19GSUZPX0NGRzUsIGZpZm81KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA0NTpcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NQUNfSUZDVEwsIGlmY3RsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTA0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA0NzpcdGNmZzEgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfTUFDX0NGRzEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDQ4LVx0Y2ZnMSBcdTAwMjY9IH4oTUFDX0NGRzFfVEZDIHwgTUFDX0NGRzFfUkZDKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwNTMtXHRcdGNmZzEgfD0gTUFDX0NGRzFfUkZDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDU0Olx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcxLCBjZmcxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTA1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA1NjpcdGFnNzF4eF9od19zdGFydChhZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwNTctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDU5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGFnNzF4eF9waHlsaW5rX21hY19vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwNjA6XHQubWFjX2NvbmZpZyA9IGFnNzF4eF9tYWNfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDYxOlx0Lm1hY19saW5rX2Rvd24gPSBhZzcxeHhfbWFjX2xpbmtfZG93bixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA2MjpcdC5tYWNfbGlua191cCA9IGFnNzF4eF9tYWNfbGlua191cCxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQwNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDc2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBhZzcxeHggUGxhdGZvcm0gRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBhZzcxeHhfZHJpdmVyYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkOyBpdCYjMzk7cyBhIHN0YW5kYXJkIHBsYXRmb3JtIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcz8gVGhlIGltbWVkaWF0ZSBhbnN3ZXIgaXMgdXN1YWxseSBubywgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHR5cGljYWxseSBqdXN0IGNvbmp1cmUgdXAgcGxhdGZvcm0gZGV2aWNlcyB2aWEgZGV2aWNlIHRyZWUgb3ZlcmxheXMgd2l0aG91dCBzb21lIHNwZWNpZmljIHNldHVwLgoKTXkgYnJhaW4ganVtcHMgdG8gd2hldGhlciB0aGVyZSBpcyBzb21lIGBzeXpfZGV2X2NyZWF0ZWAgZXF1aXZhbGVudCwgYnV0IG5vdGhpbmcgY29tZXMgdG8gbWluZCwganVzdCB0aGUgbW9yZSBzcGVjaWZpYyBzeXprYWxsZXIgY2FsbHMgZm9yIFVTQiwgODAyLjExLCBldGMuIFBsYXRmb3JtIGRyaXZlcnMgbmVlZCB0byBiZSAqaW5zdGFudGlhdGVkKiB0byBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyLiBJZiBpdOKAmXMgYSBwc2V1ZG8tZGV2aWNlIG9yIHdlIGhhdmUgYSBzcGVjaWZpYyB3YXkgdG8gbG9hZCBEVCBvdmVybGF5cywgdGhlbiBpdCB3b24mIzM5O3QgYmUgcHJvYmVkLgoKQnV0IHdhaXQsIHRoZSBwcm9tcHQgcmVtaW5kcyBtZSBhYm91dCBjb2RlIHRoYXTigJlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBkcml2ZXIgaXMgZm9yIGFuIG9uLWNoaXAgRXRoZXJuZXQgTUFDIG9uIEF0aGVyb3MgTUlQUyBTb0NzLiBJdCYjMzk7cyBkaXJlY3RseSBoaXR0aW5nIE1NSU8gcmVnaXN0ZXJzLCBkb2luZyBgaW93cml0ZTMyYCBhbmQgc3VjaC4gSWYgd2UgbWFnaWNhbGx5IGluc3RhbnRpYXRlZCB0aGlzLCBpdCB3b3VsZCB0cnkgdG8gdGFsayB0byBwaHlzaWNhbCBtZW1vcnkgYWRkcmVzc2VzIHdoaWNoLCBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIHdvdWxkIGVpdGhlciBjcmFzaCBvciBkbyBub3RoaW5nIGJlY2F1c2UgdGhhdCBoYXJkd2FyZSBpc24mIzM5O3QgdGhlcmUuCgpUaGUgcXVlc3Rpb24gdGhlbiBpcywgZG9lcyBRRU1VIGVtdWxhdGUgdGhlIEFSNzF4eCBTb0M/IEFuZCBkb2VzIHN5emthbGxlciBldmVuICpydW4qIG9uIE1JUFM/IEkga25vdyBzeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgTUlQUy4gQXMgZm9yIFFFTVUsIEkmIzM5O20gcHJldHR5IHN1cmUgaXQgaGFzIGEgYG1hbHRhYCB0YXJnZXQgYW5kIG1heWJlIGEgZmV3IG90aGVyIE1JUFMgYm9hcmRzLCBidXQgSSBkb3VidCBpdCBoYXMgZnVsbC1ibG93biBBUjcxeHggc3VwcG9ydCwgYXQgbGVhc3Qgbm90IGluIGEgZ2VuZXJpYyBtYWNoaW5lIHR5cGUuIE9wZW5XcnQgdXNlcyBRRU1VLCBidXQgZm9yIHNwZWNpZmljIEF0aGVyb3MgYm9hcmRzLgoKU28sIGxldCYjMzk7cyBzZWUgaWYgdGhpcyB0aGluZyBpcyBhY3R1YWxseSByZWFjaGFibGUuIEl04oCZcyBhbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyLCByaWdodD8gU28gdW5sZXNzIHdlJiMzOTtyZSBydW5uaW5nIG9uIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIGl0JiMzOTtzIGdlbmVyYWxseSBhIGRlYWQgZW5kLiBCdXQsIHRoZSBwcm9tcHQgYWxzbyBzYXlzIHRoYXQgaWYgaXQgbW9kaWZpZXMgKnJlYWNoYWJsZSogY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIGl0JiMzOTtzIHBvdGVudGlhbGx5IHdvcnRoIGZ1enppbmcuCgpPa2F5LCBpcyB0aGVyZSBhIHRyaWdnZXI/IEl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBpdCBwcm9iZXMgd2hlbiBhIGRldmljZSB3aXRoIGEgJiMzNDtxY2EsYXI3MTAwLWV0aCYjMzQ7IGNvbXBhdGlibGUgc3RyaW5nIChvciBzaW1pbGFyKSBpcyBwcmVzZW50IGluIHRoZSBkZXZpY2UgdHJlZS4gSWYgd2UmIzM5O3JlIG9uIHg4Nl82NCwgaXQmIzM5O3MgYSBkZWZpbml0ZSBuby1nby4gRXZlbiBpZiB3ZSBjb21waWxlIGl0IHdpdGggQ09NUElMRV9URVNUIG9uIHg4Nl82NCwgdGhlIHBsYXRmb3JtIGRldmljZSB3aWxsIG5vdCBiZSB0aGVyZSwgc28gYGFnNzF4eF9wcm9iZWAgd291bGQgbmV2ZXIgYmUgY2FsbGVkLiBTbywgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQsIHNpbmNlIGl0JiMzOTtzIGhhcmR3YXJlIE1BQy4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgYGFnNzF4eF9tYXRjaGAgdGFibGUgdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZzcxeHhfbWF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTk5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGFnNzF4eF9kY2ZnIGFnNzF4eF9kY2ZnX3FjYTk1NTAgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yMDAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoyMDA0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFnNzF4eF9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yMDA1LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3FjYSxhcjcxMDAtZXRoXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNmFnNzF4eF9kY2ZnX2FyNzEwMCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjAxNi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoyMDE3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGFnNzF4eF9tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTIwMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTIwMTk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWc3MXh4X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTIwMjItXHRcdC5uYW1lXHQ9IFwmIzM0O2FnNzF4eFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MjAyMzpcdFx0Lm9mX21hdGNoX3RhYmxlID0gYWc3MXh4X21hdGNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yMDI0LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAyMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTIzNQoJCQkJCQkJb3V0cHV0OiAxMzUKCQkJCQkJCXRob3VnaHRzOiA0MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5mdXp6YWJsZSBQbGF0Zm9ybSBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBpcyBhIHN0YW5kYXJkIE9wZW4gRmlybXdhcmUgKE9GKSBwbGF0Zm9ybSBkcml2ZXIuIFN0cmFpZ2h0IGF3YXksIEkgY2FuIHRlbGwgaXQmIzM5O3MgdGllZCB0byBhIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGUsIHNvbWV0aGluZyBsaWtlICYjMzQ7cWNhLGFyNzEwMC1ldGgmIzM0OywgYW5kIGl0JiMzOTtzIGFjY2Vzc2luZyBwaHlzaWNhbCBNTUlPIHJlZ2lzdGVycyDigJMgdGhhdCYjMzk7cyBhIGh1Z2UgcmVkIGZsYWcuIEl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBmdXp6YWJsZSBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdW5sZXNzIHlvdSBoYXZlIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLCB3aGljaCBRRU1VICptaWdodCogaGF2ZSwgYnV0IFN5emthbGxlciB0eXBpY2FsbHkgZG9lc24mIzM5O3QgZXZlbiBib290IHRoYXQgc3BlY2lmaWMgbWFjaGluZSB0eXBlIGZvciBnZW5lcmFsIGZ1enppbmcsIHlvdSBrbm93PwoKSG1tLCBJIHdvbmRlciwgd2hhdCBpZiBTeXprYWxsZXIgdHJpZXMgdG8gaW5qZWN0IGEgcGxhdGZvcm0gZGV2aWNlIHVzaW5nIGBzeXpfZGV2X2NyZWF0ZWAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IEV2ZW4gKmlmKiBpdCBjb3VsZCwgdGhpcyBkcml2ZXIgd291bGQgaW1tZWRpYXRlbHkgaGl0IGEgd2FsbC4gSXQgd291bGQgdXNlIGBpb3JlbWFwYCBvbiBzb21lIHJhbmRvbSBwaHlzaWNhbCBhZGRyZXNzIGFuZCB0cnkgdG8gcmVhZCBvciB3cml0ZSBpdC4gSWYgdGhhdCBwaHlzaWNhbCBhZGRyZXNzIGlzbiYjMzk7dCBhY3R1YWxseSBiYWNrZWQgYnkgZW11bGF0ZWQgaGFyZHdhcmUsIGl0JiMzOTtzIGVpdGhlciBnb2luZyB0byByZWFkIGFsbCAweEZGcywgYW5kIGJlIHVzZWxlc3MsIG9yIGl0JiMzOTtsbCBjcmFzaCBpbW1lZGlhdGVseSBhbmQgYmUgdW5hYmxlIHRvIHBlcmZvcm0gYW55IG1lYW5pbmdmdWwgbmV0d29yayBvcGVyYXRpb25zIHRoYXQgcmVxdWlyZSBETUEgb3IgaW50ZXJydXB0cy4KClNvLCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBkcml2ZXIgaXMgbm90IGdvaW5nIHRvIGJlIGZ1enphYmxlLiBMZXQgbWUgZ28gYmFjayB0byB0aGUgcHJvbXB0LCBhbmQgc2VlIGlmIEkgaGF2ZSBhIHRlc3QuCgpBaCwgaGVyZSBpdCBpczogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBOYWlsZWQgaXQuIFRoaXMgcGVyZmVjdGx5IGRlc2NyaWJlcyB0aGUgc2l0dWF0aW9uLiBUaGUgZHJpdmVyIGlzIGZvciB0aGUgQXRoZXJvcyBBUjd4eHgvQVI5eHh4IG9uLWNoaXAgRXRoZXJuZXQgTUFDcy4gVGhhdCBoYXJkd2FyZSBpc24mIzM5O3QgZW11bGF0ZWQgaW4gdGhlIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudHMuCgpJJiMzOTttIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IHNvbGlkOiBUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGFnNzF4eCBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBvbi1jaGlwIGhhcmR3YXJlIGZvdW5kIGluIEFSN3h4eC9BUjl4eHggTUlQUyBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGFuZCBldmVuIGlmIENPTVBJTEVfVEVTVCBjb21waWxlcyBpdCwgdGhlIGFic2VuY2Ugb2YgYSBjb3JyZXNwb25kaW5nIHBsYXRmb3JtIGRldmljZSBhbmQgZW11bGF0ZWQgTU1JTy9ETUEgaGFyZHdhcmUgbWFrZXMgdGhlIGNoYW5nZWQgY29kZSBwYXRocyBlbnRpcmVseSB1bnJlYWNoYWJsZSBhbmQgdW5mdXp6YWJsZS4gVGhhdCYjMzk7cyBhIGRlZmluaXRlICYjMzQ7bm8gZ28mIzM0OyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMjM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhZzcxeHggRXRoZXJuZXQgTUFDIGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIG9uLWNoaXAgaGFyZHdhcmUgZm91bmQgaW4gc3BlY2lmaWMgTUlQUyBTb0NzIChBUjd4eHgvQVI5eHh4KS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBnZW5lcmljIFFFTVUpIHVzZWQgZm9yIGZ1enppbmcuIEV2ZW4gaWYgdGhlIGRyaXZlciBpcyBjb21waWxlZCB2aWEgQ09NUElMRV9URVNULCB0aGUgbGFjayBvZiBhIGNvcnJlc3BvbmRpbmcgcGxhdGZvcm0gZGV2aWNlIGFuZCBlbXVsYXRlZCBNTUlPL0RNQSBoYXJkd2FyZSBtYWtlcyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBhbmQgdW5mdXp6YWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGFnNzF4eCBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igb24tY2hpcCBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBNSVBTIFNvQ3MgKEFSN3h4eC9BUjl4eHgpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIGdlbmVyaWMgUUVNVSkgdXNlZCBmb3IgZnV6emluZy4gRXZlbiBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHZpYSBDT01QSUxFX1RFU1QsIHRoZSBsYWNrIG9mIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYW5kIGVtdWxhdGVkIE1NSU8vRE1BIGhhcmR3YXJlIG1ha2VzIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGFuZCB1bmZ1enphYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjEzLjEwNjU3NzEyMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMDgyNTk4NTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhZzcxeHggRXRoZXJuZXQgTUFDIGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIG9uLWNoaXAgaGFyZHdhcmUgZm91bmQgaW4gc3BlY2lmaWMgTUlQUyBTb0NzIChBUjd4eHgvQVI5eHh4KS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBnZW5lcmljIFFFTVUpIHVzZWQgZm9yIGZ1enppbmcuIEV2ZW4gaWYgdGhlIGRyaXZlciBpcyBjb21waWxlZCB2aWEgQ09NUElMRV9URVNULCB0aGUgbGFjayBvZiBhIGNvcnJlc3BvbmRpbmcgcGxhdGZvcm0gZGV2aWNlIGFuZCBlbXVsYXRlZCBNTUlPL0RNQSBoYXJkd2FyZSBtYWtlcyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBhbmQgdW5mdXp6YWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjEzLjEwNjU4MzYzMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM4ODQzNTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzUwMjJlYjIzY2VmMTIwNmU5NWNkNThiNzM5ZDE5MDE0ZWRlYTJkYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1biAyOCAyMzoyMDoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xcbmluZGV4IDRlNDc5NGM0ZGZkY2VhLi5hNzhiZTUxYTAxY2M0YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xcbkBAIC00MCwxMSArNDAsNiBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9zZWxmdGVzdHMuaFxcdTAwM2VcXG4gXFxuLS8qIEZvciBvdXIgTkFQSSB3ZWlnaHQgYmlnZ2VyIGRvZXMgKk5PVCogbWVhbiBiZXR0ZXIgLSBpdCBtZWFucyBtb3JlXFxuLSAqIEQtY2FjaGUgbWlzc2VzIGFuZCBsb3RzIG1vcmUgd2FzdGVkIGN5Y2xlcyB0aGFuIHdlJ2xsIGV2ZXJcXG4tICogcG9zc2libHkgZ2FpbiBmcm9tIHNhdmluZyBpbnN0cnVjdGlvbnMuXFxuLSAqL1xcbi0jZGVmaW5lIEFHNzFYWF9OQVBJX1dFSUdIVFxcdDMyXFxuICNkZWZpbmUgQUc3MVhYX09PTV9SRUZJTExcXHQoMSArIEhaIC8gMTApXFxuIFxcbiAjZGVmaW5lIEFHNzFYWF9JTlRfRVJSXFx0KEFHNzFYWF9JTlRfUlhfQkUgfCBBRzcxWFhfSU5UX1RYX0JFKVxcbkBAIC00MDIsMTEgKzM5NywxMyBAQCBzdGF0aWMgYm9vbCBhZzcxeHhfaXMoc3RydWN0IGFnNzF4eCAqYWcsIGVudW0gYWc3MXh4X3R5cGUgdHlwZSlcXG4gXFx0cmV0dXJuIGFnLVxcdTAwM2VkY2ZnLVxcdTAwM2V0eXBlID09IHR5cGU7XFxuIH1cXG4gXFxuKy8qIGF0aDc5IG9uLWNoaXAgTU1JTyBidXMgaXMgbm9uLXBvc3RlZCAtIGlvd3JpdGUzMi9pb3dyaXRlMzJiZSBjb21wbGV0ZXNcXG4rICogYmVmb3JlIHRoZSBuZXh0IGluc3RydWN0aW9uIGV4ZWN1dGVzLiBObyByZWFkLWJhY2sgZHJhaW4gaXMgbmVlZGVkLlxcbisgKi9cXG4rXFxuIHN0YXRpYyB2b2lkIGFnNzF4eF93cihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZywgdTMyIHZhbHVlKVxcbiB7XFxuIFxcdGlvd3JpdGUzMih2YWx1ZSwgYWctXFx1MDAzZW1hY19iYXNlICsgcmVnKTtcXG4tXFx0LyogZmx1c2ggd3JpdGUgKi9cXG4tXFx0KHZvaWQpaW9yZWFkMzIoYWctXFx1MDAzZW1hY19iYXNlICsgcmVnKTtcXG4gfVxcbiBcXG4gc3RhdGljIHUzMiBhZzcxeHhfcnIoc3RydWN0IGFnNzF4eCAqYWcsIHVuc2lnbmVkIGludCByZWcpXFxuQEAgLTQxNiwyMiArNDEzLDE2IEBAIHN0YXRpYyB1MzIgYWc3MXh4X3JyKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnKVxcbiBcXG4gc3RhdGljIHZvaWQgYWc3MXh4X3NiKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgbWFzaylcXG4ge1xcbi1cXHR2b2lkIF9faW9tZW0gKnI7XFxuK1xcdHZvaWQgX19pb21lbSAqciA9IGFnLVxcdTAwM2VtYWNfYmFzZSArIHJlZztcXG4gXFxuLVxcdHIgPSBhZy1cXHUwMDNlbWFjX2Jhc2UgKyByZWc7XFxuIFxcdGlvd3JpdGUzMihpb3JlYWQzMihyKSB8IG1hc2ssIHIpO1xcbi1cXHQvKiBmbHVzaCB3cml0ZSAqL1xcbi1cXHQodm9pZClpb3JlYWQzMihyKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgYWc3MXh4X2NiKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgbWFzaylcXG4ge1xcbi1cXHR2b2lkIF9faW9tZW0gKnI7XFxuK1xcdHZvaWQgX19pb21lbSAqciA9IGFnLVxcdTAwM2VtYWNfYmFzZSArIHJlZztcXG4gXFxuLVxcdHIgPSBhZy1cXHUwMDNlbWFjX2Jhc2UgKyByZWc7XFxuIFxcdGlvd3JpdGUzMihpb3JlYWQzMihyKSBcXHUwMDI2IH5tYXNrLCByKTtcXG4tXFx0LyogZmx1c2ggd3JpdGUgKi9cXG4tXFx0KHZvaWQpaW9yZWFkMzIocik7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGFnNzF4eF9pbnRfZW5hYmxlKHN0cnVjdCBhZzcxeHggKmFnLCB1MzIgaW50cylcXG5AQCAtMTcyOSw2ICsxNzIwLDcgQEAgc3RhdGljIGludCBhZzcxeHhfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBsaW1pdClcXG4gXFxuIFxcdG1vZF90aW1lcihcXHUwMDI2YWctXFx1MDAzZW9vbV90aW1lciwgamlmZmllcyArIEFHNzFYWF9PT01fUkVGSUxMKTtcXG4gXFx0bmFwaV9jb21wbGV0ZShuYXBpKTtcXG4rXFx0YWc3MXh4X2ludF9lbmFibGUoYWcsIEFHNzFYWF9JTlRfVFgpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtMTkxMyw4ICsxOTA1LDcgQEAgc3RhdGljIGludCBhZzcxeHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbiBcXG4tXFx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFxcdTAwMjZhZy1cXHUwMDNlbmFwaSwgYWc3MXh4X3BvbGwsXFxuLVxcdFxcdFxcdCAgICAgIEFHNzFYWF9OQVBJX1dFSUdIVCk7XFxuK1xcdG5ldGlmX25hcGlfYWRkKG5kZXYsIFxcdTAwMjZhZy1cXHUwMDNlbmFwaSwgYWc3MXh4X3BvbGwpO1xcbiBcXG4gXFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcxLCAwKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjEzLjQ0NjEyMjQzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk3NDMwNDI2MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGFnNzF4eCBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igb24tY2hpcCBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBNSVBTIFNvQ3MgKEFSN3h4eC9BUjl4eHgpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIGdlbmVyaWMgUUVNVSkgdXNlZCBmb3IgZnV6emluZy4gRXZlbiBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHZpYSBDT01QSUxFX1RFU1QsIHRoZSBsYWNrIG9mIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYW5kIGVtdWxhdGVkIE1NSU8vRE1BIGhhcmR3YXJlIG1ha2VzIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGFuZCB1bmZ1enphYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NTAyMmViMjNjZWYxMjA2ZTk1Y2Q1OGI3MzlkMTkwMTRlZGVhMmRhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdW4gMjggMjM6MjA6MTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xuaW5kZXggNGU0Nzk0YzRkZmRjZWEuLmE3OGJlNTFhMDFjYzRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY1xuQEAgLTQwLDExICs0MCw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9zZWxmdGVzdHMuaFx1MDAzZVxuIFxuLS8qIEZvciBvdXIgTkFQSSB3ZWlnaHQgYmlnZ2VyIGRvZXMgKk5PVCogbWVhbiBiZXR0ZXIgLSBpdCBtZWFucyBtb3JlXG4tICogRC1jYWNoZSBtaXNzZXMgYW5kIGxvdHMgbW9yZSB3YXN0ZWQgY3ljbGVzIHRoYW4gd2UnbGwgZXZlclxuLSAqIHBvc3NpYmx5IGdhaW4gZnJvbSBzYXZpbmcgaW5zdHJ1Y3Rpb25zLlxuLSAqL1xuLSNkZWZpbmUgQUc3MVhYX05BUElfV0VJR0hUXHQzMlxuICNkZWZpbmUgQUc3MVhYX09PTV9SRUZJTExcdCgxICsgSFogLyAxMClcbiBcbiAjZGVmaW5lIEFHNzFYWF9JTlRfRVJSXHQoQUc3MVhYX0lOVF9SWF9CRSB8IEFHNzFYWF9JTlRfVFhfQkUpXG5AQCAtNDAyLDExICszOTcsMTMgQEAgc3RhdGljIGJvb2wgYWc3MXh4X2lzKHN0cnVjdCBhZzcxeHggKmFnLCBlbnVtIGFnNzF4eF90eXBlIHR5cGUpXG4gXHRyZXR1cm4gYWctXHUwMDNlZGNmZy1cdTAwM2V0eXBlID09IHR5cGU7XG4gfVxuIFxuKy8qIGF0aDc5IG9uLWNoaXAgTU1JTyBidXMgaXMgbm9uLXBvc3RlZCAtIGlvd3JpdGUzMi9pb3dyaXRlMzJiZSBjb21wbGV0ZXNcbisgKiBiZWZvcmUgdGhlIG5leHQgaW5zdHJ1Y3Rpb24gZXhlY3V0ZXMuIE5vIHJlYWQtYmFjayBkcmFpbiBpcyBuZWVkZWQuXG4rICovXG4rXG4gc3RhdGljIHZvaWQgYWc3MXh4X3dyKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgdmFsdWUpXG4ge1xuIFx0aW93cml0ZTMyKHZhbHVlLCBhZy1cdTAwM2VtYWNfYmFzZSArIHJlZyk7XG4tXHQvKiBmbHVzaCB3cml0ZSAqL1xuLVx0KHZvaWQpaW9yZWFkMzIoYWctXHUwMDNlbWFjX2Jhc2UgKyByZWcpO1xuIH1cbiBcbiBzdGF0aWMgdTMyIGFnNzF4eF9ycihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZylcbkBAIC00MTYsMjIgKzQxMywxNiBAQCBzdGF0aWMgdTMyIGFnNzF4eF9ycihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZylcbiBcbiBzdGF0aWMgdm9pZCBhZzcxeHhfc2Ioc3RydWN0IGFnNzF4eCAqYWcsIHVuc2lnbmVkIGludCByZWcsIHUzMiBtYXNrKVxuIHtcbi1cdHZvaWQgX19pb21lbSAqcjtcbitcdHZvaWQgX19pb21lbSAqciA9IGFnLVx1MDAzZW1hY19iYXNlICsgcmVnO1xuIFxuLVx0ciA9IGFnLVx1MDAzZW1hY19iYXNlICsgcmVnO1xuIFx0aW93cml0ZTMyKGlvcmVhZDMyKHIpIHwgbWFzaywgcik7XG4tXHQvKiBmbHVzaCB3cml0ZSAqL1xuLVx0KHZvaWQpaW9yZWFkMzIocik7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGFnNzF4eF9jYihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZywgdTMyIG1hc2spXG4ge1xuLVx0dm9pZCBfX2lvbWVtICpyO1xuK1x0dm9pZCBfX2lvbWVtICpyID0gYWctXHUwMDNlbWFjX2Jhc2UgKyByZWc7XG4gXG4tXHRyID0gYWctXHUwMDNlbWFjX2Jhc2UgKyByZWc7XG4gXHRpb3dyaXRlMzIoaW9yZWFkMzIocikgXHUwMDI2IH5tYXNrLCByKTtcbi1cdC8qIGZsdXNoIHdyaXRlICovXG4tXHQodm9pZClpb3JlYWQzMihyKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgYWc3MXh4X2ludF9lbmFibGUoc3RydWN0IGFnNzF4eCAqYWcsIHUzMiBpbnRzKVxuQEAgLTE3MjksNiArMTcyMCw3IEBAIHN0YXRpYyBpbnQgYWc3MXh4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgbGltaXQpXG4gXG4gXHRtb2RfdGltZXIoXHUwMDI2YWctXHUwMDNlb29tX3RpbWVyLCBqaWZmaWVzICsgQUc3MVhYX09PTV9SRUZJTEwpO1xuIFx0bmFwaV9jb21wbGV0ZShuYXBpKTtcbitcdGFnNzF4eF9pbnRfZW5hYmxlKGFnLCBBRzcxWFhfSU5UX1RYKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0xOTEzLDggKzE5MDUsNyBAQCBzdGF0aWMgaW50IGFnNzF4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuLVx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFx1MDAyNmFnLVx1MDAzZW5hcGksIGFnNzF4eF9wb2xsLFxuLVx0XHRcdCAgICAgIEFHNzFYWF9OQVBJX1dFSUdIVCk7XG4rXHRuZXRpZl9uYXBpX2FkZChuZGV2LCBcdTAwMjZhZy1cdTAwM2VuYXBpLCBhZzcxeHhfcG9sbCk7XG4gXG4gXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUFDX0NGRzEsIDApO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMjM6MjA6MTMuNDQ2MTI0NzU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc0Mzk1NDg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFHNzFYWCBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggb24gdGhlIHN1cmZhY2UuIEZpcnN0LCB0aGV5J3ZlIGNsZWFuZWQgdXAgc29tZSBuYXBpLXJlbGF0ZWQgY29kZSwgcmVtb3ZpbmcgYEFHNzFYWF9OQVBJX1dFSUdIVGAgYW5kIG9wdGluZyBmb3IgYG5ldGlmX25hcGlfYWRkYCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZSBub3cuIEdvb2QuIFRoZXkndmUgYWxzbyBnb3R0ZW4gcmlkIG9mIHRoZSByZWFkLWJhY2sgZHJhaW5zIGluIHRob3NlIHdyaXRlIGZ1bmN0aW9ucyDigJMgYGFnNzF4eF93cmAsIGBhZzcxeHhfc2JgLCBgYWc3MXh4X2NiYC4gUHJvYmFibHkgYW4gb3B0aW1pemF0aW9uLCBsZXNzIGJ1c3ktd2FpdGluZy4gQW5kIGZpbmFsbHksIHRoZXkndmUgYWRkZWQgYW4gaW50ZXJydXB0IGVuYWJsZSBmb3IgVFggaW4gYGFnNzF4eF9wb2xsYCwgd2hpY2ggaXMgbGlrZWx5IGFib3V0IG9wdGltaXppbmcgaW50ZXJydXB0IGhhbmRsaW5nLiBGaW5lLCBJIGdldCB0aGUgY2hhbmdlcy5cblxuTm93LCB0aGlzIGlzIGFuIEF0aGVyb3MgZHJpdmVyLiBJdCdzIGJ1aWx0IGZvciB0aG9zZSBvbGRlciBTb0NzOiBBUjcxeHgsIEFSNzI0eCwgQVI5MTN4LCB0aGUgd2hvbGUgZ2FuZywgcmlnaHQgdGhyb3VnaCB0aGUgUUNBIHNlcmllcy4gSXQncyBhIGJ1aWx0LWluIEV0aGVybmV0IE1BQywgc28gdGhpcyBpcyBnb2luZyB0byBiZSBwbGF0Zm9ybS1zcGVjaWZpYywgdmVyeSB0aWdodGx5IGNvdXBsZWQgdG8gdGhlIGhhcmR3YXJlLiBUaGF0J3Mgd2hhdCBJJ20gY29uY2VybmVkIGFib3V0LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdpbGwgaXQgZXZlbiBiZSAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJIGRvdWJ0IGl0LiBUaGlzIGlzbid0IGEgZ2VuZXJpYyBOSUMgZHJpdmVyOyBpdCdzIGEgZGlyZWN0IGludGVyZmFjZSB0byBvbi1jaGlwIGhhcmR3YXJlLlxuXG5MZXQncyBjb25maXJtIGl0J3MgdXNpbmcgdGhlIGBwbGF0Zm9ybV9kZXZpY2VgIGluZnJhc3RydWN0dXJlLiBZdXAsIGl0IGlzLiBBcyBJIHN1c3BlY3RlZC4gQ2FuIHdlIGVtdWxhdGUgdGhpcyBlYXNpbHk/IEFic29sdXRlbHkgbm90LCBpdCdzIG5vdCBhIHN0YW5kYXJkIE5JQywgaXQncyBhIHNwZWNpZmljIE1BQy4gV2UnZCBoYXZlIHRvIGVtdWxhdGUgdGhlIGVudGlyZSBBdGhlcm9zIFNvQyEgVGhhdCdzIGEgaHVnZSB1bmRlcnRha2luZy4gQWxyaWdodCwgbGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYCBkaXJlY3Rvcnkgc2F5cyBhYm91dCBpdHMgZGVwZW5kZW5jaWVzLiBHb3R0YSBjaGVjayBmb3IgYW55IHN1YnRsZSBidWlsZCBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NzcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQyMzoyMDoyMC4xOTAwODI0ODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczOTI2OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFHNzFYWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnPTE4PWlmIE5FVF9WRU5ET1JfQVRIRVJPU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc6MjA6Y29uZmlnIEFHNzFYWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBBUjdYWFgvQVI5WFhYIGJ1aWx0LWluIGV0aGVybmV0IG1hYyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQyMzoyMDoyMC4yNDc0Nzk2MDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTczMzcyNTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBFdGhlcm5ldCBLY29uZmlnKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBBdGhlcm9zIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLCBzbyBteSBmb2N1cyBpcyBub3cgb24gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyMC4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEtjb25maWcgc3RydWN0dXJlIGlzIGltcGxlbWVudGVkIHRvIHNlZSB3aGF0IG9wdGlvbnMgYXJlIGJlaW5nIG1hZGUgYXZhaWxhYmxlLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBtYXliZSBzb21lIGhlbHAgdGV4dCB0aGF0IHdpbGwgaWxsdW1pbmF0ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBIb3BlZnVsbHksIHRoZSBmaWxlIGlzIHdlbGwtY29tbWVudGVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgdmFyaW91cyBBdGhlcm9zIEV0aGVybmV0IGNoaXBzZXRzLCB3aGF0IGZlYXR1cmVzIGFyZSBjb25maWd1cmFibGUgKGxpa2UgVkxBTiBzdXBwb3J0LCBqdW1ibyBmcmFtZXMsIHBvd2VyIG1hbmFnZW1lbnQsIGV0Yy4pLCBhbmQgaG93IGFsbCBvZiB0aGlzIGlzIHN0cnVjdHVyZWQgd2l0aGluIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3RhY2suIFRoZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2Ygd2hhdCBzZXR0aW5ncyBJIGNhbiB0d2VhayBhbmQgd2hhdCB0aGVpciBpbXBsaWNhdGlvbnMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTMyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMjM6MjA6MjMuODIwODU0Nzk5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE4OlxcdGlmIE5FVF9WRU5ET1JfQVRIRVJPU1xcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgQUc3MVhYXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBBUjdYWFgvQVI5WFhYIGJ1aWx0LWluIGV0aGVybmV0IG1hYyBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBBVEg3OSB8fCBDT01QSUxFX1RFU1RcXG4gIDIzOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAyNDpcXHRcXHRpbXBseSBORVRfU0VMRlRFU1RTXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIElmIHlvdSB3aXNoIHRvIGNvbXBpbGUgYSBrZXJuZWwgZm9yIEFSN1hYWC85MVhYWCBhbmQgZW5hYmxlXFxuICAyNzpcXHRcXHQgIGV0aGVybmV0IHN1cHBvcnQsIHRoZW4geW91IHNob3VsZCBhbHdheXMgYW5zd2VyIFkgdG8gdGhpcy5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIEFUTDJcXG4gIDMwOlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIEwyIEZhc3QgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDMxOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAzMjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDMzOlxcdFxcdHNlbGVjdCBNSUlcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEF0aGVyb3MgTDIgZmFzdCBldGhlcm5ldCBhZGFwdGVyLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBUaGUgbW9kdWxlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjIzLjgyMDkyNzM1OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNzEzNzMzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYGFnNzF4eGAgRHJpdmVyOiBBIFRob3VnaHQgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGFnNzF4eGAgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgbXkgbWluZCBnb2VzIHRvIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbjogaXMgaXQgYEFUSDc5YCBvciBgQ09NUElMRV9URVNUYD8gVGhhdCB3aWxsIGRpY3RhdGUgYSBsb3QuIENhbiBJIGV2ZW4gZnV6eiB0aGlzIHRoaW5nIGluIFFFTVU/IEknbSBwcmV0dHkgc3VyZSBgQVRINzlgIGlzIE1JUFMsIGFuZCB3aGlsZSBRRU1VICpkb2VzKiBzdXBwb3J0IE1JUFMsIHN5emthbGxlciBwcmltYXJpbHkgZm9jdXNlcyBvbiB4ODZfNjQgb3IgYXJtNjQuIEV2ZW4gaWYgSSBjYW4gZ2V0IGl0IHRvIGNvbXBpbGUgb24geDg2XzY0IHdpdGggYENPTVBJTEVfVEVTVGAsIGl0J3MgYSAqcGxhdGZvcm0qIGRyaXZlci4gUGxhdGZvcm0gZHJpdmVycyBhcmUgYSBoZWFkYWNoZS5cblxuUGxhdGZvcm0gZHJpdmVycyBtZWFuIEkgbmVlZCBhIHBsYXRmb3JtIGRldmljZSByZWdpc3RlcmVkLCB1c3VhbGx5IHRocm91Z2ggRGV2aWNlIFRyZWUgb3Igc29tZSBjdXN0b20gYm9hcmQgY29kZS4gRG9lcyBzeXprYWxsZXIgaGF2ZSBhIHdheSB0byBoYW5kbGUgdGhpcyBhdXRvbWF0aWNhbGx5PyBJIGtub3cgaXQgKmNhbiogaW5zdGFudGlhdGUgY2VydGFpbiBwbGF0Zm9ybSBkZXZpY2VzIHVzaW5nIHRoaW5ncyBsaWtlIGBzeXpfZGV2X2NyZWF0ZWAsIGJ1dCB0aGF0J3MgdHlwaWNhbGx5IGZvciBwc2V1ZG8tZGV2aWNlcyBvciBvbmVzIHRoYXQgYXJlIGV4cGxpY2l0bHkgc3VwcG9ydGVkLiBOb3QgYSByYW5kb20gU29DIGRyaXZlciwgZ2VuZXJhbGx5LiBXYWl0LCBJIHRha2UgdGhhdCBiYWNrOyBpdCAqY2FuKiBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcyBpZiBpdCBrbm93cyBob3csIGJ1dCB1c3VhbGx5IGl0IGRvZXNuJ3QgdW5sZXNzIHRoZXJlJ3MgYSBmdXp6ZXIgc3BlY2lmaWNhbGx5IGZvciBpdC5cblxuVGhlbiBJIHJlbWVtYmVyIHRob3NlIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlfaWRgIGV0Yy4gY2FsbHMgaW4gc3l6a2FsbGVyLiBNYXliZSB0aGVyZSdzIGEgd2F5LiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXM6IGlzIGBhZzcxeHhgICpyZWFjaGFibGUqPyBCZWNhdXNlLCBsZXQncyBiZSBob25lc3QsIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMsIGVzcGVjaWFsbHkgZm9yIE1JUFMgU29DcywgYXJlIHJhcmVseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgeDg2XzY0IFZNcy4gVGhlIHBsYXRmb3JtIGRldmljZSBpcyBqdXN0IG5ldmVyIHJlZ2lzdGVyZWQuIFNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGtlcm5lbCByZWZlcmVuY2VzIHRvIGBhZzcxeHhgIHRoYXQgd291bGQgcmVnaXN0ZXIgaXQgb24geDg2LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDg5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMjM6MjA6MjkuOTkyMzAzNDMzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzUxNzcxMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWc3MXh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQyMzoyMDozMC40NTk4MzYzMzZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTg5ODc4ODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgU291cmNlIE5hdmlnYXRpb24gLSBXaGVyZSdzIHRoZSBDb2RlPyoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBmb3Igc29tZXRoaW5nIHNwZWNpZmljLiBObyBoaXRzIGluIGBhcmNoL2AsIHdoaWNoIGlzIGFzIGV4cGVjdGVkLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSB0YXNrIGF0IGhhbmQuIFRoYXQgbmFycm93cyB0aGluZ3MgZG93biBhIGJpdCwgZG9lc24ndCBpdD8gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byBgZHJpdmVycy9gLiBJdCdzIGEgdmFzdCBkaXJlY3RvcnksIGJ1dCB0eXBpY2FsbHkgd2hlcmUgSSBmaW5kIHRoZSBidWxrIG9mIHRoZSBkZXZpY2UgZHJpdmVycyBhbmQgaGFyZHdhcmUtc3BlY2lmaWMgaW50ZXJhY3Rpb24gY29kZS4gVGltZSB0byBzdGFydCBkaWdnaW5nIHRoZXJlIGFuZCBzZWUgaWYgSSBjYW4gdW5lYXJ0aCB3aGF0IEknbSBsb29raW5nIGZvciB3aXRoaW4gdGhhdCBzdHJ1Y3R1cmUuIExldCdzIHNlZSB3aGF0IHRyZWFzdXJlIEkgY2FuIHVuY292ZXIgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MjIsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQyMzoyMDozMy4wNDk3MTc4MTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODQ4NzgwNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWc3MXh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgOTk1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19BRzcxWFgpICs9IGFnNzF4eC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9NYWtlZmlsZS03LW9iai0kKENPTkZJR19BVEwxKSArPSBhdGx4L1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoyMzM6c3RydWN0IGFnNzF4eF9zdGF0aXN0aWMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjM0LVxcdHVuc2lnbmVkIHNob3J0IG9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MjM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYWc3MXh4X3N0YXRpc3RpYyBhZzcxeHhfc3RhdGlzdGljc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjQwLVxcdHsgMHgwMDgwLCBHRU5NQVNLKDE3LCAwKSwgXFxcIlR4L1J4IDY0IEJ5dGVcXFwiLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yODgtI2RlZmluZSBERVNDX1BLVExFTl9NXFx0XFx0MHhmZmZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjI4OTpzdHJ1Y3QgYWc3MXh4X2Rlc2Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjkwLVxcdHUzMiBkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoyOTY6I2RlZmluZSBBRzcxWFhfREVTQ19TSVpFXFx0cm91bmR1cChzaXplb2Yoc3RydWN0IGFnNzF4eF9kZXNjKSwgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjk3LVxcdFxcdFxcdFxcdFxcdEwxX0NBQ0hFX0JZVEVTKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Mjk5OnN0cnVjdCBhZzcxeHhfYnVmIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMwMC1cXHR1bmlvbiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjMxMjpzdHJ1Y3QgYWc3MXh4X3Jpbmcge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzEzLVxcdC8qIFxcXCJIb3RcXFwiIGZpZWxkcyBpbiB0aGUgZGF0YSBwYXRoLiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMTctXFx0LyogXFxcIkNvbGRcXFwiIGZpZWxkcyAtIG5vdCB1c2VkIGluIHRoZSBkYXRhIHBhdGguICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozMTg6XFx0c3RydWN0IGFnNzF4eF9idWYgKmJ1ZjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMxOS1cXHR1MTYgb3JkZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjMyNTplbnVtIGFnNzF4eF90eXBlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMyNi1cXHRBUjcxMDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTMzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjMzNTpzdHJ1Y3QgYWc3MXh4X2RjZmcge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzM2LVxcdHUzMiBtYXhfZnJhbWVfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zMzktXFx0Ym9vbCB0eF9oYW5nX3dvcmthcm91bmQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNDA6XFx0ZW51bSBhZzcxeHhfdHlwZSB0eXBlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzQxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNDM6c3RydWN0IGFnNzF4eCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNDQtXFx0LyogQ3JpdGljYWwgZGF0YSByZWxhdGVkIHRvIHRoZSBwZXItcGFja2V0IGRhdGEgcGF0aCBhcmUgY2x1c3RlcmVkXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM0Ni1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjM0NzpcXHRzdHJ1Y3QgYWc3MXh4X3JpbmcgcnhfcmluZyBfX19fY2FjaGVsaW5lX2FsaWduZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNDg6XFx0c3RydWN0IGFnNzF4eF9yaW5nIHR4X3JpbmcgX19fX2NhY2hlbGluZV9hbGlnbmVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNTYtXFx0dTMyIG1zZ19lbmFibGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNTc6XFx0Y29uc3Qgc3RydWN0IGFnNzF4eF9kY2ZnICpkY2ZnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozNjI6XFx0c3RydWN0IGFnNzF4eF9kZXNjICpzdG9wX2Rlc2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNjMtXFx0ZG1hX2FkZHJfdCBzdG9wX2Rlc2NfZG1hO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozODA6c3RhdGljIGludCBhZzcxeHhfZGVzY19lbXB0eShzdHJ1Y3QgYWc3MXh4X2Rlc2MgKmRlc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zODEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozODU6c3RhdGljIHN0cnVjdCBhZzcxeHhfZGVzYyAqYWc3MXh4X3JpbmdfZGVzYyhzdHJ1Y3QgYWc3MXh4X3JpbmcgKnJpbmcsIGludCBpZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zODYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Mzg3OlxcdHJldHVybiAoc3RydWN0IGFnNzF4eF9kZXNjICopXFx1MDAyNnJpbmctXFx1MDAzZWRlc2NzX2NwdVtpZHggKiBBRzcxWFhfREVTQ19TSVpFXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTM4OC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0zODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzozOTA6c3RhdGljIGludCBhZzcxeHhfcmluZ19zaXplX29yZGVyKGludCBzaXplKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Mzk1OnN0YXRpYyBib29sIGFnNzF4eF9pcyhzdHJ1Y3QgYWc3MXh4ICphZywgZW51bSBhZzcxeHhfdHlwZSB0eXBlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMzk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDA0OnN0YXRpYyB2b2lkIGFnNzF4eF93cihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZywgdTMyIHZhbHVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDA5OnN0YXRpYyB1MzIgYWc3MXh4X3JyKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDE0OnN0YXRpYyB2b2lkIGFnNzF4eF9zYihzdHJ1Y3QgYWc3MXh4ICphZywgdW5zaWduZWQgaW50IHJlZywgdTMyIG1hc2spXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00MTUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0MjE6c3RhdGljIHZvaWQgYWc3MXh4X2NiKHN0cnVjdCBhZzcxeHggKmFnLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgbWFzaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQyODpzdGF0aWMgdm9pZCBhZzcxeHhfaW50X2VuYWJsZShzdHJ1Y3QgYWc3MXh4ICphZywgdTMyIGludHMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00Mjkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDMwOlxcdGFnNzF4eF9zYihhZywgQUc3MVhYX1JFR19JTlRfRU5BQkxFLCBpbnRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQzMS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0MzM6c3RhdGljIHZvaWQgYWc3MXh4X2ludF9kaXNhYmxlKHN0cnVjdCBhZzcxeHggKmFnLCB1MzIgaW50cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQzNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0MzU6XFx0YWc3MXh4X2NiKGFnLCBBRzcxWFhfUkVHX0lOVF9FTkFCTEUsIGludHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDM2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQzODpzdGF0aWMgaW50IGFnNzF4eF9kb19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00Mzkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDQwOlxcdHN0cnVjdCBhZzcxeHggKmFnID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQ0NTpzdGF0aWMgdm9pZCBhZzcxeHhfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NDYtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmluZm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NDcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDQ4OlxcdHN0cnVjdCBhZzcxeHggKmFnID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NTA6XFx0c3Ryc2NweShpbmZvLVxcdTAwM2Vkcml2ZXIsIFxcXCJhZzcxeHhcXFwiLCBzaXplb2YoaW5mby1cXHUwMDNlZHJpdmVyKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00NTEtXFx0c3Ryc2NweShpbmZvLVxcdTAwM2VidXNfaW5mbywgb2Zfbm9kZV9mdWxsX25hbWUoYWctXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDU1OnN0YXRpYyBpbnQgYWc3MXh4X2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ1Ni1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3NldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ1Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NTg6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDYzOnN0YXRpYyBpbnQgYWc3MXh4X3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ2NC1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3NldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ2NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NjY6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDcxOnN0YXRpYyBpbnQgYWc3MXh4X2V0aHRvb2xfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ3Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0NzM6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDc4OnN0YXRpYyB2b2lkIGFnNzF4eF9ldGh0b29sX2dldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDc5LVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00ODAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDgxOlxcdHN0cnVjdCBhZzcxeHggKmFnID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy00ODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjQ4NjpzdGF0aWMgaW50IGFnNzF4eF9ldGh0b29sX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDg3LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtICpwYXVzZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ4OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo0ODk6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTQ5MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NDk0OnN0YXRpYyB2b2lkIGFnNzF4eF9ldGh0b29sX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBzc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNDk1LVxcdFxcdFxcdFxcdCAgICAgICB1OCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTAwLVxcdGNhc2UgRVRIX1NTX1NUQVRTOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTAxOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGFnNzF4eF9zdGF0aXN0aWNzKTsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTAyOlxcdFxcdFxcdGV0aHRvb2xfcHV0cyhcXHUwMDI2ZGF0YSwgYWc3MXh4X3N0YXRpc3RpY3NbaV0ubmFtZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01MDMtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUxMDpzdGF0aWMgdm9pZCBhZzcxeHhfZXRodG9vbF9nZXRfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01MTEtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsIHU2NCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUxMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1MTM6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUxNC1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUxNjpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShhZzcxeHhfc3RhdGlzdGljcyk7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUxNzpcXHRcXHQqZGF0YSsrID0gYWc3MXh4X3JyKGFnLCBhZzcxeHhfc3RhdGlzdGljc1tpXS5vZmZzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1MTg6XFx0XFx0XFx0XFx0XFx1MDAyNiBhZzcxeHhfc3RhdGlzdGljc1tpXS5tYXNrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTE5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUyMTpzdGF0aWMgaW50IGFnNzF4eF9ldGh0b29sX2dldF9zc2V0X2NvdW50KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgc3NldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUyNC1cXHRjYXNlIEVUSF9TU19TVEFUUzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUyNTpcXHRcXHRyZXR1cm4gQVJSQVlfU0laRShhZzcxeHhfc3RhdGlzdGljcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01MjYtXFx0Y2FzZSBFVEhfU1NfVEVTVDpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTMzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYWc3MXh4X2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTM0OlxcdC5nZXRfZHJ2aW5mb1xcdFxcdFxcdD0gYWc3MXh4X2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTM1LVxcdC5nZXRfbGlua1xcdFxcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTUzNi1cXHQuZ2V0X3RzX2luZm9cXHRcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1Mzc6XFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdFxcdD0gYWc3MXh4X2dldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjUzODpcXHQuc2V0X2xpbmtfa3NldHRpbmdzXFx0XFx0PSBhZzcxeHhfc2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTM5OlxcdC5ud2F5X3Jlc2V0XFx0XFx0XFx0PSBhZzcxeHhfZXRodG9vbF9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTQwOlxcdC5nZXRfcGF1c2VwYXJhbVxcdFxcdFxcdD0gYWc3MXh4X2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDE6XFx0LnNldF9wYXVzZXBhcmFtXFx0XFx0XFx0PSBhZzcxeHhfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU0MjpcXHQuZ2V0X3N0cmluZ3NcXHRcXHRcXHQ9IGFnNzF4eF9ldGh0b29sX2dldF9zdHJpbmdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTQzOlxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdFxcdD0gYWc3MXh4X2V0aHRvb2xfZ2V0X3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTQ0OlxcdC5nZXRfc3NldF9jb3VudFxcdFxcdFxcdD0gYWc3MXh4X2V0aHRvb2xfZ2V0X3NzZXRfY291bnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NDUtXFx0LnNlbGZfdGVzdFxcdFxcdFxcdD0gbmV0X3NlbGZ0ZXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDg6c3RhdGljIGludCBhZzcxeHhfbWRpb193YWl0X2J1c3koc3RydWN0IGFnNzF4eCAqYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NTg6XFx0XFx0YnVzeSA9IGFnNzF4eF9ycihhZywgQUc3MVhYX1JFR19NSUlfSU5EKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU1OS1cXHRcXHRpZiAoIWJ1c3kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU3MDpzdGF0aWMgaW50IGFnNzF4eF9tZGlvX21paV9yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTcxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjU3MjpcXHRzdHJ1Y3QgYWc3MXh4ICphZyA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU3My1cXHRpbnQgZXJyLCB2YWw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NzU6XFx0ZXJyID0gYWc3MXh4X21kaW9fd2FpdF9idXN5KGFnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU3Ni1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1Nzk6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01JSV9BRERSLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTgwLVxcdFxcdCAgKChhZGRyIFxcdTAwMjYgMHgxZikgXFx1MDAzY1xcdTAwM2MgTUlJX0FERFJfU0hJRlQpIHwgKHJlZyBcXHUwMDI2IDB4ZmYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU4MS1cXHQvKiBlbmFibGUgcmVhZCBtb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1ODI6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01JSV9DTUQsIE1JSV9DTURfUkVBRCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01ODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1ODQ6XFx0ZXJyID0gYWc3MXh4X21kaW9fd2FpdF9idXN5KGFnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU4NS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1ODg6XFx0dmFsID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX01JSV9TVEFUVVMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTg5LVxcdC8qIGRpc2FibGUgcmVhZCBtb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1OTA6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01JSV9DTUQsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1OTg6c3RhdGljIGludCBhZzcxeHhfbWRpb19taWlfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy01OTktXFx0XFx0XFx0XFx0IHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjAxOlxcdHN0cnVjdCBhZzcxeHggKmFnID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo2MDY6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01JSV9BRERSLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjA3LVxcdFxcdCAgKChhZGRyIFxcdTAwMjYgMHgxZikgXFx1MDAzY1xcdTAwM2MgTUlJX0FERFJfU0hJRlQpIHwgKHJlZyBcXHUwMDI2IDB4ZmYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjYwODpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUlJX0NUUkwsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo2MTA6XFx0cmV0dXJuIGFnNzF4eF9tZGlvX3dhaXRfYnVzeShhZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MTEtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz02MjE9c3RhdGljIGNvbnN0IHUzMiBhcjkzM3hfbWRpb19kaXZfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjI1OnN0YXRpYyBpbnQgYWc3MXh4X21kaW9fZ2V0X2RpdmlkZXIoc3RydWN0IGFnNzF4eCAqYWcsIHUzMiAqZGl2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjM1OlxcdGlmIChhZzcxeHhfaXMoYWcsIEFSOTMzMCkgfHwgYWc3MXh4X2lzKGFnLCBBUjkzNDApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MzYtXFx0XFx0dGFibGUgPSBhcjkzM3hfbWRpb19kaXZfdGFibGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02MzctXFx0XFx0bmRpdnMgPSBBUlJBWV9TSVpFKGFyOTMzeF9tZGlvX2Rpdl90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo2Mzg6XFx0fSBlbHNlIGlmIChhZzcxeHhfaXMoYWcsIEFSNzI0MCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTYzOS1cXHRcXHR0YWJsZSA9IGFyNzI0MF9tZGlvX2Rpdl90YWJsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjU5OnN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcmVzZXQoc3RydWN0IG1paV9idXMgKmJ1cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTY2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo2NjE6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NjItXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjY1OlxcdGVyciA9IGFnNzF4eF9tZGlvX2dldF9kaXZpZGVyKGFnLCBcXHUwMDI2dCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NjYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NjY5OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NSUlfQ0ZHLCB0IHwgTUlJX0NGR19SRVNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NzAtXFx0dXNsZWVwX3JhbmdlKDEwMCwgMjAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTY3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjY3MjpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUlJX0NGRywgdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02NzMtXFx0dXNsZWVwX3JhbmdlKDEwMCwgMjAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNjc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6Njc4OnN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcHJvYmUoc3RydWN0IGFnNzF4eCAqYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy02Nzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3MDU6XFx0bWlpX2J1cy1cXHUwMDNlbmFtZSA9IFxcXCJhZzcxeHhfbWRpb1xcXCI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3MDY6XFx0bWlpX2J1cy1cXHUwMDNlcmVhZCA9IGFnNzF4eF9tZGlvX21paV9yZWFkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzA3OlxcdG1paV9idXMtXFx1MDAzZXdyaXRlID0gYWc3MXh4X21kaW9fbWlpX3dyaXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzA4OlxcdG1paV9idXMtXFx1MDAzZXJlc2V0ID0gYWc3MXh4X21kaW9fcmVzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MDktXFx0bWlpX2J1cy1cXHUwMDNlcHJpdiA9IGFnO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Mjc6c3RhdGljIHZvaWQgYWc3MXh4X2h3X3N0b3Aoc3RydWN0IGFnNzF4eCAqYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03Mjgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI5LVxcdC8qIGRpc2FibGUgYWxsIGludGVycnVwdHMgYW5kIHN0b3AgdGhlIHJ4L3R4IGVuZ2luZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzMwOlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19JTlRfRU5BQkxFLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjczMTpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfUlhfQ1RSTCwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3MzI6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1RYX0NUUkwsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzMzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTczNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjczNTpzdGF0aWMgYm9vbCBhZzcxeHhfY2hlY2tfZG1hX3N0dWNrKHN0cnVjdCBhZzcxeHggKmFnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzM2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzQ3OlxcdHJ4X3NtID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX1JYX1NNKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc0OC1cXHRpZiAoKHJ4X3NtIFxcdTAwMjYgMHg3KSA9PSAweDMgXFx1MDAyNlxcdTAwMjYgKChyeF9zbSBcXHUwMDNlXFx1MDAzZSA0KSBcXHUwMDI2IDB4NykgPT0gMHg2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3NTE6XFx0dHhfc20gPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfVFhfU00pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzUyOlxcdHJ4X2ZkID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fREVQVEgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzUzLVxcdGlmICgoKHR4X3NtIFxcdTAwM2VcXHUwMDNlIDQpIFxcdTAwMjYgMHg3KSA9PSAwIFxcdTAwMjZcXHUwMDI2ICgocnhfc20gXFx1MDAyNiAweDcpID09IDApIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjc2MDpzdGF0aWMgaW50IGFnNzF4eF90eF9wYWNrZXRzKHN0cnVjdCBhZzcxeHggKmFnLCBib29sIGZsdXNoLCBpbnQgYnVkZ2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzYxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjc2MjpcXHRzdHJ1Y3QgYWc3MXh4X3JpbmcgKnJpbmcgPSBcXHUwMDI2YWctXFx1MDAzZXR4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NjMtXFx0aW50IHNlbnQgPSAwLCBieXRlc19jb21wbCA9IDAsIG4gPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03NzMtXFx0d2hpbGUgKHJpbmctXFx1MDAzZWRpcnR5ICsgbiAhPSByaW5nLVxcdTAwM2VjdXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3NzQ6XFx0XFx0c3RydWN0IGFnNzF4eF9kZXNjICpkZXNjO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzc1LVxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc3OC1cXHRcXHRpID0gKHJpbmctXFx1MDAzZWRpcnR5ICsgbikgXFx1MDAyNiByaW5nX21hc2s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Nzk6XFx0XFx0ZGVzYyA9IGFnNzF4eF9yaW5nX2Rlc2MocmluZywgaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03ODAtXFx0XFx0c2tiID0gcmluZy1cXHUwMDNlYnVmW2ldLnR4LnNrYjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTc4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjc4MjpcXHRcXHRpZiAoIWZsdXNoIFxcdTAwMjZcXHUwMDI2ICFhZzcxeHhfZGVzY19lbXB0eShkZXNjKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzgzLVxcdFxcdFxcdGlmIChhZy1cXHUwMDNlZGNmZy1cXHUwMDNldHhfaGFuZ193b3JrYXJvdW5kIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3ODQ6XFx0XFx0XFx0ICAgIGFnNzF4eF9jaGVja19kbWFfc3R1Y2soYWcpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03ODUtXFx0XFx0XFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZhZy1cXHUwMDNlcmVzdGFydF93b3JrLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04MDctXFx0XFx0d2hpbGUgKG4gXFx1MDAzZSAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4MDg6XFx0XFx0XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1RYX1NUQVRVUywgVFhfU1RBVFVTX1BTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTgwOS1cXHRcXHRcXHRuLS07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTgzMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjgzMTpzdGF0aWMgdm9pZCBhZzcxeHhfZG1hX3dhaXRfc3RvcChzdHJ1Y3QgYWc3MXh4ICphZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTgzMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg0MTpcXHRcXHRyeCA9IGFnNzF4eF9ycihhZywgQUc3MVhYX1JFR19SWF9DVFJMKSBcXHUwMDI2IFJYX0NUUkxfUlhFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODQyOlxcdFxcdHR4ID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX1RYX0NUUkwpIFxcdTAwMjYgVFhfQ1RSTF9UWEU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04NDMtXFx0XFx0aWYgKCFyeCBcXHUwMDI2XFx1MDAyNiAhdHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg1MDpzdGF0aWMgdm9pZCBhZzcxeHhfZG1hX3Jlc2V0KHN0cnVjdCBhZzcxeHggKmFnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODU2LVxcdC8qIHN0b3AgUlggYW5kIFRYICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4NTc6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1JYX0NUUkwsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODU4OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19UWF9DVFJMLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODYyLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODYzOlxcdGFnNzF4eF9kbWFfd2FpdF9zdG9wKGFnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg2NS1cXHQvKiBjbGVhciBkZXNjcmlwdG9yIGFkZHJlc3NlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODY2OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19UWF9ERVNDLCBhZy1cXHUwMDNlc3RvcF9kZXNjX2RtYSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4Njc6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1JYX0RFU0MsIGFnLVxcdTAwM2VzdG9wX2Rlc2NfZG1hKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtODcwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAyNTY7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODcxOlxcdFxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19SWF9TVEFUVVMsIFJYX1NUQVRVU19QUik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4NzI6XFx0XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1RYX1NUQVRVUywgVFhfU1RBVFVTX1BTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3NS1cXHQvKiBjbGVhciBwZW5kaW5nIGVycm9ycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6ODc2OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19SWF9TVEFUVVMsIFJYX1NUQVRVU19CRSB8IFJYX1NUQVRVU19PRik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4Nzc6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX1RYX1NUQVRVUywgVFhfU1RBVFVTX0JFIHwgVFhfU1RBVFVTX1VSKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg3OTpcXHR2YWwgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfUlhfU1RBVFVTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg4MC1cXHRpZiAodmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04ODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4ODQ6XFx0dmFsID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX1RYX1NUQVRVUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04ODUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTg5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjg5NDpzdGF0aWMgdm9pZCBhZzcxeHhfaHdfc2V0dXAoc3RydWN0IGFnNzF4eCAqYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04OTUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy04OTgtXFx0Lyogc2V0dXAgTUFDIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo4OTk6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcxLCBpbml0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkwMTpcXHRhZzcxeHhfc2IoYWcsIEFHNzFYWF9SRUdfTUFDX0NGRzIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MDItXFx0XFx0ICBNQUNfQ0ZHMl9QQURfQ1JDX0VOIHwgTUFDX0NGRzJfTEVOX0NIRUNLKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTA0LVxcdC8qIHNldHVwIG1heCBmcmFtZSBsZW5ndGggdG8gemVybyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTA1OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NQUNfTUZMLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkwNy1cXHQvKiBzZXR1cCBGSUZPIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MDg6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fQ0ZHMCwgRklGT19DRkcwX0lOSVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTA5OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19GSUZPX0NGRzEsIGFnLVxcdTAwM2VmaWZvZGF0YVswXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MTA6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fQ0ZHMiwgYWctXFx1MDAzZWZpZm9kYXRhWzFdKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkxMTpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfRklGT19DRkc0LCBGSUZPX0NGRzRfSU5JVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MTI6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fQ0ZHNSwgRklGT19DRkc1X0lOSVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTEzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkxNTpzdGF0aWMgdW5zaWduZWQgaW50IGFnNzF4eF9tYXhfZnJhbWVfbGVuKHVuc2lnbmVkIGludCBtdHUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MjA6c3RhdGljIHZvaWQgYWc3MXh4X2h3X3NldF9tYWNhZGRyKHN0cnVjdCBhZzcxeHggKmFnLCBjb25zdCB1bnNpZ25lZCBjaGFyICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5Mjc6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19BRERSMSwgdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MjktXFx0dCA9ICgoKHUzMiltYWNbMV0pIFxcdTAwM2NcXHUwMDNjIDI0KSB8ICgoKHUzMiltYWNbMF0pIFxcdTAwM2NcXHUwMDNjIDE2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjkzMDpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUFDX0FERFIyLCB0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTkzMS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5MzM6c3RhdGljIHZvaWQgYWc3MXh4X2Zhc3RfcmVzZXQoc3RydWN0IGFnNzF4eCAqYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5Mzk6XFx0YWc3MXh4X2h3X3N0b3AoYWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTQxOlxcdG1paV9yZWcgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfTUlJX0NGRyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NDI6XFx0cnhfZHMgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfUlhfREVTQyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NDQ6XFx0YWc3MXh4X3R4X3BhY2tldHMoYWcsIHRydWUsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NTE6XFx0YWc3MXh4X2RtYV9yZXNldChhZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5NTI6XFx0YWc3MXh4X2h3X3NldHVwKGFnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk1My1cXHRhZy1cXHUwMDNldHhfcmluZy5jdXJyID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTU3LVxcdC8qIHNldHVwIG1heCBmcmFtZSBsZW5ndGggKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk1ODpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUFDX01GTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk1OTpcXHRcXHQgIGFnNzF4eF9tYXhfZnJhbWVfbGVuKGFnLVxcdTAwM2VuZGV2LVxcdTAwM2VtdHUpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk2MTpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfUlhfREVTQywgcnhfZHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTYyOlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19UWF9ERVNDLCBhZy1cXHUwMDNldHhfcmluZy5kZXNjc19kbWEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTYzOlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NSUlfQ0ZHLCBtaWlfcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk2NTpcXHRhZzcxeHhfaHdfc2V0X21hY2FkZHIoYWcsIGRldi1cXHUwMDNlZGV2X2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTY2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk2ODpzdGF0aWMgdm9pZCBhZzcxeHhfaHdfc3RhcnQoc3RydWN0IGFnNzF4eCAqYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05Njkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTcwLVxcdC8qIHN0YXJ0IFJYIGVuZ2luZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTcxOlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19SWF9DVFJMLCBSWF9DVFJMX1JYRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05NzMtXFx0LyogZW5hYmxlIGludGVycnVwdHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk3NDpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfSU5UX0VOQUJMRSwgQUc3MVhYX0lOVF9JTklUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTc5OnN0YXRpYyB2b2lkIGFnNzF4eF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4MC1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo5ODI6XFx0c3RydWN0IGFnNzF4eCAqYWcgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGNvbmZpZy1cXHUwMDNlZGV2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05ODMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjk4NzpcXHRpZiAoIWFnNzF4eF9pcyhhZywgQVI3MTAwKSBcXHUwMDI2XFx1MDAyNiAhYWc3MXh4X2lzKGFnLCBBUjkxMzApKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTg4OlxcdFxcdGFnNzF4eF9mYXN0X3Jlc2V0KGFnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTk4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTk1OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19GSUZPX0NGRzMsIGFnLVxcdTAwM2VmaWZvZGF0YVsyXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy05OTYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6OTk4OnN0YXRpYyB2b2lkIGFnNzF4eF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtOTk5LVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTAwMTpcXHRzdHJ1Y3QgYWc3MXh4ICphZyA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoY29uZmlnLVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDAzOlxcdGFnNzF4eF9od19zdG9wKGFnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMDQtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwMDY6c3RhdGljIHZvaWQgYWc3MXh4X21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAwNy1cXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAxMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDEyOlxcdHN0cnVjdCBhZzcxeHggKmFnID0gbmV0ZGV2X3ByaXYodG9fbmV0X2Rldihjb25maWctXFx1MDAzZWRldikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAxMy1cXHR1MzIgY2ZnMSwgY2ZnMjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwMTc6XFx0Y2ZnMiA9IGFnNzF4eF9ycihhZywgQUc3MVhYX1JFR19NQUNfQ0ZHMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDE4LVxcdGNmZzIgXFx1MDAyNj0gfihNQUNfQ0ZHMl9JRl8xMDAwIHwgTUFDX0NGRzJfSUZfMTBfMTAwIHwgTUFDX0NGRzJfRkRYKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwMjE6XFx0aWZjdGwgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfTUFDX0lGQ1RMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMjItXFx0aWZjdGwgXFx1MDAyNj0gfihNQUNfSUZDVExfU1BFRUQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTAyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwMjQ6XFx0ZmlmbzUgPSBhZzcxeHhfcnIoYWcsIEFHNzFYWF9SRUdfRklGT19DRkc1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwMjUtXFx0ZmlmbzUgXFx1MDAyNj0gfkZJRk9fQ0ZHNV9CTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTA0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwNDM6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcyLCBjZmcyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjEwNDQ6XFx0YWc3MXh4X3dyKGFnLCBBRzcxWFhfUkVHX0ZJRk9fQ0ZHNSwgZmlmbzUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA0NTpcXHRhZzcxeHhfd3IoYWcsIEFHNzFYWF9SRUdfTUFDX0lGQ1RMLCBpZmN0bCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA0NzpcXHRjZmcxID0gYWc3MXh4X3JyKGFnLCBBRzcxWFhfUkVHX01BQ19DRkcxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwNDgtXFx0Y2ZnMSBcXHUwMDI2PSB+KE1BQ19DRkcxX1RGQyB8IE1BQ19DRkcxX1JGQyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTEwNTMtXFx0XFx0Y2ZnMSB8PSBNQUNfQ0ZHMV9SRkM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMDU0OlxcdGFnNzF4eF93cihhZywgQUc3MVhYX1JFR19NQUNfQ0ZHMSwgY2ZnMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA1NjpcXHRhZzcxeHhfaHdfc3RhcnQoYWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTA1Ny19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMDU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA1OTpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBhZzcxeHhfcGh5bGlua19tYWNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA2MDpcXHQubWFjX2NvbmZpZyA9IGFnNzF4eF9tYWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA2MTpcXHQubWFjX2xpbmtfZG93biA9IGFnNzF4eF9tYWNfbGlua19kb3duLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTA2MjpcXHQubWFjX2xpbmtfdXAgPSBhZzcxeHhfbWFjX2xpbmtfdXAsXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjM0LjEzNDYwNDcyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTAxMzcxNTA2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBhZzcxeHggUGxhdGZvcm0gRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgYWc3MXh4X2RyaXZlcmAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDsgaXQncyBhIHN0YW5kYXJkIHBsYXRmb3JtIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcz8gVGhlIGltbWVkaWF0ZSBhbnN3ZXIgaXMgdXN1YWxseSBubywgc3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IGp1c3QgY29uanVyZSB1cCBwbGF0Zm9ybSBkZXZpY2VzIHZpYSBkZXZpY2UgdHJlZSBvdmVybGF5cyB3aXRob3V0IHNvbWUgc3BlY2lmaWMgc2V0dXAuXG5cbk15IGJyYWluIGp1bXBzIHRvIHdoZXRoZXIgdGhlcmUgaXMgc29tZSBgc3l6X2Rldl9jcmVhdGVgIGVxdWl2YWxlbnQsIGJ1dCBub3RoaW5nIGNvbWVzIHRvIG1pbmQsIGp1c3QgdGhlIG1vcmUgc3BlY2lmaWMgc3l6a2FsbGVyIGNhbGxzIGZvciBVU0IsIDgwMi4xMSwgZXRjLiBQbGF0Zm9ybSBkcml2ZXJzIG5lZWQgdG8gYmUgKmluc3RhbnRpYXRlZCogdG8gYmUgZnV6emVkIGJ5IHN5emthbGxlci4gSWYgaXTigJlzIGEgcHNldWRvLWRldmljZSBvciB3ZSBoYXZlIGEgc3BlY2lmaWMgd2F5IHRvIGxvYWQgRFQgb3ZlcmxheXMsIHRoZW4gaXQgd29uJ3QgYmUgcHJvYmVkLlxuXG5CdXQgd2FpdCwgdGhlIHByb21wdCByZW1pbmRzIG1lIGFib3V0IGNvZGUgdGhhdOKAmXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGlzIGRyaXZlciBpcyBmb3IgYW4gb24tY2hpcCBFdGhlcm5ldCBNQUMgb24gQXRoZXJvcyBNSVBTIFNvQ3MuIEl0J3MgZGlyZWN0bHkgaGl0dGluZyBNTUlPIHJlZ2lzdGVycywgZG9pbmcgYGlvd3JpdGUzMmAgYW5kIHN1Y2guIElmIHdlIG1hZ2ljYWxseSBpbnN0YW50aWF0ZWQgdGhpcywgaXQgd291bGQgdHJ5IHRvIHRhbGsgdG8gcGh5c2ljYWwgbWVtb3J5IGFkZHJlc3NlcyB3aGljaCwgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLCB3b3VsZCBlaXRoZXIgY3Jhc2ggb3IgZG8gbm90aGluZyBiZWNhdXNlIHRoYXQgaGFyZHdhcmUgaXNuJ3QgdGhlcmUuXG5cblRoZSBxdWVzdGlvbiB0aGVuIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSB0aGUgQVI3MXh4IFNvQz8gQW5kIGRvZXMgc3l6a2FsbGVyIGV2ZW4gKnJ1biogb24gTUlQUz8gSSBrbm93IHN5emthbGxlciAqZG9lcyogc3VwcG9ydCBNSVBTLiBBcyBmb3IgUUVNVSwgSSdtIHByZXR0eSBzdXJlIGl0IGhhcyBhIGBtYWx0YWAgdGFyZ2V0IGFuZCBtYXliZSBhIGZldyBvdGhlciBNSVBTIGJvYXJkcywgYnV0IEkgZG91YnQgaXQgaGFzIGZ1bGwtYmxvd24gQVI3MXh4IHN1cHBvcnQsIGF0IGxlYXN0IG5vdCBpbiBhIGdlbmVyaWMgbWFjaGluZSB0eXBlLiBPcGVuV3J0IHVzZXMgUUVNVSwgYnV0IGZvciBzcGVjaWZpYyBBdGhlcm9zIGJvYXJkcy5cblxuU28sIGxldCdzIHNlZSBpZiB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IHJlYWNoYWJsZS4gSXTigJlzIGFuIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIsIHJpZ2h0PyBTbyB1bmxlc3Mgd2UncmUgcnVubmluZyBvbiB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLCBpdCdzIGdlbmVyYWxseSBhIGRlYWQgZW5kLiBCdXQsIHRoZSBwcm9tcHQgYWxzbyBzYXlzIHRoYXQgaWYgaXQgbW9kaWZpZXMgKnJlYWNoYWJsZSogY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIGl0J3MgcG90ZW50aWFsbHkgd29ydGggZnV6emluZy5cblxuT2theSwgaXMgdGhlcmUgYSB0cmlnZ2VyPyBJdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBpdCBwcm9iZXMgd2hlbiBhIGRldmljZSB3aXRoIGEgXCJxY2EsYXI3MTAwLWV0aFwiIGNvbXBhdGlibGUgc3RyaW5nIChvciBzaW1pbGFyKSBpcyBwcmVzZW50IGluIHRoZSBkZXZpY2UgdHJlZS4gSWYgd2UncmUgb24geDg2XzY0LCBpdCdzIGEgZGVmaW5pdGUgbm8tZ28uIEV2ZW4gaWYgd2UgY29tcGlsZSBpdCB3aXRoIENPTVBJTEVfVEVTVCBvbiB4ODZfNjQsIHRoZSBwbGF0Zm9ybSBkZXZpY2Ugd2lsbCBub3QgYmUgdGhlcmUsIHNvIGBhZzcxeHhfcHJvYmVgIHdvdWxkIG5ldmVyIGJlIGNhbGxlZC4gU28sIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGl0LCBzaW5jZSBpdCdzIGhhcmR3YXJlIE1BQy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBgYWc3MXh4X21hdGNoYCB0YWJsZSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NDA1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjQ1LjE0ODMyMzI2N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4OTQ3ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWc3MXh4X21hdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz0xOTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWc3MXh4X2RjZmcgYWc3MXh4X2RjZmdfcWNhOTU1MCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjAwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjIwMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYWc3MXh4X21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0yMDA1LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwicWNhLGFyNzEwMC1ldGhcXFwiLCAuZGF0YSA9IFxcdTAwMjZhZzcxeHhfZGNmZ19hcjcxMDAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjAxNi19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MjAxNzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhZzcxeHhfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjAxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTIwMTk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWc3MXh4X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMjAyMi1cXHRcXHQubmFtZVxcdD0gXFxcImFnNzF4eFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoyMDIzOlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGFnNzF4eF9tYXRjaCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTIwMjQtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQyMzoyMDo0NS4yMDYyMjczODFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzk4Mjg5NjczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbmZ1enphYmxlIFBsYXRmb3JtIERyaXZlcioqXG5cbk9rYXksIHNvIHRoaXMgaXMgYSBzdGFuZGFyZCBPcGVuIEZpcm13YXJlIChPRikgcGxhdGZvcm0gZHJpdmVyLiBTdHJhaWdodCBhd2F5LCBJIGNhbiB0ZWxsIGl0J3MgdGllZCB0byBhIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGUsIHNvbWV0aGluZyBsaWtlIFwicWNhLGFyNzEwMC1ldGhcIiwgYW5kIGl0J3MgYWNjZXNzaW5nIHBoeXNpY2FsIE1NSU8gcmVnaXN0ZXJzIOKAkyB0aGF0J3MgYSBodWdlIHJlZCBmbGFnLiBJdCdzIG5vdCBnb2luZyB0byBiZSBmdXp6YWJsZSBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdW5sZXNzIHlvdSBoYXZlIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLCB3aGljaCBRRU1VICptaWdodCogaGF2ZSwgYnV0IFN5emthbGxlciB0eXBpY2FsbHkgZG9lc24ndCBldmVuIGJvb3QgdGhhdCBzcGVjaWZpYyBtYWNoaW5lIHR5cGUgZm9yIGdlbmVyYWwgZnV6emluZywgeW91IGtub3c/XG5cbkhtbSwgSSB3b25kZXIsIHdoYXQgaWYgU3l6a2FsbGVyIHRyaWVzIHRvIGluamVjdCBhIHBsYXRmb3JtIGRldmljZSB1c2luZyBgc3l6X2Rldl9jcmVhdGVgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBFdmVuICppZiogaXQgY291bGQsIHRoaXMgZHJpdmVyIHdvdWxkIGltbWVkaWF0ZWx5IGhpdCBhIHdhbGwuIEl0IHdvdWxkIHVzZSBgaW9yZW1hcGAgb24gc29tZSByYW5kb20gcGh5c2ljYWwgYWRkcmVzcyBhbmQgdHJ5IHRvIHJlYWQgb3Igd3JpdGUgaXQuIElmIHRoYXQgcGh5c2ljYWwgYWRkcmVzcyBpc24ndCBhY3R1YWxseSBiYWNrZWQgYnkgZW11bGF0ZWQgaGFyZHdhcmUsIGl0J3MgZWl0aGVyIGdvaW5nIHRvIHJlYWQgYWxsIDB4RkZzLCBhbmQgYmUgdXNlbGVzcywgb3IgaXQnbGwgY3Jhc2ggaW1tZWRpYXRlbHkgYW5kIGJlIHVuYWJsZSB0byBwZXJmb3JtIGFueSBtZWFuaW5nZnVsIG5ldHdvcmsgb3BlcmF0aW9ucyB0aGF0IHJlcXVpcmUgRE1BIG9yIGludGVycnVwdHMuXG5cblNvLCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBkcml2ZXIgaXMgbm90IGdvaW5nIHRvIGJlIGZ1enphYmxlLiBMZXQgbWUgZ28gYmFjayB0byB0aGUgcHJvbXB0LCBhbmQgc2VlIGlmIEkgaGF2ZSBhIHRlc3QuXG5cbkFoLCBoZXJlIGl0IGlzOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuIE5haWxlZCBpdC4gVGhpcyBwZXJmZWN0bHkgZGVzY3JpYmVzIHRoZSBzaXR1YXRpb24uIFRoZSBkcml2ZXIgaXMgZm9yIHRoZSBBdGhlcm9zIEFSN3h4eC9BUjl4eHggb24tY2hpcCBFdGhlcm5ldCBNQUNzLiBUaGF0IGhhcmR3YXJlIGlzbid0IGVtdWxhdGVkIGluIHRoZSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnRzLlxuXG5JJ20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5UaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzb2xpZDogVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhZzcxeHggRXRoZXJuZXQgTUFDIGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aGUgb24tY2hpcCBoYXJkd2FyZSBmb3VuZCBpbiBBUjd4eHgvQVI5eHh4IE1JUFMgU29Dcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhbmQgZXZlbiBpZiBDT01QSUxFX1RFU1QgY29tcGlsZXMgaXQsIHRoZSBhYnNlbmNlIG9mIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYW5kIGVtdWxhdGVkIE1NSU8vRE1BIGhhcmR3YXJlIG1ha2VzIHRoZSBjaGFuZ2VkIGNvZGUgcGF0aHMgZW50aXJlbHkgdW5yZWFjaGFibGUgYW5kIHVuZnV6emFibGUuIFRoYXQncyBhIGRlZmluaXRlIFwibm8gZ29cIiBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEyMzUsIk91dHB1dFRva2VucyI6MTM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDIzOjIwOjUzLjE4OTEyNzkxM1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGFnNzF4eCBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igb24tY2hpcCBoYXJkd2FyZSBmb3VuZCBpbiBzcGVjaWZpYyBNSVBTIFNvQ3MgKEFSN3h4eC9BUjl4eHgpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIGdlbmVyaWMgUUVNVSkgdXNlZCBmb3IgZnV6emluZy4gRXZlbiBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHZpYSBDT01QSUxFX1RFU1QsIHRoZSBsYWNrIG9mIGEgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSBkZXZpY2UgYW5kIGVtdWxhdGVkIE1NSU8vRE1BIGhhcmR3YXJlIG1ha2VzIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGFuZCB1bmZ1enphYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEF0aGVyb3MgYWc3MXh4IEV0aGVybmV0IE1BQyBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBvbi1jaGlwIGhhcmR3YXJlIGZvdW5kIGluIHNwZWNpZmljIE1JUFMgU29DcyAoQVI3eHh4L0FSOXh4eCkuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgZ2VuZXJpYyBRRU1VKSB1c2VkIGZvciBmdXp6aW5nLiBFdmVuIGlmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgdmlhIENPTVBJTEVfVEVTVCwgdGhlIGxhY2sgb2YgYSBjb3JyZXNwb25kaW5nIHBsYXRmb3JtIGRldmljZSBhbmQgZW11bGF0ZWQgTU1JTy9ETUEgaGFyZHdhcmUgbWFrZXMgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgYW5kIHVuZnV6emFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg7gsg[1] Phase: Running StartedAt: 2026-06-28 23:21:04 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg7gsg[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-28 23:21:04 +0000 UTC FinishedAt: 2026-06-28 23:21:10 +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,}