Name: series-workflowfj5rw Phase: Failed StartedAt: 2026-09-03 00:40:37 +0000 UTC FinishedAt: 2026-09-03 01:26:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfj5rw[0] Phase: Succeeded StartedAt: 2026-09-03 00:40:37 +0000 UTC FinishedAt: 2026-09-03 01:25:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfj5rw[0].run-triage Phase: Succeeded StartedAt: 2026-09-03 00:40:37 +0000 UTC FinishedAt: 2026-09-03 01:25:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGxhbjg4N3hfcGh5X2luaXQoKSB3aXRoaW4gdGhlIE1pY3JvY2hpcCBUMSBFdGhlcm5ldCBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBwaHlzaWNhbCBNaWNyb2NoaXAgTEFOODg3eCBhdXRvbW90aXZlIEV0aGVybmV0IFBIWSBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgb3IgcHJvYmVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODNlZjJjYmQ1N2Q3ZjNlMjI5NjhkNTc1ODIwMTQ4NjkzZGI1NzYyN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDMgMDE6MjQ6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXG5pbmRleCAzMjkyYjIyMzVjOGZhLi5lMzhkMjBiZjZhYTRjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbkBAIC0xMjg1LDE0ICYjNDM7MTI4NSwxNiBAQCBzdGF0aWMgaW50IGxhbjg4N3hfcGh5X2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZWNsb2NrKSlcbiBcdFx0XHRyZXR1cm4gUFRSX0VSUihwcml2LVx1MDAzZWNsb2NrKTtcbiBcbi1cdFx0LyogRW5hYmxlIHBpbiBtdXggZm9yIEVWVCAqL1xuLVx0XHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuLVx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMSxcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLFxuLVx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xuLVxuLVx0XHQvKiBJbml0aWFsaXplIHBpbiBudW1iZXJzIHNwZWNpZmljIHRvIFBFUk9VVCAqL1xuLVx0XHRwcml2LVx1MDAzZWNsb2NrLVx1MDAzZWV2ZW50X3BpbiA9IDM7XG4mIzQzO1x0XHRpZiAocHJpdi1cdTAwM2VjbG9jaykge1xuJiM0MztcdFx0XHQvKiBFbmFibGUgcGluIG11eCBmb3IgRVZUICovXG4mIzQzO1x0XHRcdHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG4mIzQzO1x0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxuJiM0MztcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4sXG4mIzQzO1x0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTik7XG4mIzQzO1xuJiM0MztcdFx0XHQvKiBJbml0aWFsaXplIHBpbiBudW1iZXJzIHNwZWNpZmljIHRvIFBFUk9VVCAqL1xuJiM0MztcdFx0XHRwcml2LVx1MDAzZWNsb2NrLVx1MDAzZWV2ZW50X3BpbiA9IDM7XG4mIzQzO1x0XHR9XG4gXG4gXHRcdHByaXYtXHUwMDNlaW5pdF9kb25lID0gdHJ1ZTtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToyNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gbGFuODg3eF9waHlfaW5pdCgpIHdpdGhpbiB0aGUgTWljcm9jaGlwIFQxIEV0aGVybmV0IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYykuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIHBoeXNpY2FsIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZIGhhcmR3YXJlIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBwcm9iZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4M2VmMmNiZDU3ZDdmM2UyMjk2OGQ1NzU4MjAxNDg2OTNkYjU3NjI3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAwMToyNDo0MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYwppbmRleCAzMjkyYjIyMzVjOGZhLi5lMzhkMjBiZjZhYTRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jCkBAIC0xMjg1LDE0ICYjNDM7MTI4NSwxNiBAQCBzdGF0aWMgaW50IGxhbjg4N3hfcGh5X2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJaWYgKElTX0VSUihwcml2LSZndDtjbG9jaykpCiAJCQlyZXR1cm4gUFRSX0VSUihwcml2LSZndDtjbG9jayk7CiAKLQkJLyogRW5hYmxlIHBpbiBtdXggZm9yIEVWVCAqLwotCQlwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLAotCQkJICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLAotCQkJICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTiwKLQkJCSAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pOwotCi0JCS8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovCi0JCXByaXYtJmd0O2Nsb2NrLSZndDtldmVudF9waW4gPSAzOwomIzQzOwkJaWYgKHByaXYtJmd0O2Nsb2NrKSB7CiYjNDM7CQkJLyogRW5hYmxlIHBpbiBtdXggZm9yIEVWVCAqLwomIzQzOwkJCXBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsCiYjNDM7CQkJCSAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMSwKJiM0MzsJCQkJICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTiwKJiM0MzsJCQkJICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTik7CiYjNDM7CiYjNDM7CQkJLyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi8KJiM0MzsJCQlwcml2LSZndDtjbG9jay0mZ3Q7ZXZlbnRfcGluID0gMzsKJiM0MzsJCX0KIAogCQlwcml2LSZndDtpbml0X2RvbmUgPSB0cnVlOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzOgoKKipFeGFtaW5pbmcgdGhlIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGlzIHBhdGNoLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyBpbiBgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jYC4gR29vZCwgdGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gTm93LCBsZXQmIzM5O3MgZ2V0IGEgbG9vayBhdCB0aGUgcmVsZXZhbnQgc2VjdGlvbiBvZiB0aGF0IGZpbGUuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byBleGFtaW5lIGFyb3VuZCBsaW5lIDEyODUuIFVzdWFsbHksIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjaGFuZ2VzIHdpbGwgYmUuIEkmIzM5O2xsIGZpcmUgdXAgbXkgdHJ1c3R5IGByZWFkLWZpbGVgIGNvbW1hbmQgdG8gcHVsbCB0aGUgZmlsZSBhbmQgdGhlIHN1cnJvdW5kaW5nIGxpbmVzIGludG8gdmlldy4gVGhpcyB3aWxsIGxldCBtZSBxdWlja2x5IGFzc2VzcyB0aGUgY29udGV4dCBhbmQgcGlucG9pbnQgdGhlIG1vZGlmaWNhdGlvbnMuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyNjA6XHRcbjEyNjE6XHRcdHJldCA9IGdlbnBoeV9jNDVfcG1hX3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XG4xMjYyOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTI2MzpcdFx0XHRyZXR1cm4gcmV0O1xuMTI2NDpcdFxuMTI2NTpcdFx0LyogRW5hYmxlIHR3aXN0ZWQgcGFpciAqL1xuMTI2NjpcdFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9UUF9CSVQsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpO1xuMTI2NzpcdFxuMTI2ODpcdFx0LyogRmlyc3QgcGF0Y2ggb25seSBzdXBwb3J0cyAxMDBNYnBzIGFuZCAxMDAwTWJwcyBmb3JjZS1tb2RlLlxuMTI2OTpcdFx0ICogVDEgQXV0by1OZWdvdGlhdGlvbiAoQ2xhdXNlIDk4IG9mIElFRUUgODAyLjMpIHdpbGwgYmUgYWRkZWQgbGF0ZXIuXG4xMjcwOlx0XHQgKi9cbjEyNzE6XHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCwgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4xMjcyOlx0XG4xMjczOlx0XHRyZXR1cm4gMDtcbjEyNzQ6XHR9XG4xMjc1Olx0XG4xMjc2Olx0c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4xMjc3Olx0e1xuMTI3ODpcdFx0c3RydWN0IGxhbjg4N3hfcHJpdiAqcHJpdiA9IHBoeWRldi1cdTAwM2Vwcml2O1xuMTI3OTpcdFx0aW50IHJldDtcbjEyODA6XHRcbjEyODE6XHRcdGlmICghcHJpdi1cdTAwM2Vpbml0X2RvbmUgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkge1xuMTI4MjpcdFx0XHRwcml2LVx1MDAzZWNsb2NrID0gbWNocF9yZHNfcHRwX3Byb2JlKHBoeWRldiwgTURJT19NTURfVkVORDEsXG4xMjgzOlx0XHRcdFx0XHRcdFx0IE1DSFBfUkRTX1BUUF9MVENfQkFTRV9BRERSLFxuMTI4NDpcdFx0XHRcdFx0XHRcdCBNQ0hQX1JEU19QVFBfUE9SVF9CQVNFX0FERFIpO1xuMTI4NTpcdFx0XHRpZiAoSVNfRVJSKHByaXYtXHUwMDNlY2xvY2spKVxuMTI4NjpcdFx0XHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlY2xvY2spO1xuMTI4NzpcdFxuMTI4ODpcdFx0XHRpZiAocHJpdi1cdTAwM2VjbG9jaykge1xuMTI4OTpcdFx0XHRcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cbjEyOTA6XHRcdFx0XHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuMTI5MTpcdFx0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxuMTI5MjpcdFx0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcbjEyOTM6XHRcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xuMTI5NDpcdFxuMTI5NTpcdFx0XHRcdC8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovXG4xMjk2Olx0XHRcdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuMTI5NzpcdFx0XHR9XG4xMjk4Olx0XG4xMjk5Olx0XHRcdHByaXYtXHUwMDNlaW5pdF9kb25lID0gdHJ1ZTtcbjEzMDA6XHRcdH1cbjEzMDE6XHRcbjEzMDI6XHRcdC8qIENsZWFyIGxvb3BiYWNrICovXG4xMzAzOlx0XHRyZXQgPSBwaHlfY2xlYXJfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbjEzMDQ6XHRcdFx0XHRcdCBMQU44ODdYX01JU19DRkdfUkVHMixcbjEzMDU6XHRcdFx0XHRcdCBMQU44ODdYX01JU19DRkdfUkVHMl9GRV9MUEJLX0VOKTtcbjEzMDY6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMzA3Olx0XHRcdHJldHVybiByZXQ7XG4xMzA4Olx0XG4xMzA5Olx0XHQvKiBDb25maWd1cmUgZGVmYXVsdCBiZWhhdmlvciBvZiBsZWQgdG8gbGluayBhbmQgYWN0aXZpdHkgZm9yIGFueVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0NTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTdWl0YWJpbGl0eSBvZiBhIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkcml2ZXIgYWN0dWFsbHkgc3VwcG9ydHM7IGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZm9yIE1pY3JvY2hpcCYjMzk7cyBMQU44ODd4LCBMQU44N3h4IGFuZCBvdGhlciBFdGhlcm5ldCBQSFkgdHJhbnNjZWl2ZXJzLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IHRlc3QgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCByZWxpZXMgb24gYSBzcGVjaWZpYyBwaHlzaWNhbCBzZXR1cOKAlGEgcGh5c2ljYWwgTURJTyBpbnRlcmZhY2Ugb3IgYSBwaHlzaWNhbCBQSFkgY2hpcOKAlHRoYXQgaXNuJiMzOTt0IHR5cGljYWxseSBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQuCgpJIG5lZWQgdG8gcmVmZXIgYmFjayB0byB0aGUgaW5zdHJ1Y3Rpb25zIEkgd2FzIGdpdmVuLiBJIGhhdmUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyB0aGluZ3MgdGhhdCBhcmUgb2ZmLWxpbWl0czogZG9jdW1lbnRhdGlvbiB1cGRhdGVzLCBLY29uZmlnIG1vZGlmaWNhdGlvbnMsIGRlY29yYXRpdmUgY2hhbmdlcyAobG9nZ2luZywgdHJhY2Vwb2ludHMpLCBvciBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIHdpdGhvdXQgYWx0ZXJpbmcgdGhlIHByb2dyYW0gZmxvdy4gQWxzbywgYW5kIGltcG9ydGFudGx5LCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYXJlIG91dC4gVGhpcyBpcyBhIHZlcnkgaW1wb3J0YW50IGNvbnNpZGVyYXRpb24hIEZpbmFsbHksIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaC9TbWFydE5JQy9HUFUgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgY2FyZHMgYXJlIG91dCBvZiBib3VuZHMsIGFuZCBzbyBhcmUgdGVhcmRvd24gY2FsbGJhY2tzIGZvciBkcml2ZXJzLgoKU28sIEkgbmVlZCB0byBjb25maXJtIGlmIGBtaWNyb2NoaXBfdDEuY2AgaXMgaW5kZWVkIGZvciBwaHlzaWNhbCBFdGhlcm5ldCBQSFlzLCBzcGVjaWZpY2FsbHkgdGhvc2UgMTAwQkFTRS1UMS8xMDAwQkFTRS1UMSBTaW5nbGUgUGFpciBFdGhlcm5ldCBQSFlzIChMQU44ODd4L0xBTjg3eHgpLiBUaGUgY29yZSBvZiB0aGUgYW5hbHlzaXMgaXMgd2hldGhlciBQSFkgZHJpdmVycywgbGlrZSB0aGlzIGBtaWNyb2NoaXBfdDFgLCBjYW4gYWN0dWFsbHkgYmUgcHJvYmVkLCBlbXVsYXRlZCwgb3IgcmVhc29uYWJseSB0ZXN0ZWQgaW4gUUVNVS9HQ0UsIG9yIHdoZXRoZXIgaXQmIzM5O3MgbG9ja2VkIHRvIHBoeXNpY2FsIGhhcmR3YXJlLiBJJiMzOTtsbCBuZWVkIHRvIHNlYXJjaCB0aGUgYE1ha2VmaWxlYCBhbmQgYEtjb25maWdgIGZpbGVzIGZvciBgbWljcm9jaGlwX3QxYCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWljcm9jaGlwX3QxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT04MT1vYmotJChDT05GSUdfTUlDUk9DSElQX1BIWV9SRFNfUFRQKVx0JiM0Mzs9IG1pY3JvY2hpcF9yZHNfcHRwLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MjpvYmotJChDT05GSUdfTUlDUk9DSElQX1QxX1BIWSlcdCYjNDM7PSBtaWNyb2NoaXBfdDEub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFTX1BIWSkgJiM0Mzs9IG1pY3JvY2hpcF90MXMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTg0LW9iai0kKENPTkZJR19NSUNST1NFTUlfUEhZKVx0JiM0Mzs9IG1zY2MvXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIwNzI9c3RhdGljIGludCBsYW44ODd4X2dldF9zcWkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjEwNS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTA2OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFfcGh5X2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxMDctXHR7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNjQtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE2NTptb2R1bGVfcGh5X2RyaXZlcihtaWNyb2NoaXBfdDFfcGh5X2RyaXZlcik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE2Ni1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTY3OnN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbWljcm9jaGlwX3QxX3RibFtdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNjgtXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODdYWCkgfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE3My1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTc0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgbWljcm9jaGlwX3QxX3RibCk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE3NS1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTQ5ND1zdGF0aWMgaW50IGxhbjg2eHhfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTUwOC1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTA5OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MTAtXHR7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01NjYtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjU2Nzptb2R1bGVfcGh5X2RyaXZlcihtaWNyb2NoaXBfdDFzX2RyaXZlcik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU2OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDY0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipLY29uZmlnIElucXVpcnkgLSBNaWNyb2NoaXAgVDEgUEhZIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzdGF0dXMgb2YgdGhlIE1pY3JvY2hpcCBUMSBQSFkgZHJpdmVyIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBLY29uZmlnIHN5c3RlbS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbG9jYXRlIGFuZCB2ZXJpZnkgdGhlIGV4aXN0ZW5jZSBhbmQgY3VycmVudCBzZXR0aW5ncyBvZiBgQ09ORklHX01JQ1JPQ0hJUF9UMV9QSFlgLiBJIG5lZWQgdG8gYXNzZXNzIHdoZXRoZXIgdGhpcyBpcyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgcGVyaGFwcyBjb25kaXRpb25hbGx5IGRlZmluZWQuIFVuZGVyc3RhbmRpbmcgaXRzIHN0YXR1cyBpcyBjcnVjaWFsIGJlZm9yZSBJIGNvbnRpbnVlIGRvd24gdGhpcyBwYXRoLiBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIHN0YW5kIHdpdGggdGhpcyBiZWZvcmUgcHJvY2VlZGluZyBmdXJ0aGVyLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhlIEtjb25maWcgZmlsZXMgbm93Li4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUlDUk9DSElQX1QxX1BIWSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0zMzY9Y29uZmlnIE1JQ1JPQ0hJUF9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zNDAtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzozNDE6Y29uZmlnIE1JQ1JPQ0hJUF9UMV9QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTM0Mi1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBUMSBQSFlzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTgxPW9iai0kKENPTkZJR19NSUNST0NISVBfUEhZX1JEU19QVFApXHQmIzQzOz0gbWljcm9jaGlwX3Jkc19wdHAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgyOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFfUEhZKVx0JiM0Mzs9IG1pY3JvY2hpcF90MS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtODMtb2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9UMVNfUEhZKSAmIzQzOz0gbWljcm9jaGlwX3Qxcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ1MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFBIWSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHNvbWV0aGluZyByZWxhdGVkIHRvIFBIWSBjb25maWd1cmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgZmlsZXMsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLiBUaGF0IGZpbGUmIzM5O3MgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB2YXJpb3VzIFBIWXMgYXJlIHN1cHBvcnRlZCBhbmQgY29uZmlndXJlZCB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIFNpbmNlIEkmIzM5O20gZm9jdXNpbmcgb24gY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgc3RhcnQgYXJvdW5kIGxpbmUgMzQxLiBDaGFuY2VzIGFyZSwgdGhhdCYjMzk7cyB3aGVyZSBJIGNhbiBmaW5kIGEgcmVsZXZhbnQgb3B0aW9uLCBkZXBlbmRlbmN5LCBvciBhIGNvbW1lbnQgdGhhdCBwcm92aWRlcyBjcnVjaWFsIGNvbnRleHQgb24gdGhlIHNwZWNpZmljIGFzcGVjdHMgSSYjMzk7bSBpbnRlcmVzdGVkIGluLiBUaGUgS2NvbmZpZyBmaWxlIGlzIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtkIGNoZWNrIHdoZW4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGludGVyYWN0IHdpdGggYW5kIGNvbnRyb2wgdGhlIGZlYXR1cmVzIHByb3ZpZGVkIGJ5IHRoZSBzcGVjaWZpYyBQSFkmIzM5O3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMzNTpcdFxuIDMzNjpcdGNvbmZpZyBNSUNST0NISVBfUEhZXG4gMzM3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgUEhZc1wmIzM0O1xuIDMzODpcdFx0aGVscFxuIDMzOTpcdFx0ICBTdXBwb3J0cyB0aGUgTEFOODhYWCBQSFlzLlxuIDM0MDpcdFxuIDM0MTpcdGNvbmZpZyBNSUNST0NISVBfVDFfUEhZXG4gMzQyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgVDEgUEhZc1wmIzM0O1xuIDM0MzpcdFx0c2VsZWN0IE1JQ1JPQ0hJUF9QSFlfUkRTX1BUUCBpZiBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbiAzNDQ6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAzNDU6XHRcdGhlbHBcbiAzNDY6XHRcdCAgU3VwcG9ydHMgdGhlIExBTjhYWFggUEhZcy5cbiAzNDc6XHRcbiAzNDg6XHRjb25maWcgTUlDUk9DSElQX1BIWV9SRFNfUFRQXG4gMzQ5Olx0XHR0cmlzdGF0ZVxuIDM1MDpcdFx0aGVscFxuIDM1MTpcdFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgTEFOODg3WCBUMSBQSFlcbiAzNTI6XHRcbiAzNTM6XHRjb25maWcgTUlDUk9TRU1JX1BIWVxuIDM1NDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9zZW1pIFBIWXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk3MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBMQU44ODd4IFBIWSBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnMgYW5kIG91dHMgb2YgYGxhbjg4N3hfcGh5X2luaXRgLiBXaGF0JiMzOTtzIGl0IGRvaW5nLCBhbmQgY3JpdGljYWxseSwgKndoZW4qIGlzIGl0IGJlaW5nIGNhbGxlZD8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgaW1wbGVtZW50YXRpb24gaXRzZWxmLiBMZXQmIzM5O3MgaGVhZCBvdmVyIHRvIHRoZSBgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jYCBmaWxlLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGRlZmluaXRpb24gYW5kLCBob3BlZnVsbHksIGNsdWVzIGFib3V0IHRoZSBjYWxsaW5nIGNvbnRleHQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSBhbnRpY2lwYXRlIHNvbWUgaW50ZXJlc3RpbmcgcmVnaXN0ZXIgbWFuaXB1bGF0aW9ucyBhbmQgcGVyaGFwcyBzb21lIGNsb2NrIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xhbjg4N3hfcGh5X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTEyNTc9c3RhdGljIGludCBsYW44ODd4X2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjc1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyNzY6c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTI3Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTE2MDc9c3RhdGljIGludCBsYW44ODd4X2NkX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MzItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYzMzpcdFx0cmMgPSBsYW44ODd4X3BoeV9pbml0KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYzNC1cdFx0aWYgKHJjIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yMTA2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFfcGh5X2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTQ2LVx0XHQuZ2V0X2ZlYXR1cmVzXHQ9IGxhbjg4N3hfZ2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNDc6XHRcdC5jb25maWdfaW5pdCAgICA9IGxhbjg4N3hfcGh5X2luaXQsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE0OC1cdFx0LmNvbmZpZ19hbmVnICAgID0gbGFuODg3eF9jb25maWdfYW5lZyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYzNgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDI1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aW9uIGludG8gUEhZIERldmljZSBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIFBIWSBkZXZpY2VzIGdldCByZWdpc3RlcmVkIGFuZCBtYXRjaGVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIE1ESU8gYnVzIHByb2JpbmcgcHJvY2Vzcy4gSXQgbG9va3MgbGlrZSB0aGUga2V5IGlzIHRoZSBQSFkgSUQgbWF0Y2hpbmcgdGhlIE1ESU8gSUQgcmVnaXN0ZXIgb2YgdGhlIFBIWSBpdHNlbGYuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgbWVhbnQgZm9yIGEgcmVhbCBoYXJkd2FyZSBkZXZpY2UsIG9yIGlmIHRoZXJlJiMzOTtzIHNvbWUga2luZCBvZiBlbXVsYXRvciBpbiBhIHN0YW5kYXJkIHNldHVwIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZHJpdmVyIGlzIGludGVuZGVkIGZvciB0aGUgcGh5c2ljYWwgTWljcm9jaGlwIExBTjg4N3ggQXV0b21vdGl2ZSBFdGhlcm5ldCBQSFksIHNwZWNpZmljYWxseSB0aGUgMTAwQkFTRS1UMSAvIDEwMDBCQVNFLVQxIHZlcnNpb25zLgoKVGhlIExBTjg4NzAgaXMgYSAxMDAwQkFTRS1UMSAvIDEwMEJBU0UtVDEgYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFksIHdoaWNoIGlzIGEgYml0IG9mIGEgbmljaGUgYXJlYS4gSSBuZWVkIHRvIGFzc2VzcyB0aGUgZmVhc2liaWxpdHkgb2YgdHJpZ2dlcmluZyB0aGlzIGNvZGUgcGF0aCB0aHJvdWdoIHRvb2xzIGxpa2Ugc3l6a2FsbGVyLCBRRU1VLCBvciBHQ0UuIE15IHByaW1hcnkgY29uY2VybiBpcyBpZiB0aG9zZSBlbnZpcm9ubWVudHMgY2FuIGV2ZW4gcmVhY2ggdGhpcyBkcml2ZXIuCgpUaGlua2luZyBhYm91dCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudHMsIFFFTVUgYW5kIEdDRSB0eXBpY2FsbHkgZW11bGF0ZSBFdGhlcm5ldCBOSUNzIGxpa2UgZTEwMDAsIHZpcnRpby1uZXQsIHJ0bDgxMzksIG9yIHBjbmV0LiBOb25lIG9mIHRob3NlIHNlZW0gdG8gaW5jb3Jwb3JhdGUgb3IgZW11bGF0ZSBhIE1pY3JvY2hpcCBMQU44ODd4IFQxIFBIWS4gVGhpcyBwb3NlcyBhIHByb2JsZW0uCgpTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGlzIHRoZXJlIGEgd29ya2Fyb3VuZD8gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhlcmUmIzM5O3MgYSBVU0IgTURJTyBhZGFwdGVyLCBhIFVTQi10by1NRElPIGNvbnZlcnRlciwgb3IgZXZlbiBhIHZpcnR1YWwgTURJTyBkZXZpY2UgSSBjb3VsZCB1c2UuIFBlcmhhcHMgYSBVU0IgRXRoZXJuZXQgYWRhcHRlciB0aGF0IGFjdHVhbGx5IHVzZXMgYSBMQU44ODd4LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgVVNCIGRyaXZlcnMgdGhhdCBtaWdodCBjb25uZWN0IHRvIHNvbWV0aGluZyBsYWJlbGVkIG1pY3JvY2hpcF90MSBvciBMQU44ODd4LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSURfTEFOODg3JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNi0jZGVmaW5lIFBIWV9JRF9MQU45MzdYXHRcdFx0XHQweDAwMDdjMTgwXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTc6I2RlZmluZSBQSFlfSURfTEFOODg3WFx0XHRcdFx0MHgwMDA3YzFmMFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0xNjA3PXN0YXRpYyBpbnQgbGFuODg3eF9jZF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjIxLVx0XHRcdFx0ICAgKCh2YWwgXHUwMDI2IEdFTk1BU0soMTUsIDQpKSA9PVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2MjI6XHRcdFx0XHQgICAgKFBIWV9JRF9MQU44ODdYIFx1MDAyNiBHRU5NQVNLKDE1LCA0KSkpLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MjMtXHRcdFx0XHQgICA1MDAwLCA1MDAwMCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIxMDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDEtXHR7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0MjpcdFx0UEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU44ODdYKSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTQzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O01pY3JvY2hpcCBMQU44ODd4IFQxIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MjE2Nz1zdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG1pY3JvY2hpcF90MV90YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE2OS1cdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU45MzdYKSB9LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNzA6XHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTcxLVx0eyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NDcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIE1ESU8gQnVzIENyZWF0aW9uIGluIFN5emthbGxlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgd2UgY2FuIHRlc3QgdGhlIE1ESU8gYnVzIHdpdGhpbiBzeXprYWxsZXIuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIGluc3RhbnRpYXRlIGl0IGZyb20gdXNlcnNwYWNlLCBtYXliZSB2aWEgYSBVU0IgZ2FkZ2V0IHNldHVwLCBvciBldmVuIHNpbXVsYXRlIGl0cyBjcmVhdGlvbiBkaXJlY3RseSB3aXRoaW4gc3l6a2FsbGVyJiMzOTtzIGVudmlyb25tZW50PyBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgc3RhcnQgbG9va2luZyBmb3IgdGhlIGtleSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIE1ESU8gYnVzIGFuZCBQSFkgZGV2aWNlIGNyZWF0aW9uLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGBtZGlvYnVzX3JlZ2lzdGVyYCBhbmQgYHBoeV9kZXZpY2VfY3JlYXRlYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50cyB0byB1bmRlcnN0YW5kIHRoZSBzdGFuZGFyZCBrZXJuZWwgQVBJcyBpbnZvbHZlZCBpbiB0aGlzIHByb2Nlc3MgYW5kIHRvIHNlZSB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IGhhdmUgdGhhdCB3ZSBuZWVkIHRvIHNhdGlzZnkgdG8gYnJpbmcgdXAgdGhlIGJ1cy4gSG9wZWZ1bGx5LCB0aGlzIHNlYXJjaCB3aWxsIGxlYWQgbWUgdG8gdGhlIHJpZ2h0IGNvZGUgcGF0aHMgYW5kIGhlbHAgbWUgZGV0ZXJtaW5lIGhvdyB0byBhY2hpZXZlIG15IGdvYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9idXNfcmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMzggbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdD0zNDk9TURJT1xuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdC0zNTEtICBkZXZtX21kaW9idXNfYWxsb2Nfc2l6ZSgpXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q6MzUyOiAgZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKClcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTM6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0LTM1NC1cbi0tXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdD0xMj1kZXZpY2UgKHRoZSBzYW1lIG9iamVjdHMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB2aWFcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0OjEzOmBgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KClgYCkuIE1BQy1zaWRlIGNvbm5lY3Rpb24gcHJvcGVydGllcyBzdWNoIGFzXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdC0xNC1gYHBoeS1oYW5kbGVgYCBhbmQgYGBwaHktbW9kZWBgIGFyZSBkb2N1bWVudGVkIGluIFthY3BpLW1kaW8tcGh5XV8uXG4tLVxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0PTc9VGhlIFBIWXMgb24gYW4gTURJTyBidXMgW3BoeV0gYXJlIHByb2JlZCBhbmQgcmVnaXN0ZXJlZCB1c2luZ1xuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0Ojg6Zndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KCkuXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3QtOS1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD00MD1yZWdpc3RlcmVkIGFzIGEgZGlzdGluY3QgZGV2aWNlLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTU2LSAgIGRyaXZlciBuZWVkcywgc2V0dXAgdGhlIG1paV9idXMgc3RydWN0dXJlLCBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgUEFMIHVzaW5nXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1NzogICBtZGlvYnVzX3JlZ2lzdGVyLiAgU2ltaWxhcmx5LCB0aGVyZSYjMzk7cyBhIHJlbW92ZSBmdW5jdGlvbiB0byB1bmRvIGFsbCBvZlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTgtICAgdGhhdCAodXNlIG1kaW9idXNfdW5yZWdpc3RlcikuXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYz0xMDk9c3RhdGljIGludCBlcDgyNDhlX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzItXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jOjEzMzpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzNC1cdGlmIChyZXQpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM9MjA3PXN0YXRpYyBpbnQgZ3Bpb19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0My1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jOjI0NDpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NjA3PXN0YXRpYyBpbnQgYmNtX3NmMl9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4My1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6Njg0Olx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTg3PXN0YXRpYyBpbnQgZ3N3aXBfbWRpbyhzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoyMTQ6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTM0MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYtXHUwMDNlZGV2LCBidXMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzIxPWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzkzOlx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTc1NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwOT1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NDQtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ0NTpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDQ2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYz0yNDI9c3RhdGljIGludCBtdDc2Mjhfc2V0dXBfaW50ZXJuYWxfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jLTI2MS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYzoyNjI6XHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYy0yNjMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4MzQ9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg4Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4ODg6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg4OS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yNjc9c3RhdGljIGludCBteGw4NjJ4eF9zZXR1cF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTItXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyOTM6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjk0LVx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9MTQ5PXN0YXRpYyBpbnQgbmV0Y19wb3J0X2NyZWF0ZV9lbWRpb19idXMoc3RydWN0IG5ldGNfcG9ydCAqbnAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTc5LVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6MTgwOlx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxMy1cdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MTAxNDpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxNS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODc4PXN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDMtXHQvKiBOZWVkZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYnVzIG11dGV4IGxvY2sgKi9cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6OTA0Olx0cmMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIE5VTEwpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDUtXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jPTM1Nz1zdGF0aWMgaW50IGFyOTMzMV9zd19tYnVzX2luaXQoc3RydWN0IGFyOTMzMV9zd19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgxLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYzozODI6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODMtXHRvZl9ub2RlX3B1dChtbnApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTk0Nz1xY2E4a19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4Ni1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjk4NzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpbyk7XG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jPTc0PWludCBydGw4M3h4X3NldHVwX3VzZXJfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTk5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jOjEwMDpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy0xMDEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYz0xMTE3PXN0YXRpYyBpbnQgYTVwc3dfcHJvYmVfbWRpbyhzdHJ1Y3QgYTVwc3cgKmE1cHN3LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQzLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYzoxMTQ0Olx0cmV0dXJuIGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDUtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaD0zMDc9dm9pZCBzamExMTA1X2ZyYW1lX21lbW9yeV9wYXJ0aXRpb25pbmcoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oLTMwOS0vKiBGcm9tIHNqYTExMDVfbWRpby5jICovXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg6MzEwOmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMTEtdm9pZCBzamExMTA1X21kaW9idXNfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMwMjY9c3RhdGljIGludCBzamExMTA1X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMDY3LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6MzA2ODpcdHJjID0gc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjktXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4Ny1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI4ODpcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4OS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTMxMj1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3QxX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQzLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MzQ0Olx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQ1LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzY4PXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX3Bjc19yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM5NS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM5NjpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk3LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NDM5PXN0YXRpYyB2b2lkIHNqYTExMDVfbWRpb2J1c19wY3NfdW5yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTQ1OC1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjQ1OTppbnQgc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTU5NT15dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTItXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjEzOlx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTQtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz03MjY9eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQzLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjc0NDpcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQ1LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz00NTk9c3RhdGljIGludCBheF9taWlfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ3OTpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYXgtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00ODAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xMzIxPXN0YXRpYyBpbnQgb3dsX2VtYWNfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTM0NjpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIHByaXYtXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9NTA5PXN0YXRpYyBpbnQgYWRpbjExMTBfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3QgYWRpbjExMTBfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy01MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzo1MzA6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUzMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9NjE3PXN0YXRpYyBpbnQgYWRpbjExNDBfbWRpb19yZWdpc3RlcihzdHJ1Y3QgYWRpbjExNDBfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzo2Mzc6XHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNnNwaWRldi1cdTAwM2VkZXYsIHByaXYtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTI5MD1zdGF0aWMgaW50IGdyZXRoX21kaW9faW5pdChzdHJ1Y3QgZ3JldGhfcHJpdmF0ZSAqZ3JldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYzoxMzA3Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihncmV0aC1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwOC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYz0zOTMxPXN0YXRpYyBpbnQgZXQxMzF4X3BjaV9zZXR1cChzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM6NDAyNzpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyOC1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMjE9c3RhdGljIGludCBhbHRlcmFfdHNlX21kaW9fY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE1ODpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTktXHRpZiAocmV0ICE9IDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jPTEwNjE9c3RhdGljIGludCBhdTEwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTEyMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jOjEyMjI6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGF1cC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMy1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTM0Mjg9c3RhdGljIGludCB4Z2JlX3BoeV9pbml0KHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MTctXHRzbnByaW50ZihtaWktXHUwMDNlaWQsIHNpemVvZihtaWktXHUwMDNlaWQpLCBcJiMzNDslc1wmIzM0OywgZGV2X25hbWUocGRhdGEtXHUwMDNlZGV2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MTg6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MTktXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MjA6XHRcdGRldl9lcnIocGRhdGEtXHUwMDNlZGV2LCBcJiMzNDttZGlvYnVzX3JlZ2lzdGVyIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MjEtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYz05OD1pbnQgeGdlX21kaW9fY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTE4LVx0bWRpb19idXMtXHUwMDNlcGh5X21hc2sgPSAweDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExOTpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMjAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9ODM3PWludCB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo4ODg6c3RhdGljIGludCB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg5LVx0XHRcdFx0ICBzdHJ1Y3QgbWlpX2J1cyAqbWRpbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTEzOlx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTQtXHRcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIxLVx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkyMjpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05Mzk9aW50IHhnZW5lX2VuZXRfbWRpb19jb25maWcoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTg6XHRyZXQgPSB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLCBtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM9MTMxPWludCBhcmNfbWRpb19wcm9iZShzdHJ1Y3QgYXJjX2VtYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jOjE3MzpcdGVycm9yID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTc0LVx0b2Zfbm9kZV9wdXQobWRpb19ub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYz05NjY9c3RhdGljIGludCBheDg4Nzk2Y19wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYzoxMDExOlx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIGF4X2xvY2FsLVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMi1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTY4Nz1zdGF0aWMgaW50IGFnNzF4eF9tZGlvX3Byb2JlKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI3LVx0bW5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFwmIzM0O21kaW9cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Mjg6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjktXHRvZl9ub2RlX3B1dChtbnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIyMzQ9c3RhdGljIGludCBiNDRfcmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjI2MDpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIobWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjYxLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTE3MTM9c3RhdGljIGludCBiY21fZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoxODMwOlx0XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xODMxLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM9MjExPXN0cnVjdCBtaWlfYnVzICpiY21hX21kaW9fbWlpX3JlZ2lzdGVyKHN0cnVjdCBiZ21hYyAqYmdtYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM6MjM2Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzctXHRvZl9ub2RlX3B1dChucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MTkzPWludCBiY21nZW5ldF9taWlfY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgaW5pdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzMtXHRcdHBoeV9uYW1lID0gXCYjMzQ7ZXh0ZXJuYWwgUnZNSUlcJiMzNDs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzoyMzQ6XHRcdC8qIG9mX21kaW9idXNfcmVnaXN0ZXIgdG9vayBjYXJlIG9mIHJlYWRpbmcgdGhlICYjMzk7bWF4LXNwZWVkJiMzOTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzNS1cdFx0ICogUEhZIHByb3BlcnR5IGZvciB1cywgZWZmZWN0aXZlbHkgbGltaXRpbmcgdGhlIFBIWSBzdXBwb3J0ZWRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM9MjE1Nz1zdGF0aWMgaW50IHNibWFjX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxkZXYsIGxvbmcgbG9uZyBiYXNlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI3LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM6MjIyODpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoc2MtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyOS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNTA1PXN0YXRpYyBpbnQgdGczX21kaW9faW5pdChzdHJ1Y3QgdGczICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTU1ODpcdGkgPSBtZGlvYnVzX3JlZ2lzdGVyKHRwLVx1MDAzZW1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTktXHRpZiAoaSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDk3OnN0YXRpYyBpbnQgbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IGRldmljZV9ub2RlICptZGlvX25wKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDQtXHRpZiAobWRpb19ucClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEwNTpcdFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTE5Olx0XHRcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVx1MDAzZW1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMC1cdFx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTIyOlx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjMtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTEyNT1zdGF0aWMgaW50IG1hY2JfbWlpX2luaXQoc3RydWN0IG1hY2IgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTE1OTpcdGVyciA9IG1hY2JfbWRpb2J1c19yZWdpc3RlcihicCwgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNjAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTEwNz1zdGF0aWMgaW50IGRtOTA1MV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBib2FyZF9pbmZvICpkYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjExMjU6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2c3BpLVx1MDAzZWRldiwgZGItXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yNDIzPXN0YXRpYyBpbnQgdHNuZXBfbWRpb19pbml0KHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjI0NTU6XHRyZXR2YWwgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXHUwMDNlbWRpb2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYz0xMDI0PXN0YXRpYyBpbnQgZXRob2NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jOjEyMDg6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWRpbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xNzM0PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3NldHVwX21kaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE3NzA6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VkZXYsIHByaXYtXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NzEtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0zNj1zdGF0aWMgaW50IGVuZXRjX3BjaV9tZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM6OTE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZGV2LVx1MDAzZW9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0yNjY9c3RhdGljIGludCBlbmV0Y19tZGlvX3Byb2JlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzoyOTM6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTI5NC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTMwOD1zdGF0aWMgaW50IGVuZXRjX2ltZGlvX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQzOlx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0NC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0zMDQyPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6MzE2MTpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZmVwLVx1MDAzZW1paV9idXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jPTY1PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jOjEwNjpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jPTE0OT1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM6MTc2Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jPTk3PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM6MTY3Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYz00MDk9c3RhdGljIGludCBmc2xfcHFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jOjQ5NDpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDk1LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM9MzcxPXN0YXRpYyBpbnQgeGdtYWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI2LVx0aWYgKGlzX29mX25vZGUoZndub2RlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI3Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgdG9fb2Zfbm9kZShmd25vZGUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI4LVx0ZWxzZSBpZiAoaXNfYWNwaV9ub2RlKGZ3bm9kZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jOjQyOTpcdFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZndub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDMwLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjY2PWludCBoYmdfbWRpb19pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjkyOlx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYz0xMDk0PXN0YXRpYyBpbnQgaGl4NWhkMl9kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzoxMTg2Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM9MTIzPWludCBoY2xnZV9tYWNfbWRpb19jb25maWcoc3RydWN0IGhjbGdlX2RldiAqaGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1NC1cdG1kaW9fYnVzLVx1MDAzZXBoeV9tYXNrID0gfigxVSBcdTAwM2NcdTAwM2MgbWFjLVx1MDAzZXBoeV9hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM6MTU1Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1Ni1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYz00OTU9c3RhdGljIGludCBobnNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU4NDpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBwZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4NS1cdH0gZWxzZSBpZiAoaXNfYWNwaV9ub2RlKHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTItXHRcdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTkzOlx0XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTk0LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjU2MD1zdGF0aWMgaW50IGVtYWNfZHRfbWRpb19wcm9iZShzdHJ1Y3QgZW1hY19pbnN0YW5jZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg0LVx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0OyVzXCYjMzQ7LCBkZXYtXHUwMDNlb2ZkZXYtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjU4NTpcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihcdTAwMjZkZXYtXHUwMDNlb2ZkZXYtXHUwMDNlZGV2LCBidXMsIG1paV9ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4Ni1cdGlmIChyZXMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYz0xMDI2PWludCBpeGdiZV9taWlfYnVzX2luaXQoc3RydWN0IGl4Z2JlX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDg4LVx0YWRhcHRlci1cdTAwM2VtaWlfYnVzID0gYnVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM6MTA4OTpcdHJldHVybiBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDkwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jPTM4NT1sdHFfZXRvcF9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwMi1cdFx0IHByaXYtXHUwMDNlcGRldi1cdTAwM2VuYW1lLCBwcml2LVx1MDAzZXBkZXYtXHUwMDNlaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYzo0MDM6XHRpZiAobWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1paV9idXMpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwNC1cdFx0ZXJyID0gLUVOWElPO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM9MjgzPXN0YXRpYyBpbnQgb3Jpb25fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgxLVx0LyogRm9yIHRoZSBwbGF0Zm9ybXMgbm90IHN1cHBvcnRpbmcgRFQvQUNQSSBmYWxsLWJhY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6MzgyOlx0ICogdG8gbWRpb2J1c19yZWdpc3RlciB2aWEgb2ZfbWRpb2J1c19yZWdpc3Rlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgzLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4NC1cdGlmIChpc19hY3BpX25vZGUocGRldi1cdTAwM2VkZXYuZndub2RlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg1Olx0XHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVx1MDAzZWRldi5md25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODYtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NzpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODgtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM9MTM4Nz1zdGF0aWMgaW50IHB4YTE2OF9ldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA0LVx0cGVwLVx1MDAzZXNtaV9idXMtXHUwMDNlcGh5X21hc2sgPSAweGZmZmZmZmZmO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM6MTUwNTpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIocGVwLVx1MDAzZXNtaV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMtMTUwNi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz05OTg9c3RhdGljIGludCBtdGtfbWRpb19pbml0KHN0cnVjdCBtdGtfZXRoICpldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM3LVx0ZGV2X2RiZyhldGgtXHUwMDNlZGV2LCBcJiMzNDtNREMgaXMgcnVubmluZyBvbiAlZCBIelxcblwmIzM0OywgTURDX01BWF9GUkVRIC8gZXRoLVx1MDAzZW1kY19kaXZpZGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6MTAzODpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZXRoLVx1MDAzZW1paV9idXMsIG1paV9ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTE0MjI9c3RhdGljIGludCBtdGtfc3Rhcl9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTQ0ODpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIHByaXYtXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYz0yODc9aW50IG1seGJmX2dpZ2VfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgbWx4YmZfZ2lnZSAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmM6MzMzOlx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jPTI1Mz1pbnQgZmJuaWNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jLTI3Mi1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk1NwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIE1pY3JvY2hpcCBUMSBQSFkgRHJpdmVyIGZvciBWaXJ0dWFsaXphdGlvbi9GdXp6aW5nIE9wcG9ydHVuaXRpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNgLCB3aGljaCwgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBpcyB0aGUgTWljcm9jaGlwIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRob3NlIFQxIFBIWXMg4oCTIHRoZSBMQU44ODd4LCBMQU44N3h4LCBhbmQgTEFOOTM3eCBmYW1pbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIEkgbGV2ZXJhZ2UgYW55IHZpcnR1YWxpemF0aW9uIG9yIGZ1enppbmcgdGVjaG5pcXVlcyBoZXJlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSYjMzk7cyBhIGdvb2QgZW50cnkgcG9pbnQgZm9yIHRlc3RpbmcuIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgaG93IE1ESU8gKE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQpIGlzIGhhbmRsZWQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlJiMzOTtzIHNvbWUga2luZCBvZiB2aXJ0dWFsIE1ESU8gb3IgbW9jayBQSFkgZGV2aWNlIGFscmVhZHkgaW1wbGVtZW50ZWQgd2l0aGluIHRoZSBrZXJuZWwsIG9yIHBlcmhhcHMgc29tZXRoaW5nIGF2YWlsYWJsZSBpbiBzeXprYWxsZXIgdGhhdCBJIGNvdWxkIGhvb2sgaW50by4gVGltZSB0byBkbyBhIHF1aWNrIHNlYXJjaCBmb3IgY2x1ZXMuIEkmIzM5O2xsIHN0YXJ0IHdpdGggdGVybXMgbGlrZSAmIzM0O21kaW8tbW9jaywmIzM0OyAmIzM0O21kaW9fYml0YmFuZywmIzM0OyBvciBhbnl0aGluZyBzaW1pbGFyIHRoYXQgbWlnaHQgb2ZmZXIgYSB3YXkgdG8gc2ltdWxhdGUgb3IgY29udHJvbCB0aGUgUEhZJiMzOTtzIGJlaGF2aW9yIHdpdGhvdXQgbmVlZGluZyB0aGUgYWN0dWFsIGhhcmR3YXJlLiBJIG5lZWQgdG8gc2VlIGlmIEkgY2FuIGVmZmVjdGl2ZWx5IHZpcnR1YWxpemUgb3IgbW9jayB0aGlzIHRvIHRlc3QgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLiptb2NrfG1vY2suKm1kaW8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTMzMgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IERpYWdub3N0aWMgUHJvY2VzcyoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBlc3RhYmxpc2ggYSBiYXNlbGluZS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHdlIGhhdmUgYW55IHZpcnR1YWwgZHJpdmVyIGluc3RhbmNlcyBzcGVjaWZpY2FsbHkgY3JlYXRpbmcgaW5zdGFuY2VzIG9mIGBtaWNyb2NoaXBfdDFgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgbmVlZCB0byBicm9hZGVuIHRoZSBzY29wZSBhbmQgaHVudCBkb3duIHJlZmVyZW5jZXMgdG8gYExBTjg4N1hgIHdpdGhpbiB0aGUgZW50aXJlIGtlcm5lbCBjb2RlYmFzZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgb3ZlcnZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JRF9MQU44ODdYJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNi0jZGVmaW5lIFBIWV9JRF9MQU45MzdYXHRcdFx0XHQweDAwMDdjMTgwXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTc6I2RlZmluZSBQSFlfSURfTEFOODg3WFx0XHRcdFx0MHgwMDA3YzFmMFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0xNjA3PXN0YXRpYyBpbnQgbGFuODg3eF9jZF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjIxLVx0XHRcdFx0ICAgKCh2YWwgXHUwMDI2IEdFTk1BU0soMTUsIDQpKSA9PVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2MjI6XHRcdFx0XHQgICAgKFBIWV9JRF9MQU44ODdYIFx1MDAyNiBHRU5NQVNLKDE1LCA0KSkpLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MjMtXHRcdFx0XHQgICA1MDAwLCA1MDAwMCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIxMDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDEtXHR7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0MjpcdFx0UEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU44ODdYKSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTQzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O01pY3JvY2hpcCBMQU44ODd4IFQxIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MjE2Nz1zdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG1pY3JvY2hpcF90MV90YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE2OS1cdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU45MzdYKSB9LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNzA6XHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTcxLVx0eyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDM1CgkJCQkJCQlvdXRwdXQ6IDExMwoJCQkJCQkJdGhvdWdodHM6IDEwNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTEFOODg3eCBQSFkgRHJpdmVyIEZ1enppbmcgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIExBTjg4N3gsIHdoaWNoLCBhcyBhbiBhdXRvbW90aXZlIEV0aGVybmV0IFBIWSAoMTAwQkFTRS1UMS8xMDAwQkFTRS1UMSksIHJhaXNlcyBzb21lIGltbWVkaWF0ZSBxdWVzdGlvbnMgcmVnYXJkaW5nIGZ1enppbmcuIFRoZSBrZXkgaXNzdWUgaGVyZSBpcyB3aGV0aGVyIHRoaXMgaGFyZHdhcmUgUEhZIGRyaXZlciBpcyBldmVuIHJlYWNoYWJsZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UuCgpMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIGtub3cgdGhlIGd1aWRlbGluZXMgZm9yIGRldGVybWluaW5nIGlmIGEgcGF0Y2ggaXMgJiMzNDtXb3J0aEZ1enppbmcmIzM0Oy4gVGhleSBwb2ludCBvdXQgc2V2ZXJhbCBzY2VuYXJpb3Mgd2hlcmUgd2UgY2FuIHNraXAgZnV6emluZywgaW5jbHVkaW5nIGNoYW5nZXMgdG8gZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIGRlY29yYXRpdmUgbG9nZ2luZywgY2hhbmdlcyB0byBjb25zdGFudHMgd2l0aG91dCBpbXBhY3RpbmcgZmxvdywgb3IsIGNyaXRpY2FsbHksIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgaGVhcnQgb2YgdGhlIG1hdHRlciBpcyB3aGV0aGVyIHRoaXMgZHJpdmVyIGNhbiBvcGVyYXRlIHdpdGhvdXQgcmVhbCwgcGh5c2ljYWwgaGFyZHdhcmUuCgpNeSB1bmRlcnN0YW5kaW5nIGlzLCB0aGUgTEFOODg3eCBkcml2ZXIgcmVsaWVzIG9uIGFuIE1ESU8gYnVzIGZvciBjb21tdW5pY2F0aW9uLiBOb3csIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLCB3aXRoIGl0cyB2aXJ0dWFsaXplZCBuZXR3b3JrIGNhcmRzIChlMTAwMCwgdmlydGlvLW5ldCwgZXRjLiksIGV4cG9zZSBhbiBNRElPIGJ1cyBzdWl0YWJsZSBmb3Igb3VyIFBIWSBkcml2ZXI/IFRoZSBhbnN3ZXIsIGFzIEkga25vdywgaXMgdHlwaWNhbGx5IG5vLiBTdGFuZGFyZCBuZXR3b3JrIGNhcmRzIGVpdGhlciBoYXZlIGludGVybmFsIFBIWXMsIHVzZSBwaHlsaWIgd2l0aCBhIGdlbmVyaWMgUEhZLCBvciB0aGV5IGRvbiYjMzk7dCBldmVuICpwcmVzZW50KiBhbiBNRElPIGJ1cyB0byB0aGUgYGRyaXZlcnMvbmV0L3BoeS9gIHN1YnN5c3RlbSBhdCBhbGwuIFNwZWNpZmljYWxseSwgdGhlIGBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNgIGRyaXZlciDigJMgd2hpY2ggdGhpcyBwYXRjaCBtb2RpZmllcyDigJMgcmVxdWlyZXMgYSAqcGh5c2ljYWwqIE1pY3JvY2hpcCBUMSBQSFkgY29ubmVjdGVkIHZpYSBNRElPLiBUaGVyZWZvcmUsIHRoaXMgZHJpdmVyLCBhcyBpdCYjMzk7cyBzZXQgdXAgaW4gb3VyIGtlcm5lbCwgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIFFFTVUgb3IgR0NFIHNldHVwLgoKVGhlIHBhdGNoIGl0c2VsZiBkZWFscyB3aXRoIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgYGxhbjg4N3hfcGh5X2luaXRgIGZ1bmN0aW9uLCBieSBhZGRpbmcgYSBOVUxMIGNoZWNrIGZvciBgcHJpdi0mZ3Q7Y2xvY2tgLiBUaGUgaXNzdWUgb2NjdXJzIGJlY2F1c2Ugd2hlbiBgbWNocF9yZHNfcHRwX3Byb2JlYCByZXR1cm5zIE5VTEwsIGBwcml2LSZndDtjbG9ja2AgbWlnaHQgYWxzbyBiZSBOVUxMLCBidXQgdGhlIGNvZGUgc3RpbGwgYXR0ZW1wdHMgdG8gZGVyZWZlcmVuY2UgYHByaXYtJmd0O2Nsb2NrLSZndDtldmVudF9waW5gLiBUaGUgYWRkZWQgaWYgc3RhdGVtZW50IHByZXZlbnRzIHRoaXMuIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZHJpdmVyIHRvIHByZXZlbnQgYSBjcmFzaCBjb25kaXRpb24uCgpIb3dldmVyLCB0aGUgZmFjdCByZW1haW5zIHRoYXQgdGhpcyBpcyBhbiBhdXRvbW90aXZlIEV0aGVybmV0IFBIWSBkcml2ZXIgYW5kIGlzIGRlc2lnbmVkIGZvciByZWFsIGhhcmR3YXJlLiBJdCYjMzk7cyBub3QgZGVzaWduZWQgdG8gYmUgYWNjZXNzZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgY29tcG9uZW50cy4gVGhlIGZpeCAqYWRkcmVzc2VzKiBhIGxlZ2l0aW1hdGUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBidXQgaXQgZG9lc24mIzM5O3QgY2hhbmdlIHRoZSB1bmRlcmx5aW5nIHJlcXVpcmVtZW50IG9mIG5lZWRpbmcgYSAqcmVhbCogTWljcm9jaGlwIExBTjg4N3gvTEFOODd4eCB0cmFuc2NlaXZlci4KClRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGNvZGUgcGF0aCBpcyBzaW1wbHkgdW5yZWFjaGFibGUgd2l0aGluIG91ciBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgdGhlICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgZmxhZyBoYXMgdG8gYmUgYGZhbHNlYC4KCkp1c3QgdG8gbWFrZSBzdXJlLCBsZXQmIzM5O3MgY29uZmlybSB0aGUgZGV0YWlsczoKCjEuICBJcyBXb3J0aEZ1enppbmcgZmFsc2U/IFllcy4KMi4gIEZvY3VzU3ltYm9sczogXFtdLgozLiAgRW5hYmxlQ29uZmlnczogXFtcXS4KNC4gIFJlYXNvbmluZzogQ2xlYXIuCgpPa2F5LCB0aGF0JiMzOTtzIGVub3VnaCBmb3IgbXkgZXhwZXJ0IGFzc2Vzc21lbnQuIEl0JiMzOTtzIHRpbWUgdG8gbWFyayB0aGlzIG9uZSBhcyBub24tZnV6emFibGUgYW5kIG1vdmUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGxhbjg4N3hfcGh5X2luaXQoKSB3aXRoaW4gdGhlIE1pY3JvY2hpcCBUMSBFdGhlcm5ldCBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBwaHlzaWNhbCBNaWNyb2NoaXAgTEFOODg3eCBhdXRvbW90aXZlIEV0aGVybmV0IFBIWSBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgb3IgcHJvYmVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gbGFuODg3eF9waHlfaW5pdCgpIHdpdGhpbiB0aGUgTWljcm9jaGlwIFQxIEV0aGVybmV0IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYykuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIHBoeXNpY2FsIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZIGhhcmR3YXJlIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBwcm9iZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToyNDo0Mi4yMDEzNzkwMjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODkwOTQ0NzQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBsYW44ODd4X3BoeV9pbml0KCkgd2l0aGluIHRoZSBNaWNyb2NoaXAgVDEgRXRoZXJuZXQgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gcGh5c2ljYWwgTWljcm9jaGlwIExBTjg4N3ggYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFkgaGFyZHdhcmUgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIHByb2JlZCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBzdWNoIGFzIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjQ6NDIuMjAxMzg0NDc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg4ODI4ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODNlZjJjYmQ1N2Q3ZjNlMjI5NjhkNTc1ODIwMTQ4NjkzZGI1NzYyN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAzIDAxOjI0OjQwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xcbmluZGV4IDMyOTJiMjIzNWM4ZmEuLmUzOGQyMGJmNmFhNGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXFxuQEAgLTEyODUsMTQgKzEyODUsMTYgQEAgc3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcdFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlY2xvY2spKVxcbiBcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihwcml2LVxcdTAwM2VjbG9jayk7XFxuIFxcbi1cXHRcXHQvKiBFbmFibGUgcGluIG11eCBmb3IgRVZUICovXFxuLVxcdFxcdHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuLVxcdFxcdFxcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMSxcXG4tXFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcXG4tXFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTik7XFxuLVxcbi1cXHRcXHQvKiBJbml0aWFsaXplIHBpbiBudW1iZXJzIHNwZWNpZmljIHRvIFBFUk9VVCAqL1xcbi1cXHRcXHRwcml2LVxcdTAwM2VjbG9jay1cXHUwMDNlZXZlbnRfcGluID0gMztcXG4rXFx0XFx0aWYgKHByaXYtXFx1MDAzZWNsb2NrKSB7XFxuK1xcdFxcdFxcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cXG4rXFx0XFx0XFx0cGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTtcXG4rXFxuK1xcdFxcdFxcdC8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovXFxuK1xcdFxcdFxcdHByaXYtXFx1MDAzZWNsb2NrLVxcdTAwM2VldmVudF9waW4gPSAzO1xcbitcXHRcXHR9XFxuIFxcbiBcXHRcXHRwcml2LVxcdTAwM2Vpbml0X2RvbmUgPSB0cnVlO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI0OjQzLjY5MTA4MTEzNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTc0MTk3MzE1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBsYW44ODd4X3BoeV9pbml0KCkgd2l0aGluIHRoZSBNaWNyb2NoaXAgVDEgRXRoZXJuZXQgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gcGh5c2ljYWwgTWljcm9jaGlwIExBTjg4N3ggYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFkgaGFyZHdhcmUgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIHByb2JlZCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBzdWNoIGFzIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODNlZjJjYmQ1N2Q3ZjNlMjI5NjhkNTc1ODIwMTQ4NjkzZGI1NzYyN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDMgMDE6MjQ6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbmluZGV4IDMyOTJiMjIzNWM4ZmEuLmUzOGQyMGJmNmFhNGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xuQEAgLTEyODUsMTQgKzEyODUsMTYgQEAgc3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VjbG9jaykpXG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIocHJpdi1cdTAwM2VjbG9jayk7XG4gXG4tXHRcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cbi1cdFx0cGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDEsXG4tXHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTtcbi1cbi1cdFx0LyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi9cbi1cdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuK1x0XHRpZiAocHJpdi1cdTAwM2VjbG9jaykge1xuK1x0XHRcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cbitcdFx0XHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuK1x0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxuK1x0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcbitcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xuK1xuK1x0XHRcdC8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovXG4rXHRcdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuK1x0XHR9XG4gXG4gXHRcdHByaXYtXHUwMDNlaW5pdF9kb25lID0gdHJ1ZTtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI0OjQzLjY5MTExMzUwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEzNDU5NjE4MjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6XG5cbioqRXhhbWluaW5nIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGlzIHBhdGNoLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyBpbiBgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jYC4gR29vZCwgdGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gTm93LCBsZXQncyBnZXQgYSBsb29rIGF0IHRoZSByZWxldmFudCBzZWN0aW9uIG9mIHRoYXQgZmlsZS4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gZXhhbWluZSBhcm91bmQgbGluZSAxMjg1LiBVc3VhbGx5LCB0aGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjaGFuZ2VzIHdpbGwgYmUuIEknbGwgZmlyZSB1cCBteSB0cnVzdHkgYHJlYWQtZmlsZWAgY29tbWFuZCB0byBwdWxsIHRoZSBmaWxlIGFuZCB0aGUgc3Vycm91bmRpbmcgbGluZXMgaW50byB2aWV3LiBUaGlzIHdpbGwgbGV0IG1lIHF1aWNrbHkgYXNzZXNzIHRoZSBjb250ZXh0IGFuZCBwaW5wb2ludCB0aGUgbW9kaWZpY2F0aW9ucy4gVGltZSB0byBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjQ6NTcuMTUwNzM1MzAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjYwOlxcdFxcbjEyNjE6XFx0XFx0cmV0ID0gZ2VucGh5X2M0NV9wbWFfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcXG4xMjYyOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjEyNjM6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMjY0OlxcdFxcbjEyNjU6XFx0XFx0LyogRW5hYmxlIHR3aXN0ZWQgcGFpciAqL1xcbjEyNjY6XFx0XFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9UUF9CSVQsIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkKTtcXG4xMjY3OlxcdFxcbjEyNjg6XFx0XFx0LyogRmlyc3QgcGF0Y2ggb25seSBzdXBwb3J0cyAxMDBNYnBzIGFuZCAxMDAwTWJwcyBmb3JjZS1tb2RlLlxcbjEyNjk6XFx0XFx0ICogVDEgQXV0by1OZWdvdGlhdGlvbiAoQ2xhdXNlIDk4IG9mIElFRUUgODAyLjMpIHdpbGwgYmUgYWRkZWQgbGF0ZXIuXFxuMTI3MDpcXHRcXHQgKi9cXG4xMjcxOlxcdFxcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCwgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpO1xcbjEyNzI6XFx0XFxuMTI3MzpcXHRcXHRyZXR1cm4gMDtcXG4xMjc0OlxcdH1cXG4xMjc1OlxcdFxcbjEyNzY6XFx0c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMTI3NzpcXHR7XFxuMTI3ODpcXHRcXHRzdHJ1Y3QgbGFuODg3eF9wcml2ICpwcml2ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbjEyNzk6XFx0XFx0aW50IHJldDtcXG4xMjgwOlxcdFxcbjEyODE6XFx0XFx0aWYgKCFwcml2LVxcdTAwM2Vpbml0X2RvbmUgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHlkZXYpKSB7XFxuMTI4MjpcXHRcXHRcXHRwcml2LVxcdTAwM2VjbG9jayA9IG1jaHBfcmRzX3B0cF9wcm9iZShwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbjEyODM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IE1DSFBfUkRTX1BUUF9MVENfQkFTRV9BRERSLFxcbjEyODQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IE1DSFBfUkRTX1BUUF9QT1JUX0JBU0VfQUREUik7XFxuMTI4NTpcXHRcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZWNsb2NrKSlcXG4xMjg2OlxcdFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHByaXYtXFx1MDAzZWNsb2NrKTtcXG4xMjg3OlxcdFxcbjEyODg6XFx0XFx0XFx0aWYgKHByaXYtXFx1MDAzZWNsb2NrKSB7XFxuMTI4OTpcXHRcXHRcXHRcXHQvKiBFbmFibGUgcGluIG11eCBmb3IgRVZUICovXFxuMTI5MDpcXHRcXHRcXHRcXHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbjEyOTE6XFx0XFx0XFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxcbjEyOTI6XFx0XFx0XFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcXG4xMjkzOlxcdFxcdFxcdFxcdFxcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xcbjEyOTQ6XFx0XFxuMTI5NTpcXHRcXHRcXHRcXHQvKiBJbml0aWFsaXplIHBpbiBudW1iZXJzIHNwZWNpZmljIHRvIFBFUk9VVCAqL1xcbjEyOTY6XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlY2xvY2stXFx1MDAzZWV2ZW50X3BpbiA9IDM7XFxuMTI5NzpcXHRcXHRcXHR9XFxuMTI5ODpcXHRcXG4xMjk5OlxcdFxcdFxcdHByaXYtXFx1MDAzZWluaXRfZG9uZSA9IHRydWU7XFxuMTMwMDpcXHRcXHR9XFxuMTMwMTpcXHRcXG4xMzAyOlxcdFxcdC8qIENsZWFyIGxvb3BiYWNrICovXFxuMTMwMzpcXHRcXHRyZXQgPSBwaHlfY2xlYXJfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG4xMzA0OlxcdFxcdFxcdFxcdFxcdCBMQU44ODdYX01JU19DRkdfUkVHMixcXG4xMzA1OlxcdFxcdFxcdFxcdFxcdCBMQU44ODdYX01JU19DRkdfUkVHMl9GRV9MUEJLX0VOKTtcXG4xMzA2OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjEzMDc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMzA4OlxcdFxcbjEzMDk6XFx0XFx0LyogQ29uZmlndXJlIGRlZmF1bHQgYmVoYXZpb3Igb2YgbGVkIHRvIGxpbmsgYW5kIGFjdGl2aXR5IGZvciBhbnlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjQ6NTcuMTUwODg2MzUyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjM0MzIyNzg1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFN1aXRhYmlsaXR5IG9mIGEgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkcml2ZXIgYWN0dWFsbHkgc3VwcG9ydHM7IGl0IGxvb2tzIGxpa2UgaXQncyBmb3IgTWljcm9jaGlwJ3MgTEFOODg3eCwgTEFOODd4eCBhbmQgb3RoZXIgRXRoZXJuZXQgUEhZIHRyYW5zY2VpdmVycy4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciB0aGlzIGlzIHNvbWV0aGluZyBJIGNhbiBhY3R1YWxseSB0ZXN0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQgcmVsaWVzIG9uIGEgc3BlY2lmaWMgcGh5c2ljYWwgc2V0dXDigJRhIHBoeXNpY2FsIE1ESU8gaW50ZXJmYWNlIG9yIGEgcGh5c2ljYWwgUEhZIGNoaXDigJR0aGF0IGlzbid0IHR5cGljYWxseSBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQuXG5cbkkgbmVlZCB0byByZWZlciBiYWNrIHRvIHRoZSBpbnN0cnVjdGlvbnMgSSB3YXMgZ2l2ZW4uIEkgaGF2ZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIHRoaW5ncyB0aGF0IGFyZSBvZmYtbGltaXRzOiBkb2N1bWVudGF0aW9uIHVwZGF0ZXMsIEtjb25maWcgbW9kaWZpY2F0aW9ucywgZGVjb3JhdGl2ZSBjaGFuZ2VzIChsb2dnaW5nLCB0cmFjZXBvaW50cyksIG9yIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgd2l0aG91dCBhbHRlcmluZyB0aGUgcHJvZ3JhbSBmbG93LiBBbHNvLCBhbmQgaW1wb3J0YW50bHksIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhcmUgb3V0LiBUaGlzIGlzIGEgdmVyeSBpbXBvcnRhbnQgY29uc2lkZXJhdGlvbiEgRmluYWxseSwgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBjYXJkcyBhcmUgb3V0IG9mIGJvdW5kcywgYW5kIHNvIGFyZSB0ZWFyZG93biBjYWxsYmFja3MgZm9yIGRyaXZlcnMuXG5cblNvLCBJIG5lZWQgdG8gY29uZmlybSBpZiBgbWljcm9jaGlwX3QxLmNgIGlzIGluZGVlZCBmb3IgcGh5c2ljYWwgRXRoZXJuZXQgUEhZcywgc3BlY2lmaWNhbGx5IHRob3NlIDEwMEJBU0UtVDEvMTAwMEJBU0UtVDEgU2luZ2xlIFBhaXIgRXRoZXJuZXQgUEhZcyAoTEFOODg3eC9MQU44N3h4KS4gVGhlIGNvcmUgb2YgdGhlIGFuYWx5c2lzIGlzIHdoZXRoZXIgUEhZIGRyaXZlcnMsIGxpa2UgdGhpcyBgbWljcm9jaGlwX3QxYCwgY2FuIGFjdHVhbGx5IGJlIHByb2JlZCwgZW11bGF0ZWQsIG9yIHJlYXNvbmFibHkgdGVzdGVkIGluIFFFTVUvR0NFLCBvciB3aGV0aGVyIGl0J3MgbG9ja2VkIHRvIHBoeXNpY2FsIGhhcmR3YXJlLiBJJ2xsIG5lZWQgdG8gc2VhcmNoIHRoZSBgTWFrZWZpbGVgIGFuZCBgS2NvbmZpZ2AgZmlsZXMgZm9yIGBtaWNyb2NoaXBfdDFgIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ3MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjAzLjQ5NDExODE3MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA1OTY1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWljcm9jaGlwX3QxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9ODE9b2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9QSFlfUkRTX1BUUClcXHQrPSBtaWNyb2NoaXBfcmRzX3B0cC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgyOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFfUEhZKVxcdCs9IG1pY3JvY2hpcF90MS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFTX1BIWSkgKz0gbWljcm9jaGlwX3Qxcy5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTg0LW9iai0kKENPTkZJR19NSUNST1NFTUlfUEhZKVxcdCs9IG1zY2MvXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MjA3Mj1zdGF0aWMgaW50IGxhbjg4N3hfZ2V0X3NxaShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxMDUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxMDY6c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxMDctXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNjQtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNjU6bW9kdWxlX3BoeV9kcml2ZXIobWljcm9jaGlwX3QxX3BoeV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTY2LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTY3OnN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbWljcm9jaGlwX3QxX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTY4LVxcdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU44N1hYKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNzMtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNzQ6TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBtaWNyb2NoaXBfdDFfdGJsKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9NDk0PXN0YXRpYyBpbnQgbGFuODZ4eF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MDgtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1MDk6c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MTAtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01NjYtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1Njc6bW9kdWxlX3BoeV9kcml2ZXIobWljcm9jaGlwX3Qxc19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTY4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToyNTowMy42MDQ3MjUwOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2OTI1ODQ4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqS2NvbmZpZyBJbnF1aXJ5IC0gTWljcm9jaGlwIFQxIFBIWSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzdGF0dXMgb2YgdGhlIE1pY3JvY2hpcCBUMSBQSFkgZHJpdmVyIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBLY29uZmlnIHN5c3RlbS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbG9jYXRlIGFuZCB2ZXJpZnkgdGhlIGV4aXN0ZW5jZSBhbmQgY3VycmVudCBzZXR0aW5ncyBvZiBgQ09ORklHX01JQ1JPQ0hJUF9UMV9QSFlgLiBJIG5lZWQgdG8gYXNzZXNzIHdoZXRoZXIgdGhpcyBpcyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgcGVyaGFwcyBjb25kaXRpb25hbGx5IGRlZmluZWQuIFVuZGVyc3RhbmRpbmcgaXRzIHN0YXR1cyBpcyBjcnVjaWFsIGJlZm9yZSBJIGNvbnRpbnVlIGRvd24gdGhpcyBwYXRoLiBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIHN0YW5kIHdpdGggdGhpcyBiZWZvcmUgcHJvY2VlZGluZyBmdXJ0aGVyLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgS2NvbmZpZyBmaWxlcyBub3cuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA2NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjA1LjI5NzMxMjM1NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI0MTc2MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUlDUk9DSElQX1QxX1BIWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MzM2PWNvbmZpZyBNSUNST0NISVBfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zNDAtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MzQxOmNvbmZpZyBNSUNST0NISVBfVDFfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMzQyLVxcdHRyaXN0YXRlIFxcXCJNaWNyb2NoaXAgVDEgUEhZc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT04MT1vYmotJChDT05GSUdfTUlDUk9DSElQX1BIWV9SRFNfUFRQKVxcdCs9IG1pY3JvY2hpcF9yZHNfcHRwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6ODI6b2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9UMV9QSFkpXFx0Kz0gbWljcm9jaGlwX3QxLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtODMtb2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9UMVNfUEhZKSArPSBtaWNyb2NoaXBfdDFzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6MDUuNDA5NzM0NzA0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTcyMjQwMjQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUEhZIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiBzb21ldGhpbmcgcmVsYXRlZCB0byBQSFkgY29uZmlndXJhdGlvbi4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUga2VybmVsJ3MgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AuIFRoYXQgZmlsZSdzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSBmb3IgdW5kZXJzdGFuZGluZyBob3cgdmFyaW91cyBQSFlzIGFyZSBzdXBwb3J0ZWQgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBTaW5jZSBJJ20gZm9jdXNpbmcgb24gY29uZmlndXJhdGlvbiwgSSdsbCBzdGFydCBhcm91bmQgbGluZSAzNDEuIENoYW5jZXMgYXJlLCB0aGF0J3Mgd2hlcmUgSSBjYW4gZmluZCBhIHJlbGV2YW50IG9wdGlvbiwgZGVwZW5kZW5jeSwgb3IgYSBjb21tZW50IHRoYXQgcHJvdmlkZXMgY3J1Y2lhbCBjb250ZXh0IG9uIHRoZSBzcGVjaWZpYyBhc3BlY3RzIEknbSBpbnRlcmVzdGVkIGluLiBUaGUgS2NvbmZpZyBmaWxlIGlzIHRoZSBmaXJzdCBwbGFjZSBJJ2QgY2hlY2sgd2hlbiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gaW50ZXJhY3Qgd2l0aCBhbmQgY29udHJvbCB0aGUgZmVhdHVyZXMgcHJvdmlkZWQgYnkgdGhlIHNwZWNpZmljIFBIWSdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDUzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6MDcuMTMyMTQwMzk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMzUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMzU6XFx0XFxuIDMzNjpcXHRjb25maWcgTUlDUk9DSElQX1BIWVxcbiAzMzc6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBQSFlzXFxcIlxcbiAzMzg6XFx0XFx0aGVscFxcbiAzMzk6XFx0XFx0ICBTdXBwb3J0cyB0aGUgTEFOODhYWCBQSFlzLlxcbiAzNDA6XFx0XFxuIDM0MTpcXHRjb25maWcgTUlDUk9DSElQX1QxX1BIWVxcbiAzNDI6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBUMSBQSFlzXFxcIlxcbiAzNDM6XFx0XFx0c2VsZWN0IE1JQ1JPQ0hJUF9QSFlfUkRTX1BUUCBpZiBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG4gMzQ0OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gMzQ1OlxcdFxcdGhlbHBcXG4gMzQ2OlxcdFxcdCAgU3VwcG9ydHMgdGhlIExBTjhYWFggUEhZcy5cXG4gMzQ3OlxcdFxcbiAzNDg6XFx0Y29uZmlnIE1JQ1JPQ0hJUF9QSFlfUkRTX1BUUFxcbiAzNDk6XFx0XFx0dHJpc3RhdGVcXG4gMzUwOlxcdFxcdGhlbHBcXG4gMzUxOlxcdFxcdCAgQ3VycmVudGx5IHN1cHBvcnRzIExBTjg4N1ggVDEgUEhZXFxuIDM1MjpcXHRcXG4gMzUzOlxcdGNvbmZpZyBNSUNST1NFTUlfUEhZXFxuIDM1NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9zZW1pIFBIWXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjA3LjEzMjI3ODQ5OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTQyMTI3MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBMQU44ODd4IFBIWSBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5zIGFuZCBvdXRzIG9mIGBsYW44ODd4X3BoeV9pbml0YC4gV2hhdCdzIGl0IGRvaW5nLCBhbmQgY3JpdGljYWxseSwgKndoZW4qIGlzIGl0IGJlaW5nIGNhbGxlZD8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgaW1wbGVtZW50YXRpb24gaXRzZWxmLiBMZXQncyBoZWFkIG92ZXIgdG8gdGhlIGBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNgIGZpbGUuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciB0aGUgZGVmaW5pdGlvbiBhbmQsIGhvcGVmdWxseSwgY2x1ZXMgYWJvdXQgdGhlIGNhbGxpbmcgY29udGV4dC4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEkgYW50aWNpcGF0ZSBzb21lIGludGVyZXN0aW5nIHJlZ2lzdGVyIG1hbmlwdWxhdGlvbnMgYW5kIHBlcmhhcHMgc29tZSBjbG9jayBjb25maWd1cmF0aW9uLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NzMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjA5LjI3NDQwOTM1OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM5Nzg2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGFuODg3eF9waHlfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTEyNTc9c3RhdGljIGludCBsYW44ODd4X2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNzUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyNzY6c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNzcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTE2MDc9c3RhdGljIGludCBsYW44ODd4X2NkX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYzMi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYzMzpcXHRcXHRyYyA9IGxhbjg4N3hfcGh5X2luaXQocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYzNC1cXHRcXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIxMDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE0Ni1cXHRcXHQuZ2V0X2ZlYXR1cmVzXFx0PSBsYW44ODd4X2dldF9mZWF0dXJlcyxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0NzpcXHRcXHQuY29uZmlnX2luaXQgICAgPSBsYW44ODd4X3BoeV9pbml0LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTQ4LVxcdFxcdC5jb25maWdfYW5lZyAgICA9IGxhbjg4N3hfY29uZmlnX2FuZWcsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjA5LjM1ODM5NDE4N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTYwNTg2NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEludmVzdGlnYXRpb24gaW50byBQSFkgRGV2aWNlIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBQSFkgZGV2aWNlcyBnZXQgcmVnaXN0ZXJlZCBhbmQgbWF0Y2hlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBNRElPIGJ1cyBwcm9iaW5nIHByb2Nlc3MuIEl0IGxvb2tzIGxpa2UgdGhlIGtleSBpcyB0aGUgUEhZIElEIG1hdGNoaW5nIHRoZSBNRElPIElEIHJlZ2lzdGVyIG9mIHRoZSBQSFkgaXRzZWxmLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIG1lYW50IGZvciBhIHJlYWwgaGFyZHdhcmUgZGV2aWNlLCBvciBpZiB0aGVyZSdzIHNvbWUga2luZCBvZiBlbXVsYXRvciBpbiBhIHN0YW5kYXJkIHNldHVwIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkuIFNwZWNpZmljYWxseSwgSSdtIHRyeWluZyB0byBkZXRlcm1pbmUgaWYgdGhpcyBkcml2ZXIgaXMgaW50ZW5kZWQgZm9yIHRoZSBwaHlzaWNhbCBNaWNyb2NoaXAgTEFOODg3eCBBdXRvbW90aXZlIEV0aGVybmV0IFBIWSwgc3BlY2lmaWNhbGx5IHRoZSAxMDBCQVNFLVQxIC8gMTAwMEJBU0UtVDEgdmVyc2lvbnMuXG5cblRoZSBMQU44ODcwIGlzIGEgMTAwMEJBU0UtVDEgLyAxMDBCQVNFLVQxIGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZLCB3aGljaCBpcyBhIGJpdCBvZiBhIG5pY2hlIGFyZWEuIEkgbmVlZCB0byBhc3Nlc3MgdGhlIGZlYXNpYmlsaXR5IG9mIHRyaWdnZXJpbmcgdGhpcyBjb2RlIHBhdGggdGhyb3VnaCB0b29scyBsaWtlIHN5emthbGxlciwgUUVNVSwgb3IgR0NFLiBNeSBwcmltYXJ5IGNvbmNlcm4gaXMgaWYgdGhvc2UgZW52aXJvbm1lbnRzIGNhbiBldmVuIHJlYWNoIHRoaXMgZHJpdmVyLlxuXG5UaGlua2luZyBhYm91dCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudHMsIFFFTVUgYW5kIEdDRSB0eXBpY2FsbHkgZW11bGF0ZSBFdGhlcm5ldCBOSUNzIGxpa2UgZTEwMDAsIHZpcnRpby1uZXQsIHJ0bDgxMzksIG9yIHBjbmV0LiBOb25lIG9mIHRob3NlIHNlZW0gdG8gaW5jb3Jwb3JhdGUgb3IgZW11bGF0ZSBhIE1pY3JvY2hpcCBMQU44ODd4IFQxIFBIWS4gVGhpcyBwb3NlcyBhIHByb2JsZW0uXG5cblNvLCB0aGUgcXVlc3Rpb24gYmVjb21lcywgaXMgdGhlcmUgYSB3b3JrYXJvdW5kPyBJJ20gd29uZGVyaW5nIGlmIHRoZXJlJ3MgYSBVU0IgTURJTyBhZGFwdGVyLCBhIFVTQi10by1NRElPIGNvbnZlcnRlciwgb3IgZXZlbiBhIHZpcnR1YWwgTURJTyBkZXZpY2UgSSBjb3VsZCB1c2UuIFBlcmhhcHMgYSBVU0IgRXRoZXJuZXQgYWRhcHRlciB0aGF0IGFjdHVhbGx5IHVzZXMgYSBMQU44ODd4LiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBVU0IgZHJpdmVycyB0aGF0IG1pZ2h0IGNvbm5lY3QgdG8gc29tZXRoaW5nIGxhYmVsZWQgbWljcm9jaGlwX3QxIG9yIExBTjg4N3guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MzYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6MTQuNTE4OTgzMTkzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjkzNTkyOTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JRF9MQU44ODdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2LSNkZWZpbmUgUEhZX0lEX0xBTjkzN1hcXHRcXHRcXHRcXHQweDAwMDdjMTgwXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE3OiNkZWZpbmUgUEhZX0lEX0xBTjg4N1hcXHRcXHRcXHRcXHQweDAwMDdjMWYwXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTE2MDc9c3RhdGljIGludCBsYW44ODd4X2NkX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYyMS1cXHRcXHRcXHRcXHQgICAoKHZhbCBcXHUwMDI2IEdFTk1BU0soMTUsIDQpKSA9PVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNjIyOlxcdFxcdFxcdFxcdCAgICAoUEhZX0lEX0xBTjg4N1ggXFx1MDAyNiBHRU5NQVNLKDE1LCA0KSkpLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjIzLVxcdFxcdFxcdFxcdCAgIDUwMDAsIDUwMDAwLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yMTA2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFfcGh5X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDEtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQyOlxcdFxcdFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCksXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDMtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJNaWNyb2NoaXAgTEFOODg3eCBUMSBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIxNjc9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtaWNyb2NoaXBfdDFfdGJsW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE2OS1cXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOOTM3WCkgfSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE3MDpcXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCkgfSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE3MS1cXHR7IH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6MTYuODEyNTgwNjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA4MDkzNDAwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE1ESU8gQnVzIENyZWF0aW9uIGluIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB3ZSBjYW4gdGVzdCB0aGUgTURJTyBidXMgd2l0aGluIHN5emthbGxlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgaW5zdGFudGlhdGUgaXQgZnJvbSB1c2Vyc3BhY2UsIG1heWJlIHZpYSBhIFVTQiBnYWRnZXQgc2V0dXAsIG9yIGV2ZW4gc2ltdWxhdGUgaXRzIGNyZWF0aW9uIGRpcmVjdGx5IHdpdGhpbiBzeXprYWxsZXIncyBlbnZpcm9ubWVudD8gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBrZXkgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBNRElPIGJ1cyBhbmQgUEhZIGRldmljZSBjcmVhdGlvbi4gSSdsbCBzZWFyY2ggZm9yIGBtZGlvYnVzX3JlZ2lzdGVyYCBhbmQgYHBoeV9kZXZpY2VfY3JlYXRlYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50cyB0byB1bmRlcnN0YW5kIHRoZSBzdGFuZGFyZCBrZXJuZWwgQVBJcyBpbnZvbHZlZCBpbiB0aGlzIHByb2Nlc3MgYW5kIHRvIHNlZSB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IGhhdmUgdGhhdCB3ZSBuZWVkIHRvIHNhdGlzZnkgdG8gYnJpbmcgdXAgdGhlIGJ1cy4gSG9wZWZ1bGx5LCB0aGlzIHNlYXJjaCB3aWxsIGxlYWQgbWUgdG8gdGhlIHJpZ2h0IGNvZGUgcGF0aHMgYW5kIGhlbHAgbWUgZGV0ZXJtaW5lIGhvdyB0byBhY2hpZXZlIG15IGdvYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4NDcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToyNToxOC44OTM1MTc5OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM2OTY0NDQ5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvYnVzX3JlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEzOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0PTM0OT1NRElPXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUxLSAgZGV2bV9tZGlvYnVzX2FsbG9jX3NpemUoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTI6ICBkZXZtX21kaW9idXNfcmVnaXN0ZXIoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTM6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdC0zNTQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdD0xMj1kZXZpY2UgKHRoZSBzYW1lIG9iamVjdHMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB2aWFcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdDoxMzpgYGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeSgpYGApLiBNQUMtc2lkZSBjb25uZWN0aW9uIHByb3BlcnRpZXMgc3VjaCBhc1xcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0LTE0LWBgcGh5LWhhbmRsZWBgIGFuZCBgYHBoeS1tb2RlYGAgYXJlIGRvY3VtZW50ZWQgaW4gW2FjcGktbWRpby1waHldXy5cXG4tLVxcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvcGh5LnJzdD03PVRoZSBQSFlzIG9uIGFuIE1ESU8gYnVzIFtwaHldIGFyZSBwcm9iZWQgYW5kIHJlZ2lzdGVyZWQgdXNpbmdcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3Q6ODpmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoKS5cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3QtOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTQwPXJlZ2lzdGVyZWQgYXMgYSBkaXN0aW5jdCBkZXZpY2UuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01Ni0gICBkcml2ZXIgbmVlZHMsIHNldHVwIHRoZSBtaWlfYnVzIHN0cnVjdHVyZSwgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIFBBTCB1c2luZ1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjU3OiAgIG1kaW9idXNfcmVnaXN0ZXIuICBTaW1pbGFybHksIHRoZXJlJ3MgYSByZW1vdmUgZnVuY3Rpb24gdG8gdW5kbyBhbGwgb2ZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01OC0gICB0aGF0ICh1c2UgbWRpb2J1c191bnJlZ2lzdGVyKS5cXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmM9MTA5PXN0YXRpYyBpbnQgZXA4MjQ4ZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzItXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYzoxMzM6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG9mZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzQtXFx0aWYgKHJldClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jPTIwNz1zdGF0aWMgaW50IGdwaW9fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0My1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYzoyNDQ6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02ODMtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2ODQ6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2V1c2VyX21paV9idXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjg1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LVxcdTAwM2VkZXYsIGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzIxPWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzkzOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwOT1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQ0NC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ0NTpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NDYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jPTI0Mj1zdGF0aWMgaW50IG10NzYyOF9zZXR1cF9pbnRlcm5hbF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYy0yNjEtXFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jOjI2MjpcXHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmMtMjYzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4MzQ9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4ODg6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTI2Nz1zdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjkyLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjI5MzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5NC1cXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jPTE0OT1zdGF0aWMgaW50IG5ldGNfcG9ydF9jcmVhdGVfZW1kaW9fYnVzKHN0cnVjdCBuZXRjX3BvcnQgKm5wLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTc5LVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jOjE4MDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDEzLVxcdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjEwMTQ6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxNS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTg3OD1zdGF0aWMgaW50IHZzYzk5NTNfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDMtXFx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MDQ6XFx0cmMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTA1LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MzU3PXN0YXRpYyBpbnQgYXI5MzMxX3N3X21idXNfaW5pdChzdHJ1Y3QgYXI5MzMxX3N3X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4MS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjM4MjpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgzLVxcdG9mX25vZGVfcHV0KG1ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz05NDc9cWNhOGtfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4Ni1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo5ODc6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvKTtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM9NzQ9aW50IHJ0bDgzeHhfc2V0dXBfdXNlcl9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy05OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM6MTAwOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTEwMS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExMTc9c3RhdGljIGludCBhNXBzd19wcm9iZV9tZGlvKHN0cnVjdCBhNXBzdyAqYTVwc3csIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0My1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjExNDQ6XFx0cmV0dXJuIGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQ1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaD0zMDc9dm9pZCBzamExMTA1X2ZyYW1lX21lbW9yeV9wYXJ0aXRpb25pbmcoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzA5LS8qIEZyb20gc2phMTEwNV9tZGlvLmMgKi9cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg6MzEwOmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzExLXZvaWQgc2phMTEwNV9tZGlvYnVzX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMwMjY9c3RhdGljIGludCBzamExMTA1X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjctXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6MzA2ODpcXHRyYyA9IHNqYTExMDVfbWRpb2J1c19yZWdpc3Rlcihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2OS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg3LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI4ODpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg5LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzEyPXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdDFfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0My1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozNDQ6XFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0NS1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTM2OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19wY3NfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM5NS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozOTY6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk3LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NDM5PXN0YXRpYyB2b2lkIHNqYTExMDVfbWRpb2J1c19wY3NfdW5yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDU4LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjQ1OTppbnQgc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTU5NT15dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxMi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjEzOlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxNC1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTcyNj15dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0My1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ0OlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0NS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM9NDU5PXN0YXRpYyBpbnQgYXhfbWlpX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo0Nzk6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihheC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDgwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTMyMT1zdGF0aWMgaW50IG93bF9lbWFjX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jOjEzNDY6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9NTA5PXN0YXRpYyBpbnQgYWRpbjExMTBfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3QgYWRpbjExMTBfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzo1MzA6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTMxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz02MTc9c3RhdGljIGludCBhZGluMTE0MF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjYzNzpcXHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFxcdTAwMjZzcGlkZXYtXFx1MDAzZWRldiwgcHJpdi1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNjM4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTI5MD1zdGF0aWMgaW50IGdyZXRoX21kaW9faW5pdChzdHJ1Y3QgZ3JldGhfcHJpdmF0ZSAqZ3JldGgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEzMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYzoxMzA3OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoZ3JldGgtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwOC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYz0zOTMxPXN0YXRpYyBpbnQgZXQxMzF4X3BjaV9zZXR1cChzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTQwMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM6NDAyNzpcXHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyOC1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTIxPXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9tZGlvX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNTg6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTktXFx0aWYgKHJldCAhPSAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jPTEwNjE9c3RhdGljIGludCBhdTEwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jOjEyMjI6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihhdXAtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMy1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTM0Mjg9c3RhdGljIGludCB4Z2JlX3BoeV9pbml0KHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxNy1cXHRzbnByaW50ZihtaWktXFx1MDAzZWlkLCBzaXplb2YobWlpLVxcdTAwM2VpZCksIFxcXCIlc1xcXCIsIGRldl9uYW1lKHBkYXRhLVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MTg6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtaWkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxOS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzozNzIwOlxcdFxcdGRldl9lcnIocGRhdGEtXFx1MDAzZWRldiwgXFxcIm1kaW9idXNfcmVnaXN0ZXIgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MjEtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM9OTg9aW50IHhnZV9tZGlvX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTE4LVxcdG1kaW9fYnVzLVxcdTAwM2VwaHlfbWFzayA9IDB4MTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExOTpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz04Mzc9aW50IHhnZW5lX2VuZXRfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjg4ODpzdGF0aWMgaW50IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg5LVxcdFxcdFxcdFxcdCAgc3RydWN0IG1paV9idXMgKm1kaW8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkxMzpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTE0LVxcdFxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MjEtXFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MjI6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05Mzk9aW50IHhnZW5lX2VuZXRfbWRpb19jb25maWcoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTg6XFx0cmV0ID0geGdlbmVfbWRpb2J1c19yZWdpc3RlcihwZGF0YSwgbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYz0xMzE9aW50IGFyY19tZGlvX3Byb2JlKHN0cnVjdCBhcmNfZW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM6MTczOlxcdGVycm9yID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3NC1cXHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM6MTAxMTpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBheF9sb2NhbC1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMi1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz02ODc9c3RhdGljIGludCBhZzcxeHhfbWRpb19wcm9iZShzdHJ1Y3QgYWc3MXh4ICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI3LVxcdG1ucCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcXFwibWRpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzI4OlxcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjktXFx0b2Zfbm9kZV9wdXQobW5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIyMzQ9c3RhdGljIGludCBiNDRfcmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjI2MDpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNjEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MTcxMz1zdGF0aWMgaW50IGJjbV9lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xODI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjE4MzA6XFx0XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MzEtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM9MjExPXN0cnVjdCBtaWlfYnVzICpiY21hX21kaW9fbWlpX3JlZ2lzdGVyKHN0cnVjdCBiZ21hYyAqYmdtYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM6MjM2OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWlpX2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNy1cXHRvZl9ub2RlX3B1dChucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz0xOTM9aW50IGJjbWdlbmV0X21paV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBpbml0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjMzLVxcdFxcdHBoeV9uYW1lID0gXFxcImV4dGVybmFsIFJ2TUlJXFxcIjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzoyMzQ6XFx0XFx0Lyogb2ZfbWRpb2J1c19yZWdpc3RlciB0b29rIGNhcmUgb2YgcmVhZGluZyB0aGUgJ21heC1zcGVlZCdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzUtXFx0XFx0ICogUEhZIHByb3BlcnR5IGZvciB1cywgZWZmZWN0aXZlbHkgbGltaXRpbmcgdGhlIFBIWSBzdXBwb3J0ZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYz0yMTU3PXN0YXRpYyBpbnQgc2JtYWNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGRldiwgbG9uZyBsb25nIGJhc2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyNy1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM6MjIyODpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHNjLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyOS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNTA1PXN0YXRpYyBpbnQgdGczX21kaW9faW5pdChzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTU1ODpcXHRpID0gbWRpb2J1c19yZWdpc3Rlcih0cC1cXHUwMDNlbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTktXFx0aWYgKGkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDk3OnN0YXRpYyBpbnQgbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IGRldmljZV9ub2RlICptZGlvX25wKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDQtXFx0aWYgKG1kaW9fbnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTA1OlxcdFxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVxcdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTE5OlxcdFxcdFxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVxcdTAwM2VtaWlfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIwLVxcdFxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTIyOlxcdHJldHVybiBtZGlvYnVzX3JlZ2lzdGVyKGJwLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMTI1PXN0YXRpYyBpbnQgbWFjYl9taWlfaW5pdChzdHJ1Y3QgbWFjYiAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTU5OlxcdGVyciA9IG1hY2JfbWRpb2J1c19yZWdpc3RlcihicCwgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTYwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jPTExMDc9c3RhdGljIGludCBkbTkwNTFfbWRpb19yZWdpc3RlcihzdHJ1Y3QgYm9hcmRfaW5mbyAqZGIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMTI1OlxcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIGRiLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yNDIzPXN0YXRpYyBpbnQgdHNuZXBfbWRpb19pbml0KHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjI0NTU6XFx0cmV0dmFsID0gb2ZfbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVxcdTAwM2VtZGlvYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTEwMjQ9c3RhdGljIGludCBldGhvY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6MTIwODpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwOS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE3MzQ9c3RhdGljIGludCBmdGdtYWMxMDBfc2V0dXBfbWRpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTc3MDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlZGV2LCBwcml2LVxcdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NzEtXFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0zNj1zdGF0aWMgaW50IGVuZXRjX3BjaV9tZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM6OTE6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIGRldi1cXHUwMDNlb2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0yNjY9c3RhdGljIGludCBlbmV0Y19tZGlvX3Byb2JlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzoyOTM6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjk0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MzA4PXN0YXRpYyBpbnQgZW5ldGNfaW1kaW9fY3JlYXRlKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDM6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDQtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MzA0Mj1zdGF0aWMgaW50IGZlY19lbmV0X21paV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMxNjE6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihmZXAtXFx1MDAzZW1paV9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYz02NT1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2YpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYzoxMDY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jPTE0OT1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM6MTc2OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jPTk3PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM6MTY3OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYz00MDk9c3RhdGljIGludCBmc2xfcHFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jOjQ5NDpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTUtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYz0zNzE9c3RhdGljIGludCB4Z21hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyNi1cXHRpZiAoaXNfb2Zfbm9kZShmd25vZGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI3OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCB0b19vZl9ub2RlKGZ3bm9kZSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI4LVxcdGVsc2UgaWYgKGlzX2FjcGlfbm9kZShmd25vZGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI5OlxcdFxcdHJldCA9IGFjcGlfbWRpb2J1c19yZWdpc3RlcihidXMsIGZ3bm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MzAtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yNjY9aW50IGhiZ19tZGlvX2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyOTI6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjkzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM9MTA5ND1zdGF0aWMgaW50IGhpeDVoZDJfZGV2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM6MTE4NjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM9MTIzPWludCBoY2xnZV9tYWNfbWRpb19jb25maWcoc3RydWN0IGhjbGdlX2RldiAqaGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU0LVxcdG1kaW9fYnVzLVxcdTAwM2VwaHlfbWFzayA9IH4oMVUgXFx1MDAzY1xcdTAwM2MgbWFjLVxcdTAwM2VwaHlfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYzoxNTU6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0xNTYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM9NDk1PXN0YXRpYyBpbnQgaG5zX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1ODQ6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTg1LVxcdH0gZWxzZSBpZiAoaXNfYWNwaV9ub2RlKHBkZXYtXFx1MDAzZWRldi5md25vZGUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTItXFx0XFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTkzOlxcdFxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobmV3X2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTk0LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjU2MD1zdGF0aWMgaW50IGVtYWNfZHRfbWRpb19wcm9iZShzdHJ1Y3QgZW1hY19pbnN0YW5jZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODQtXFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwiJXNcXFwiLCBkZXYtXFx1MDAzZW9mZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjU4NTpcXHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNmRldi1cXHUwMDNlb2ZkZXYtXFx1MDAzZWRldiwgYnVzLCBtaWlfbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg2LVxcdGlmIChyZXMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jPTEwMjY9aW50IGl4Z2JlX21paV9idXNfaW5pdChzdHJ1Y3QgaXhnYmVfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmMtMTA4OC1cXHRhZGFwdGVyLVxcdTAwM2VtaWlfYnVzID0gYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jOjEwODk6XFx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDkwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM9Mzg1PWx0cV9ldG9wX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MDItXFx0XFx0IHByaXYtXFx1MDAzZXBkZXYtXFx1MDAzZW5hbWUsIHByaXYtXFx1MDAzZXBkZXYtXFx1MDAzZWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jOjQwMzpcXHRpZiAobWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtaWlfYnVzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDA0LVxcdFxcdGVyciA9IC1FTlhJTztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM9MjgzPXN0YXRpYyBpbnQgb3Jpb25fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODEtXFx0LyogRm9yIHRoZSBwbGF0Zm9ybXMgbm90IHN1cHBvcnRpbmcgRFQvQUNQSSBmYWxsLWJhY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4MjpcXHQgKiB0byBtZGlvYnVzX3JlZ2lzdGVyIHZpYSBvZl9tZGlvYnVzX3JlZ2lzdGVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgzLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg0LVxcdGlmIChpc19hY3BpX25vZGUocGRldi1cXHUwMDNlZGV2LmZ3bm9kZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODU6XFx0XFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODYtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg3OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODgtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jPTEzODc9c3RhdGljIGludCBweGExNjhfZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA0LVxcdHBlcC1cXHUwMDNlc21pX2J1cy1cXHUwMDNlcGh5X21hc2sgPSAweGZmZmZmZmZmO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jOjE1MDU6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihwZXAtXFx1MDAzZXNtaV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9OTk4PXN0YXRpYyBpbnQgbXRrX21kaW9faW5pdChzdHJ1Y3QgbXRrX2V0aCAqZXRoKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM3LVxcdGRldl9kYmcoZXRoLVxcdTAwM2VkZXYsIFxcXCJNREMgaXMgcnVubmluZyBvbiAlZCBIelxcXFxuXFxcIiwgTURDX01BWF9GUkVRIC8gZXRoLVxcdTAwM2VtZGNfZGl2aWRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzoxMDM4OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZXRoLVxcdTAwM2VtaWlfYnVzLCBtaWlfbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtMTAzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYz0xNDIyPXN0YXRpYyBpbnQgbXRrX3N0YXJfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jOjE0NDg6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNDQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYz0yODc9aW50IG1seGJmX2dpZ2VfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgbWx4YmZfZ2lnZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmMtMzMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmM6MzMzOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jPTI1Mz1pbnQgZmJuaWNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmMtMjcyLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToyNToyMS4yNjMxNzQ0MjZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQzODMzMDQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBNaWNyb2NoaXAgVDEgUEhZIERyaXZlciBmb3IgVmlydHVhbGl6YXRpb24vRnV6emluZyBPcHBvcnR1bml0aWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY2AsIHdoaWNoLCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGlzIHRoZSBNaWNyb2NoaXAgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgdGhvc2UgVDEgUEhZcyDigJMgdGhlIExBTjg4N3gsIExBTjg3eHgsIGFuZCBMQU45Mzd4IGZhbWlseS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gSSBsZXZlcmFnZSBhbnkgdmlydHVhbGl6YXRpb24gb3IgZnV6emluZyB0ZWNobmlxdWVzIGhlcmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlJ3MgYSBnb29kIGVudHJ5IHBvaW50IGZvciB0ZXN0aW5nLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgaG93IE1ESU8gKE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQpIGlzIGhhbmRsZWQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEknbSB3b25kZXJpbmcgaWYgdGhlcmUncyBzb21lIGtpbmQgb2YgdmlydHVhbCBNRElPIG9yIG1vY2sgUEhZIGRldmljZSBhbHJlYWR5IGltcGxlbWVudGVkIHdpdGhpbiB0aGUga2VybmVsLCBvciBwZXJoYXBzIHNvbWV0aGluZyBhdmFpbGFibGUgaW4gc3l6a2FsbGVyIHRoYXQgSSBjb3VsZCBob29rIGludG8uIFRpbWUgdG8gZG8gYSBxdWljayBzZWFyY2ggZm9yIGNsdWVzLiBJJ2xsIHN0YXJ0IHdpdGggdGVybXMgbGlrZSBcIm1kaW8tbW9jayxcIiBcIm1kaW9fYml0YmFuZyxcIiBvciBhbnl0aGluZyBzaW1pbGFyIHRoYXQgbWlnaHQgb2ZmZXIgYSB3YXkgdG8gc2ltdWxhdGUgb3IgY29udHJvbCB0aGUgUEhZJ3MgYmVoYXZpb3Igd2l0aG91dCBuZWVkaW5nIHRoZSBhY3R1YWwgaGFyZHdhcmUuIEkgbmVlZCB0byBzZWUgaWYgSSBjYW4gZWZmZWN0aXZlbHkgdmlydHVhbGl6ZSBvciBtb2NrIHRoaXMgdG8gdGVzdCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk1NywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjIzLjcwMTUwNzkzMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2NDcyMTQ4NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qbW9ja3xtb2NrLiptZGlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToyNToyNi4xNjYyNDEwOTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgxNDIzOTU3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBEaWFnbm9zdGljIFByb2Nlc3MqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIGVzdGFibGlzaCBhIGJhc2VsaW5lLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhbnkgdmlydHVhbCBkcml2ZXIgaW5zdGFuY2VzIHNwZWNpZmljYWxseSBjcmVhdGluZyBpbnN0YW5jZXMgb2YgYG1pY3JvY2hpcF90MWAuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuIEZyb20gdGhlcmUsIEknbGwgbmVlZCB0byBicm9hZGVuIHRoZSBzY29wZSBhbmQgaHVudCBkb3duIHJlZmVyZW5jZXMgdG8gYExBTjg4N1hgIHdpdGhpbiB0aGUgZW50aXJlIGtlcm5lbCBjb2RlYmFzZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgb3ZlcnZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzMyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6MjcuOTgwNDgzOTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODY3NTI2MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUEhZX0lEX0xBTjg4N1hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2LSNkZWZpbmUgUEhZX0lEX0xBTjkzN1hcXHRcXHRcXHRcXHQweDAwMDdjMTgwXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE3OiNkZWZpbmUgUEhZX0lEX0xBTjg4N1hcXHRcXHRcXHRcXHQweDAwMDdjMWYwXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTE2MDc9c3RhdGljIGludCBsYW44ODd4X2NkX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYyMS1cXHRcXHRcXHRcXHQgICAoKHZhbCBcXHUwMDI2IEdFTk1BU0soMTUsIDQpKSA9PVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNjIyOlxcdFxcdFxcdFxcdCAgICAoUEhZX0lEX0xBTjg4N1ggXFx1MDAyNiBHRU5NQVNLKDE1LCA0KSkpLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjIzLVxcdFxcdFxcdFxcdCAgIDUwMDAsIDUwMDAwLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yMTA2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFfcGh5X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDEtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQyOlxcdFxcdFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCksXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDMtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJNaWNyb2NoaXAgTEFOODg3eCBUMSBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIxNjc9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtaWNyb2NoaXBfdDFfdGJsW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE2OS1cXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOOTM3WCkgfSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE3MDpcXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCkgfSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE3MS1cXHR7IH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6MzAuMjY3MjQyMzI3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwODQzNTQ1OTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkxBTjg4N3ggUEhZIERyaXZlciBGdXp6aW5nIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTEFOODg3eCwgd2hpY2gsIGFzIGFuIGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZICgxMDBCQVNFLVQxLzEwMDBCQVNFLVQxKSwgcmFpc2VzIHNvbWUgaW1tZWRpYXRlIHF1ZXN0aW9ucyByZWdhcmRpbmcgZnV6emluZy4gVGhlIGtleSBpc3N1ZSBoZXJlIGlzIHdoZXRoZXIgdGhpcyBoYXJkd2FyZSBQSFkgZHJpdmVyIGlzIGV2ZW4gcmVhY2hhYmxlIHdpdGhpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS5cblxuTGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIGtub3cgdGhlIGd1aWRlbGluZXMgZm9yIGRldGVybWluaW5nIGlmIGEgcGF0Y2ggaXMgXCJXb3J0aEZ1enppbmdcIi4gVGhleSBwb2ludCBvdXQgc2V2ZXJhbCBzY2VuYXJpb3Mgd2hlcmUgd2UgY2FuIHNraXAgZnV6emluZywgaW5jbHVkaW5nIGNoYW5nZXMgdG8gZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIGRlY29yYXRpdmUgbG9nZ2luZywgY2hhbmdlcyB0byBjb25zdGFudHMgd2l0aG91dCBpbXBhY3RpbmcgZmxvdywgb3IsIGNyaXRpY2FsbHksIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgaGVhcnQgb2YgdGhlIG1hdHRlciBpcyB3aGV0aGVyIHRoaXMgZHJpdmVyIGNhbiBvcGVyYXRlIHdpdGhvdXQgcmVhbCwgcGh5c2ljYWwgaGFyZHdhcmUuXG5cbk15IHVuZGVyc3RhbmRpbmcgaXMsIHRoZSBMQU44ODd4IGRyaXZlciByZWxpZXMgb24gYW4gTURJTyBidXMgZm9yIGNvbW11bmljYXRpb24uIE5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIHdpdGggaXRzIHZpcnR1YWxpemVkIG5ldHdvcmsgY2FyZHMgKGUxMDAwLCB2aXJ0aW8tbmV0LCBldGMuKSwgZXhwb3NlIGFuIE1ESU8gYnVzIHN1aXRhYmxlIGZvciBvdXIgUEhZIGRyaXZlcj8gVGhlIGFuc3dlciwgYXMgSSBrbm93LCBpcyB0eXBpY2FsbHkgbm8uIFN0YW5kYXJkIG5ldHdvcmsgY2FyZHMgZWl0aGVyIGhhdmUgaW50ZXJuYWwgUEhZcywgdXNlIHBoeWxpYiB3aXRoIGEgZ2VuZXJpYyBQSFksIG9yIHRoZXkgZG9uJ3QgZXZlbiAqcHJlc2VudCogYW4gTURJTyBidXMgdG8gdGhlIGBkcml2ZXJzL25ldC9waHkvYCBzdWJzeXN0ZW0gYXQgYWxsLiBTcGVjaWZpY2FsbHksIHRoZSBgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jYCBkcml2ZXIg4oCTIHdoaWNoIHRoaXMgcGF0Y2ggbW9kaWZpZXMg4oCTIHJlcXVpcmVzIGEgKnBoeXNpY2FsKiBNaWNyb2NoaXAgVDEgUEhZIGNvbm5lY3RlZCB2aWEgTURJTy4gVGhlcmVmb3JlLCB0aGlzIGRyaXZlciwgYXMgaXQncyBzZXQgdXAgaW4gb3VyIGtlcm5lbCwgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIFFFTVUgb3IgR0NFIHNldHVwLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGRlYWxzIHdpdGggYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSBgbGFuODg3eF9waHlfaW5pdGAgZnVuY3Rpb24sIGJ5IGFkZGluZyBhIE5VTEwgY2hlY2sgZm9yIGBwcml2LVx1MDAzZWNsb2NrYC4gVGhlIGlzc3VlIG9jY3VycyBiZWNhdXNlIHdoZW4gYG1jaHBfcmRzX3B0cF9wcm9iZWAgcmV0dXJucyBOVUxMLCBgcHJpdi1cdTAwM2VjbG9ja2AgbWlnaHQgYWxzbyBiZSBOVUxMLCBidXQgdGhlIGNvZGUgc3RpbGwgYXR0ZW1wdHMgdG8gZGVyZWZlcmVuY2UgYHByaXYtXHUwMDNlY2xvY2stXHUwMDNlZXZlbnRfcGluYC4gVGhlIGFkZGVkIGlmIHN0YXRlbWVudCBwcmV2ZW50cyB0aGlzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRyaXZlciB0byBwcmV2ZW50IGEgY3Jhc2ggY29uZGl0aW9uLlxuXG5Ib3dldmVyLCB0aGUgZmFjdCByZW1haW5zIHRoYXQgdGhpcyBpcyBhbiBhdXRvbW90aXZlIEV0aGVybmV0IFBIWSBkcml2ZXIgYW5kIGlzIGRlc2lnbmVkIGZvciByZWFsIGhhcmR3YXJlLiBJdCdzIG5vdCBkZXNpZ25lZCB0byBiZSBhY2Nlc3NlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBjb21wb25lbnRzLiBUaGUgZml4ICphZGRyZXNzZXMqIGEgbGVnaXRpbWF0ZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UsIGJ1dCBpdCBkb2Vzbid0IGNoYW5nZSB0aGUgdW5kZXJseWluZyByZXF1aXJlbWVudCBvZiBuZWVkaW5nIGEgKnJlYWwqIE1pY3JvY2hpcCBMQU44ODd4L0xBTjg3eHggdHJhbnNjZWl2ZXIuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGNvZGUgcGF0aCBpcyBzaW1wbHkgdW5yZWFjaGFibGUgd2l0aGluIG91ciBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgdGhlIFwiV29ydGhGdXp6aW5nXCIgZmxhZyBoYXMgdG8gYmUgYGZhbHNlYC5cblxuSnVzdCB0byBtYWtlIHN1cmUsIGxldCdzIGNvbmZpcm0gdGhlIGRldGFpbHM6XG5cbjEuICBJcyBXb3J0aEZ1enppbmcgZmFsc2U/IFllcy5cbjIuICBGb2N1c1N5bWJvbHM6IFxcW10uXG4zLiAgRW5hYmxlQ29uZmlnczogXFxbXFxdLlxuNC4gIFJlYXNvbmluZzogQ2xlYXIuXG5cbk9rYXksIHRoYXQncyBlbm91Z2ggZm9yIG15IGV4cGVydCBhc3Nlc3NtZW50LiBJdCdzIHRpbWUgdG8gbWFyayB0aGlzIG9uZSBhcyBub24tZnV6emFibGUgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDM1LCJPdXRwdXRUb2tlbnMiOjExMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6NDEuMTEwNzkwNDAxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGxhbjg4N3hfcGh5X2luaXQoKSB3aXRoaW4gdGhlIE1pY3JvY2hpcCBUMSBFdGhlcm5ldCBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBwaHlzaWNhbCBNaWNyb2NoaXAgTEFOODg3eCBhdXRvbW90aXZlIEV0aGVybmV0IFBIWSBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgb3IgcHJvYmVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gbGFuODg3eF9waHlfaW5pdCgpIHdpdGhpbiB0aGUgTWljcm9jaGlwIFQxIEV0aGVybmV0IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYykuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIHBoeXNpY2FsIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZIGhhcmR3YXJlIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBwcm9iZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjQxLjExMDgxNDUxMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowfj5rw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-03 00:40:37 +0000 UTC FinishedAt: 2026-09-03 01:25:42 +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+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGxhbjg4N3hfcGh5X2luaXQoKSB3aXRoaW4gdGhlIE1pY3JvY2hpcCBUMSBFdGhlcm5ldCBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBwaHlzaWNhbCBNaWNyb2NoaXAgTEFOODg3eCBhdXRvbW90aXZlIEV0aGVybmV0IFBIWSBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgb3IgcHJvYmVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODNlZjJjYmQ1N2Q3ZjNlMjI5NjhkNTc1ODIwMTQ4NjkzZGI1NzYyN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDMgMDE6MjQ6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXG5pbmRleCAzMjkyYjIyMzVjOGZhLi5lMzhkMjBiZjZhYTRjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbkBAIC0xMjg1LDE0ICYjNDM7MTI4NSwxNiBAQCBzdGF0aWMgaW50IGxhbjg4N3hfcGh5X2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZWNsb2NrKSlcbiBcdFx0XHRyZXR1cm4gUFRSX0VSUihwcml2LVx1MDAzZWNsb2NrKTtcbiBcbi1cdFx0LyogRW5hYmxlIHBpbiBtdXggZm9yIEVWVCAqL1xuLVx0XHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuLVx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMSxcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLFxuLVx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xuLVxuLVx0XHQvKiBJbml0aWFsaXplIHBpbiBudW1iZXJzIHNwZWNpZmljIHRvIFBFUk9VVCAqL1xuLVx0XHRwcml2LVx1MDAzZWNsb2NrLVx1MDAzZWV2ZW50X3BpbiA9IDM7XG4mIzQzO1x0XHRpZiAocHJpdi1cdTAwM2VjbG9jaykge1xuJiM0MztcdFx0XHQvKiBFbmFibGUgcGluIG11eCBmb3IgRVZUICovXG4mIzQzO1x0XHRcdHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG4mIzQzO1x0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxuJiM0MztcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4sXG4mIzQzO1x0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTik7XG4mIzQzO1xuJiM0MztcdFx0XHQvKiBJbml0aWFsaXplIHBpbiBudW1iZXJzIHNwZWNpZmljIHRvIFBFUk9VVCAqL1xuJiM0MztcdFx0XHRwcml2LVx1MDAzZWNsb2NrLVx1MDAzZWV2ZW50X3BpbiA9IDM7XG4mIzQzO1x0XHR9XG4gXG4gXHRcdHByaXYtXHUwMDNlaW5pdF9kb25lID0gdHJ1ZTtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToyNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gbGFuODg3eF9waHlfaW5pdCgpIHdpdGhpbiB0aGUgTWljcm9jaGlwIFQxIEV0aGVybmV0IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYykuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIHBoeXNpY2FsIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZIGhhcmR3YXJlIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBwcm9iZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4M2VmMmNiZDU3ZDdmM2UyMjk2OGQ1NzU4MjAxNDg2OTNkYjU3NjI3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAwMToyNDo0MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYwppbmRleCAzMjkyYjIyMzVjOGZhLi5lMzhkMjBiZjZhYTRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jCkBAIC0xMjg1LDE0ICYjNDM7MTI4NSwxNiBAQCBzdGF0aWMgaW50IGxhbjg4N3hfcGh5X2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJaWYgKElTX0VSUihwcml2LSZndDtjbG9jaykpCiAJCQlyZXR1cm4gUFRSX0VSUihwcml2LSZndDtjbG9jayk7CiAKLQkJLyogRW5hYmxlIHBpbiBtdXggZm9yIEVWVCAqLwotCQlwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLAotCQkJICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLAotCQkJICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTiwKLQkJCSAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pOwotCi0JCS8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovCi0JCXByaXYtJmd0O2Nsb2NrLSZndDtldmVudF9waW4gPSAzOwomIzQzOwkJaWYgKHByaXYtJmd0O2Nsb2NrKSB7CiYjNDM7CQkJLyogRW5hYmxlIHBpbiBtdXggZm9yIEVWVCAqLwomIzQzOwkJCXBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsCiYjNDM7CQkJCSAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMSwKJiM0MzsJCQkJICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTiwKJiM0MzsJCQkJICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTik7CiYjNDM7CiYjNDM7CQkJLyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi8KJiM0MzsJCQlwcml2LSZndDtjbG9jay0mZ3Q7ZXZlbnRfcGluID0gMzsKJiM0MzsJCX0KIAogCQlwcml2LSZndDtpbml0X2RvbmUgPSB0cnVlOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzOgoKKipFeGFtaW5pbmcgdGhlIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGlzIHBhdGNoLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyBpbiBgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jYC4gR29vZCwgdGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gTm93LCBsZXQmIzM5O3MgZ2V0IGEgbG9vayBhdCB0aGUgcmVsZXZhbnQgc2VjdGlvbiBvZiB0aGF0IGZpbGUuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byBleGFtaW5lIGFyb3VuZCBsaW5lIDEyODUuIFVzdWFsbHksIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjaGFuZ2VzIHdpbGwgYmUuIEkmIzM5O2xsIGZpcmUgdXAgbXkgdHJ1c3R5IGByZWFkLWZpbGVgIGNvbW1hbmQgdG8gcHVsbCB0aGUgZmlsZSBhbmQgdGhlIHN1cnJvdW5kaW5nIGxpbmVzIGludG8gdmlldy4gVGhpcyB3aWxsIGxldCBtZSBxdWlja2x5IGFzc2VzcyB0aGUgY29udGV4dCBhbmQgcGlucG9pbnQgdGhlIG1vZGlmaWNhdGlvbnMuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyNjA6XHRcbjEyNjE6XHRcdHJldCA9IGdlbnBoeV9jNDVfcG1hX3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XG4xMjYyOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTI2MzpcdFx0XHRyZXR1cm4gcmV0O1xuMTI2NDpcdFxuMTI2NTpcdFx0LyogRW5hYmxlIHR3aXN0ZWQgcGFpciAqL1xuMTI2NjpcdFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9UUF9CSVQsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpO1xuMTI2NzpcdFxuMTI2ODpcdFx0LyogRmlyc3QgcGF0Y2ggb25seSBzdXBwb3J0cyAxMDBNYnBzIGFuZCAxMDAwTWJwcyBmb3JjZS1tb2RlLlxuMTI2OTpcdFx0ICogVDEgQXV0by1OZWdvdGlhdGlvbiAoQ2xhdXNlIDk4IG9mIElFRUUgODAyLjMpIHdpbGwgYmUgYWRkZWQgbGF0ZXIuXG4xMjcwOlx0XHQgKi9cbjEyNzE6XHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCwgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4xMjcyOlx0XG4xMjczOlx0XHRyZXR1cm4gMDtcbjEyNzQ6XHR9XG4xMjc1Olx0XG4xMjc2Olx0c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4xMjc3Olx0e1xuMTI3ODpcdFx0c3RydWN0IGxhbjg4N3hfcHJpdiAqcHJpdiA9IHBoeWRldi1cdTAwM2Vwcml2O1xuMTI3OTpcdFx0aW50IHJldDtcbjEyODA6XHRcbjEyODE6XHRcdGlmICghcHJpdi1cdTAwM2Vpbml0X2RvbmUgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkge1xuMTI4MjpcdFx0XHRwcml2LVx1MDAzZWNsb2NrID0gbWNocF9yZHNfcHRwX3Byb2JlKHBoeWRldiwgTURJT19NTURfVkVORDEsXG4xMjgzOlx0XHRcdFx0XHRcdFx0IE1DSFBfUkRTX1BUUF9MVENfQkFTRV9BRERSLFxuMTI4NDpcdFx0XHRcdFx0XHRcdCBNQ0hQX1JEU19QVFBfUE9SVF9CQVNFX0FERFIpO1xuMTI4NTpcdFx0XHRpZiAoSVNfRVJSKHByaXYtXHUwMDNlY2xvY2spKVxuMTI4NjpcdFx0XHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlY2xvY2spO1xuMTI4NzpcdFxuMTI4ODpcdFx0XHRpZiAocHJpdi1cdTAwM2VjbG9jaykge1xuMTI4OTpcdFx0XHRcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cbjEyOTA6XHRcdFx0XHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuMTI5MTpcdFx0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxuMTI5MjpcdFx0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcbjEyOTM6XHRcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xuMTI5NDpcdFxuMTI5NTpcdFx0XHRcdC8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovXG4xMjk2Olx0XHRcdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuMTI5NzpcdFx0XHR9XG4xMjk4Olx0XG4xMjk5Olx0XHRcdHByaXYtXHUwMDNlaW5pdF9kb25lID0gdHJ1ZTtcbjEzMDA6XHRcdH1cbjEzMDE6XHRcbjEzMDI6XHRcdC8qIENsZWFyIGxvb3BiYWNrICovXG4xMzAzOlx0XHRyZXQgPSBwaHlfY2xlYXJfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbjEzMDQ6XHRcdFx0XHRcdCBMQU44ODdYX01JU19DRkdfUkVHMixcbjEzMDU6XHRcdFx0XHRcdCBMQU44ODdYX01JU19DRkdfUkVHMl9GRV9MUEJLX0VOKTtcbjEzMDY6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMzA3Olx0XHRcdHJldHVybiByZXQ7XG4xMzA4Olx0XG4xMzA5Olx0XHQvKiBDb25maWd1cmUgZGVmYXVsdCBiZWhhdmlvciBvZiBsZWQgdG8gbGluayBhbmQgYWN0aXZpdHkgZm9yIGFueVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0NTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTdWl0YWJpbGl0eSBvZiBhIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkcml2ZXIgYWN0dWFsbHkgc3VwcG9ydHM7IGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZm9yIE1pY3JvY2hpcCYjMzk7cyBMQU44ODd4LCBMQU44N3h4IGFuZCBvdGhlciBFdGhlcm5ldCBQSFkgdHJhbnNjZWl2ZXJzLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IHRlc3QgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCByZWxpZXMgb24gYSBzcGVjaWZpYyBwaHlzaWNhbCBzZXR1cOKAlGEgcGh5c2ljYWwgTURJTyBpbnRlcmZhY2Ugb3IgYSBwaHlzaWNhbCBQSFkgY2hpcOKAlHRoYXQgaXNuJiMzOTt0IHR5cGljYWxseSBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQuCgpJIG5lZWQgdG8gcmVmZXIgYmFjayB0byB0aGUgaW5zdHJ1Y3Rpb25zIEkgd2FzIGdpdmVuLiBJIGhhdmUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyB0aGluZ3MgdGhhdCBhcmUgb2ZmLWxpbWl0czogZG9jdW1lbnRhdGlvbiB1cGRhdGVzLCBLY29uZmlnIG1vZGlmaWNhdGlvbnMsIGRlY29yYXRpdmUgY2hhbmdlcyAobG9nZ2luZywgdHJhY2Vwb2ludHMpLCBvciBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIHdpdGhvdXQgYWx0ZXJpbmcgdGhlIHByb2dyYW0gZmxvdy4gQWxzbywgYW5kIGltcG9ydGFudGx5LCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYXJlIG91dC4gVGhpcyBpcyBhIHZlcnkgaW1wb3J0YW50IGNvbnNpZGVyYXRpb24hIEZpbmFsbHksIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaC9TbWFydE5JQy9HUFUgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgY2FyZHMgYXJlIG91dCBvZiBib3VuZHMsIGFuZCBzbyBhcmUgdGVhcmRvd24gY2FsbGJhY2tzIGZvciBkcml2ZXJzLgoKU28sIEkgbmVlZCB0byBjb25maXJtIGlmIGBtaWNyb2NoaXBfdDEuY2AgaXMgaW5kZWVkIGZvciBwaHlzaWNhbCBFdGhlcm5ldCBQSFlzLCBzcGVjaWZpY2FsbHkgdGhvc2UgMTAwQkFTRS1UMS8xMDAwQkFTRS1UMSBTaW5nbGUgUGFpciBFdGhlcm5ldCBQSFlzIChMQU44ODd4L0xBTjg3eHgpLiBUaGUgY29yZSBvZiB0aGUgYW5hbHlzaXMgaXMgd2hldGhlciBQSFkgZHJpdmVycywgbGlrZSB0aGlzIGBtaWNyb2NoaXBfdDFgLCBjYW4gYWN0dWFsbHkgYmUgcHJvYmVkLCBlbXVsYXRlZCwgb3IgcmVhc29uYWJseSB0ZXN0ZWQgaW4gUUVNVS9HQ0UsIG9yIHdoZXRoZXIgaXQmIzM5O3MgbG9ja2VkIHRvIHBoeXNpY2FsIGhhcmR3YXJlLiBJJiMzOTtsbCBuZWVkIHRvIHNlYXJjaCB0aGUgYE1ha2VmaWxlYCBhbmQgYEtjb25maWdgIGZpbGVzIGZvciBgbWljcm9jaGlwX3QxYCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWljcm9jaGlwX3QxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT04MT1vYmotJChDT05GSUdfTUlDUk9DSElQX1BIWV9SRFNfUFRQKVx0JiM0Mzs9IG1pY3JvY2hpcF9yZHNfcHRwLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MjpvYmotJChDT05GSUdfTUlDUk9DSElQX1QxX1BIWSlcdCYjNDM7PSBtaWNyb2NoaXBfdDEub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFTX1BIWSkgJiM0Mzs9IG1pY3JvY2hpcF90MXMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTg0LW9iai0kKENPTkZJR19NSUNST1NFTUlfUEhZKVx0JiM0Mzs9IG1zY2MvXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIwNzI9c3RhdGljIGludCBsYW44ODd4X2dldF9zcWkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjEwNS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTA2OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFfcGh5X2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxMDctXHR7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNjQtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE2NTptb2R1bGVfcGh5X2RyaXZlcihtaWNyb2NoaXBfdDFfcGh5X2RyaXZlcik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE2Ni1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTY3OnN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbWljcm9jaGlwX3QxX3RibFtdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNjgtXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODdYWCkgfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE3My1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTc0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgbWljcm9jaGlwX3QxX3RibCk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE3NS1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTQ5ND1zdGF0aWMgaW50IGxhbjg2eHhfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTUwOC1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTA5OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MTAtXHR7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01NjYtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjU2Nzptb2R1bGVfcGh5X2RyaXZlcihtaWNyb2NoaXBfdDFzX2RyaXZlcik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU2OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDY0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipLY29uZmlnIElucXVpcnkgLSBNaWNyb2NoaXAgVDEgUEhZIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzdGF0dXMgb2YgdGhlIE1pY3JvY2hpcCBUMSBQSFkgZHJpdmVyIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBLY29uZmlnIHN5c3RlbS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbG9jYXRlIGFuZCB2ZXJpZnkgdGhlIGV4aXN0ZW5jZSBhbmQgY3VycmVudCBzZXR0aW5ncyBvZiBgQ09ORklHX01JQ1JPQ0hJUF9UMV9QSFlgLiBJIG5lZWQgdG8gYXNzZXNzIHdoZXRoZXIgdGhpcyBpcyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgcGVyaGFwcyBjb25kaXRpb25hbGx5IGRlZmluZWQuIFVuZGVyc3RhbmRpbmcgaXRzIHN0YXR1cyBpcyBjcnVjaWFsIGJlZm9yZSBJIGNvbnRpbnVlIGRvd24gdGhpcyBwYXRoLiBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIHN0YW5kIHdpdGggdGhpcyBiZWZvcmUgcHJvY2VlZGluZyBmdXJ0aGVyLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhlIEtjb25maWcgZmlsZXMgbm93Li4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUlDUk9DSElQX1QxX1BIWSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0zMzY9Y29uZmlnIE1JQ1JPQ0hJUF9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zNDAtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzozNDE6Y29uZmlnIE1JQ1JPQ0hJUF9UMV9QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTM0Mi1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBUMSBQSFlzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTgxPW9iai0kKENPTkZJR19NSUNST0NISVBfUEhZX1JEU19QVFApXHQmIzQzOz0gbWljcm9jaGlwX3Jkc19wdHAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgyOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFfUEhZKVx0JiM0Mzs9IG1pY3JvY2hpcF90MS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtODMtb2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9UMVNfUEhZKSAmIzQzOz0gbWljcm9jaGlwX3Qxcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ1MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFBIWSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHNvbWV0aGluZyByZWxhdGVkIHRvIFBIWSBjb25maWd1cmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgZmlsZXMsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLiBUaGF0IGZpbGUmIzM5O3MgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB2YXJpb3VzIFBIWXMgYXJlIHN1cHBvcnRlZCBhbmQgY29uZmlndXJlZCB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIFNpbmNlIEkmIzM5O20gZm9jdXNpbmcgb24gY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgc3RhcnQgYXJvdW5kIGxpbmUgMzQxLiBDaGFuY2VzIGFyZSwgdGhhdCYjMzk7cyB3aGVyZSBJIGNhbiBmaW5kIGEgcmVsZXZhbnQgb3B0aW9uLCBkZXBlbmRlbmN5LCBvciBhIGNvbW1lbnQgdGhhdCBwcm92aWRlcyBjcnVjaWFsIGNvbnRleHQgb24gdGhlIHNwZWNpZmljIGFzcGVjdHMgSSYjMzk7bSBpbnRlcmVzdGVkIGluLiBUaGUgS2NvbmZpZyBmaWxlIGlzIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtkIGNoZWNrIHdoZW4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGludGVyYWN0IHdpdGggYW5kIGNvbnRyb2wgdGhlIGZlYXR1cmVzIHByb3ZpZGVkIGJ5IHRoZSBzcGVjaWZpYyBQSFkmIzM5O3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMzNTpcdFxuIDMzNjpcdGNvbmZpZyBNSUNST0NISVBfUEhZXG4gMzM3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgUEhZc1wmIzM0O1xuIDMzODpcdFx0aGVscFxuIDMzOTpcdFx0ICBTdXBwb3J0cyB0aGUgTEFOODhYWCBQSFlzLlxuIDM0MDpcdFxuIDM0MTpcdGNvbmZpZyBNSUNST0NISVBfVDFfUEhZXG4gMzQyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgVDEgUEhZc1wmIzM0O1xuIDM0MzpcdFx0c2VsZWN0IE1JQ1JPQ0hJUF9QSFlfUkRTX1BUUCBpZiBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbiAzNDQ6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAzNDU6XHRcdGhlbHBcbiAzNDY6XHRcdCAgU3VwcG9ydHMgdGhlIExBTjhYWFggUEhZcy5cbiAzNDc6XHRcbiAzNDg6XHRjb25maWcgTUlDUk9DSElQX1BIWV9SRFNfUFRQXG4gMzQ5Olx0XHR0cmlzdGF0ZVxuIDM1MDpcdFx0aGVscFxuIDM1MTpcdFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgTEFOODg3WCBUMSBQSFlcbiAzNTI6XHRcbiAzNTM6XHRjb25maWcgTUlDUk9TRU1JX1BIWVxuIDM1NDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9zZW1pIFBIWXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk3MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBMQU44ODd4IFBIWSBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnMgYW5kIG91dHMgb2YgYGxhbjg4N3hfcGh5X2luaXRgLiBXaGF0JiMzOTtzIGl0IGRvaW5nLCBhbmQgY3JpdGljYWxseSwgKndoZW4qIGlzIGl0IGJlaW5nIGNhbGxlZD8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgaW1wbGVtZW50YXRpb24gaXRzZWxmLiBMZXQmIzM5O3MgaGVhZCBvdmVyIHRvIHRoZSBgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jYCBmaWxlLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGRlZmluaXRpb24gYW5kLCBob3BlZnVsbHksIGNsdWVzIGFib3V0IHRoZSBjYWxsaW5nIGNvbnRleHQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSBhbnRpY2lwYXRlIHNvbWUgaW50ZXJlc3RpbmcgcmVnaXN0ZXIgbWFuaXB1bGF0aW9ucyBhbmQgcGVyaGFwcyBzb21lIGNsb2NrIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xhbjg4N3hfcGh5X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTEyNTc9c3RhdGljIGludCBsYW44ODd4X2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjc1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyNzY6c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTI3Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTE2MDc9c3RhdGljIGludCBsYW44ODd4X2NkX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MzItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYzMzpcdFx0cmMgPSBsYW44ODd4X3BoeV9pbml0KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYzNC1cdFx0aWYgKHJjIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yMTA2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFfcGh5X2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTQ2LVx0XHQuZ2V0X2ZlYXR1cmVzXHQ9IGxhbjg4N3hfZ2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNDc6XHRcdC5jb25maWdfaW5pdCAgICA9IGxhbjg4N3hfcGh5X2luaXQsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE0OC1cdFx0LmNvbmZpZ19hbmVnICAgID0gbGFuODg3eF9jb25maWdfYW5lZyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYzNgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDI1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aW9uIGludG8gUEhZIERldmljZSBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIFBIWSBkZXZpY2VzIGdldCByZWdpc3RlcmVkIGFuZCBtYXRjaGVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIE1ESU8gYnVzIHByb2JpbmcgcHJvY2Vzcy4gSXQgbG9va3MgbGlrZSB0aGUga2V5IGlzIHRoZSBQSFkgSUQgbWF0Y2hpbmcgdGhlIE1ESU8gSUQgcmVnaXN0ZXIgb2YgdGhlIFBIWSBpdHNlbGYuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgbWVhbnQgZm9yIGEgcmVhbCBoYXJkd2FyZSBkZXZpY2UsIG9yIGlmIHRoZXJlJiMzOTtzIHNvbWUga2luZCBvZiBlbXVsYXRvciBpbiBhIHN0YW5kYXJkIHNldHVwIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZHJpdmVyIGlzIGludGVuZGVkIGZvciB0aGUgcGh5c2ljYWwgTWljcm9jaGlwIExBTjg4N3ggQXV0b21vdGl2ZSBFdGhlcm5ldCBQSFksIHNwZWNpZmljYWxseSB0aGUgMTAwQkFTRS1UMSAvIDEwMDBCQVNFLVQxIHZlcnNpb25zLgoKVGhlIExBTjg4NzAgaXMgYSAxMDAwQkFTRS1UMSAvIDEwMEJBU0UtVDEgYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFksIHdoaWNoIGlzIGEgYml0IG9mIGEgbmljaGUgYXJlYS4gSSBuZWVkIHRvIGFzc2VzcyB0aGUgZmVhc2liaWxpdHkgb2YgdHJpZ2dlcmluZyB0aGlzIGNvZGUgcGF0aCB0aHJvdWdoIHRvb2xzIGxpa2Ugc3l6a2FsbGVyLCBRRU1VLCBvciBHQ0UuIE15IHByaW1hcnkgY29uY2VybiBpcyBpZiB0aG9zZSBlbnZpcm9ubWVudHMgY2FuIGV2ZW4gcmVhY2ggdGhpcyBkcml2ZXIuCgpUaGlua2luZyBhYm91dCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudHMsIFFFTVUgYW5kIEdDRSB0eXBpY2FsbHkgZW11bGF0ZSBFdGhlcm5ldCBOSUNzIGxpa2UgZTEwMDAsIHZpcnRpby1uZXQsIHJ0bDgxMzksIG9yIHBjbmV0LiBOb25lIG9mIHRob3NlIHNlZW0gdG8gaW5jb3Jwb3JhdGUgb3IgZW11bGF0ZSBhIE1pY3JvY2hpcCBMQU44ODd4IFQxIFBIWS4gVGhpcyBwb3NlcyBhIHByb2JsZW0uCgpTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGlzIHRoZXJlIGEgd29ya2Fyb3VuZD8gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhlcmUmIzM5O3MgYSBVU0IgTURJTyBhZGFwdGVyLCBhIFVTQi10by1NRElPIGNvbnZlcnRlciwgb3IgZXZlbiBhIHZpcnR1YWwgTURJTyBkZXZpY2UgSSBjb3VsZCB1c2UuIFBlcmhhcHMgYSBVU0IgRXRoZXJuZXQgYWRhcHRlciB0aGF0IGFjdHVhbGx5IHVzZXMgYSBMQU44ODd4LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgVVNCIGRyaXZlcnMgdGhhdCBtaWdodCBjb25uZWN0IHRvIHNvbWV0aGluZyBsYWJlbGVkIG1pY3JvY2hpcF90MSBvciBMQU44ODd4LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSURfTEFOODg3JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNi0jZGVmaW5lIFBIWV9JRF9MQU45MzdYXHRcdFx0XHQweDAwMDdjMTgwXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTc6I2RlZmluZSBQSFlfSURfTEFOODg3WFx0XHRcdFx0MHgwMDA3YzFmMFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0xNjA3PXN0YXRpYyBpbnQgbGFuODg3eF9jZF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjIxLVx0XHRcdFx0ICAgKCh2YWwgXHUwMDI2IEdFTk1BU0soMTUsIDQpKSA9PVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2MjI6XHRcdFx0XHQgICAgKFBIWV9JRF9MQU44ODdYIFx1MDAyNiBHRU5NQVNLKDE1LCA0KSkpLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MjMtXHRcdFx0XHQgICA1MDAwLCA1MDAwMCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIxMDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDEtXHR7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0MjpcdFx0UEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU44ODdYKSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTQzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O01pY3JvY2hpcCBMQU44ODd4IFQxIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MjE2Nz1zdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG1pY3JvY2hpcF90MV90YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE2OS1cdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU45MzdYKSB9LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNzA6XHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTcxLVx0eyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NDcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIE1ESU8gQnVzIENyZWF0aW9uIGluIFN5emthbGxlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgd2UgY2FuIHRlc3QgdGhlIE1ESU8gYnVzIHdpdGhpbiBzeXprYWxsZXIuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIGluc3RhbnRpYXRlIGl0IGZyb20gdXNlcnNwYWNlLCBtYXliZSB2aWEgYSBVU0IgZ2FkZ2V0IHNldHVwLCBvciBldmVuIHNpbXVsYXRlIGl0cyBjcmVhdGlvbiBkaXJlY3RseSB3aXRoaW4gc3l6a2FsbGVyJiMzOTtzIGVudmlyb25tZW50PyBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgc3RhcnQgbG9va2luZyBmb3IgdGhlIGtleSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIE1ESU8gYnVzIGFuZCBQSFkgZGV2aWNlIGNyZWF0aW9uLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGBtZGlvYnVzX3JlZ2lzdGVyYCBhbmQgYHBoeV9kZXZpY2VfY3JlYXRlYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50cyB0byB1bmRlcnN0YW5kIHRoZSBzdGFuZGFyZCBrZXJuZWwgQVBJcyBpbnZvbHZlZCBpbiB0aGlzIHByb2Nlc3MgYW5kIHRvIHNlZSB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IGhhdmUgdGhhdCB3ZSBuZWVkIHRvIHNhdGlzZnkgdG8gYnJpbmcgdXAgdGhlIGJ1cy4gSG9wZWZ1bGx5LCB0aGlzIHNlYXJjaCB3aWxsIGxlYWQgbWUgdG8gdGhlIHJpZ2h0IGNvZGUgcGF0aHMgYW5kIGhlbHAgbWUgZGV0ZXJtaW5lIGhvdyB0byBhY2hpZXZlIG15IGdvYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9idXNfcmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMzggbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdD0zNDk9TURJT1xuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdC0zNTEtICBkZXZtX21kaW9idXNfYWxsb2Nfc2l6ZSgpXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q6MzUyOiAgZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKClcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTM6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0LTM1NC1cbi0tXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdD0xMj1kZXZpY2UgKHRoZSBzYW1lIG9iamVjdHMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB2aWFcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0OjEzOmBgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KClgYCkuIE1BQy1zaWRlIGNvbm5lY3Rpb24gcHJvcGVydGllcyBzdWNoIGFzXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdC0xNC1gYHBoeS1oYW5kbGVgYCBhbmQgYGBwaHktbW9kZWBgIGFyZSBkb2N1bWVudGVkIGluIFthY3BpLW1kaW8tcGh5XV8uXG4tLVxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0PTc9VGhlIFBIWXMgb24gYW4gTURJTyBidXMgW3BoeV0gYXJlIHByb2JlZCBhbmQgcmVnaXN0ZXJlZCB1c2luZ1xuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0Ojg6Zndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KCkuXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3QtOS1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD00MD1yZWdpc3RlcmVkIGFzIGEgZGlzdGluY3QgZGV2aWNlLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTU2LSAgIGRyaXZlciBuZWVkcywgc2V0dXAgdGhlIG1paV9idXMgc3RydWN0dXJlLCBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgUEFMIHVzaW5nXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1NzogICBtZGlvYnVzX3JlZ2lzdGVyLiAgU2ltaWxhcmx5LCB0aGVyZSYjMzk7cyBhIHJlbW92ZSBmdW5jdGlvbiB0byB1bmRvIGFsbCBvZlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTgtICAgdGhhdCAodXNlIG1kaW9idXNfdW5yZWdpc3RlcikuXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYz0xMDk9c3RhdGljIGludCBlcDgyNDhlX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzItXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jOjEzMzpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzNC1cdGlmIChyZXQpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM9MjA3PXN0YXRpYyBpbnQgZ3Bpb19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0My1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jOjI0NDpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NjA3PXN0YXRpYyBpbnQgYmNtX3NmMl9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4My1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6Njg0Olx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTg3PXN0YXRpYyBpbnQgZ3N3aXBfbWRpbyhzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoyMTQ6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTM0MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYtXHUwMDNlZGV2LCBidXMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzIxPWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzkzOlx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTc1NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwOT1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NDQtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ0NTpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDQ2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYz0yNDI9c3RhdGljIGludCBtdDc2Mjhfc2V0dXBfaW50ZXJuYWxfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jLTI2MS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYzoyNjI6XHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYy0yNjMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4MzQ9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg4Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4ODg6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg4OS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yNjc9c3RhdGljIGludCBteGw4NjJ4eF9zZXR1cF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTItXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyOTM6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjk0LVx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9MTQ5PXN0YXRpYyBpbnQgbmV0Y19wb3J0X2NyZWF0ZV9lbWRpb19idXMoc3RydWN0IG5ldGNfcG9ydCAqbnAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTc5LVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6MTgwOlx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxMy1cdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MTAxNDpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxNS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODc4PXN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDMtXHQvKiBOZWVkZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYnVzIG11dGV4IGxvY2sgKi9cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6OTA0Olx0cmMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIE5VTEwpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDUtXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jPTM1Nz1zdGF0aWMgaW50IGFyOTMzMV9zd19tYnVzX2luaXQoc3RydWN0IGFyOTMzMV9zd19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgxLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYzozODI6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODMtXHRvZl9ub2RlX3B1dChtbnApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTk0Nz1xY2E4a19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4Ni1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjk4NzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpbyk7XG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jPTc0PWludCBydGw4M3h4X3NldHVwX3VzZXJfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTk5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jOjEwMDpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy0xMDEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYz0xMTE3PXN0YXRpYyBpbnQgYTVwc3dfcHJvYmVfbWRpbyhzdHJ1Y3QgYTVwc3cgKmE1cHN3LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQzLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYzoxMTQ0Olx0cmV0dXJuIGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDUtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaD0zMDc9dm9pZCBzamExMTA1X2ZyYW1lX21lbW9yeV9wYXJ0aXRpb25pbmcoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oLTMwOS0vKiBGcm9tIHNqYTExMDVfbWRpby5jICovXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg6MzEwOmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMTEtdm9pZCBzamExMTA1X21kaW9idXNfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMwMjY9c3RhdGljIGludCBzamExMTA1X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMDY3LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6MzA2ODpcdHJjID0gc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjktXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4Ny1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI4ODpcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4OS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTMxMj1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3QxX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQzLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MzQ0Olx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQ1LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzY4PXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX3Bjc19yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM5NS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM5NjpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk3LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NDM5PXN0YXRpYyB2b2lkIHNqYTExMDVfbWRpb2J1c19wY3NfdW5yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTQ1OC1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjQ1OTppbnQgc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTU5NT15dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTItXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjEzOlx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTQtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz03MjY9eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQzLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjc0NDpcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQ1LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz00NTk9c3RhdGljIGludCBheF9taWlfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ3OTpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYXgtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00ODAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xMzIxPXN0YXRpYyBpbnQgb3dsX2VtYWNfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTM0NjpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIHByaXYtXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9NTA5PXN0YXRpYyBpbnQgYWRpbjExMTBfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3QgYWRpbjExMTBfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy01MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzo1MzA6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUzMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9NjE3PXN0YXRpYyBpbnQgYWRpbjExNDBfbWRpb19yZWdpc3RlcihzdHJ1Y3QgYWRpbjExNDBfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzo2Mzc6XHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNnNwaWRldi1cdTAwM2VkZXYsIHByaXYtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTI5MD1zdGF0aWMgaW50IGdyZXRoX21kaW9faW5pdChzdHJ1Y3QgZ3JldGhfcHJpdmF0ZSAqZ3JldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYzoxMzA3Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihncmV0aC1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwOC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYz0zOTMxPXN0YXRpYyBpbnQgZXQxMzF4X3BjaV9zZXR1cChzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM6NDAyNzpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyOC1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMjE9c3RhdGljIGludCBhbHRlcmFfdHNlX21kaW9fY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE1ODpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTktXHRpZiAocmV0ICE9IDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jPTEwNjE9c3RhdGljIGludCBhdTEwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTEyMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jOjEyMjI6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGF1cC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMy1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTM0Mjg9c3RhdGljIGludCB4Z2JlX3BoeV9pbml0KHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MTctXHRzbnByaW50ZihtaWktXHUwMDNlaWQsIHNpemVvZihtaWktXHUwMDNlaWQpLCBcJiMzNDslc1wmIzM0OywgZGV2X25hbWUocGRhdGEtXHUwMDNlZGV2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MTg6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MTktXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MjA6XHRcdGRldl9lcnIocGRhdGEtXHUwMDNlZGV2LCBcJiMzNDttZGlvYnVzX3JlZ2lzdGVyIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MjEtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYz05OD1pbnQgeGdlX21kaW9fY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTE4LVx0bWRpb19idXMtXHUwMDNlcGh5X21hc2sgPSAweDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExOTpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMjAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9ODM3PWludCB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo4ODg6c3RhdGljIGludCB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg5LVx0XHRcdFx0ICBzdHJ1Y3QgbWlpX2J1cyAqbWRpbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTEzOlx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTQtXHRcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIxLVx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkyMjpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05Mzk9aW50IHhnZW5lX2VuZXRfbWRpb19jb25maWcoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTg6XHRyZXQgPSB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLCBtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM9MTMxPWludCBhcmNfbWRpb19wcm9iZShzdHJ1Y3QgYXJjX2VtYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jOjE3MzpcdGVycm9yID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTc0LVx0b2Zfbm9kZV9wdXQobWRpb19ub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYz05NjY9c3RhdGljIGludCBheDg4Nzk2Y19wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYzoxMDExOlx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIGF4X2xvY2FsLVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMi1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTY4Nz1zdGF0aWMgaW50IGFnNzF4eF9tZGlvX3Byb2JlKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI3LVx0bW5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFwmIzM0O21kaW9cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Mjg6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjktXHRvZl9ub2RlX3B1dChtbnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIyMzQ9c3RhdGljIGludCBiNDRfcmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjI2MDpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIobWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjYxLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTE3MTM9c3RhdGljIGludCBiY21fZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoxODMwOlx0XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xODMxLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM9MjExPXN0cnVjdCBtaWlfYnVzICpiY21hX21kaW9fbWlpX3JlZ2lzdGVyKHN0cnVjdCBiZ21hYyAqYmdtYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM6MjM2Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzctXHRvZl9ub2RlX3B1dChucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MTkzPWludCBiY21nZW5ldF9taWlfY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgaW5pdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzMtXHRcdHBoeV9uYW1lID0gXCYjMzQ7ZXh0ZXJuYWwgUnZNSUlcJiMzNDs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzoyMzQ6XHRcdC8qIG9mX21kaW9idXNfcmVnaXN0ZXIgdG9vayBjYXJlIG9mIHJlYWRpbmcgdGhlICYjMzk7bWF4LXNwZWVkJiMzOTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzNS1cdFx0ICogUEhZIHByb3BlcnR5IGZvciB1cywgZWZmZWN0aXZlbHkgbGltaXRpbmcgdGhlIFBIWSBzdXBwb3J0ZWRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM9MjE1Nz1zdGF0aWMgaW50IHNibWFjX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxkZXYsIGxvbmcgbG9uZyBiYXNlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI3LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM6MjIyODpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoc2MtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyOS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNTA1PXN0YXRpYyBpbnQgdGczX21kaW9faW5pdChzdHJ1Y3QgdGczICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTU1ODpcdGkgPSBtZGlvYnVzX3JlZ2lzdGVyKHRwLVx1MDAzZW1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTktXHRpZiAoaSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDk3OnN0YXRpYyBpbnQgbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IGRldmljZV9ub2RlICptZGlvX25wKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDQtXHRpZiAobWRpb19ucClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEwNTpcdFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTE5Olx0XHRcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVx1MDAzZW1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMC1cdFx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTIyOlx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjMtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTEyNT1zdGF0aWMgaW50IG1hY2JfbWlpX2luaXQoc3RydWN0IG1hY2IgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTE1OTpcdGVyciA9IG1hY2JfbWRpb2J1c19yZWdpc3RlcihicCwgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNjAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTEwNz1zdGF0aWMgaW50IGRtOTA1MV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBib2FyZF9pbmZvICpkYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjExMjU6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2c3BpLVx1MDAzZWRldiwgZGItXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yNDIzPXN0YXRpYyBpbnQgdHNuZXBfbWRpb19pbml0KHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjI0NTU6XHRyZXR2YWwgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXHUwMDNlbWRpb2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYz0xMDI0PXN0YXRpYyBpbnQgZXRob2NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jOjEyMDg6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWRpbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xNzM0PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3NldHVwX21kaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE3NzA6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VkZXYsIHByaXYtXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NzEtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0zNj1zdGF0aWMgaW50IGVuZXRjX3BjaV9tZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM6OTE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZGV2LVx1MDAzZW9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0yNjY9c3RhdGljIGludCBlbmV0Y19tZGlvX3Byb2JlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzoyOTM6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTI5NC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTMwOD1zdGF0aWMgaW50IGVuZXRjX2ltZGlvX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQzOlx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0NC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0zMDQyPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6MzE2MTpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZmVwLVx1MDAzZW1paV9idXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jPTY1PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jOjEwNjpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jPTE0OT1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM6MTc2Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jPTk3PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM6MTY3Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYz00MDk9c3RhdGljIGludCBmc2xfcHFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jOjQ5NDpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDk1LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM9MzcxPXN0YXRpYyBpbnQgeGdtYWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI2LVx0aWYgKGlzX29mX25vZGUoZndub2RlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI3Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgdG9fb2Zfbm9kZShmd25vZGUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI4LVx0ZWxzZSBpZiAoaXNfYWNwaV9ub2RlKGZ3bm9kZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jOjQyOTpcdFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZndub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDMwLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjY2PWludCBoYmdfbWRpb19pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjkyOlx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYz0xMDk0PXN0YXRpYyBpbnQgaGl4NWhkMl9kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzoxMTg2Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM9MTIzPWludCBoY2xnZV9tYWNfbWRpb19jb25maWcoc3RydWN0IGhjbGdlX2RldiAqaGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1NC1cdG1kaW9fYnVzLVx1MDAzZXBoeV9tYXNrID0gfigxVSBcdTAwM2NcdTAwM2MgbWFjLVx1MDAzZXBoeV9hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM6MTU1Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1Ni1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYz00OTU9c3RhdGljIGludCBobnNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU4NDpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBwZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4NS1cdH0gZWxzZSBpZiAoaXNfYWNwaV9ub2RlKHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTItXHRcdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTkzOlx0XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTk0LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjU2MD1zdGF0aWMgaW50IGVtYWNfZHRfbWRpb19wcm9iZShzdHJ1Y3QgZW1hY19pbnN0YW5jZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg0LVx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0OyVzXCYjMzQ7LCBkZXYtXHUwMDNlb2ZkZXYtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjU4NTpcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihcdTAwMjZkZXYtXHUwMDNlb2ZkZXYtXHUwMDNlZGV2LCBidXMsIG1paV9ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4Ni1cdGlmIChyZXMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYz0xMDI2PWludCBpeGdiZV9taWlfYnVzX2luaXQoc3RydWN0IGl4Z2JlX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDg4LVx0YWRhcHRlci1cdTAwM2VtaWlfYnVzID0gYnVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM6MTA4OTpcdHJldHVybiBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDkwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jPTM4NT1sdHFfZXRvcF9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwMi1cdFx0IHByaXYtXHUwMDNlcGRldi1cdTAwM2VuYW1lLCBwcml2LVx1MDAzZXBkZXYtXHUwMDNlaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYzo0MDM6XHRpZiAobWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1paV9idXMpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwNC1cdFx0ZXJyID0gLUVOWElPO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM9MjgzPXN0YXRpYyBpbnQgb3Jpb25fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgxLVx0LyogRm9yIHRoZSBwbGF0Zm9ybXMgbm90IHN1cHBvcnRpbmcgRFQvQUNQSSBmYWxsLWJhY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6MzgyOlx0ICogdG8gbWRpb2J1c19yZWdpc3RlciB2aWEgb2ZfbWRpb2J1c19yZWdpc3Rlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgzLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4NC1cdGlmIChpc19hY3BpX25vZGUocGRldi1cdTAwM2VkZXYuZndub2RlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg1Olx0XHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVx1MDAzZWRldi5md25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODYtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NzpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODgtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM9MTM4Nz1zdGF0aWMgaW50IHB4YTE2OF9ldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA0LVx0cGVwLVx1MDAzZXNtaV9idXMtXHUwMDNlcGh5X21hc2sgPSAweGZmZmZmZmZmO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM6MTUwNTpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIocGVwLVx1MDAzZXNtaV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMtMTUwNi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz05OTg9c3RhdGljIGludCBtdGtfbWRpb19pbml0KHN0cnVjdCBtdGtfZXRoICpldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM3LVx0ZGV2X2RiZyhldGgtXHUwMDNlZGV2LCBcJiMzNDtNREMgaXMgcnVubmluZyBvbiAlZCBIelxcblwmIzM0OywgTURDX01BWF9GUkVRIC8gZXRoLVx1MDAzZW1kY19kaXZpZGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6MTAzODpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZXRoLVx1MDAzZW1paV9idXMsIG1paV9ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTE0MjI9c3RhdGljIGludCBtdGtfc3Rhcl9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTQ0ODpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIHByaXYtXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYz0yODc9aW50IG1seGJmX2dpZ2VfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgbWx4YmZfZ2lnZSAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmM6MzMzOlx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jPTI1Mz1pbnQgZmJuaWNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jLTI3Mi1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk1NwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIE1pY3JvY2hpcCBUMSBQSFkgRHJpdmVyIGZvciBWaXJ0dWFsaXphdGlvbi9GdXp6aW5nIE9wcG9ydHVuaXRpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNgLCB3aGljaCwgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBpcyB0aGUgTWljcm9jaGlwIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRob3NlIFQxIFBIWXMg4oCTIHRoZSBMQU44ODd4LCBMQU44N3h4LCBhbmQgTEFOOTM3eCBmYW1pbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIEkgbGV2ZXJhZ2UgYW55IHZpcnR1YWxpemF0aW9uIG9yIGZ1enppbmcgdGVjaG5pcXVlcyBoZXJlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSYjMzk7cyBhIGdvb2QgZW50cnkgcG9pbnQgZm9yIHRlc3RpbmcuIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgaG93IE1ESU8gKE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQpIGlzIGhhbmRsZWQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlJiMzOTtzIHNvbWUga2luZCBvZiB2aXJ0dWFsIE1ESU8gb3IgbW9jayBQSFkgZGV2aWNlIGFscmVhZHkgaW1wbGVtZW50ZWQgd2l0aGluIHRoZSBrZXJuZWwsIG9yIHBlcmhhcHMgc29tZXRoaW5nIGF2YWlsYWJsZSBpbiBzeXprYWxsZXIgdGhhdCBJIGNvdWxkIGhvb2sgaW50by4gVGltZSB0byBkbyBhIHF1aWNrIHNlYXJjaCBmb3IgY2x1ZXMuIEkmIzM5O2xsIHN0YXJ0IHdpdGggdGVybXMgbGlrZSAmIzM0O21kaW8tbW9jaywmIzM0OyAmIzM0O21kaW9fYml0YmFuZywmIzM0OyBvciBhbnl0aGluZyBzaW1pbGFyIHRoYXQgbWlnaHQgb2ZmZXIgYSB3YXkgdG8gc2ltdWxhdGUgb3IgY29udHJvbCB0aGUgUEhZJiMzOTtzIGJlaGF2aW9yIHdpdGhvdXQgbmVlZGluZyB0aGUgYWN0dWFsIGhhcmR3YXJlLiBJIG5lZWQgdG8gc2VlIGlmIEkgY2FuIGVmZmVjdGl2ZWx5IHZpcnR1YWxpemUgb3IgbW9jayB0aGlzIHRvIHRlc3QgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLiptb2NrfG1vY2suKm1kaW8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTMzMgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IERpYWdub3N0aWMgUHJvY2VzcyoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBlc3RhYmxpc2ggYSBiYXNlbGluZS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHdlIGhhdmUgYW55IHZpcnR1YWwgZHJpdmVyIGluc3RhbmNlcyBzcGVjaWZpY2FsbHkgY3JlYXRpbmcgaW5zdGFuY2VzIG9mIGBtaWNyb2NoaXBfdDFgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgbmVlZCB0byBicm9hZGVuIHRoZSBzY29wZSBhbmQgaHVudCBkb3duIHJlZmVyZW5jZXMgdG8gYExBTjg4N1hgIHdpdGhpbiB0aGUgZW50aXJlIGtlcm5lbCBjb2RlYmFzZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgb3ZlcnZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JRF9MQU44ODdYJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNi0jZGVmaW5lIFBIWV9JRF9MQU45MzdYXHRcdFx0XHQweDAwMDdjMTgwXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTc6I2RlZmluZSBQSFlfSURfTEFOODg3WFx0XHRcdFx0MHgwMDA3YzFmMFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0xNjA3PXN0YXRpYyBpbnQgbGFuODg3eF9jZF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjIxLVx0XHRcdFx0ICAgKCh2YWwgXHUwMDI2IEdFTk1BU0soMTUsIDQpKSA9PVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2MjI6XHRcdFx0XHQgICAgKFBIWV9JRF9MQU44ODdYIFx1MDAyNiBHRU5NQVNLKDE1LCA0KSkpLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MjMtXHRcdFx0XHQgICA1MDAwLCA1MDAwMCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIxMDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDEtXHR7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0MjpcdFx0UEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU44ODdYKSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTQzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O01pY3JvY2hpcCBMQU44ODd4IFQxIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MjE2Nz1zdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG1pY3JvY2hpcF90MV90YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE2OS1cdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU45MzdYKSB9LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNzA6XHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTcxLVx0eyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDM1CgkJCQkJCQlvdXRwdXQ6IDExMwoJCQkJCQkJdGhvdWdodHM6IDEwNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTEFOODg3eCBQSFkgRHJpdmVyIEZ1enppbmcgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIExBTjg4N3gsIHdoaWNoLCBhcyBhbiBhdXRvbW90aXZlIEV0aGVybmV0IFBIWSAoMTAwQkFTRS1UMS8xMDAwQkFTRS1UMSksIHJhaXNlcyBzb21lIGltbWVkaWF0ZSBxdWVzdGlvbnMgcmVnYXJkaW5nIGZ1enppbmcuIFRoZSBrZXkgaXNzdWUgaGVyZSBpcyB3aGV0aGVyIHRoaXMgaGFyZHdhcmUgUEhZIGRyaXZlciBpcyBldmVuIHJlYWNoYWJsZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UuCgpMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIGtub3cgdGhlIGd1aWRlbGluZXMgZm9yIGRldGVybWluaW5nIGlmIGEgcGF0Y2ggaXMgJiMzNDtXb3J0aEZ1enppbmcmIzM0Oy4gVGhleSBwb2ludCBvdXQgc2V2ZXJhbCBzY2VuYXJpb3Mgd2hlcmUgd2UgY2FuIHNraXAgZnV6emluZywgaW5jbHVkaW5nIGNoYW5nZXMgdG8gZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIGRlY29yYXRpdmUgbG9nZ2luZywgY2hhbmdlcyB0byBjb25zdGFudHMgd2l0aG91dCBpbXBhY3RpbmcgZmxvdywgb3IsIGNyaXRpY2FsbHksIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgaGVhcnQgb2YgdGhlIG1hdHRlciBpcyB3aGV0aGVyIHRoaXMgZHJpdmVyIGNhbiBvcGVyYXRlIHdpdGhvdXQgcmVhbCwgcGh5c2ljYWwgaGFyZHdhcmUuCgpNeSB1bmRlcnN0YW5kaW5nIGlzLCB0aGUgTEFOODg3eCBkcml2ZXIgcmVsaWVzIG9uIGFuIE1ESU8gYnVzIGZvciBjb21tdW5pY2F0aW9uLiBOb3csIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLCB3aXRoIGl0cyB2aXJ0dWFsaXplZCBuZXR3b3JrIGNhcmRzIChlMTAwMCwgdmlydGlvLW5ldCwgZXRjLiksIGV4cG9zZSBhbiBNRElPIGJ1cyBzdWl0YWJsZSBmb3Igb3VyIFBIWSBkcml2ZXI/IFRoZSBhbnN3ZXIsIGFzIEkga25vdywgaXMgdHlwaWNhbGx5IG5vLiBTdGFuZGFyZCBuZXR3b3JrIGNhcmRzIGVpdGhlciBoYXZlIGludGVybmFsIFBIWXMsIHVzZSBwaHlsaWIgd2l0aCBhIGdlbmVyaWMgUEhZLCBvciB0aGV5IGRvbiYjMzk7dCBldmVuICpwcmVzZW50KiBhbiBNRElPIGJ1cyB0byB0aGUgYGRyaXZlcnMvbmV0L3BoeS9gIHN1YnN5c3RlbSBhdCBhbGwuIFNwZWNpZmljYWxseSwgdGhlIGBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNgIGRyaXZlciDigJMgd2hpY2ggdGhpcyBwYXRjaCBtb2RpZmllcyDigJMgcmVxdWlyZXMgYSAqcGh5c2ljYWwqIE1pY3JvY2hpcCBUMSBQSFkgY29ubmVjdGVkIHZpYSBNRElPLiBUaGVyZWZvcmUsIHRoaXMgZHJpdmVyLCBhcyBpdCYjMzk7cyBzZXQgdXAgaW4gb3VyIGtlcm5lbCwgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIFFFTVUgb3IgR0NFIHNldHVwLgoKVGhlIHBhdGNoIGl0c2VsZiBkZWFscyB3aXRoIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgYGxhbjg4N3hfcGh5X2luaXRgIGZ1bmN0aW9uLCBieSBhZGRpbmcgYSBOVUxMIGNoZWNrIGZvciBgcHJpdi0mZ3Q7Y2xvY2tgLiBUaGUgaXNzdWUgb2NjdXJzIGJlY2F1c2Ugd2hlbiBgbWNocF9yZHNfcHRwX3Byb2JlYCByZXR1cm5zIE5VTEwsIGBwcml2LSZndDtjbG9ja2AgbWlnaHQgYWxzbyBiZSBOVUxMLCBidXQgdGhlIGNvZGUgc3RpbGwgYXR0ZW1wdHMgdG8gZGVyZWZlcmVuY2UgYHByaXYtJmd0O2Nsb2NrLSZndDtldmVudF9waW5gLiBUaGUgYWRkZWQgaWYgc3RhdGVtZW50IHByZXZlbnRzIHRoaXMuIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZHJpdmVyIHRvIHByZXZlbnQgYSBjcmFzaCBjb25kaXRpb24uCgpIb3dldmVyLCB0aGUgZmFjdCByZW1haW5zIHRoYXQgdGhpcyBpcyBhbiBhdXRvbW90aXZlIEV0aGVybmV0IFBIWSBkcml2ZXIgYW5kIGlzIGRlc2lnbmVkIGZvciByZWFsIGhhcmR3YXJlLiBJdCYjMzk7cyBub3QgZGVzaWduZWQgdG8gYmUgYWNjZXNzZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgY29tcG9uZW50cy4gVGhlIGZpeCAqYWRkcmVzc2VzKiBhIGxlZ2l0aW1hdGUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBidXQgaXQgZG9lc24mIzM5O3QgY2hhbmdlIHRoZSB1bmRlcmx5aW5nIHJlcXVpcmVtZW50IG9mIG5lZWRpbmcgYSAqcmVhbCogTWljcm9jaGlwIExBTjg4N3gvTEFOODd4eCB0cmFuc2NlaXZlci4KClRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGNvZGUgcGF0aCBpcyBzaW1wbHkgdW5yZWFjaGFibGUgd2l0aGluIG91ciBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgdGhlICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgZmxhZyBoYXMgdG8gYmUgYGZhbHNlYC4KCkp1c3QgdG8gbWFrZSBzdXJlLCBsZXQmIzM5O3MgY29uZmlybSB0aGUgZGV0YWlsczoKCjEuICBJcyBXb3J0aEZ1enppbmcgZmFsc2U/IFllcy4KMi4gIEZvY3VzU3ltYm9sczogXFtdLgozLiAgRW5hYmxlQ29uZmlnczogXFtcXS4KNC4gIFJlYXNvbmluZzogQ2xlYXIuCgpPa2F5LCB0aGF0JiMzOTtzIGVub3VnaCBmb3IgbXkgZXhwZXJ0IGFzc2Vzc21lbnQuIEl0JiMzOTtzIHRpbWUgdG8gbWFyayB0aGlzIG9uZSBhcyBub24tZnV6emFibGUgYW5kIG1vdmUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGxhbjg4N3hfcGh5X2luaXQoKSB3aXRoaW4gdGhlIE1pY3JvY2hpcCBUMSBFdGhlcm5ldCBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBwaHlzaWNhbCBNaWNyb2NoaXAgTEFOODg3eCBhdXRvbW90aXZlIEV0aGVybmV0IFBIWSBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgb3IgcHJvYmVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gbGFuODg3eF9waHlfaW5pdCgpIHdpdGhpbiB0aGUgTWljcm9jaGlwIFQxIEV0aGVybmV0IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYykuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIHBoeXNpY2FsIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZIGhhcmR3YXJlIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBwcm9iZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToyNDo0Mi4yMDEzNzkwMjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODkwOTQ0NzQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBsYW44ODd4X3BoeV9pbml0KCkgd2l0aGluIHRoZSBNaWNyb2NoaXAgVDEgRXRoZXJuZXQgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gcGh5c2ljYWwgTWljcm9jaGlwIExBTjg4N3ggYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFkgaGFyZHdhcmUgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIHByb2JlZCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBzdWNoIGFzIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjQ6NDIuMjAxMzg0NDc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg4ODI4ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODNlZjJjYmQ1N2Q3ZjNlMjI5NjhkNTc1ODIwMTQ4NjkzZGI1NzYyN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAzIDAxOjI0OjQwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xcbmluZGV4IDMyOTJiMjIzNWM4ZmEuLmUzOGQyMGJmNmFhNGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXFxuQEAgLTEyODUsMTQgKzEyODUsMTYgQEAgc3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcdFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlY2xvY2spKVxcbiBcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihwcml2LVxcdTAwM2VjbG9jayk7XFxuIFxcbi1cXHRcXHQvKiBFbmFibGUgcGluIG11eCBmb3IgRVZUICovXFxuLVxcdFxcdHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuLVxcdFxcdFxcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMSxcXG4tXFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcXG4tXFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTik7XFxuLVxcbi1cXHRcXHQvKiBJbml0aWFsaXplIHBpbiBudW1iZXJzIHNwZWNpZmljIHRvIFBFUk9VVCAqL1xcbi1cXHRcXHRwcml2LVxcdTAwM2VjbG9jay1cXHUwMDNlZXZlbnRfcGluID0gMztcXG4rXFx0XFx0aWYgKHByaXYtXFx1MDAzZWNsb2NrKSB7XFxuK1xcdFxcdFxcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cXG4rXFx0XFx0XFx0cGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTtcXG4rXFxuK1xcdFxcdFxcdC8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovXFxuK1xcdFxcdFxcdHByaXYtXFx1MDAzZWNsb2NrLVxcdTAwM2VldmVudF9waW4gPSAzO1xcbitcXHRcXHR9XFxuIFxcbiBcXHRcXHRwcml2LVxcdTAwM2Vpbml0X2RvbmUgPSB0cnVlO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI0OjQzLjY5MTA4MTEzNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTc0MTk3MzE1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBsYW44ODd4X3BoeV9pbml0KCkgd2l0aGluIHRoZSBNaWNyb2NoaXAgVDEgRXRoZXJuZXQgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gcGh5c2ljYWwgTWljcm9jaGlwIExBTjg4N3ggYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFkgaGFyZHdhcmUgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIHByb2JlZCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBzdWNoIGFzIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODNlZjJjYmQ1N2Q3ZjNlMjI5NjhkNTc1ODIwMTQ4NjkzZGI1NzYyN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDMgMDE6MjQ6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbmluZGV4IDMyOTJiMjIzNWM4ZmEuLmUzOGQyMGJmNmFhNGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xuQEAgLTEyODUsMTQgKzEyODUsMTYgQEAgc3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VjbG9jaykpXG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIocHJpdi1cdTAwM2VjbG9jayk7XG4gXG4tXHRcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cbi1cdFx0cGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDEsXG4tXHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTtcbi1cbi1cdFx0LyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi9cbi1cdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuK1x0XHRpZiAocHJpdi1cdTAwM2VjbG9jaykge1xuK1x0XHRcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cbitcdFx0XHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuK1x0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxuK1x0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcbitcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xuK1xuK1x0XHRcdC8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovXG4rXHRcdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuK1x0XHR9XG4gXG4gXHRcdHByaXYtXHUwMDNlaW5pdF9kb25lID0gdHJ1ZTtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI0OjQzLjY5MTExMzUwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEzNDU5NjE4MjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6XG5cbioqRXhhbWluaW5nIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGlzIHBhdGNoLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyBpbiBgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jYC4gR29vZCwgdGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gTm93LCBsZXQncyBnZXQgYSBsb29rIGF0IHRoZSByZWxldmFudCBzZWN0aW9uIG9mIHRoYXQgZmlsZS4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gZXhhbWluZSBhcm91bmQgbGluZSAxMjg1LiBVc3VhbGx5LCB0aGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjaGFuZ2VzIHdpbGwgYmUuIEknbGwgZmlyZSB1cCBteSB0cnVzdHkgYHJlYWQtZmlsZWAgY29tbWFuZCB0byBwdWxsIHRoZSBmaWxlIGFuZCB0aGUgc3Vycm91bmRpbmcgbGluZXMgaW50byB2aWV3LiBUaGlzIHdpbGwgbGV0IG1lIHF1aWNrbHkgYXNzZXNzIHRoZSBjb250ZXh0IGFuZCBwaW5wb2ludCB0aGUgbW9kaWZpY2F0aW9ucy4gVGltZSB0byBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjQ6NTcuMTUwNzM1MzAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjYwOlxcdFxcbjEyNjE6XFx0XFx0cmV0ID0gZ2VucGh5X2M0NV9wbWFfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcXG4xMjYyOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjEyNjM6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMjY0OlxcdFxcbjEyNjU6XFx0XFx0LyogRW5hYmxlIHR3aXN0ZWQgcGFpciAqL1xcbjEyNjY6XFx0XFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9UUF9CSVQsIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkKTtcXG4xMjY3OlxcdFxcbjEyNjg6XFx0XFx0LyogRmlyc3QgcGF0Y2ggb25seSBzdXBwb3J0cyAxMDBNYnBzIGFuZCAxMDAwTWJwcyBmb3JjZS1tb2RlLlxcbjEyNjk6XFx0XFx0ICogVDEgQXV0by1OZWdvdGlhdGlvbiAoQ2xhdXNlIDk4IG9mIElFRUUgODAyLjMpIHdpbGwgYmUgYWRkZWQgbGF0ZXIuXFxuMTI3MDpcXHRcXHQgKi9cXG4xMjcxOlxcdFxcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCwgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpO1xcbjEyNzI6XFx0XFxuMTI3MzpcXHRcXHRyZXR1cm4gMDtcXG4xMjc0OlxcdH1cXG4xMjc1OlxcdFxcbjEyNzY6XFx0c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMTI3NzpcXHR7XFxuMTI3ODpcXHRcXHRzdHJ1Y3QgbGFuODg3eF9wcml2ICpwcml2ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbjEyNzk6XFx0XFx0aW50IHJldDtcXG4xMjgwOlxcdFxcbjEyODE6XFx0XFx0aWYgKCFwcml2LVxcdTAwM2Vpbml0X2RvbmUgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHlkZXYpKSB7XFxuMTI4MjpcXHRcXHRcXHRwcml2LVxcdTAwM2VjbG9jayA9IG1jaHBfcmRzX3B0cF9wcm9iZShwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbjEyODM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IE1DSFBfUkRTX1BUUF9MVENfQkFTRV9BRERSLFxcbjEyODQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IE1DSFBfUkRTX1BUUF9QT1JUX0JBU0VfQUREUik7XFxuMTI4NTpcXHRcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZWNsb2NrKSlcXG4xMjg2OlxcdFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHByaXYtXFx1MDAzZWNsb2NrKTtcXG4xMjg3OlxcdFxcbjEyODg6XFx0XFx0XFx0aWYgKHByaXYtXFx1MDAzZWNsb2NrKSB7XFxuMTI4OTpcXHRcXHRcXHRcXHQvKiBFbmFibGUgcGluIG11eCBmb3IgRVZUICovXFxuMTI5MDpcXHRcXHRcXHRcXHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbjEyOTE6XFx0XFx0XFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxcbjEyOTI6XFx0XFx0XFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcXG4xMjkzOlxcdFxcdFxcdFxcdFxcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xcbjEyOTQ6XFx0XFxuMTI5NTpcXHRcXHRcXHRcXHQvKiBJbml0aWFsaXplIHBpbiBudW1iZXJzIHNwZWNpZmljIHRvIFBFUk9VVCAqL1xcbjEyOTY6XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlY2xvY2stXFx1MDAzZWV2ZW50X3BpbiA9IDM7XFxuMTI5NzpcXHRcXHRcXHR9XFxuMTI5ODpcXHRcXG4xMjk5OlxcdFxcdFxcdHByaXYtXFx1MDAzZWluaXRfZG9uZSA9IHRydWU7XFxuMTMwMDpcXHRcXHR9XFxuMTMwMTpcXHRcXG4xMzAyOlxcdFxcdC8qIENsZWFyIGxvb3BiYWNrICovXFxuMTMwMzpcXHRcXHRyZXQgPSBwaHlfY2xlYXJfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG4xMzA0OlxcdFxcdFxcdFxcdFxcdCBMQU44ODdYX01JU19DRkdfUkVHMixcXG4xMzA1OlxcdFxcdFxcdFxcdFxcdCBMQU44ODdYX01JU19DRkdfUkVHMl9GRV9MUEJLX0VOKTtcXG4xMzA2OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjEzMDc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMzA4OlxcdFxcbjEzMDk6XFx0XFx0LyogQ29uZmlndXJlIGRlZmF1bHQgYmVoYXZpb3Igb2YgbGVkIHRvIGxpbmsgYW5kIGFjdGl2aXR5IGZvciBhbnlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjQ6NTcuMTUwODg2MzUyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjM0MzIyNzg1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFN1aXRhYmlsaXR5IG9mIGEgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkcml2ZXIgYWN0dWFsbHkgc3VwcG9ydHM7IGl0IGxvb2tzIGxpa2UgaXQncyBmb3IgTWljcm9jaGlwJ3MgTEFOODg3eCwgTEFOODd4eCBhbmQgb3RoZXIgRXRoZXJuZXQgUEhZIHRyYW5zY2VpdmVycy4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciB0aGlzIGlzIHNvbWV0aGluZyBJIGNhbiBhY3R1YWxseSB0ZXN0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQgcmVsaWVzIG9uIGEgc3BlY2lmaWMgcGh5c2ljYWwgc2V0dXDigJRhIHBoeXNpY2FsIE1ESU8gaW50ZXJmYWNlIG9yIGEgcGh5c2ljYWwgUEhZIGNoaXDigJR0aGF0IGlzbid0IHR5cGljYWxseSBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQuXG5cbkkgbmVlZCB0byByZWZlciBiYWNrIHRvIHRoZSBpbnN0cnVjdGlvbnMgSSB3YXMgZ2l2ZW4uIEkgaGF2ZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIHRoaW5ncyB0aGF0IGFyZSBvZmYtbGltaXRzOiBkb2N1bWVudGF0aW9uIHVwZGF0ZXMsIEtjb25maWcgbW9kaWZpY2F0aW9ucywgZGVjb3JhdGl2ZSBjaGFuZ2VzIChsb2dnaW5nLCB0cmFjZXBvaW50cyksIG9yIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgd2l0aG91dCBhbHRlcmluZyB0aGUgcHJvZ3JhbSBmbG93LiBBbHNvLCBhbmQgaW1wb3J0YW50bHksIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhcmUgb3V0LiBUaGlzIGlzIGEgdmVyeSBpbXBvcnRhbnQgY29uc2lkZXJhdGlvbiEgRmluYWxseSwgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBjYXJkcyBhcmUgb3V0IG9mIGJvdW5kcywgYW5kIHNvIGFyZSB0ZWFyZG93biBjYWxsYmFja3MgZm9yIGRyaXZlcnMuXG5cblNvLCBJIG5lZWQgdG8gY29uZmlybSBpZiBgbWljcm9jaGlwX3QxLmNgIGlzIGluZGVlZCBmb3IgcGh5c2ljYWwgRXRoZXJuZXQgUEhZcywgc3BlY2lmaWNhbGx5IHRob3NlIDEwMEJBU0UtVDEvMTAwMEJBU0UtVDEgU2luZ2xlIFBhaXIgRXRoZXJuZXQgUEhZcyAoTEFOODg3eC9MQU44N3h4KS4gVGhlIGNvcmUgb2YgdGhlIGFuYWx5c2lzIGlzIHdoZXRoZXIgUEhZIGRyaXZlcnMsIGxpa2UgdGhpcyBgbWljcm9jaGlwX3QxYCwgY2FuIGFjdHVhbGx5IGJlIHByb2JlZCwgZW11bGF0ZWQsIG9yIHJlYXNvbmFibHkgdGVzdGVkIGluIFFFTVUvR0NFLCBvciB3aGV0aGVyIGl0J3MgbG9ja2VkIHRvIHBoeXNpY2FsIGhhcmR3YXJlLiBJJ2xsIG5lZWQgdG8gc2VhcmNoIHRoZSBgTWFrZWZpbGVgIGFuZCBgS2NvbmZpZ2AgZmlsZXMgZm9yIGBtaWNyb2NoaXBfdDFgIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ3MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjAzLjQ5NDExODE3MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA1OTY1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWljcm9jaGlwX3QxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9ODE9b2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9QSFlfUkRTX1BUUClcXHQrPSBtaWNyb2NoaXBfcmRzX3B0cC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgyOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFfUEhZKVxcdCs9IG1pY3JvY2hpcF90MS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19NSUNST0NISVBfVDFTX1BIWSkgKz0gbWljcm9jaGlwX3Qxcy5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTg0LW9iai0kKENPTkZJR19NSUNST1NFTUlfUEhZKVxcdCs9IG1zY2MvXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MjA3Mj1zdGF0aWMgaW50IGxhbjg4N3hfZ2V0X3NxaShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxMDUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxMDY6c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxMDctXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNjQtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNjU6bW9kdWxlX3BoeV9kcml2ZXIobWljcm9jaGlwX3QxX3BoeV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTY2LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTY3OnN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbWljcm9jaGlwX3QxX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTY4LVxcdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU44N1hYKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNzMtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNzQ6TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBtaWNyb2NoaXBfdDFfdGJsKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9NDk0PXN0YXRpYyBpbnQgbGFuODZ4eF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MDgtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1MDk6c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01MTAtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01NjYtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1Njc6bW9kdWxlX3BoeV9kcml2ZXIobWljcm9jaGlwX3Qxc19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTY4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToyNTowMy42MDQ3MjUwOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2OTI1ODQ4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqS2NvbmZpZyBJbnF1aXJ5IC0gTWljcm9jaGlwIFQxIFBIWSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzdGF0dXMgb2YgdGhlIE1pY3JvY2hpcCBUMSBQSFkgZHJpdmVyIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBLY29uZmlnIHN5c3RlbS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbG9jYXRlIGFuZCB2ZXJpZnkgdGhlIGV4aXN0ZW5jZSBhbmQgY3VycmVudCBzZXR0aW5ncyBvZiBgQ09ORklHX01JQ1JPQ0hJUF9UMV9QSFlgLiBJIG5lZWQgdG8gYXNzZXNzIHdoZXRoZXIgdGhpcyBpcyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgcGVyaGFwcyBjb25kaXRpb25hbGx5IGRlZmluZWQuIFVuZGVyc3RhbmRpbmcgaXRzIHN0YXR1cyBpcyBjcnVjaWFsIGJlZm9yZSBJIGNvbnRpbnVlIGRvd24gdGhpcyBwYXRoLiBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIHN0YW5kIHdpdGggdGhpcyBiZWZvcmUgcHJvY2VlZGluZyBmdXJ0aGVyLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgS2NvbmZpZyBmaWxlcyBub3cuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA2NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjA1LjI5NzMxMjM1NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI0MTc2MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUlDUk9DSElQX1QxX1BIWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MzM2PWNvbmZpZyBNSUNST0NISVBfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zNDAtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MzQxOmNvbmZpZyBNSUNST0NISVBfVDFfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMzQyLVxcdHRyaXN0YXRlIFxcXCJNaWNyb2NoaXAgVDEgUEhZc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT04MT1vYmotJChDT05GSUdfTUlDUk9DSElQX1BIWV9SRFNfUFRQKVxcdCs9IG1pY3JvY2hpcF9yZHNfcHRwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6ODI6b2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9UMV9QSFkpXFx0Kz0gbWljcm9jaGlwX3QxLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtODMtb2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9UMVNfUEhZKSArPSBtaWNyb2NoaXBfdDFzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6MDUuNDA5NzM0NzA0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTcyMjQwMjQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUEhZIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiBzb21ldGhpbmcgcmVsYXRlZCB0byBQSFkgY29uZmlndXJhdGlvbi4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUga2VybmVsJ3MgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AuIFRoYXQgZmlsZSdzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSBmb3IgdW5kZXJzdGFuZGluZyBob3cgdmFyaW91cyBQSFlzIGFyZSBzdXBwb3J0ZWQgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBTaW5jZSBJJ20gZm9jdXNpbmcgb24gY29uZmlndXJhdGlvbiwgSSdsbCBzdGFydCBhcm91bmQgbGluZSAzNDEuIENoYW5jZXMgYXJlLCB0aGF0J3Mgd2hlcmUgSSBjYW4gZmluZCBhIHJlbGV2YW50IG9wdGlvbiwgZGVwZW5kZW5jeSwgb3IgYSBjb21tZW50IHRoYXQgcHJvdmlkZXMgY3J1Y2lhbCBjb250ZXh0IG9uIHRoZSBzcGVjaWZpYyBhc3BlY3RzIEknbSBpbnRlcmVzdGVkIGluLiBUaGUgS2NvbmZpZyBmaWxlIGlzIHRoZSBmaXJzdCBwbGFjZSBJJ2QgY2hlY2sgd2hlbiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gaW50ZXJhY3Qgd2l0aCBhbmQgY29udHJvbCB0aGUgZmVhdHVyZXMgcHJvdmlkZWQgYnkgdGhlIHNwZWNpZmljIFBIWSdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDUzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6MDcuMTMyMTQwMzk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMzUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMzU6XFx0XFxuIDMzNjpcXHRjb25maWcgTUlDUk9DSElQX1BIWVxcbiAzMzc6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBQSFlzXFxcIlxcbiAzMzg6XFx0XFx0aGVscFxcbiAzMzk6XFx0XFx0ICBTdXBwb3J0cyB0aGUgTEFOODhYWCBQSFlzLlxcbiAzNDA6XFx0XFxuIDM0MTpcXHRjb25maWcgTUlDUk9DSElQX1QxX1BIWVxcbiAzNDI6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBUMSBQSFlzXFxcIlxcbiAzNDM6XFx0XFx0c2VsZWN0IE1JQ1JPQ0hJUF9QSFlfUkRTX1BUUCBpZiBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG4gMzQ0OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gMzQ1OlxcdFxcdGhlbHBcXG4gMzQ2OlxcdFxcdCAgU3VwcG9ydHMgdGhlIExBTjhYWFggUEhZcy5cXG4gMzQ3OlxcdFxcbiAzNDg6XFx0Y29uZmlnIE1JQ1JPQ0hJUF9QSFlfUkRTX1BUUFxcbiAzNDk6XFx0XFx0dHJpc3RhdGVcXG4gMzUwOlxcdFxcdGhlbHBcXG4gMzUxOlxcdFxcdCAgQ3VycmVudGx5IHN1cHBvcnRzIExBTjg4N1ggVDEgUEhZXFxuIDM1MjpcXHRcXG4gMzUzOlxcdGNvbmZpZyBNSUNST1NFTUlfUEhZXFxuIDM1NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9zZW1pIFBIWXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjA3LjEzMjI3ODQ5OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTQyMTI3MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBMQU44ODd4IFBIWSBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5zIGFuZCBvdXRzIG9mIGBsYW44ODd4X3BoeV9pbml0YC4gV2hhdCdzIGl0IGRvaW5nLCBhbmQgY3JpdGljYWxseSwgKndoZW4qIGlzIGl0IGJlaW5nIGNhbGxlZD8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgaW1wbGVtZW50YXRpb24gaXRzZWxmLiBMZXQncyBoZWFkIG92ZXIgdG8gdGhlIGBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNgIGZpbGUuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciB0aGUgZGVmaW5pdGlvbiBhbmQsIGhvcGVmdWxseSwgY2x1ZXMgYWJvdXQgdGhlIGNhbGxpbmcgY29udGV4dC4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEkgYW50aWNpcGF0ZSBzb21lIGludGVyZXN0aW5nIHJlZ2lzdGVyIG1hbmlwdWxhdGlvbnMgYW5kIHBlcmhhcHMgc29tZSBjbG9jayBjb25maWd1cmF0aW9uLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NzMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjA5LjI3NDQwOTM1OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM5Nzg2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGFuODg3eF9waHlfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTEyNTc9c3RhdGljIGludCBsYW44ODd4X2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNzUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyNzY6c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNzcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTE2MDc9c3RhdGljIGludCBsYW44ODd4X2NkX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYzMi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYzMzpcXHRcXHRyYyA9IGxhbjg4N3hfcGh5X2luaXQocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYzNC1cXHRcXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIxMDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE0Ni1cXHRcXHQuZ2V0X2ZlYXR1cmVzXFx0PSBsYW44ODd4X2dldF9mZWF0dXJlcyxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0NzpcXHRcXHQuY29uZmlnX2luaXQgICAgPSBsYW44ODd4X3BoeV9pbml0LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTQ4LVxcdFxcdC5jb25maWdfYW5lZyAgICA9IGxhbjg4N3hfY29uZmlnX2FuZWcsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjA5LjM1ODM5NDE4N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTYwNTg2NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEludmVzdGlnYXRpb24gaW50byBQSFkgRGV2aWNlIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBQSFkgZGV2aWNlcyBnZXQgcmVnaXN0ZXJlZCBhbmQgbWF0Y2hlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBNRElPIGJ1cyBwcm9iaW5nIHByb2Nlc3MuIEl0IGxvb2tzIGxpa2UgdGhlIGtleSBpcyB0aGUgUEhZIElEIG1hdGNoaW5nIHRoZSBNRElPIElEIHJlZ2lzdGVyIG9mIHRoZSBQSFkgaXRzZWxmLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIG1lYW50IGZvciBhIHJlYWwgaGFyZHdhcmUgZGV2aWNlLCBvciBpZiB0aGVyZSdzIHNvbWUga2luZCBvZiBlbXVsYXRvciBpbiBhIHN0YW5kYXJkIHNldHVwIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkuIFNwZWNpZmljYWxseSwgSSdtIHRyeWluZyB0byBkZXRlcm1pbmUgaWYgdGhpcyBkcml2ZXIgaXMgaW50ZW5kZWQgZm9yIHRoZSBwaHlzaWNhbCBNaWNyb2NoaXAgTEFOODg3eCBBdXRvbW90aXZlIEV0aGVybmV0IFBIWSwgc3BlY2lmaWNhbGx5IHRoZSAxMDBCQVNFLVQxIC8gMTAwMEJBU0UtVDEgdmVyc2lvbnMuXG5cblRoZSBMQU44ODcwIGlzIGEgMTAwMEJBU0UtVDEgLyAxMDBCQVNFLVQxIGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZLCB3aGljaCBpcyBhIGJpdCBvZiBhIG5pY2hlIGFyZWEuIEkgbmVlZCB0byBhc3Nlc3MgdGhlIGZlYXNpYmlsaXR5IG9mIHRyaWdnZXJpbmcgdGhpcyBjb2RlIHBhdGggdGhyb3VnaCB0b29scyBsaWtlIHN5emthbGxlciwgUUVNVSwgb3IgR0NFLiBNeSBwcmltYXJ5IGNvbmNlcm4gaXMgaWYgdGhvc2UgZW52aXJvbm1lbnRzIGNhbiBldmVuIHJlYWNoIHRoaXMgZHJpdmVyLlxuXG5UaGlua2luZyBhYm91dCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudHMsIFFFTVUgYW5kIEdDRSB0eXBpY2FsbHkgZW11bGF0ZSBFdGhlcm5ldCBOSUNzIGxpa2UgZTEwMDAsIHZpcnRpby1uZXQsIHJ0bDgxMzksIG9yIHBjbmV0LiBOb25lIG9mIHRob3NlIHNlZW0gdG8gaW5jb3Jwb3JhdGUgb3IgZW11bGF0ZSBhIE1pY3JvY2hpcCBMQU44ODd4IFQxIFBIWS4gVGhpcyBwb3NlcyBhIHByb2JsZW0uXG5cblNvLCB0aGUgcXVlc3Rpb24gYmVjb21lcywgaXMgdGhlcmUgYSB3b3JrYXJvdW5kPyBJJ20gd29uZGVyaW5nIGlmIHRoZXJlJ3MgYSBVU0IgTURJTyBhZGFwdGVyLCBhIFVTQi10by1NRElPIGNvbnZlcnRlciwgb3IgZXZlbiBhIHZpcnR1YWwgTURJTyBkZXZpY2UgSSBjb3VsZCB1c2UuIFBlcmhhcHMgYSBVU0IgRXRoZXJuZXQgYWRhcHRlciB0aGF0IGFjdHVhbGx5IHVzZXMgYSBMQU44ODd4LiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBVU0IgZHJpdmVycyB0aGF0IG1pZ2h0IGNvbm5lY3QgdG8gc29tZXRoaW5nIGxhYmVsZWQgbWljcm9jaGlwX3QxIG9yIExBTjg4N3guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MzYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6MTQuNTE4OTgzMTkzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjkzNTkyOTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JRF9MQU44ODdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2LSNkZWZpbmUgUEhZX0lEX0xBTjkzN1hcXHRcXHRcXHRcXHQweDAwMDdjMTgwXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE3OiNkZWZpbmUgUEhZX0lEX0xBTjg4N1hcXHRcXHRcXHRcXHQweDAwMDdjMWYwXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTE2MDc9c3RhdGljIGludCBsYW44ODd4X2NkX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYyMS1cXHRcXHRcXHRcXHQgICAoKHZhbCBcXHUwMDI2IEdFTk1BU0soMTUsIDQpKSA9PVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNjIyOlxcdFxcdFxcdFxcdCAgICAoUEhZX0lEX0xBTjg4N1ggXFx1MDAyNiBHRU5NQVNLKDE1LCA0KSkpLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjIzLVxcdFxcdFxcdFxcdCAgIDUwMDAsIDUwMDAwLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yMTA2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFfcGh5X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDEtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQyOlxcdFxcdFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCksXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDMtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJNaWNyb2NoaXAgTEFOODg3eCBUMSBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIxNjc9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtaWNyb2NoaXBfdDFfdGJsW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE2OS1cXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOOTM3WCkgfSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE3MDpcXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCkgfSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE3MS1cXHR7IH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6MTYuODEyNTgwNjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA4MDkzNDAwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE1ESU8gQnVzIENyZWF0aW9uIGluIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB3ZSBjYW4gdGVzdCB0aGUgTURJTyBidXMgd2l0aGluIHN5emthbGxlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgaW5zdGFudGlhdGUgaXQgZnJvbSB1c2Vyc3BhY2UsIG1heWJlIHZpYSBhIFVTQiBnYWRnZXQgc2V0dXAsIG9yIGV2ZW4gc2ltdWxhdGUgaXRzIGNyZWF0aW9uIGRpcmVjdGx5IHdpdGhpbiBzeXprYWxsZXIncyBlbnZpcm9ubWVudD8gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBrZXkgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBNRElPIGJ1cyBhbmQgUEhZIGRldmljZSBjcmVhdGlvbi4gSSdsbCBzZWFyY2ggZm9yIGBtZGlvYnVzX3JlZ2lzdGVyYCBhbmQgYHBoeV9kZXZpY2VfY3JlYXRlYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50cyB0byB1bmRlcnN0YW5kIHRoZSBzdGFuZGFyZCBrZXJuZWwgQVBJcyBpbnZvbHZlZCBpbiB0aGlzIHByb2Nlc3MgYW5kIHRvIHNlZSB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IGhhdmUgdGhhdCB3ZSBuZWVkIHRvIHNhdGlzZnkgdG8gYnJpbmcgdXAgdGhlIGJ1cy4gSG9wZWZ1bGx5LCB0aGlzIHNlYXJjaCB3aWxsIGxlYWQgbWUgdG8gdGhlIHJpZ2h0IGNvZGUgcGF0aHMgYW5kIGhlbHAgbWUgZGV0ZXJtaW5lIGhvdyB0byBhY2hpZXZlIG15IGdvYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4NDcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToyNToxOC44OTM1MTc5OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM2OTY0NDQ5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvYnVzX3JlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEzOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0PTM0OT1NRElPXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUxLSAgZGV2bV9tZGlvYnVzX2FsbG9jX3NpemUoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTI6ICBkZXZtX21kaW9idXNfcmVnaXN0ZXIoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTM6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdC0zNTQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdD0xMj1kZXZpY2UgKHRoZSBzYW1lIG9iamVjdHMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB2aWFcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdDoxMzpgYGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeSgpYGApLiBNQUMtc2lkZSBjb25uZWN0aW9uIHByb3BlcnRpZXMgc3VjaCBhc1xcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0LTE0LWBgcGh5LWhhbmRsZWBgIGFuZCBgYHBoeS1tb2RlYGAgYXJlIGRvY3VtZW50ZWQgaW4gW2FjcGktbWRpby1waHldXy5cXG4tLVxcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvcGh5LnJzdD03PVRoZSBQSFlzIG9uIGFuIE1ESU8gYnVzIFtwaHldIGFyZSBwcm9iZWQgYW5kIHJlZ2lzdGVyZWQgdXNpbmdcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3Q6ODpmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoKS5cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3QtOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTQwPXJlZ2lzdGVyZWQgYXMgYSBkaXN0aW5jdCBkZXZpY2UuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01Ni0gICBkcml2ZXIgbmVlZHMsIHNldHVwIHRoZSBtaWlfYnVzIHN0cnVjdHVyZSwgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIFBBTCB1c2luZ1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjU3OiAgIG1kaW9idXNfcmVnaXN0ZXIuICBTaW1pbGFybHksIHRoZXJlJ3MgYSByZW1vdmUgZnVuY3Rpb24gdG8gdW5kbyBhbGwgb2ZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01OC0gICB0aGF0ICh1c2UgbWRpb2J1c191bnJlZ2lzdGVyKS5cXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmM9MTA5PXN0YXRpYyBpbnQgZXA4MjQ4ZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzItXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYzoxMzM6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG9mZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzQtXFx0aWYgKHJldClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jPTIwNz1zdGF0aWMgaW50IGdwaW9fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0My1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYzoyNDQ6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02ODMtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2ODQ6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2V1c2VyX21paV9idXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjg1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LVxcdTAwM2VkZXYsIGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzIxPWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzkzOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwOT1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQ0NC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ0NTpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NDYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jPTI0Mj1zdGF0aWMgaW50IG10NzYyOF9zZXR1cF9pbnRlcm5hbF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYy0yNjEtXFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jOjI2MjpcXHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmMtMjYzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4MzQ9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4ODg6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTI2Nz1zdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjkyLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjI5MzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5NC1cXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jPTE0OT1zdGF0aWMgaW50IG5ldGNfcG9ydF9jcmVhdGVfZW1kaW9fYnVzKHN0cnVjdCBuZXRjX3BvcnQgKm5wLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTc5LVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jOjE4MDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDEzLVxcdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjEwMTQ6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxNS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTg3OD1zdGF0aWMgaW50IHZzYzk5NTNfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDMtXFx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MDQ6XFx0cmMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTA1LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MzU3PXN0YXRpYyBpbnQgYXI5MzMxX3N3X21idXNfaW5pdChzdHJ1Y3QgYXI5MzMxX3N3X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4MS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjM4MjpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgzLVxcdG9mX25vZGVfcHV0KG1ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz05NDc9cWNhOGtfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4Ni1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo5ODc6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvKTtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM9NzQ9aW50IHJ0bDgzeHhfc2V0dXBfdXNlcl9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy05OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM6MTAwOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTEwMS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExMTc9c3RhdGljIGludCBhNXBzd19wcm9iZV9tZGlvKHN0cnVjdCBhNXBzdyAqYTVwc3csIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0My1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjExNDQ6XFx0cmV0dXJuIGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQ1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaD0zMDc9dm9pZCBzamExMTA1X2ZyYW1lX21lbW9yeV9wYXJ0aXRpb25pbmcoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzA5LS8qIEZyb20gc2phMTEwNV9tZGlvLmMgKi9cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg6MzEwOmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzExLXZvaWQgc2phMTEwNV9tZGlvYnVzX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMwMjY9c3RhdGljIGludCBzamExMTA1X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjctXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6MzA2ODpcXHRyYyA9IHNqYTExMDVfbWRpb2J1c19yZWdpc3Rlcihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2OS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg3LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI4ODpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg5LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzEyPXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdDFfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0My1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozNDQ6XFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0NS1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTM2OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19wY3NfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM5NS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozOTY6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk3LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NDM5PXN0YXRpYyB2b2lkIHNqYTExMDVfbWRpb2J1c19wY3NfdW5yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDU4LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjQ1OTppbnQgc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTU5NT15dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxMi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjEzOlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxNC1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTcyNj15dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0My1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ0OlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0NS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM9NDU5PXN0YXRpYyBpbnQgYXhfbWlpX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo0Nzk6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihheC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDgwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTMyMT1zdGF0aWMgaW50IG93bF9lbWFjX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jOjEzNDY6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9NTA5PXN0YXRpYyBpbnQgYWRpbjExMTBfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3QgYWRpbjExMTBfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzo1MzA6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTMxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz02MTc9c3RhdGljIGludCBhZGluMTE0MF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjYzNzpcXHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFxcdTAwMjZzcGlkZXYtXFx1MDAzZWRldiwgcHJpdi1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNjM4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTI5MD1zdGF0aWMgaW50IGdyZXRoX21kaW9faW5pdChzdHJ1Y3QgZ3JldGhfcHJpdmF0ZSAqZ3JldGgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEzMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYzoxMzA3OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoZ3JldGgtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwOC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYz0zOTMxPXN0YXRpYyBpbnQgZXQxMzF4X3BjaV9zZXR1cChzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTQwMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM6NDAyNzpcXHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyOC1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTIxPXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9tZGlvX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNTg6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTktXFx0aWYgKHJldCAhPSAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jPTEwNjE9c3RhdGljIGludCBhdTEwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jOjEyMjI6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihhdXAtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMy1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTM0Mjg9c3RhdGljIGludCB4Z2JlX3BoeV9pbml0KHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxNy1cXHRzbnByaW50ZihtaWktXFx1MDAzZWlkLCBzaXplb2YobWlpLVxcdTAwM2VpZCksIFxcXCIlc1xcXCIsIGRldl9uYW1lKHBkYXRhLVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MTg6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtaWkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxOS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzozNzIwOlxcdFxcdGRldl9lcnIocGRhdGEtXFx1MDAzZWRldiwgXFxcIm1kaW9idXNfcmVnaXN0ZXIgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MjEtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM9OTg9aW50IHhnZV9tZGlvX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTE4LVxcdG1kaW9fYnVzLVxcdTAwM2VwaHlfbWFzayA9IDB4MTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExOTpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz04Mzc9aW50IHhnZW5lX2VuZXRfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjg4ODpzdGF0aWMgaW50IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg5LVxcdFxcdFxcdFxcdCAgc3RydWN0IG1paV9idXMgKm1kaW8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkxMzpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTE0LVxcdFxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MjEtXFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MjI6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05Mzk9aW50IHhnZW5lX2VuZXRfbWRpb19jb25maWcoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTg6XFx0cmV0ID0geGdlbmVfbWRpb2J1c19yZWdpc3RlcihwZGF0YSwgbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYz0xMzE9aW50IGFyY19tZGlvX3Byb2JlKHN0cnVjdCBhcmNfZW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM6MTczOlxcdGVycm9yID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3NC1cXHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM6MTAxMTpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBheF9sb2NhbC1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMi1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz02ODc9c3RhdGljIGludCBhZzcxeHhfbWRpb19wcm9iZShzdHJ1Y3QgYWc3MXh4ICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI3LVxcdG1ucCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcXFwibWRpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzI4OlxcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjktXFx0b2Zfbm9kZV9wdXQobW5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIyMzQ9c3RhdGljIGludCBiNDRfcmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjI2MDpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNjEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MTcxMz1zdGF0aWMgaW50IGJjbV9lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xODI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjE4MzA6XFx0XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MzEtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM9MjExPXN0cnVjdCBtaWlfYnVzICpiY21hX21kaW9fbWlpX3JlZ2lzdGVyKHN0cnVjdCBiZ21hYyAqYmdtYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmM6MjM2OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWlpX2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNy1cXHRvZl9ub2RlX3B1dChucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz0xOTM9aW50IGJjbWdlbmV0X21paV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBpbml0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjMzLVxcdFxcdHBoeV9uYW1lID0gXFxcImV4dGVybmFsIFJ2TUlJXFxcIjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzoyMzQ6XFx0XFx0Lyogb2ZfbWRpb2J1c19yZWdpc3RlciB0b29rIGNhcmUgb2YgcmVhZGluZyB0aGUgJ21heC1zcGVlZCdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzUtXFx0XFx0ICogUEhZIHByb3BlcnR5IGZvciB1cywgZWZmZWN0aXZlbHkgbGltaXRpbmcgdGhlIFBIWSBzdXBwb3J0ZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYz0yMTU3PXN0YXRpYyBpbnQgc2JtYWNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGRldiwgbG9uZyBsb25nIGJhc2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyNy1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM6MjIyODpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHNjLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyOS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNTA1PXN0YXRpYyBpbnQgdGczX21kaW9faW5pdChzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTU1ODpcXHRpID0gbWRpb2J1c19yZWdpc3Rlcih0cC1cXHUwMDNlbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTktXFx0aWYgKGkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDk3OnN0YXRpYyBpbnQgbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IGRldmljZV9ub2RlICptZGlvX25wKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDQtXFx0aWYgKG1kaW9fbnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTA1OlxcdFxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVxcdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTE5OlxcdFxcdFxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVxcdTAwM2VtaWlfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIwLVxcdFxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTIyOlxcdHJldHVybiBtZGlvYnVzX3JlZ2lzdGVyKGJwLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMTI1PXN0YXRpYyBpbnQgbWFjYl9taWlfaW5pdChzdHJ1Y3QgbWFjYiAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTU5OlxcdGVyciA9IG1hY2JfbWRpb2J1c19yZWdpc3RlcihicCwgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTYwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jPTExMDc9c3RhdGljIGludCBkbTkwNTFfbWRpb19yZWdpc3RlcihzdHJ1Y3QgYm9hcmRfaW5mbyAqZGIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMTI1OlxcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIGRiLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTExMjYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yNDIzPXN0YXRpYyBpbnQgdHNuZXBfbWRpb19pbml0KHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjI0NTU6XFx0cmV0dmFsID0gb2ZfbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVxcdTAwM2VtZGlvYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTEwMjQ9c3RhdGljIGludCBldGhvY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6MTIwODpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwOS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE3MzQ9c3RhdGljIGludCBmdGdtYWMxMDBfc2V0dXBfbWRpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTc3MDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlZGV2LCBwcml2LVxcdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NzEtXFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0zNj1zdGF0aWMgaW50IGVuZXRjX3BjaV9tZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM6OTE6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIGRldi1cXHUwMDNlb2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0yNjY9c3RhdGljIGludCBlbmV0Y19tZGlvX3Byb2JlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzoyOTM6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjk0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MzA4PXN0YXRpYyBpbnQgZW5ldGNfaW1kaW9fY3JlYXRlKHN0cnVjdCBlbmV0Y19wZiAqcGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDM6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDQtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MzA0Mj1zdGF0aWMgaW50IGZlY19lbmV0X21paV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMxNjE6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihmZXAtXFx1MDAzZW1paV9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYz02NT1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2YpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYzoxMDY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jPTE0OT1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM6MTc2OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jPTk3PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM6MTY3OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYz00MDk9c3RhdGljIGludCBmc2xfcHFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jOjQ5NDpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTUtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYz0zNzE9c3RhdGljIGludCB4Z21hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyNi1cXHRpZiAoaXNfb2Zfbm9kZShmd25vZGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI3OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCB0b19vZl9ub2RlKGZ3bm9kZSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI4LVxcdGVsc2UgaWYgKGlzX2FjcGlfbm9kZShmd25vZGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI5OlxcdFxcdHJldCA9IGFjcGlfbWRpb2J1c19yZWdpc3RlcihidXMsIGZ3bm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MzAtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yNjY9aW50IGhiZ19tZGlvX2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyOTI6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjkzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM9MTA5ND1zdGF0aWMgaW50IGhpeDVoZDJfZGV2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM6MTE4NjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM9MTIzPWludCBoY2xnZV9tYWNfbWRpb19jb25maWcoc3RydWN0IGhjbGdlX2RldiAqaGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU0LVxcdG1kaW9fYnVzLVxcdTAwM2VwaHlfbWFzayA9IH4oMVUgXFx1MDAzY1xcdTAwM2MgbWFjLVxcdTAwM2VwaHlfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYzoxNTU6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0xNTYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM9NDk1PXN0YXRpYyBpbnQgaG5zX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1ODQ6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTg1LVxcdH0gZWxzZSBpZiAoaXNfYWNwaV9ub2RlKHBkZXYtXFx1MDAzZWRldi5md25vZGUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTItXFx0XFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTkzOlxcdFxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobmV3X2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTk0LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjU2MD1zdGF0aWMgaW50IGVtYWNfZHRfbWRpb19wcm9iZShzdHJ1Y3QgZW1hY19pbnN0YW5jZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODQtXFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwiJXNcXFwiLCBkZXYtXFx1MDAzZW9mZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjU4NTpcXHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNmRldi1cXHUwMDNlb2ZkZXYtXFx1MDAzZWRldiwgYnVzLCBtaWlfbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg2LVxcdGlmIChyZXMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jPTEwMjY9aW50IGl4Z2JlX21paV9idXNfaW5pdChzdHJ1Y3QgaXhnYmVfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmMtMTA4OC1cXHRhZGFwdGVyLVxcdTAwM2VtaWlfYnVzID0gYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jOjEwODk6XFx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDkwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM9Mzg1PWx0cV9ldG9wX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MDItXFx0XFx0IHByaXYtXFx1MDAzZXBkZXYtXFx1MDAzZW5hbWUsIHByaXYtXFx1MDAzZXBkZXYtXFx1MDAzZWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jOjQwMzpcXHRpZiAobWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtaWlfYnVzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDA0LVxcdFxcdGVyciA9IC1FTlhJTztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM9MjgzPXN0YXRpYyBpbnQgb3Jpb25fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODEtXFx0LyogRm9yIHRoZSBwbGF0Zm9ybXMgbm90IHN1cHBvcnRpbmcgRFQvQUNQSSBmYWxsLWJhY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4MjpcXHQgKiB0byBtZGlvYnVzX3JlZ2lzdGVyIHZpYSBvZl9tZGlvYnVzX3JlZ2lzdGVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgzLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg0LVxcdGlmIChpc19hY3BpX25vZGUocGRldi1cXHUwMDNlZGV2LmZ3bm9kZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODU6XFx0XFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODYtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg3OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODgtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jPTEzODc9c3RhdGljIGludCBweGExNjhfZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA0LVxcdHBlcC1cXHUwMDNlc21pX2J1cy1cXHUwMDNlcGh5X21hc2sgPSAweGZmZmZmZmZmO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jOjE1MDU6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihwZXAtXFx1MDAzZXNtaV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9OTk4PXN0YXRpYyBpbnQgbXRrX21kaW9faW5pdChzdHJ1Y3QgbXRrX2V0aCAqZXRoKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM3LVxcdGRldl9kYmcoZXRoLVxcdTAwM2VkZXYsIFxcXCJNREMgaXMgcnVubmluZyBvbiAlZCBIelxcXFxuXFxcIiwgTURDX01BWF9GUkVRIC8gZXRoLVxcdTAwM2VtZGNfZGl2aWRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzoxMDM4OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZXRoLVxcdTAwM2VtaWlfYnVzLCBtaWlfbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtMTAzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYz0xNDIyPXN0YXRpYyBpbnQgbXRrX3N0YXJfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jOjE0NDg6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNDQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYz0yODc9aW50IG1seGJmX2dpZ2VfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgbWx4YmZfZ2lnZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmMtMzMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmM6MzMzOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jPTI1Mz1pbnQgZmJuaWNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmMtMjcyLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToyNToyMS4yNjMxNzQ0MjZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQzODMzMDQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBNaWNyb2NoaXAgVDEgUEhZIERyaXZlciBmb3IgVmlydHVhbGl6YXRpb24vRnV6emluZyBPcHBvcnR1bml0aWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY2AsIHdoaWNoLCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGlzIHRoZSBNaWNyb2NoaXAgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgdGhvc2UgVDEgUEhZcyDigJMgdGhlIExBTjg4N3gsIExBTjg3eHgsIGFuZCBMQU45Mzd4IGZhbWlseS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gSSBsZXZlcmFnZSBhbnkgdmlydHVhbGl6YXRpb24gb3IgZnV6emluZyB0ZWNobmlxdWVzIGhlcmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlJ3MgYSBnb29kIGVudHJ5IHBvaW50IGZvciB0ZXN0aW5nLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgaG93IE1ESU8gKE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQpIGlzIGhhbmRsZWQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEknbSB3b25kZXJpbmcgaWYgdGhlcmUncyBzb21lIGtpbmQgb2YgdmlydHVhbCBNRElPIG9yIG1vY2sgUEhZIGRldmljZSBhbHJlYWR5IGltcGxlbWVudGVkIHdpdGhpbiB0aGUga2VybmVsLCBvciBwZXJoYXBzIHNvbWV0aGluZyBhdmFpbGFibGUgaW4gc3l6a2FsbGVyIHRoYXQgSSBjb3VsZCBob29rIGludG8uIFRpbWUgdG8gZG8gYSBxdWljayBzZWFyY2ggZm9yIGNsdWVzLiBJJ2xsIHN0YXJ0IHdpdGggdGVybXMgbGlrZSBcIm1kaW8tbW9jayxcIiBcIm1kaW9fYml0YmFuZyxcIiBvciBhbnl0aGluZyBzaW1pbGFyIHRoYXQgbWlnaHQgb2ZmZXIgYSB3YXkgdG8gc2ltdWxhdGUgb3IgY29udHJvbCB0aGUgUEhZJ3MgYmVoYXZpb3Igd2l0aG91dCBuZWVkaW5nIHRoZSBhY3R1YWwgaGFyZHdhcmUuIEkgbmVlZCB0byBzZWUgaWYgSSBjYW4gZWZmZWN0aXZlbHkgdmlydHVhbGl6ZSBvciBtb2NrIHRoaXMgdG8gdGVzdCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk1NywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjIzLjcwMTUwNzkzMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2NDcyMTQ4NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qbW9ja3xtb2NrLiptZGlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToyNToyNi4xNjYyNDEwOTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgxNDIzOTU3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBEaWFnbm9zdGljIFByb2Nlc3MqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIGVzdGFibGlzaCBhIGJhc2VsaW5lLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhbnkgdmlydHVhbCBkcml2ZXIgaW5zdGFuY2VzIHNwZWNpZmljYWxseSBjcmVhdGluZyBpbnN0YW5jZXMgb2YgYG1pY3JvY2hpcF90MWAuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuIEZyb20gdGhlcmUsIEknbGwgbmVlZCB0byBicm9hZGVuIHRoZSBzY29wZSBhbmQgaHVudCBkb3duIHJlZmVyZW5jZXMgdG8gYExBTjg4N1hgIHdpdGhpbiB0aGUgZW50aXJlIGtlcm5lbCBjb2RlYmFzZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgb3ZlcnZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzMyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6MjcuOTgwNDgzOTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODY3NTI2MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUEhZX0lEX0xBTjg4N1hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2LSNkZWZpbmUgUEhZX0lEX0xBTjkzN1hcXHRcXHRcXHRcXHQweDAwMDdjMTgwXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE3OiNkZWZpbmUgUEhZX0lEX0xBTjg4N1hcXHRcXHRcXHRcXHQweDAwMDdjMWYwXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTE2MDc9c3RhdGljIGludCBsYW44ODd4X2NkX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYyMS1cXHRcXHRcXHRcXHQgICAoKHZhbCBcXHUwMDI2IEdFTk1BU0soMTUsIDQpKSA9PVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNjIyOlxcdFxcdFxcdFxcdCAgICAoUEhZX0lEX0xBTjg4N1ggXFx1MDAyNiBHRU5NQVNLKDE1LCA0KSkpLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjIzLVxcdFxcdFxcdFxcdCAgIDUwMDAsIDUwMDAwLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yMTA2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFfcGh5X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDEtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQyOlxcdFxcdFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCksXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDMtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJNaWNyb2NoaXAgTEFOODg3eCBUMSBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIxNjc9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtaWNyb2NoaXBfdDFfdGJsW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE2OS1cXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOOTM3WCkgfSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE3MDpcXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCkgfSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE3MS1cXHR7IH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6MzAuMjY3MjQyMzI3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwODQzNTQ1OTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkxBTjg4N3ggUEhZIERyaXZlciBGdXp6aW5nIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTEFOODg3eCwgd2hpY2gsIGFzIGFuIGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZICgxMDBCQVNFLVQxLzEwMDBCQVNFLVQxKSwgcmFpc2VzIHNvbWUgaW1tZWRpYXRlIHF1ZXN0aW9ucyByZWdhcmRpbmcgZnV6emluZy4gVGhlIGtleSBpc3N1ZSBoZXJlIGlzIHdoZXRoZXIgdGhpcyBoYXJkd2FyZSBQSFkgZHJpdmVyIGlzIGV2ZW4gcmVhY2hhYmxlIHdpdGhpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS5cblxuTGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIGtub3cgdGhlIGd1aWRlbGluZXMgZm9yIGRldGVybWluaW5nIGlmIGEgcGF0Y2ggaXMgXCJXb3J0aEZ1enppbmdcIi4gVGhleSBwb2ludCBvdXQgc2V2ZXJhbCBzY2VuYXJpb3Mgd2hlcmUgd2UgY2FuIHNraXAgZnV6emluZywgaW5jbHVkaW5nIGNoYW5nZXMgdG8gZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIGRlY29yYXRpdmUgbG9nZ2luZywgY2hhbmdlcyB0byBjb25zdGFudHMgd2l0aG91dCBpbXBhY3RpbmcgZmxvdywgb3IsIGNyaXRpY2FsbHksIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgaGVhcnQgb2YgdGhlIG1hdHRlciBpcyB3aGV0aGVyIHRoaXMgZHJpdmVyIGNhbiBvcGVyYXRlIHdpdGhvdXQgcmVhbCwgcGh5c2ljYWwgaGFyZHdhcmUuXG5cbk15IHVuZGVyc3RhbmRpbmcgaXMsIHRoZSBMQU44ODd4IGRyaXZlciByZWxpZXMgb24gYW4gTURJTyBidXMgZm9yIGNvbW11bmljYXRpb24uIE5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIHdpdGggaXRzIHZpcnR1YWxpemVkIG5ldHdvcmsgY2FyZHMgKGUxMDAwLCB2aXJ0aW8tbmV0LCBldGMuKSwgZXhwb3NlIGFuIE1ESU8gYnVzIHN1aXRhYmxlIGZvciBvdXIgUEhZIGRyaXZlcj8gVGhlIGFuc3dlciwgYXMgSSBrbm93LCBpcyB0eXBpY2FsbHkgbm8uIFN0YW5kYXJkIG5ldHdvcmsgY2FyZHMgZWl0aGVyIGhhdmUgaW50ZXJuYWwgUEhZcywgdXNlIHBoeWxpYiB3aXRoIGEgZ2VuZXJpYyBQSFksIG9yIHRoZXkgZG9uJ3QgZXZlbiAqcHJlc2VudCogYW4gTURJTyBidXMgdG8gdGhlIGBkcml2ZXJzL25ldC9waHkvYCBzdWJzeXN0ZW0gYXQgYWxsLiBTcGVjaWZpY2FsbHksIHRoZSBgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jYCBkcml2ZXIg4oCTIHdoaWNoIHRoaXMgcGF0Y2ggbW9kaWZpZXMg4oCTIHJlcXVpcmVzIGEgKnBoeXNpY2FsKiBNaWNyb2NoaXAgVDEgUEhZIGNvbm5lY3RlZCB2aWEgTURJTy4gVGhlcmVmb3JlLCB0aGlzIGRyaXZlciwgYXMgaXQncyBzZXQgdXAgaW4gb3VyIGtlcm5lbCwgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIFFFTVUgb3IgR0NFIHNldHVwLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGRlYWxzIHdpdGggYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSBgbGFuODg3eF9waHlfaW5pdGAgZnVuY3Rpb24sIGJ5IGFkZGluZyBhIE5VTEwgY2hlY2sgZm9yIGBwcml2LVx1MDAzZWNsb2NrYC4gVGhlIGlzc3VlIG9jY3VycyBiZWNhdXNlIHdoZW4gYG1jaHBfcmRzX3B0cF9wcm9iZWAgcmV0dXJucyBOVUxMLCBgcHJpdi1cdTAwM2VjbG9ja2AgbWlnaHQgYWxzbyBiZSBOVUxMLCBidXQgdGhlIGNvZGUgc3RpbGwgYXR0ZW1wdHMgdG8gZGVyZWZlcmVuY2UgYHByaXYtXHUwMDNlY2xvY2stXHUwMDNlZXZlbnRfcGluYC4gVGhlIGFkZGVkIGlmIHN0YXRlbWVudCBwcmV2ZW50cyB0aGlzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRyaXZlciB0byBwcmV2ZW50IGEgY3Jhc2ggY29uZGl0aW9uLlxuXG5Ib3dldmVyLCB0aGUgZmFjdCByZW1haW5zIHRoYXQgdGhpcyBpcyBhbiBhdXRvbW90aXZlIEV0aGVybmV0IFBIWSBkcml2ZXIgYW5kIGlzIGRlc2lnbmVkIGZvciByZWFsIGhhcmR3YXJlLiBJdCdzIG5vdCBkZXNpZ25lZCB0byBiZSBhY2Nlc3NlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBjb21wb25lbnRzLiBUaGUgZml4ICphZGRyZXNzZXMqIGEgbGVnaXRpbWF0ZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UsIGJ1dCBpdCBkb2Vzbid0IGNoYW5nZSB0aGUgdW5kZXJseWluZyByZXF1aXJlbWVudCBvZiBuZWVkaW5nIGEgKnJlYWwqIE1pY3JvY2hpcCBMQU44ODd4L0xBTjg3eHggdHJhbnNjZWl2ZXIuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGNvZGUgcGF0aCBpcyBzaW1wbHkgdW5yZWFjaGFibGUgd2l0aGluIG91ciBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgdGhlIFwiV29ydGhGdXp6aW5nXCIgZmxhZyBoYXMgdG8gYmUgYGZhbHNlYC5cblxuSnVzdCB0byBtYWtlIHN1cmUsIGxldCdzIGNvbmZpcm0gdGhlIGRldGFpbHM6XG5cbjEuICBJcyBXb3J0aEZ1enppbmcgZmFsc2U/IFllcy5cbjIuICBGb2N1c1N5bWJvbHM6IFxcW10uXG4zLiAgRW5hYmxlQ29uZmlnczogXFxbXFxdLlxuNC4gIFJlYXNvbmluZzogQ2xlYXIuXG5cbk9rYXksIHRoYXQncyBlbm91Z2ggZm9yIG15IGV4cGVydCBhc3Nlc3NtZW50LiBJdCdzIHRpbWUgdG8gbWFyayB0aGlzIG9uZSBhcyBub24tZnV6emFibGUgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDM1LCJPdXRwdXRUb2tlbnMiOjExMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MjU6NDEuMTEwNzkwNDAxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGxhbjg4N3hfcGh5X2luaXQoKSB3aXRoaW4gdGhlIE1pY3JvY2hpcCBUMSBFdGhlcm5ldCBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBwaHlzaWNhbCBNaWNyb2NoaXAgTEFOODg3eCBhdXRvbW90aXZlIEV0aGVybmV0IFBIWSBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgb3IgcHJvYmVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gbGFuODg3eF9waHlfaW5pdCgpIHdpdGhpbiB0aGUgTWljcm9jaGlwIFQxIEV0aGVybmV0IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYykuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIHBoeXNpY2FsIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZIGhhcmR3YXJlIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBwcm9iZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjI1OjQxLjExMDgxNDUxMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowfj5rw[1] Phase: Running StartedAt: 2026-09-03 01:25:52 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfj5rw[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-03 01:25:52 +0000 UTC FinishedAt: 2026-09-03 01:25:57 +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,}