Name: series-workflow6ldwb Phase: Failed StartedAt: 2026-09-01 00:05:53 +0000 UTC FinishedAt: 2026-09-01 00:53:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6ldwb[0] Phase: Succeeded StartedAt: 2026-09-01 00:05:53 +0000 UTC FinishedAt: 2026-09-01 00:53:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6ldwb[0].run-triage Phase: Succeeded StartedAt: 2026-09-01 00:05:53 +0000 UTC FinishedAt: 2026-09-01 00:53:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBuZXRpZl9pc19sM19tYXN0ZXIoKSBhbmQgbmV0aWZfaXNfbDNfc2xhdmUoKSBpbiBpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIHRvIGluY2x1ZGUgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikuIEJlY2F1c2UgSUZGX0wzTURFVl9NQVNURVIgYW5kIElGRl9MM01ERVZfU0xBVkUgZmxhZ3MgYXJlIGV4Y2x1c2l2ZWx5IG1hbmlwdWxhdGVkIGJ5IGRyaXZlcnMvbmV0L3ZyZi5jLCB0aGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9uIHdoZW4gQ09ORklHX05FVF9WUkYgaXMgZGlzYWJsZWQgYW5kIGRvZXMgbm90IGFsdGVyIHJ1bnRpbWUgYmVoYXZpb3Igb3IgZXhlY3V0aW9uIGZsb3cgdW5kZXIgYW55IGNvbmZpZ3VyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2FkZGM1NjM2Y2I2NGYwMjllMDgxNmM5Y2Y2MDAzYjZiZjNiYmZhOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDA6NTE6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbmluZGV4IDg3Y2FmYzkzMmU5ZTYuLjg0NTQ2NDZkNmE0NTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG5AQCAtNTYwNiwxMiAmIzQzOzU2MDYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIG5ldGlmX2hhc19sM19yeF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gc3RhdGljIGlubGluZSBib29sIG5ldGlmX2lzX2wzX21hc3Rlcihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbi1cdHJldHVybiBkZXYtXHUwMDNlcHJpdl9mbGFncyBcdTAwMjYgSUZGX0wzTURFVl9NQVNURVI7XG4mIzQzO1x0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpIFx1MDAyNlx1MDAyNiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBib29sIG5ldGlmX2lzX2wzX3NsYXZlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0cmV0dXJuIGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1NMQVZFO1xuJiM0MztcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSBcdTAwMjZcdTAwMjYgKGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1NMQVZFKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBpbnQgZGV2X3NkaWYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMDo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIG5ldGlmX2lzX2wzX21hc3RlcigpIGFuZCBuZXRpZl9pc19sM19zbGF2ZSgpIGluIGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmggdG8gaW5jbHVkZSBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKS4gQmVjYXVzZSBJRkZfTDNNREVWX01BU1RFUiBhbmQgSUZGX0wzTURFVl9TTEFWRSBmbGFncyBhcmUgZXhjbHVzaXZlbHkgbWFuaXB1bGF0ZWQgYnkgZHJpdmVycy9uZXQvdnJmLmMsIHRoaXMgY2hhbmdlIGlzIHB1cmVseSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24gd2hlbiBDT05GSUdfTkVUX1ZSRiBpcyBkaXNhYmxlZCBhbmQgZG9lcyBub3QgYWx0ZXIgcnVudGltZSBiZWhhdmlvciBvciBleGVjdXRpb24gZmxvdyB1bmRlciBhbnkgY29uZmlndXJhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3YWRkYzU2MzZjYjY0ZjAyOWUwODE2YzljZjYwMDNiNmJmM2JiZmE4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMSAwMDo1MTo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oCmluZGV4IDg3Y2FmYzkzMmU5ZTYuLjg0NTQ2NDZkNmE0NTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaApAQCAtNTYwNiwxMiAmIzQzOzU2MDYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIG5ldGlmX2hhc19sM19yeF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19tYXN0ZXIoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKLQlyZXR1cm4gZGV2LSZndDtwcml2X2ZsYWdzICZhbXA7IElGRl9MM01ERVZfTUFTVEVSOwomIzQzOwlyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikgJmFtcDsmYW1wOyAoZGV2LSZndDtwcml2X2ZsYWdzICZhbXA7IElGRl9MM01ERVZfTUFTVEVSKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIG5ldGlmX2lzX2wzX3NsYXZlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0JcmV0dXJuIGRldi0mZ3Q7cHJpdl9mbGFncyAmYW1wOyBJRkZfTDNNREVWX1NMQVZFOwomIzQzOwlyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikgJmFtcDsmYW1wOyAoZGV2LSZndDtwcml2X2ZsYWdzICZhbXA7IElGRl9MM01ERVZfU0xBVkUpOwogfQogCiBzdGF0aWMgaW5saW5lIGludCBkZXZfc2RpZihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTc0CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRGV2aWNlIENoYW5nZSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIG1vZGlmeWluZyBgaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaGAuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZXMgYXJlIHRhcmdldGluZyB0aGUgYG5ldGlmX2lzX2wzX21hc3RlcmAgYW5kIGBuZXRpZl9pc19sM19zbGF2ZWAgaW5saW5lIGZ1bmN0aW9ucy4gSXQgYXBwZWFycyB0aGV5IGFyZSBhZGRpbmcgYSBwcmUtY29uZGl0aW9uLCBvbmx5IGVuYWJsaW5nIHRoZSBmdW5jdGlvbmFsaXR5IGlmIGBDT05GSUdfTkVUX1ZSRmAgaXMgZW5hYmxlZC4gSXQmIzM5O3MgYSBjbGVhbiBhbmQgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgZWZmZWN0aXZlbHkgZ2F0aW5nIHRoZSBMMyBtYXN0ZXIvc2xhdmUgZnVuY3Rpb25hbGl0eSBiZWhpbmQgdGhhdCBWUkYgY29uZmlndXJhdGlvbiBvcHRpb24uCgpOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuIFdoZXJlIGFyZSB0aGVzZSBmdW5jdGlvbnMgdXNlZCB0aHJvdWdob3V0IHRoZSBrZXJuZWw/IFdoYXQgbW9kdWxlcyBvciBmZWF0dXJlcyBkZXBlbmQgb24gdGhpcyBgSUZGX0wzTURFVl9NQVNURVJgIGFuZCBgSUZGX0wzTURFVl9TTEFWRWAgbG9naWM/IFRpbWUgdG8gZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIGRvIHNvbWUgaW52ZXN0aWdhdGlvbiB0byBzZWUgd2hlcmUgdGhpcyBpcyB1dGlsaXplZC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIGNvbmRpdGlvbmFsIGxvZ2ljIGNoYW5nZSBiZWZvcmUgZ2l2aW5nIHRoaXMgYSBtb3JlIHRob3JvdWdoIHJldmlldy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRpZl9pc19sM18obWFzdGVyfHNsYXZlKSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYz0zNjE9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICppcG9pYl9nZXRfbWFzdGVyX25ldF9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYy0zNjctXHRtYXN0ZXIgPSBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1KGRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYzozNjg6XHRpZiAoIW1hc3RlciB8fCBuZXRpZl9pc19sM19tYXN0ZXIobWFzdGVyKSlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfbWFpbi5jLTM2OS1cdFx0bWFzdGVyID0gZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM9NDcxND1zdGF0aWMgaW50IG1seHN3X3NwX25ldGRldmljZV9wb3J0X3VwcGVyX2V2ZW50KHN0cnVjdCBuZXRfZGV2aWNlICpsb3dlcl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy00NzM5LVx0XHQgICAgIW5ldGlmX2lzX21hY3ZsYW4odXBwZXJfZGV2KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NDc0MDpcdFx0ICAgICFuZXRpZl9pc19sM19tYXN0ZXIodXBwZXJfZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy00NzQxLVx0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O1Vua25vd24gdXBwZXIgZGV2aWNlIHR5cGVcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM9NDk1Nj1zdGF0aWMgaW50IG1seHN3X3NwX25ldGRldmljZV9wb3J0X3ZsYW5fZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKnZsYW5fZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNDk3NC1cdFx0ICAgICFuZXRpZl9pc19tYWN2bGFuKHVwcGVyX2RldikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jOjQ5NzU6XHRcdCAgICAhbmV0aWZfaXNfbDNfbWFzdGVyKHVwcGVyX2RldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNDk3Ni1cdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jPTUwNDY9c3RhdGljIGludCBtbHhzd19zcF9uZXRkZXZpY2VfYnJpZGdlX3ZsYW5fZXZlbnQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUwNjQtXHRcdGlmICghbmV0aWZfaXNfbWFjdmxhbih1cHBlcl9kZXYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzo1MDY1Olx0XHQgICAgIW5ldGlmX2lzX2wzX21hc3Rlcih1cHBlcl9kZXYpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUwNjYtXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCYjMzQ7VW5rbm93biB1cHBlciBkZXZpY2UgdHlwZVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYz01MTA3PXN0YXRpYyBpbnQgbWx4c3dfc3BfbmV0ZGV2aWNlX2JyaWRnZV9ldmVudChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTEyNi1cdFx0ICAgICFuZXRpZl9pc19tYWN2bGFuKHVwcGVyX2RldikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jOjUxMjc6XHRcdCAgICAhbmV0aWZfaXNfbDNfbWFzdGVyKHVwcGVyX2RldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTEyOC1cdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jPTUxNjA9c3RhdGljIGludCBtbHhzd19zcF9uZXRkZXZpY2VfbWFjdmxhbl9ldmVudChzdHJ1Y3QgbmV0X2RldmljZSAqbWFjdmxhbl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzo1MTc0Olx0aWYgKCFuZXRpZl9pc19sM19tYXN0ZXIodXBwZXJfZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MTc1LVx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz0xOTY4PXN0YXRpYyBpbnQgbWx4c3dfc3BfbmV0ZGV2aWNlX2lwaXBfb2xfZXZlbnQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0xOTkyLVx0XHRleHRhY2sgPSBpbmZvLVx1MDAzZWV4dGFjaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjE5OTM6XHRcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoY2h1cC1cdTAwM2V1cHBlcl9kZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMTk5NC1cdFx0XHRlcnIgPSBtbHhzd19zcF9uZXRkZXZpY2VfaXBpcF9vbF92cmZfZXZlbnQobWx4c3dfc3AsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM9MjAxMT1fX21seHN3X3NwX25ldGRldmljZV9pcGlwX3VsX2V2ZW50KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3AsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMjAyNC1cdFx0ZXh0YWNrID0gaW5mby1cdTAwM2VleHRhY2s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzoyMDI1Olx0XHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGNodXAtXHUwMDNldXBwZXJfZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTIwMjYtXHRcdFx0cmV0dXJuIG1seHN3X3NwX25ldGRldmljZV9pcGlwX3VsX3ZyZl9ldmVudChtbHhzd19zcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz04MjYyPW1seHN3X3NwX3JpZl9zaG91bGRfY29uZmlnKHN0cnVjdCBtbHhzd19zcF9yaWYgKnJpZiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy04Mjc5LVx0XHRpZiAocmlmIFx1MDAyNlx1MDAyNiBhZGRyX2xpc3RfZW1wdHkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzo4MjgwOlx0XHQgICAgIW5ldGlmX2lzX2wzX3NsYXZlKG1seHN3X3NwX3JpZl9kZXYocmlmKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy04MjgxLVx0XHRcdHJldHVybiB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jPTk3NDI9c3RhdGljIGJvb2wgbWx4c3dfc3Bfcm91dGVyX25ldGRldmljZV9pbnRlcmVzdGluZyhzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTk3NTAtXHQgICAgbWx4c3dfc3BfbmV0ZGV2X2lzX2lwaXBfb2wobWx4c3dfc3AsIGRldikgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjk3NTE6XHQgICAgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy05NzUyLVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz05OTY3PXN0YXRpYyBib29sIG1seHN3X3NwX2lzX3ZyZl9ldmVudCh1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtOTk3Mi1cdFx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6OTk3MzpcdHJldHVybiBuZXRpZl9pc19sM19tYXN0ZXIoaW5mby1cdTAwM2V1cHBlcl9kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtOTk3NC19XG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9MTA0MT1zdGF0aWMgaW50IHZyZl9hZGRfc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKnBvcnRfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNDMte1xuZHJpdmVycy9uZXQvdnJmLmM6MTA0NDpcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIocG9ydF9kZXYpKSB7XG5kcml2ZXJzL25ldC92cmYuYy0xMDQ1LVx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTA0OS1cbmRyaXZlcnMvbmV0L3ZyZi5jOjEwNTA6XHRpZiAobmV0aWZfaXNfbDNfc2xhdmUocG9ydF9kZXYpKVxuZHJpdmVycy9uZXQvdnJmLmMtMTA1MS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9MTc0OD1zdGF0aWMgaW50IHZyZl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTc1Ni1cbmRyaXZlcnMvbmV0L3ZyZi5jOjE3NTc6XHRcdGlmICghbmV0aWZfaXNfbDNfc2xhdmUoZGV2KSlcbmRyaXZlcnMvbmV0L3ZyZi5jLTE3NTgtXHRcdFx0Z290byBvdXQ7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjAyPXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9oYXNfbDNfcnhfaGFuZGxlcihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYwNi1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYwNzpzdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfbWFzdGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDgte1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxMS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYxMjpzdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfc2xhdmUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxMy17XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjE3PXN0YXRpYyBpbmxpbmUgaW50IGRldl9zZGlmKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjE5LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYyMDpcdGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjIxLVx0XHRyZXR1cm4gZGV2LVx1MDAzZWlmaW5kZXg7XG4tLVxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaD0zNjk9c3RhdGljIGlubGluZSBzdHJ1Y3QgaW5ldDZfZGV2ICpfX2luNl9kZXZfc3RhdHNfZ2V0KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaC0zNzEte1xuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaDozNzI6XHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGRldikpIHtcbmluY2x1ZGUvbmV0L2FkZHJjb25mLmgtMzczLVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShkZXZfbmV0KGRldiksIGluZXQ2X2lpZihza2IpKTtcbi0tXG5pbmNsdWRlL25ldC9ncm8uaD01NTU9c3RhdGljIGlubGluZSB2b2lkIGluZXRfZ2V0X2lpZl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCAqaWlmLCBpbnQgKnNkaWYpXG4tLVxuaW5jbHVkZS9uZXQvZ3JvLmgtNTYwLSNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcbmluY2x1ZGUvbmV0L2dyby5oOjU2MTpcdGlmIChuZXRpZl9pc19sM19zbGF2ZShza2ItXHUwMDNlZGV2KSkge1xuaW5jbHVkZS9uZXQvZ3JvLmgtNTYyLVx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbWFzdGVyID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfZ2V0X3JjdShza2ItXHUwMDNlZGV2KTtcbi0tXG5pbmNsdWRlL25ldC9ncm8uaD01NzY9c3RhdGljIGlubGluZSB2b2lkIGluZXQ2X2dldF9paWZfc2RpZihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKmlpZiwgaW50ICpzZGlmKVxuLS1cbmluY2x1ZGUvbmV0L2dyby5oLTU4Mi0jaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXG5pbmNsdWRlL25ldC9ncm8uaDo1ODM6XHRpZiAobmV0aWZfaXNfbDNfc2xhdmUoc2tiLVx1MDAzZWRldikpIHtcbmluY2x1ZGUvbmV0L2dyby5oLTU4NC1cdFx0c3RydWN0IG5ldF9kZXZpY2UgKm1hc3RlciA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2dldF9yY3Uoc2tiLVx1MDAzZWRldik7XG4tLVxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg9MTA5PXN0cnVjdCBuZXRfZGV2aWNlICpsM21kZXZfbWFzdGVyX2Rldl9yY3UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKl9kZXYpXG4tLVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTIyLVxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg6MTIzOlx0aWYgKG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTI0LVx0XHRtYXN0ZXIgPSBkZXY7XG5pbmNsdWRlL25ldC9sM21kZXYuaDoxMjU6XHRlbHNlIGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTI2LVx0XHRtYXN0ZXIgPSBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1KGRldik7XG4tLVxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg9MTU3PXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pbmRleF9pc19sM19tYXN0ZXIoc3RydWN0IG5ldCAqbmV0LCBpbnQgaWZpbmRleClcbi0tXG5pbmNsdWRlL25ldC9sM21kZXYuaC0xNjgtXHRpZiAoZGV2KVxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg6MTY5Olx0XHRyYyA9IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpO1xuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTcwLVxuLS1cbmluY2x1ZGUvbmV0L2wzbWRldi5oPTE3OT1zdHJ1Y3Qgc2tfYnVmZiAqbDNtZGV2X2wzX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcHJvdG8pXG4tLVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTgyLVxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg6MTgzOlx0aWYgKG5ldGlmX2lzX2wzX3NsYXZlKHNrYi1cdTAwM2VkZXYpKVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTg0LVx0XHRtYXN0ZXIgPSBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1KHNrYi1cdTAwM2VkZXYpO1xuaW5jbHVkZS9uZXQvbDNtZGV2Lmg6MTg1Olx0ZWxzZSBpZiAobmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cdTAwM2VkZXYpIHx8XG5pbmNsdWRlL25ldC9sM21kZXYuaC0xODYtXHRcdCBuZXRpZl9oYXNfbDNfcnhfaGFuZGxlcihza2ItXHUwMDNlZGV2KSlcbi0tXG5pbmNsdWRlL25ldC9sM21kZXYuaD0yMDg9c3RydWN0IHNrX2J1ZmYgKmwzbWRldl9sM19vdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcHJvdG8pXG4tLVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMjEzLVx0ZGV2ID0gc2tiX2RzdF9kZXZfcmN1KHNrYik7XG5pbmNsdWRlL25ldC9sM21kZXYuaDoyMTQ6XHRpZiAobmV0aWZfaXNfbDNfc2xhdmUoZGV2KSkge1xuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMjE1LVx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbWFzdGVyO1xuLS1cbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmM9OTc0PXN0YXRpYyB1bnNpZ25lZCBpbnQgaXBfc2Fib3RhZ2VfaW4odm9pZCAqcHJpdixcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jLTk4NC1cdFx0aWYgKCFuZl9icmlkZ2UtXHUwMDNlaW5fcHJlcm91dGluZyBcdTAwMjZcdTAwMjZcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmM6OTg1Olx0XHQgICAgIW5ldGlmX2lzX2wzX21hc3Rlcihza2ItXHUwMDNlZGV2KSBcdTAwMjZcdTAwMjZcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmM6OTg2Olx0XHQgICAgIW5ldGlmX2lzX2wzX3NsYXZlKHNrYi1cdTAwM2VkZXYpKSB7XG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jLTk4Ny1cdFx0XHRuZl9icmlkZ2UtXHUwMDNlc2Fib3RhZ2VfaW5fZG9uZSA9IDE7XG4tLVxubmV0L2NvcmUvZmliX3J1bGVzLmM9NzM4PXN0YXRpYyBpbnQgZmliX25sMnJ1bGVfbG9ja2VkKHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLFxuLS1cbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTc1OS1cdFx0XHRubHJ1bGUtXHUwMDNlaWlmaW5kZXggPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWlmaW5kZXgpO1xubmV0L2NvcmUvZmliX3J1bGVzLmM6NzYwOlx0XHRcdG5scnVsZS1cdTAwM2VpaWZfaXNfbDNfbWFzdGVyID0gbmV0aWZfaXNfbDNfbWFzdGVyKGRldik7XG5uZXQvY29yZS9maWJfcnVsZXMuYy03NjEtXHRcdH1cbi0tXG5uZXQvY29yZS9maWJfcnVsZXMuYy03NjktXHRcdFx0bmxydWxlLVx1MDAzZW9pZmluZGV4ID0gUkVBRF9PTkNFKGRldi1cdTAwM2VpZmluZGV4KTtcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjc3MDpcdFx0XHRubHJ1bGUtXHUwMDNlb2lmX2lzX2wzX21hc3RlciA9IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpO1xubmV0L2NvcmUvZmliX3J1bGVzLmMtNzcxLVx0XHR9XG4tLVxubmV0L2NvcmUvZmliX3J1bGVzLmM9MTM2MD1zdGF0aWMgdm9pZCBhdHRhY2hfcnVsZXMoc3RydWN0IGxpc3RfaGVhZCAqcnVsZXMsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2NvcmUvZmliX3J1bGVzLmMtMTM2OC1cdFx0XHRXUklURV9PTkNFKHJ1bGUtXHUwMDNlaWlmX2lzX2wzX21hc3Rlcixcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjEzNjk6XHRcdFx0XHQgICBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSk7XG5uZXQvY29yZS9maWJfcnVsZXMuYy0xMzcwLVx0XHR9XG4tLVxubmV0L2NvcmUvZmliX3J1bGVzLmMtMTM3NC1cdFx0XHRXUklURV9PTkNFKHJ1bGUtXHUwMDNlb2lmX2lzX2wzX21hc3Rlcixcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjEzNzU6XHRcdFx0XHQgICBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSk7XG5uZXQvY29yZS9maWJfcnVsZXMuYy0xMzc2LVx0XHR9XG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTUwNj1zdGF0aWMgaW50IGZpYl9uZXRkZXZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTU1Ny1cdFx0aWYgKHVwcGVyX2luZm8tXHUwMDNldXBwZXJfZGV2IFx1MDAyNlx1MDAyNlxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTU1ODpcdFx0ICAgIG5ldGlmX2lzX2wzX21hc3Rlcih1cHBlcl9pbmZvLVx1MDAzZXVwcGVyX2RldikpXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTU5LVx0XHRcdGZpYl9kaXNhYmxlX2lwKGRldiwgTkVUREVWX0RPV04sIHRydWUpO1xuLS1cbm5ldC9pcHY0L2lnbXAuYz0xMTAzPWludCBpZ21wX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L2lnbXAuYy0xMTExLVxubmV0L2lwdjQvaWdtcC5jOjExMTI6XHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGRldikpIHtcbm5ldC9pcHY0L2lnbXAuYy0xMTEzLVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShkZXZfbmV0KGRldiksIElQQ0Ioc2tiKS1cdTAwM2VpaWYpO1xuLS1cbm5ldC9pcHY0L2lwbXIuYz0yMTg5PWludCBpcF9tcl9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L2lwbXIuYy0yMjAxLVx0ZGV2ID0gc2tiLVx1MDAzZWRldjtcbm5ldC9pcHY0L2lwbXIuYzoyMjAyOlx0aWYgKG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXHUwMDNlZGV2KSkge1xubmV0L2lwdjQvaXBtci5jLTIyMDMtXHRcdGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgSVBDQihza2IpLVx1MDAzZWlpZik7XG4tLVxubmV0L2lwdjQvcm91dGUuYz05Njc9c3RhdGljIGludCBpcF9lcnJvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3JvdXRlLmMtOTc4LVxubmV0L2lwdjQvcm91dGUuYzo5Nzk6XHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cdTAwM2VkZXYpKSB7XG5uZXQvaXB2NC9yb3V0ZS5jLTk4MC1cdFx0ZGV2ID0gX19kZXZfZ2V0X2J5X2luZGV4KGRldl9uZXQoc2tiLVx1MDAzZWRldiksIElQQ0Ioc2tiKS1cdTAwM2VpaWYpO1xuLS1cbm5ldC9pcHY0L3JvdXRlLmM9MjUyMz1pcF9yb3V0ZV9pbnB1dF9yY3Uoc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIGRhZGRyLCBfX2JlMzIgc2FkZHIsXG4tLVxubmV0L2lwdjQvcm91dGUuYy0yNTQ5LVx0XHQvKiBjaGVjayBsMyBtYXN0ZXIgaWYgbm8gbWF0Y2ggeWV0ICovXG5uZXQvaXB2NC9yb3V0ZS5jOjI1NTA6XHRcdGlmICghb3VyIFx1MDAyNlx1MDAyNiBuZXRpZl9pc19sM19zbGF2ZShkZXYpKSB7XG5uZXQvaXB2NC9yb3V0ZS5jLTI1NTEtXHRcdFx0c3RydWN0IGluX2RldmljZSAqbDNfaW5fZGV2O1xuLS1cbm5ldC9pcHY0L3JvdXRlLmM9MjU5MT1zdGF0aWMgc3RydWN0IHJ0YWJsZSAqX19ta3JvdXRlX291dHB1dChjb25zdCBzdHJ1Y3QgZmliX3Jlc3VsdCAqcmVzLFxuLS1cbm5ldC9pcHY0L3JvdXRlLmMtMjYwOS1cdFx0ICAgICEoZGV2X291dC1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0xPT1BCQUNLKSBcdTAwMjZcdTAwMjZcbm5ldC9pcHY0L3JvdXRlLmM6MjYxMDpcdFx0ICAgICFuZXRpZl9pc19sM19tYXN0ZXIoZGV2X291dCkpXG5uZXQvaXB2NC9yb3V0ZS5jLTI2MTEtXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4tLVxubmV0L2lwdjQvdGNwX2FvLmM9MTU3Nj1zdGF0aWMgaW50IHRjcF9hb19hZGRfY21kKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgaW50IGZhbWlseSxcbi0tXG5uZXQvaXB2NC90Y3BfYW8uYy0xNjIzLVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShzb2NrX25ldChzayksIGNtZC5pZmluZGV4KTtcbm5ldC9pcHY0L3RjcF9hby5jOjE2MjQ6XHRcdGlmIChkZXYgXHUwMDI2XHUwMDI2IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxubmV0L2lwdjQvdGNwX2FvLmMtMTYyNS1cdFx0XHRsM2luZGV4ID0gZGV2LVx1MDAzZWlmaW5kZXg7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0xNDc5PXN0YXRpYyBpbnQgdGNwX3Y0X3BhcnNlX21kNV9rZXlzKHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0xNTE0LVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShzb2NrX25ldChzayksIGNtZC50Y3BtX2lmaW5kZXgpO1xubmV0L2lwdjQvdGNwX2lwdjQuYzoxNTE1Olx0XHRpZiAoZGV2IFx1MDAyNlx1MDAyNiBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSlcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTUxNi1cdFx0XHRsM2luZGV4ID0gZGV2LVx1MDAzZWlmaW5kZXg7XG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYz0xMDc0PWlwdjZfYWRkX2FkZHIoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgc3RydWN0IGlmYTZfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0xMDkxLVx0fSBlbHNlIGlmICghKGlkZXYtXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfTE9PUEJBQ0spIFx1MDAyNlx1MDAyNlxubmV0L2lwdjYvYWRkcmNvbmYuYzoxMDkyOlx0XHQgICAhbmV0aWZfaXNfbDNfbWFzdGVyKGlkZXYtXHUwMDNlZGV2KSBcdTAwMjZcdTAwMjZcbm5ldC9pcHY2L2FkZHJjb25mLmMtMTA5My1cdFx0ICAgYWRkcl90eXBlIFx1MDAyNiBJUFY2X0FERFJfTE9PUEJBQ0spIHtcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTI1NzE9c3RhdGljIHN0cnVjdCBpbmV0Nl9kZXYgKmFkZHJjb25mX2FkZF9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1ODQtXHQvKiBBZGQgZGVmYXVsdCBtdWx0aWNhc3Qgcm91dGUgKi9cbm5ldC9pcHY2L2FkZHJjb25mLmM6MjU4NTpcdGlmICghKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0xPT1BCQUNLKSBcdTAwMjZcdTAwMjYgIW5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxubmV0L2lwdjYvYWRkcmNvbmYuYy0yNTg2LVx0XHRhZGRyY29uZl9hZGRfbXJvdXRlKGRldik7XG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYz0zNDM5PXN0YXRpYyB2b2lkIGFkZHJjb25mX2FkZHJfZ2VuKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIGJvb2wgcHJlZml4X3JvdXRlKVxuLS1cbm5ldC9pcHY2L2FkZHJjb25mLmMtMzQ0My1cdC8qIG5vIGxpbmsgbG9jYWwgYWRkcmVzc2VzIG9uIEwzIG1hc3RlciBkZXZpY2VzICovXG5uZXQvaXB2Ni9hZGRyY29uZi5jOjM0NDQ6XHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGlkZXYtXHUwMDNlZGV2KSlcbm5ldC9pcHY2L2FkZHJjb25mLmMtMzQ0NS1cdFx0cmV0dXJuO1xuLS1cbm5ldC9pcHY2L2FkZHJjb25mLmM9MzY3Mj1zdGF0aWMgaW50IGFkZHJjb25mX25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0zODQxLVx0XHQgKi9cbm5ldC9pcHY2L2FkZHJjb25mLmM6Mzg0MjpcdFx0aWYgKGluZm8tXHUwMDNldXBwZXJfZGV2IFx1MDAyNlx1MDAyNiBuZXRpZl9pc19sM19tYXN0ZXIoaW5mby1cdTAwM2V1cHBlcl9kZXYpKVxubmV0L2lwdjYvYWRkcmNvbmYuYy0zODQzLVx0XHRcdGFkZHJjb25mX2lmZG93bihkZXYsIGZhbHNlKTtcbi0tXG5uZXQvaXB2Ni9pY21wLmM9NDE5PXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqaWNtcDZfZGV2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvaWNtcC5jLTQyNy1cdCAqL1xubmV0L2lwdjYvaWNtcC5jOjQyODpcdGlmICh1bmxpa2VseShkZXYtXHUwMDNlaWZpbmRleCA9PSBMT09QQkFDS19JRklOREVYIHx8IG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXHUwMDNlZGV2KSkpIHtcbm5ldC9pcHY2L2ljbXAuYy00MjktXHRcdGNvbnN0IHN0cnVjdCBydDZfaW5mbyAqcnQ2ID0gc2tiX3J0Nl9pbmZvKHNrYik7XG4tLVxubmV0L2lwdjYvaXA2X2lucHV0LmM9MTg4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaXA2X3Jjdl9jb3JlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjYvaXA2X2lucHV0LmMtMjU3LVx0ICAgICEoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfTE9PUEJBQ0spIFx1MDAyNlx1MDAyNlxubmV0L2lwdjYvaXA2X2lucHV0LmM6MjU4Olx0ICAgICFuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSlcbm5ldC9pcHY2L2lwNl9pbnB1dC5jLTI1OS1cdFx0Z290byBlcnI7XG4tLVxubmV0L2lwdjYvaXA2bXIuYz0yMzQ2PWludCBpcDZfbXJfaW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni9pcDZtci5jLTIzNjAtXHQgKi9cbm5ldC9pcHY2L2lwNm1yLmM6MjM2MTpcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSkge1xubmV0L2lwdjYvaXA2bXIuYy0yMzYyLVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShuZXQsIElQQ0Ioc2tiKS1cdTAwM2VpaWYpO1xuLS1cbm5ldC9pcHY2L25kaXNjLmM9Nzg5PXN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiBuZGlzY19yZWN2X25zKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvbmRpc2MuYy04ODUtXHRcdC8qIHBlcmhhcHMgYW4gYWRkcmVzcyBvbiB0aGUgbWFzdGVyIGRldmljZSAqL1xubmV0L2lwdjYvbmRpc2MuYzo4ODY6XHRcdGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKSB7XG5uZXQvaXB2Ni9uZGlzYy5jLTg4Ny1cdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbWRldjtcbi0tXG5uZXQvaXB2Ni9uZGlzYy5jPTE2NTg9dm9pZCBuZGlzY19zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqdGFyZ2V0KVxuLS1cbm5ldC9pcHY2L25kaXNjLmMtMTY3NS1cbm5ldC9pcHY2L25kaXNjLmM6MTY3NjpcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSkge1xubmV0L2lwdjYvbmRpc2MuYy0xNjc3LVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShuZXQsIElQQ0Ioc2tiKS1cdTAwM2VpaWYpO1xuLS1cbm5ldC9pcHY2L3JvdXRlLmM9MTA1OT1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmlwNl9ydF9nZXRfZGV2X3JjdShjb25zdCBzdHJ1Y3QgZmliNl9yZXN1bHQgKnJlcylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTEwNjctXHRcdCAqL1xubmV0L2lwdjYvcm91dGUuYzoxMDY4Olx0XHRpZiAobmV0aWZfaXNfbDNfc2xhdmUoZGV2KSBcdTAwMjZcdTAwMjZcbm5ldC9pcHY2L3JvdXRlLmMtMTA2OS1cdFx0ICAgICFydDZfbmVlZF9zdHJpY3QoXHUwMDI2cmVzLVx1MDAzZWY2aS1cdTAwM2VmaWI2X2RzdC5hZGRyKSlcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTEwNzEtXHRcdFx0ICAgICAgZGV2X25ldChkZXYpLVx1MDAzZWxvb3BiYWNrX2Rldjtcbm5ldC9pcHY2L3JvdXRlLmM6MTA3MjpcdFx0ZWxzZSBpZiAoIW5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxubmV0L2lwdjYvcm91dGUuYy0xMDczLVx0XHRcdGRldiA9IGRldl9uZXQoZGV2KS1cdTAwM2Vsb29wYmFja19kZXY7XG5uZXQvaXB2Ni9yb3V0ZS5jOjEwNzQ6XHRcdC8qIGxhc3QgY2FzZSBpcyBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSBpcyB0cnVlIGluIHdoaWNoXG5uZXQvaXB2Ni9yb3V0ZS5jLTEwNzUtXHRcdCAqIGNhc2Ugd2Ugd2FudCBkZXYgcmV0dXJuZWQgdG8gYmUgZGV2XG4tLVxubmV0L2lwdjYvcm91dGUuYz00NjIxPXN0YXRpYyBpbnQgaXA2X3BrdF9kcm9wKHN0cnVjdCBza19idWZmICpza2IsIHU4IGNvZGUsIGludCBpcHN0YXRzX21pYl9ub3JvdXRlcylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ2MjktXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ2MzA6XHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cdTAwM2VkZXYpIHx8XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ2MzEtXHQgICAgZGV2ID09IG5ldC1cdTAwM2Vsb29wYmFja19kZXYpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00NjUyLVx0LyogU3RhcnQgb3ZlciBieSBkcm9wcGluZyB0aGUgZHN0IGZvciBsM21kZXYgY2FzZSAqL1xubmV0L2lwdjYvcm91dGUuYzo0NjUzOlx0aWYgKG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXHUwMDNlZGV2KSlcbm5ldC9pcHY2L3JvdXRlLmMtNDY1NC1cdFx0c2tiX2RzdF9kcm9wKHNrYik7XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTEwOTU9c3RhdGljIHN0cnVjdCBza19idWZmICplbmRfZHRfdnJmX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgZmFtaWx5LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMDk4LVx0LyogYmFzZWQgb24gbDNtZGV2X2lwX3Jjdjsgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbWFzdGVyICovXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTA5OTpcdGlmICh1bmxpa2VseSghbmV0aWZfaXNfbDNfbWFzdGVyKGRldikgXHUwMDI2XHUwMDI2ICFuZXRpZl9oYXNfbDNfcnhfaGFuZGxlcihkZXYpKSlcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMTAwLVx0XHRnb3RvIGRyb3A7XG4tLVxubmV0L2lwdjYvc2l0LmM9NTI5PXN0YXRpYyBpbnQgaXBpcDZfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvKVxuLS1cbm5ldC9pcHY2L3NpdC5jLTU2Ny1cbm5ldC9pcHY2L3NpdC5jOjU2ODpcdHNpZmluZGV4ID0gbmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cdTAwM2VkZXYpID8gSVBDQihza2IpLVx1MDAzZWlpZiA6IDA7XG5uZXQvaXB2Ni9zaXQuYy01NjktXHR0ID0gaXBpcDZfdHVubmVsX2xvb2t1cChkZXZfbmV0KHNrYi1cdTAwM2VkZXYpLCBza2ItXHUwMDNlZGV2LFxuLS1cbm5ldC9pcHY2L3NpdC5jPTY4MD1zdGF0aWMgaW50IGlwaXA2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3NpdC5jLTY4Ni1cbm5ldC9pcHY2L3NpdC5jOjY4NzpcdHNpZmluZGV4ID0gbmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cdTAwM2VkZXYpID8gSVBDQihza2IpLVx1MDAzZWlpZiA6IDA7XG5uZXQvaXB2Ni9zaXQuYy02ODgtXHR0dW5uZWwgPSBpcGlwNl90dW5uZWxfbG9va3VwKGRldl9uZXQoc2tiLVx1MDAzZWRldiksIHNrYi1cdTAwM2VkZXYsXG4tLVxubmV0L2lwdjYvc2l0LmM9NzUzPXN0YXRpYyBpbnQgc2l0X3R1bm5lbF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaXBwcm90bylcbi0tXG5uZXQvaXB2Ni9zaXQuYy03NTgtXG5uZXQvaXB2Ni9zaXQuYzo3NTk6XHRzaWZpbmRleCA9IG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXHUwMDNlZGV2KSA/IElQQ0Ioc2tiKS1cdTAwM2VpaWYgOiAwO1xubmV0L2lwdjYvc2l0LmMtNzYwLVxuLS1cbm5ldC9pcHY2L3NpdC5jPTEwOTU9c3RhdGljIHZvaWQgaXBpcDZfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2lwdjYvc2l0LmMtMTEyNC1cbm5ldC9pcHY2L3NpdC5jOjExMjU6XHRpZiAodGRldiBcdTAwMjZcdTAwMjYgIW5ldGlmX2lzX2wzX21hc3Rlcih0ZGV2KSkge1xubmV0L2lwdjYvc2l0LmMtMTEyNi1cdFx0aW50IG10dTtcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTYzMT1zdGF0aWMgaW50IHRjcF92Nl9wYXJzZV9tZDVfa2V5cyhzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtNjY5LVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShzb2NrX25ldChzayksIGNtZC50Y3BtX2lmaW5kZXgpO1xubmV0L2lwdjYvdGNwX2lwdjYuYzo2NzA6XHRcdGlmIChkZXYgXHUwMDI2XHUwMDI2IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxubmV0L2lwdjYvdGNwX2lwdjYuYy02NzEtXHRcdFx0bDNpbmRleCA9IGRldi1cdTAwM2VpZmluZGV4O1xuLS1cbm5ldC9sM21kZXYvbDNtZGV2LmM9MTEwPWludCBsM21kZXZfbWFzdGVyX2lmaW5kZXhfcmN1KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2wzbWRldi9sM21kZXYuYy0xMTYtXG5uZXQvbDNtZGV2L2wzbWRldi5jOjExNzpcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSkge1xubmV0L2wzbWRldi9sM21kZXYuYy0xMTgtXHRcdGlmaW5kZXggPSBkZXYtXHUwMDNlaWZpbmRleDtcbm5ldC9sM21kZXYvbDNtZGV2LmM6MTE5Olx0fSBlbHNlIGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKSB7XG5uZXQvbDNtZGV2L2wzbWRldi5jLTEyMC1cdFx0c3RydWN0IG5ldF9kZXZpY2UgKm1hc3Rlcjtcbi0tXG5uZXQvbDNtZGV2L2wzbWRldi5jPTE0ND1pbnQgbDNtZGV2X21hc3Rlcl91cHBlcl9pZmluZGV4X2J5X2luZGV4X3JjdShzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4KVxuLS1cbm5ldC9sM21kZXYvbDNtZGV2LmMtMTQ4LVx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBpZmluZGV4KTtcbm5ldC9sM21kZXYvbDNtZGV2LmM6MTQ5Olx0d2hpbGUgKGRldiBcdTAwMjZcdTAwMjYgIW5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxubmV0L2wzbWRldi9sM21kZXYuYy0xNTAtXHRcdGRldiA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2dldF9yY3UoZGV2KTtcbi0tXG5uZXQvbDNtZGV2L2wzbWRldi5jPTE2Mj11MzIgbDNtZGV2X2ZpYl90YWJsZV9yY3UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbDNtZGV2L2wzbWRldi5jLTE2OC1cbm5ldC9sM21kZXYvbDNtZGV2LmM6MTY5Olx0aWYgKG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKSB7XG5uZXQvbDNtZGV2L2wzbWRldi5jLTE3MC1cdFx0aWYgKGRldi1cdTAwM2VsM21kZXZfb3BzLVx1MDAzZWwzbWRldl9maWJfdGFibGUpXG5uZXQvbDNtZGV2L2wzbWRldi5jLTE3MS1cdFx0XHR0Yl9pZCA9IGRldi1cdTAwM2VsM21kZXZfb3BzLVx1MDAzZWwzbWRldl9maWJfdGFibGUoZGV2KTtcbm5ldC9sM21kZXYvbDNtZGV2LmM6MTcyOlx0fSBlbHNlIGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKSB7XG5uZXQvbDNtZGV2L2wzbWRldi5jLTE3My1cdFx0LyogVXNlcnMgb2YgbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfZ2V0X3JjdSBuZWVkIG5vbi1jb25zdCxcbi0tXG5uZXQvbDNtZGV2L2wzbWRldi5jPTIxOD1zdHJ1Y3QgZHN0X2VudHJ5ICpsM21kZXZfbGlua19zY29wZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9sM21kZXYvbDNtZGV2LmMtMjI2LVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShuZXQsIGZsNi1cdTAwM2VmbG93aTZfb2lmKTtcbm5ldC9sM21kZXYvbDNtZGV2LmM6MjI3Olx0XHRpZiAoZGV2IFx1MDAyNlx1MDAyNiBuZXRpZl9pc19sM19zbGF2ZShkZXYpKVxubmV0L2wzbWRldi9sM21kZXYuYy0yMjgtXHRcdFx0ZGV2ID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfZ2V0X3JjdShkZXYpO1xubmV0L2wzbWRldi9sM21kZXYuYy0yMjktXG5uZXQvbDNtZGV2L2wzbWRldi5jOjIzMDpcdFx0aWYgKGRldiBcdTAwMjZcdTAwMjYgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikgXHUwMDI2XHUwMDI2XG5uZXQvbDNtZGV2L2wzbWRldi5jLTIzMS1cdFx0ICAgIGRldi1cdTAwM2VsM21kZXZfb3BzLVx1MDAzZWwzbWRldl9saW5rX3Njb3BlX2xvb2t1cClcbi0tXG5uZXQvbDNtZGV2L2wzbWRldi5jPTI0Nz1pbnQgbDNtZGV2X2ZpYl9ydWxlX21hdGNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZsb3dpICpmbCxcbi0tXG5uZXQvbDNtZGV2L2wzbWRldi5jLTI1OS1cdGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgZmwtXHUwMDNlZmxvd2lfbDNtZGV2KTtcbm5ldC9sM21kZXYvbDNtZGV2LmM6MjYwOlx0aWYgKGRldiBcdTAwMjZcdTAwMjYgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikgXHUwMDI2XHUwMDI2XG5uZXQvbDNtZGV2L2wzbWRldi5jLTI2MS1cdCAgICBkZXYtXHUwMDNlbDNtZGV2X29wcy1cdTAwM2VsM21kZXZfZmliX3RhYmxlKSB7XG4tLVxubmV0L2wzbWRldi9sM21kZXYuYz0yNzE9dm9pZCBsM21kZXZfdXBkYXRlX2Zsb3coc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2kgKmZsKVxuLS1cbm5ldC9sM21kZXYvbDNtZGV2LmMtMjg3LVx0XHRcdCAqL1xubmV0L2wzbWRldi9sM21kZXYuYzoyODg6XHRcdFx0aWYgKG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxubmV0L2wzbWRldi9sM21kZXYuYy0yODktXHRcdFx0XHRmbC1cdTAwM2VmbG93aV9vaWYgPSAwO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvLmM9MTI0PXN0YXRpYyBib29sIGluX3ZyZl9wb3N0cm91dGluZyhjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYy0xMjctXHRpZiAoc3RhdGUtXHUwMDNlaG9vayA9PSBORl9JTkVUX1BPU1RfUk9VVElORyBcdTAwMjZcdTAwMjZcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvLmM6MTI4Olx0ICAgIG5ldGlmX2lzX2wzX21hc3RlcihzdGF0ZS1cdTAwM2VvdXQpKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYy0xMjktXHRcdHJldHVybiB0cnVlO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYz04ODE9c3RhdGljIGJvb2wgaW5fdnJmX3Bvc3Ryb3V0aW5nKGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtODg0LVx0aWYgKHN0YXRlLVx1MDAzZWhvb2sgPT0gTkZfSU5FVF9QT1NUX1JPVVRJTkcgXHUwMDI2XHUwMDI2XG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmM6ODg1Olx0ICAgIG5ldGlmX2lzX2wzX21hc3RlcihzdGF0ZS1cdTAwM2VvdXQpKVxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTg4Ni1cdFx0cmV0dXJuIHRydWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4ODcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgVmlydHVhbCBSb3V0aW5nICZhbXA7IEZvcndhcmRpbmcgKFZSRikgYW5kIExheWVyIDMgTWFzdGVyIERldmljZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byBzb21lIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbiBhbmQgSSBuZWVkIGEgcXVpY2sgcmVmcmVzaGVyIG9uIHRoZXNlIHNwZWNpZmljcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHVucGFja2luZyB3aGF0IGBDT05GSUdfTkVUX1ZSRmAgYW5kIGBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZgIGFjdHVhbGx5ICpkbyogd2l0aGluIHRoaXMgY29udGV4dC4gSSYjMzk7dmUgZ290IGEgZGVjZW50IGdyYXNwLCBidXQgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gc29saWRpZnkgdGhlIHVuZGVybHlpbmcgaW1wbGljYXRpb25zIG9mIHRoZXNlIHN5bWJvbHMuCgpOb3csIEkgbmVlZCB0byB6b29tIGluIG9uIGhvdyB0aGUgYElGRl9MM01ERVZfTUFTVEVSYCBhbmQgYElGRl9MM01ERVZfU0xBVkVgIGZsYWdzIGFyZSB1c2VkLiBJIG5lZWQgdG8gcmVmcmVzaCBteXNlbGYgb2YgdGhlIG51YW5jZXMgb2YgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhvc2UgZmxhZ3MgYW5kIHRob3NlIGNvbmZpZ3VyYXRpb25zLiBUaGVuLCBJJiMzOTtsbCBuZWVkIHRvIHBpbnBvaW50IHByZWNpc2VseSAqd2hlcmUqIHRob3NlIGZsYWdzIGFyZSBiZWluZyBzZXQgaW4gdGhlIGNvZGUuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgd2l0aCBhIHF1aWNrIHNlYXJjaCB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgY29kZSBsb2NhdGlvbnMgYW5kIHRoZW4gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgbG9naWMgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgc2NlbmFyaW9zIHRoYXQgdHJpZ2dlciB0aGVzZSBmbGFnIHNldHRpbmdzLiBJIG5lZWQgdG8ga2VlcCB0aGlzIHN0cmVhbWxpbmVkLCBzbyBJJiMzOTtsbCBwcmlvcml0aXplIGZpbmRpbmcgdGhlIG1vc3QgZGlyZWN0IGFzc2lnbm1lbnRzIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSByYWJiaXQgaG9sZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SUZGX0wzTURFVl8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0yMDU9aW50IGlwdmxhbl9sM3NfcmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIxNC1cdFx0ZGV2LVx1MDAzZWwzbWRldl9vcHMgPSBcdTAwMjZpcHZsX2wzbWRldl9vcHM7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjIxNTpcdFx0ZGV2LVx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0wzTURFVl9SWF9IQU5ETEVSO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMTYtXHR9XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0yMjE9dm9pZCBpcHZsYW5fbDNzX3VucmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIyNi1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MjI3Olx0ZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2PSB+SUZGX0wzTURFVl9SWF9IQU5ETEVSO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMjgtXHRpcHZsYW5fdW5yZWdpc3Rlcl9uZl9ob29rKHJlYWRfcG5ldChcdTAwMjZwb3J0LVx1MDAzZXBuZXQpKTtcbi0tXG5kcml2ZXJzL25ldC92cmYuYz0xMDEyPXN0YXRpYyBpbnQgZG9fdnJmX2FkZF9zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTAyNS1cbmRyaXZlcnMvbmV0L3ZyZi5jOjEwMjY6XHRwb3J0X2Rldi1cdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9MM01ERVZfU0xBVkU7XG5kcml2ZXJzL25ldC92cmYuYy0xMDI3LVx0cmV0ID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfbGluayhwb3J0X2RldiwgZGV2LCBOVUxMLCBOVUxMLCBleHRhY2spO1xuLS1cbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMzUtZXJyOlxuZHJpdmVycy9uZXQvdnJmLmM6MTAzNjpcdHBvcnRfZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2PSB+SUZGX0wzTURFVl9TTEFWRTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMzctXHRzeW5jaHJvbml6ZV9uZXQoKTtcbi0tXG5kcml2ZXJzL25ldC92cmYuYz0xMDU3PXN0YXRpYyBpbnQgZG9fdnJmX2RlbF9zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTA2MC1cdG5ldGRldl91cHBlcl9kZXZfdW5saW5rKHBvcnRfZGV2LCBkZXYpO1xuZHJpdmVycy9uZXQvdnJmLmM6MTA2MTpcdHBvcnRfZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2PSB+SUZGX0wzTURFVl9TTEFWRTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNjItXHQvKiBNYWtlIHN1cmUgdGhhdCBjb25jdXJyZW50IFJDVSByZWFkZXJzIHRoYXQgaWRlbnRpZmllZCB0aGUgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9MTYzNj1zdGF0aWMgaW50IHZyZl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTY1OC1cbmRyaXZlcnMvbmV0L3ZyZi5jOjE2NTk6XHRkZXYtXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTDNNREVWX01BU1RFUjtcbmRyaXZlcnMvbmV0L3ZyZi5jLTE2NjAtXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xNDU1PXN0cnVjdCBuZXRfZGV2aWNlX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzQ4LSAqXHR1bmRlcmx5aW5nIHN0YWNrZWQgZGV2aWNlc1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzQ5OiAqIEBJRkZfTDNNREVWX01BU1RFUjogZGV2aWNlIGlzIGFuIEwzIG1hc3RlciBkZXZpY2VcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc1MC0gKiBASUZGX05PX1FVRVVFOiBkZXZpY2UgY2FuIHJ1biB3aXRob3V0IHFkaXNjIGF0dGFjaGVkXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTEtICogQElGRl9PUEVOVlNXSVRDSDogZGV2aWNlIGlzIGEgT3BlbiB2U3dpdGNoIG1hc3RlclxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzUyOiAqIEBJRkZfTDNNREVWX1NMQVZFOiBkZXZpY2UgaXMgZW5zbGF2ZWQgdG8gYW4gTDMgbWFzdGVyIGRldmljZVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzUzLSAqIEBJRkZfVEVBTTogZGV2aWNlIGlzIGEgdGVhbSBkZXZpY2Vcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTktICogQElGRl9GQUlMT1ZFUl9TTEFWRTogZGV2aWNlIGlzIGxvd2VyIGRldiBvZiBhIGZhaWxvdmVyIG1hc3RlciBkZXZpY2VcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTc2MDogKiBASUZGX0wzTURFVl9SWF9IQU5ETEVSOiBvbmx5IGludm9rZSB0aGUgcnggaGFuZGxlciBvZiBMMyBtYXN0ZXIgZGV2aWNlXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NjEtICogQElGRl9OT19BRERSQ09ORjogcHJldmVudCBpcHY2IGFkZHJjb25mXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xNzY1PWVudW0gbmV0ZGV2X3ByaXZfZmxhZ3Mge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4My1cdElGRl9YTUlUX0RTVF9SRUxFQVNFX1BFUk1cdD0gMVx1MDAzY1x1MDAzYzE3LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzg0Olx0SUZGX0wzTURFVl9NQVNURVJcdFx0PSAxXHUwMDNjXHUwMDNjMTgsXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3ODUtXHRJRkZfTk9fUVVFVUVcdFx0XHQ9IDFcdTAwM2NcdTAwM2MxOSxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4Ni1cdElGRl9PUEVOVlNXSVRDSFx0XHRcdD0gMVx1MDAzY1x1MDAzYzIwLFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzg3Olx0SUZGX0wzTURFVl9TTEFWRVx0XHQ9IDFcdTAwM2NcdTAwM2MyMSxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4OC1cdElGRl9URUFNXHRcdFx0PSAxXHUwMDNjXHUwMDNjMjIsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzkzLVx0SUZGX0ZBSUxPVkVSX1NMQVZFXHRcdD0gMVx1MDAzY1x1MDAzYzI4LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzk0Olx0SUZGX0wzTURFVl9SWF9IQU5ETEVSXHRcdD0gMVx1MDAzY1x1MDAzYzI5LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzk1LVx0SUZGX05PX0FERFJDT05GXHRcdFx0PSBCSVRfVUxMKDMwKSxcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTU2MDI9c3RhdGljIGlubGluZSBib29sIG5ldGlmX2hhc19sM19yeF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDMte1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjA0Olx0cmV0dXJuIGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1JYX0hBTkRMRVI7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDUtfVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTYwNz1zdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfbWFzdGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDgte1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjA5Olx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpIFx1MDAyNlx1MDAyNiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxMC19XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjEyPXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19zbGF2ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjEzLXtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYxNDpcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSBcdTAwMjZcdTAwMjYgKGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1NMQVZFKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxNS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM5NDMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYElGRl9MM01ERVZfKmAgRmxhZ3MqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSBgSUZGX0wzTURFVl9NQVNURVJgIGFuZCBgSUZGX0wzTURFVl9TTEFWRWAgYXJlICpvbmx5KiBzZXQgd2l0aGluIGBkcml2ZXJzL25ldC92cmYuY2AgaW5pdGlhbGx5LiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBidXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSSBzaG91bGQgdmVyaWZ5IHRoYXQgbm8gb3RoZXIgbW9kdWxlcyBhcmUgdG91Y2hpbmcgdGhlc2UgZmxhZ3MgZGlyZWN0bHkuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBgZ3JlcGAgb3V0cHV0IHRvIGNvbmZpcm0uIEFscmlnaHQsIGNvbmZpcm1lZC4gYHZyZi5jYCBkZWZpbml0ZWx5IHNldHMgYElGRl9MM01ERVZfU0xBVkVgIG9uIGBwb3J0X2RldmAgYW5kIGBJRkZfTDNNREVWX01BU1RFUmAgb24gYGRldmAuCgpOb3csIGxvb2tpbmcgZGVlcGVyLCBJIHNlZSB0aGF0IGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jYCBzZXRzIGBJRkZfTDNNREVWX1JYX0hBTkRMRVJgLCBidXQgdGhhdCYjMzk7cyBoYW5kbGVkIHRocm91Z2ggYG5ldGlmX2hhc19sM19yeF9oYW5kbGVyYCB3aGljaCBpcyBhIGRpZmZlcmVudCBjb25jZXJuLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IG90aGVyIHBvdGVudGlhbCBjb250ZW5kZXJzLiBJIHdpbGwgbm93IGV4YW1pbmUgYEtjb25maWdgIGZvciBgTkVUX1ZSRmAgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfVlJGJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3MS1cbmRyaXZlcnMvbmV0L0tjb25maWc6NDcyOmNvbmZpZyBORVRfVlJGXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3My1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgUm91dGluZyBhbmQgRm9yd2FyZGluZyAoTGl0ZSlcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDUzMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBOZXR3b3JrIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gYmV0dGVyLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQganVtcCBzdHJhaWdodCBpbnRvIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBvZiBmb2N1c2luZyBvbiB0aGUgYGRyaXZlcnMvbmV0L0tjb25maWdgIGZpbGUsIGFyb3VuZCBsaW5lIDQ3Mi4gVGhhdCYjMzk7cyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZ2V0dGluZyBhIGhhbmRsZSBvbiBhIG1vZHVsZSYjMzk7cyBjb3JlIGRlcGVuZGVuY2llcyBhbmQgaG93IGl0JiMzOTtzIGV4cG9zZWQgdGhyb3VnaCB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgc29tZSBjcnVjaWFsIG9wdGlvbnMgZGVmaW5lZCBhcm91bmQgdGhhdCBhcmVhLCBwcm9iYWJseSByZWxhdGVkIHRvIGEgcGFydGljdWxhciBkcml2ZXIgb3IgbmV0d29yayBmZWF0dXJlLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBob29rcyBJIG5lZWQgdG8gZXhwbG9yZSBpdHMgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIGFuZCB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgY29tcG9uZW50cyBpdCBpbnRlcmFjdHMgd2l0aC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRoZXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDcwOlx0XHQgIHRvIG9wZXJhdGUgaW4gTDMgb3IgTDIgbW9kZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiA0NzE6XHRcbiA0NzI6XHRjb25maWcgTkVUX1ZSRlxuIDQ3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBSb3V0aW5nIGFuZCBGb3J3YXJkaW5nIChMaXRlKVwmIzM0O1xuIDQ3NDpcdFx0ZGVwZW5kcyBvbiBJUF9NVUxUSVBMRV9UQUJMRVNcbiA0NzU6XHRcdGRlcGVuZHMgb24gTkVUX0wzX01BU1RFUl9ERVZcbiA0NzY6XHRcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVMgfHwgSVBWNj1uXG4gNDc3Olx0XHRoZWxwXG4gNDc4Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIHN1cHBvcnQgZm9yIG1hcHBpbmcgaW50ZXJmYWNlcyBpbnRvIFZSRiYjMzk7cy4gVGhlXG4gNDc5Olx0XHQgIHN1cHBvcnQgZW5hYmxlcyBWUkYgZGV2aWNlcy5cbiA0ODA6XHRcbiA0ODE6XHRjb25maWcgVlNPQ0tNT05cbiA0ODI6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcJiMzNDtcbiA0ODM6XHRcdGRlcGVuZHMgb24gVkhPU1RfVlNPQ0tcbiA0ODQ6XHRcdGhlbHBcbiA0ODU6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBhIG1vbml0b3JpbmcgbmV0IGRldmljZSBmb3IgdnNvY2sgc29ja2V0cy4gSXQgaXNcbiA0ODY6XHRcdCAgbW9zdGx5IGludGVuZGVkIGZvciBkZXZlbG9wZXJzIG9yIHN1cHBvcnQgdG8gZGVidWcgdnNvY2sgaXNzdWVzLiBJZlxuIDQ4NzpcdFx0ICB1bnN1cmUsIHNheSBOLlxuIDQ4ODpcdFxuIDQ4OTpcdGNvbmZpZyBNSElfTkVUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MDYxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTI0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBWUkYgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgaW50ZXJwbGF5IG9mIGBDT05GSUdfTkVUX1ZSRmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBydW4gdGhyb3VnaCB0aGUgdGhyZWUgcG9zc2libGUgc3RhdGVzOiBgQ09ORklHX05FVF9WUkY9bmAsIGBDT05GSUdfTkVUX1ZSRj1tYCwgYW5kIGBDT05GSUdfTkVUX1ZSRj15YC4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGhvdyBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgIGFmZmVjdHMgYG5ldGlmX2lzX2wzX21hc3RlcmAgYW5kIGBuZXRpZl9pc19sM19zbGF2ZWAuCgpJZiBgQ09ORklHX05FVF9WUkY9bmAsIHRob3NlIGZ1bmN0aW9ucyBub3cgcmV0dXJuIGBmYWxzZWAgYXQgY29tcGlsZSB0aW1lLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IG9wdGltaXphdGlvbiBiZWNhdXNlIHRoZSBjb21waWxlciBjYW4gZWxpbWluYXRlIHRoZSBjb25kaXRpb25hbCBjaGVja3MgaW52b2x2aW5nIGBkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVIvU0xBVkVgIGFsdG9nZXRoZXIuIE5vIG1vcmUgcnVudGltZSBjaGVja3MsIHdoaWNoIGlzIGdyZWF0IGZvciBmYXN0IHBhdGhzLiBTaW5jZSBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgIGJlY29tZXMgZmFsc2UsIHRoZSBjb21waWxlciBjYW4gb3B0aW1pemUgdGhlIGNvZGUsIGF2b2lkaW5nIHRoZSBicmFuY2ggYW5kIG1lbW9yeSBsb2FkIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGNoZWNrLgoKSWYgYENPTkZJR19ORVRfVlJGYCBpcyAmIzM5O3kmIzM5OyBvciAmIzM5O20mIzM5OywgYElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpYCB3aWxsIGJlIHRydWUsIG1lYW5pbmcgdGhlIGNvbmRpdGlvbmFsIGAoMSAmYW1wOyZhbXA7IChkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVIpKWAgaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gdGhlIGV4aXN0aW5nIGxvZ2ljLCBzbyBubyBjaGFuZ2UgdGhlcmUuCgpCdXQgZG9lcyB0aGlzIGNoYW5nZSBBTlkga2VybmVsIGJlaGF2aW9yPyBMZXQmIzM5O3MgYmUgbWV0aWN1bG91czoKCiogICAqKkNhc2UgMTogVlJGIEVuYWJsZWQgKGB5YCBvciBgbWApKio6IGBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKWAgaXMgMS4gYG5ldGlmX2lzX2wzX21hc3RlcmAgYmVjb21lcyBgMSAmYW1wOyZhbXA7IChkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVIpYCwgd2hpY2ggaXMganVzdCBgYm9vbChkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVIpYC4gVGhlIHNhbWUgbG9naWMgZXhpc3RzIGZvciBgbmV0aWZfaXNfbDNfc2xhdmVgLiBTbywgYWJzb2x1dGVseSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IgaGVyZS4KCiogICAqKkNhc2UgMjogVlJGIERpc2FibGVkIChgbmApKio6ICBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgIGlzIDAuICBgbmV0aWZfaXNfbDNfbWFzdGVyYCByZXR1cm5zIGBmYWxzZWAgYW5kIGBuZXRpZl9pc19sM19zbGF2ZWAgcmV0dXJucyBgZmFsc2VgLiAgQnV0LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXM6IENvdWxkIGBkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVIvU0xBVkVgICpldmVyKiBiZSBub24temVybyB3aGVuIFZSRiBpcyBkaXNhYmxlZD8KCkkgY2hlY2tlZCBpZiBhbnkgb3RoZXIgcGFydCBvZiB0aGUga2VybmVsIGNvdWxkIHBvdGVudGlhbGx5IHNldCBgSUZGX0wzTURFVl9NQVNURVJgIG9yIGBJRkZfTDNNREVWX1NMQVZFYC4gRG9pbmcgYSBgZ2l0IGdyZXBgIHJldmVhbHMgdGhhdCBPTkxZIGBkcml2ZXJzL25ldC92cmYuY2Agc2V0cyB0aG9zZSBmbGFncy4gSWYgVlJGIGlzIGRpc2FibGVkLCB0aGF0IGVudGlyZSBmaWxlICppc24mIzM5O3QgY29tcGlsZWQqLiBTbywgdGhvc2UgZmxhZ3Mgd291bGQgKm5ldmVyKiBiZSBzZXQuIFRoZXJlZm9yZSwgd2hlbiBWUkYgaXMgZGlzYWJsZWQsIGBkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVJgIHdhcyAqYWx3YXlzKiBlZmZlY3RpdmVseSAwLCByZWdhcmRsZXNzIG9mIHRoaXMgcGF0Y2guCgpTbywgaXQgc2VlbXMgd2UgaGF2ZSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24sIGRlYWQgY29kZSBlbGltaW5hdGlvbiwgYW5kICpubyogY2hhbmdlIGluIGFjdHVhbCBydW50aW1lIGJlaGF2aW9yLiBUaGUgY29kZSBwYXRoIGlzIG5ldmVyIHJlYWNoYWJsZSwgbWFraW5nIGl0IGEgc2FmZSBvcHRpbWl6YXRpb24sIGJ1dCBJIHNob3VsZCBsb29rIGF0IHRoZSBydWxlcyBmb3Igd2hldGhlciBhIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCAqb25seSogY29udGFpbnMgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIFRoaXMgc2VlbXMgbGlrZSBhIHNsYW0gZHVuazogdGhlIHBhdGNoIGlzIHdvcnRoICpub3QqIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0lGRl9MM01ERVYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0yMDU9aW50IGlwdmxhbl9sM3NfcmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIxNC1cdFx0ZGV2LVx1MDAzZWwzbWRldl9vcHMgPSBcdTAwMjZpcHZsX2wzbWRldl9vcHM7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjIxNTpcdFx0ZGV2LVx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0wzTURFVl9SWF9IQU5ETEVSO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMTYtXHR9XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0yMjE9dm9pZCBpcHZsYW5fbDNzX3VucmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIyNi1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MjI3Olx0ZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2PSB+SUZGX0wzTURFVl9SWF9IQU5ETEVSO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMjgtXHRpcHZsYW5fdW5yZWdpc3Rlcl9uZl9ob29rKHJlYWRfcG5ldChcdTAwMjZwb3J0LVx1MDAzZXBuZXQpKTtcbi0tXG5kcml2ZXJzL25ldC92cmYuYz0xMDEyPXN0YXRpYyBpbnQgZG9fdnJmX2FkZF9zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTAyNS1cbmRyaXZlcnMvbmV0L3ZyZi5jOjEwMjY6XHRwb3J0X2Rldi1cdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9MM01ERVZfU0xBVkU7XG5kcml2ZXJzL25ldC92cmYuYy0xMDI3LVx0cmV0ID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfbGluayhwb3J0X2RldiwgZGV2LCBOVUxMLCBOVUxMLCBleHRhY2spO1xuLS1cbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMzUtZXJyOlxuZHJpdmVycy9uZXQvdnJmLmM6MTAzNjpcdHBvcnRfZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2PSB+SUZGX0wzTURFVl9TTEFWRTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMzctXHRzeW5jaHJvbml6ZV9uZXQoKTtcbi0tXG5kcml2ZXJzL25ldC92cmYuYz0xMDU3PXN0YXRpYyBpbnQgZG9fdnJmX2RlbF9zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTA2MC1cdG5ldGRldl91cHBlcl9kZXZfdW5saW5rKHBvcnRfZGV2LCBkZXYpO1xuZHJpdmVycy9uZXQvdnJmLmM6MTA2MTpcdHBvcnRfZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2PSB+SUZGX0wzTURFVl9TTEFWRTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNjItXHQvKiBNYWtlIHN1cmUgdGhhdCBjb25jdXJyZW50IFJDVSByZWFkZXJzIHRoYXQgaWRlbnRpZmllZCB0aGUgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9MTYzNj1zdGF0aWMgaW50IHZyZl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTY1OC1cbmRyaXZlcnMvbmV0L3ZyZi5jOjE2NTk6XHRkZXYtXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTDNNREVWX01BU1RFUjtcbmRyaXZlcnMvbmV0L3ZyZi5jLTE2NjAtXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xNDU1PXN0cnVjdCBuZXRfZGV2aWNlX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzQ4LSAqXHR1bmRlcmx5aW5nIHN0YWNrZWQgZGV2aWNlc1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzQ5OiAqIEBJRkZfTDNNREVWX01BU1RFUjogZGV2aWNlIGlzIGFuIEwzIG1hc3RlciBkZXZpY2VcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc1MC0gKiBASUZGX05PX1FVRVVFOiBkZXZpY2UgY2FuIHJ1biB3aXRob3V0IHFkaXNjIGF0dGFjaGVkXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTEtICogQElGRl9PUEVOVlNXSVRDSDogZGV2aWNlIGlzIGEgT3BlbiB2U3dpdGNoIG1hc3RlclxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzUyOiAqIEBJRkZfTDNNREVWX1NMQVZFOiBkZXZpY2UgaXMgZW5zbGF2ZWQgdG8gYW4gTDMgbWFzdGVyIGRldmljZVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzUzLSAqIEBJRkZfVEVBTTogZGV2aWNlIGlzIGEgdGVhbSBkZXZpY2Vcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTktICogQElGRl9GQUlMT1ZFUl9TTEFWRTogZGV2aWNlIGlzIGxvd2VyIGRldiBvZiBhIGZhaWxvdmVyIG1hc3RlciBkZXZpY2VcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTc2MDogKiBASUZGX0wzTURFVl9SWF9IQU5ETEVSOiBvbmx5IGludm9rZSB0aGUgcnggaGFuZGxlciBvZiBMMyBtYXN0ZXIgZGV2aWNlXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NjEtICogQElGRl9OT19BRERSQ09ORjogcHJldmVudCBpcHY2IGFkZHJjb25mXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xNzY1PWVudW0gbmV0ZGV2X3ByaXZfZmxhZ3Mge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4My1cdElGRl9YTUlUX0RTVF9SRUxFQVNFX1BFUk1cdD0gMVx1MDAzY1x1MDAzYzE3LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzg0Olx0SUZGX0wzTURFVl9NQVNURVJcdFx0PSAxXHUwMDNjXHUwMDNjMTgsXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3ODUtXHRJRkZfTk9fUVVFVUVcdFx0XHQ9IDFcdTAwM2NcdTAwM2MxOSxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4Ni1cdElGRl9PUEVOVlNXSVRDSFx0XHRcdD0gMVx1MDAzY1x1MDAzYzIwLFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzg3Olx0SUZGX0wzTURFVl9TTEFWRVx0XHQ9IDFcdTAwM2NcdTAwM2MyMSxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4OC1cdElGRl9URUFNXHRcdFx0PSAxXHUwMDNjXHUwMDNjMjIsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzkzLVx0SUZGX0ZBSUxPVkVSX1NMQVZFXHRcdD0gMVx1MDAzY1x1MDAzYzI4LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzk0Olx0SUZGX0wzTURFVl9SWF9IQU5ETEVSXHRcdD0gMVx1MDAzY1x1MDAzYzI5LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzk1LVx0SUZGX05PX0FERFJDT05GXHRcdFx0PSBCSVRfVUxMKDMwKSxcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTU2MDI9c3RhdGljIGlubGluZSBib29sIG5ldGlmX2hhc19sM19yeF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDMte1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjA0Olx0cmV0dXJuIGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1JYX0hBTkRMRVI7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDUtfVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTYwNz1zdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfbWFzdGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDgte1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjA5Olx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpIFx1MDAyNlx1MDAyNiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxMC19XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjEyPXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19zbGF2ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjEzLXtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYxNDpcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSBcdTAwMjZcdTAwMjYgKGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1NMQVZFKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxNS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzcyCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBMM01ERVYgS2NvbmZpZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBMM01ERVYuIExldCYjMzk7cyBkaXZlIHJpZ2h0IGludG8gdGhlIGBuZXQvbDNtZGV2L0tjb25maWdgIGZpbGUuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIHRocm91Z2ggaXQgdG8gZ2V0IGEgZmVlbCBmb3Igd2hhdCBjb25maWd1cmFibGUgZmVhdHVyZXMgYW5kIHNldHRpbmdzIGFyZSBhdmFpbGFibGUuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgYmUgYSB0cmVhc3VyZSB0cm92ZSBvZiBpbmZvcm1hdGlvbiwgcmV2ZWFsaW5nIHRoZSBrbm9icyBhbmQgZGlhbHMgdGhhdCBjb250cm9sIHRoaXMgcGFydCBvZiB0aGUgbmV0d29ya2luZyBzdGFjay4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgY29yZSBvcHRpb25zLCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHN1YnRsZXRpZXMgdGhhdCBtaWdodCBqdW1wIG91dC4gR290dGEgdW5kZXJzdGFuZCB0aGUgYnVpbGRpbmcgYmxvY2tzIGJlZm9yZSBJIGNhbiBwdXQgdG9nZXRoZXIgYW55dGhpbmcgaW50ZXJlc3Rpbmcgd2l0aCBpdC4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9MM19NQVNURVJfREVWJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0PTYwNz10Y3BfbDNtZGV2X2FjY2VwdCAtIEJPT0xFQU5cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdC02MTItXHR3aGljaCB0aGUgcGFja2V0cyBvcmlnaW5hdGVkLiBPbmx5IHZhbGlkIHdoZW4gdGhlIGtlcm5lbCB3YXNcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0OjYxMzpcdGNvbXBpbGVkIHdpdGggQ09ORklHX05FVF9MM19NQVNURVJfREVWLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QtNjE0LVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0PTE0NTQ9dWRwX2wzbWRldl9hY2NlcHQgLSBCT09MRUFOXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QtMTQ1OC1cdG9yaWdpbmF0ZWQuIE9ubHkgdmFsaWQgd2hlbiB0aGUga2VybmVsIHdhcyBjb21waWxlZCB3aXRoXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdDoxNDU5Olx0Q09ORklHX05FVF9MM19NQVNURVJfREVWLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QtMTQ2MC1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdD0xNTE5PXJhd19sM21kZXZfYWNjZXB0IC0gQk9PTEVBTlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0LTE1MjMtXHRvcmlnaW5hdGVkLiBPbmx5IHZhbGlkIHdoZW4gdGhlIGtlcm5lbCB3YXMgY29tcGlsZWQgd2l0aFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3Q6MTUyNDpcdENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVi5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0LTE1MjUtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3Q9Mzc5Nz1sM21kZXZfYWNjZXB0IC0gQk9PTEVBTlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0LTM4MDEtXHRvcmlnaW5hdGVkLiBPbmx5IHZhbGlkIHdoZW4gdGhlIGtlcm5lbCB3YXMgY29tcGlsZWQgd2l0aFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3Q6MzgwMjpcdENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVi5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0LTM4MDMtXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xOTM9Y29uZmlnIElQVkxBTl9MM1Ncbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Ni1cdGRlZl9ib29sIHlcbmRyaXZlcnMvbmV0L0tjb25maWc6MTk3Olx0c2VsZWN0IE5FVF9MM19NQVNURVJfREVWXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5OC1cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ3Mj1jb25maWcgTkVUX1ZSRlxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNDc0LVx0ZGVwZW5kcyBvbiBJUF9NVUxUSVBMRV9UQUJMRVNcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc1Olx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzYtXHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTIHx8IElQVjY9blxuLS1cbmluY2x1ZGUvbGludXgvaXB2Ni5oPTE1Nj1zdHJ1Y3QgaW5ldDZfc2tiX3Bhcm0ge1xuLS1cbmluY2x1ZGUvbGludXgvaXB2Ni5oLTE4My1cbmluY2x1ZGUvbGludXgvaXB2Ni5oOjE4NDojaWYgZGVmaW5lZChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXG5pbmNsdWRlL2xpbnV4L2lwdjYuaC0xODUtc3RhdGljIGlubGluZSBib29sIGlwdjZfbDNtZGV2X3NrYihfX3UxNiBmbGFncylcbi0tXG5pbmNsdWRlL2xpbnV4L2lwdjYuaD0yMTI9c3RhdGljIGlubGluZSBpbnQgaW5ldDZfc2RpZihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuaW5jbHVkZS9saW51eC9pcHY2LmgtMjEzLXtcbmluY2x1ZGUvbGludXgvaXB2Ni5oOjIxNDojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXG5pbmNsdWRlL2xpbnV4L2lwdjYuaC0yMTUtXHRpZiAoc2tiIFx1MDAyNlx1MDAyNiBpcHY2X2wzbWRldl9za2IoSVA2Q0Ioc2tiKS1cdTAwM2VmbGFncykpXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yMTU4PXN0cnVjdCBuZXRfZGV2aWNlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIzMDAtXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKmV0aHRvb2xfb3BzO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyMzAxOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjMwMi1cdGNvbnN0IHN0cnVjdCBsM21kZXZfb3BzXHQqbDNtZGV2X29wcztcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTU2MTc9c3RhdGljIGlubGluZSBpbnQgZGV2X3NkaWYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxOC17XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjU2MTk6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjIwLVx0aWYgKG5ldGlmX2lzX2wzX3NsYXZlKGRldikpXG4tLVxuaW5jbHVkZS9uZXQvZmliX3J1bGVzLmg9MTIxPXN0YXRpYyBpbmxpbmUgdm9pZCBmaWJfcnVsZV9wdXQoc3RydWN0IGZpYl9ydWxlICpydWxlKVxuLS1cbmluY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oLTEyNi1cbmluY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oOjEyNzojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaC0xMjgtc3RhdGljIGlubGluZSB1MzIgZmliX3J1bGVfZ2V0X3RhYmxlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcbi0tXG5pbmNsdWRlL25ldC9ncm8uaD01NTU9c3RhdGljIGlubGluZSB2b2lkIGluZXRfZ2V0X2lpZl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCAqaWlmLCBpbnQgKnNkaWYpXG4tLVxuaW5jbHVkZS9uZXQvZ3JvLmgtNTU5LVxuaW5jbHVkZS9uZXQvZ3JvLmg6NTYwOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcbmluY2x1ZGUvbmV0L2dyby5oLTU2MS1cdGlmIChuZXRpZl9pc19sM19zbGF2ZShza2ItXHUwMDNlZGV2KSkge1xuLS1cbmluY2x1ZGUvbmV0L2dyby5oPTU3Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5ldDZfZ2V0X2lpZl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCAqaWlmLCBpbnQgKnNkaWYpXG4tLVxuaW5jbHVkZS9uZXQvZ3JvLmgtNTgxLVxuaW5jbHVkZS9uZXQvZ3JvLmg6NTgyOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcbmluY2x1ZGUvbmV0L2dyby5oLTU4My1cdGlmIChuZXRpZl9pc19sM19zbGF2ZShza2ItXHUwMDNlZGV2KSkge1xuLS1cbmluY2x1ZGUvbmV0L2luZXRfc29jay5oPTExNT1zdGF0aWMgaW5saW5lIGludCBpbmV0X3JlcXVlc3RfYm91bmRfZGV2X2lmKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbi0tXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaC0xMTgtXHRpbnQgYm91bmRfZGV2X2lmID0gUkVBRF9PTkNFKHNrLVx1MDAzZXNrX2JvdW5kX2Rldl9pZik7XG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaDoxMTk6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxuaW5jbHVkZS9uZXQvaW5ldF9zb2NrLmgtMTIwLVx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuLS1cbmluY2x1ZGUvbmV0L2luZXRfc29jay5oPTEyOT1zdGF0aWMgaW5saW5lIGludCBpbmV0X3NrX2JvdW5kX2wzbWRldihjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaC0xMzAte1xuaW5jbHVkZS9uZXQvaW5ldF9zb2NrLmg6MTMxOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oLTEzMi1cdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcbi0tXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaD0xNTA9c3RhdGljIGlubGluZSBib29sIGluZXRfc2tfYm91bmRfZGV2X2VxKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaC0xNTMte1xuaW5jbHVkZS9uZXQvaW5ldF9zb2NrLmg6MTU0OiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oLTE1NS1cdHJldHVybiBpbmV0X2JvdW5kX2Rldl9lcSghIVJFQURfT05DRShuZXQtXHUwMDNlaXB2NC5zeXNjdGxfdGNwX2wzbWRldl9hY2NlcHQpLFxuLS1cbmluY2x1ZGUvbmV0L2lwLmg9MTExPXN0YXRpYyBpbmxpbmUgaW50IGluZXRfc2RpZihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuaW5jbHVkZS9uZXQvaXAuaC0xMTIte1xuaW5jbHVkZS9uZXQvaXAuaDoxMTM6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxuaW5jbHVkZS9uZXQvaXAuaC0xMTQtXHRpZiAoc2tiIFx1MDAyNlx1MDAyNiBpcHY0X2wzbWRldl9za2IoSVBDQihza2IpLVx1MDAzZWZsYWdzKSlcbi0tXG5pbmNsdWRlL25ldC9sM21kZXYuaD0zNT1zdHJ1Y3QgbDNtZGV2X29wcyB7XG4tLVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtNDctXG5pbmNsdWRlL25ldC9sM21kZXYuaDo0ODojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5pbmNsdWRlL25ldC9sM21kZXYuaC00OS1cbi0tXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0Lmg9NTU9c3RydWN0IG5ldG5zX2lwdjQge1xuLS1cbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaC0xNzAtXHR1MzIgc3lzY3RsX2lwX2xvY2FsX3BvcnRfc3RlcF93aWR0aDtcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaDoxNzE6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oLTE3Mi1cdHU4IHN5c2N0bF9yYXdfbDNtZGV2X2FjY2VwdDtcbi0tXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0LmgtMjU1LVxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oOjI1NjojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0LmgtMjU3LVx0dTggc3lzY3RsX3VkcF9sM21kZXZfYWNjZXB0O1xuLS1cbmluY2x1ZGUvbmV0L25ldG5zL3NjdHAuaD0xMz1zdHJ1Y3QgbmV0bnNfc2N0cCB7XG4tLVxuaW5jbHVkZS9uZXQvbmV0bnMvc2N0cC5oLTE3OC1cbmluY2x1ZGUvbmV0L25ldG5zL3NjdHAuaDoxNzk6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxuaW5jbHVkZS9uZXQvbmV0bnMvc2N0cC5oLTE4MC1cdGludCBsM21kZXZfYWNjZXB0O1xuLS1cbmluY2x1ZGUvbmV0L3Jhdy5oPTg5PXN0YXRpYyBpbmxpbmUgYm9vbCByYXdfc2tfYm91bmRfZGV2X2VxKHN0cnVjdCBuZXQgKm5ldCwgaW50IGJvdW5kX2Rldl9pZixcbi0tXG5pbmNsdWRlL25ldC9yYXcuaC05MS17XG5pbmNsdWRlL25ldC9yYXcuaDo5MjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXG5pbmNsdWRlL25ldC9yYXcuaC05My1cdHJldHVybiBpbmV0X2JvdW5kX2Rldl9lcShSRUFEX09OQ0UobmV0LVx1MDAzZWlwdjQuc3lzY3RsX3Jhd19sM21kZXZfYWNjZXB0KSxcbi0tXG5pbmNsdWRlL25ldC90Y3AuaD0xMTc5PXN0YXRpYyBpbmxpbmUgaW50IHRjcF92Nl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL25ldC90Y3AuaC0xMTgwLXtcbmluY2x1ZGUvbmV0L3RjcC5oOjExODE6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxuaW5jbHVkZS9uZXQvdGNwLmgtMTE4Mi1cdGlmIChza2IgXHUwMDI2XHUwMDI2IGlwdjZfbDNtZGV2X3NrYihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlaGVhZGVyLmg2LmZsYWdzKSlcbi0tXG5pbmNsdWRlL25ldC90Y3AuaD0xMTk1PXN0YXRpYyBpbmxpbmUgaW50IHRjcF92NF9zZGlmKHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL25ldC90Y3AuaC0xMTk2LXtcbmluY2x1ZGUvbmV0L3RjcC5oOjExOTc6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxuaW5jbHVkZS9uZXQvdGNwLmgtMTE5OC1cdGlmIChza2IgXHUwMDI2XHUwMDI2IGlwdjRfbDNtZGV2X3NrYihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlaGVhZGVyLmg0LmZsYWdzKSlcbi0tXG5pbmNsdWRlL25ldC91ZHAuaD0zODU9c3RhdGljIGlubGluZSBib29sIHVkcF9za19ib3VuZF9kZXZfZXEoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgYm91bmRfZGV2X2lmLFxuLS1cbmluY2x1ZGUvbmV0L3VkcC5oLTM4Ny17XG5pbmNsdWRlL25ldC91ZHAuaDozODg6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxuaW5jbHVkZS9uZXQvdWRwLmgtMzg5LVx0cmV0dXJuIGluZXRfYm91bmRfZGV2X2VxKCEhUkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnN5c2N0bF91ZHBfbDNtZGV2X2FjY2VwdCksXG4tLVxubmV0L01ha2VmaWxlPTY5PW9iai0kKENPTkZJR19ORVRfU1dJVENIREVWKVx0JiM0Mzs9IHN3aXRjaGRldi9cbm5ldC9NYWtlZmlsZTo3MDpvYmotJChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXHQmIzQzOz0gbDNtZGV2L1xubmV0L01ha2VmaWxlLTcxLW9iai0kKENPTkZJR19RUlRSKVx0XHQmIzQzOz0gcXJ0ci9cbi0tXG5uZXQvY29yZS9maWJfcnVsZXMuYz00Mzk9c3RhdGljIHN0cnVjdCBmaWJfcnVsZSAqcnVsZV9maW5kKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXG4tLVxubmV0L2NvcmUvZmliX3J1bGVzLmMtNTE5LVxubmV0L2NvcmUvZmliX3J1bGVzLmM6NTIwOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTUyMS1zdGF0aWMgaW50IGZpYl9ubDJydWxlX2wzbWRldihzdHJ1Y3QgbmxhdHRyICpubGEsIHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLFxuLS1cbm5ldC9pcHY0L3Jhdy5jPTExMTY9c3RhdGljIHZvaWQgcmF3X3N5c2N0bF9pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvaXB2NC9yYXcuYy0xMTE3LXtcbm5ldC9pcHY0L3Jhdy5jOjExMTg6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxubmV0L2lwdjQvcmF3LmMtMTExOS1cdG5ldC1cdTAwM2VpcHY0LnN5c2N0bF9yYXdfbDNtZGV2X2FjY2VwdCA9IDE7XG4tLVxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM9NjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7XG4tLVxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtNzI1LVx0fSxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjcyNjojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYy03MjctXHR7XG4tLVxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtODkyLVx0fSxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjg5MzojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYy04OTQtXHR7XG4tLVxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMTE5NS1cdH0sXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYzoxMTk2OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTExOTctXHR7XG4tLVxubmV0L2lwdjQvdWRwLmM9MzY5OT1zdGF0aWMgdm9pZCBfX25ldF9pbml0IHVkcF9zeXNjdGxfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjQvdWRwLmMtMzcwMy1cbm5ldC9pcHY0L3VkcC5jOjM3MDQ6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxubmV0L2lwdjQvdWRwLmMtMzcwNS1cdG5ldC1cdTAwM2VpcHY0LnN5c2N0bF91ZHBfbDNtZGV2X2FjY2VwdCA9IDA7XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE4Nz1zdHJ1Y3Qgc2VnNl9sb2NhbF9sd3Qge1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xOTUtXHRzdHJ1Y3QgYnBmX2x3dF9wcm9nIGJwZjtcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxOTY6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE5Ny1cdHN0cnVjdCBzZWc2X2VuZF9kdF9pbmZvIGR0X2luZm87XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTk5OD1zdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHg0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEwMjEtXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTAyMjojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTAyMy1zdGF0aWMgc3RydWN0IG5ldCAqZmliNl9jb25maWdfZ2V0X25ldChjb25zdCBzdHJ1Y3QgZmliNl9jb25maWcgKmZpYjZfY2ZnKVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xMjc0PXN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDYoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTI4Mi1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMjgzOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMjg0LVx0aWYgKHNlZzZfZW5kX2R0Nl9nZXRfbW9kZShzbHd0KSA9PSBEVF9MRUdBQ1lfTU9ERSlcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTMxNS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzE2OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzE3LXN0YXRpYyBpbnQgc2VnNl9lbmRfZHQ0Nl9idWlsZChzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QsIGNvbnN0IHZvaWQgKmNmZyxcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM9MTQ4Nz1zdGF0aWMgc3RydWN0IHNlZzZfYWN0aW9uX2Rlc2Mgc2VnNl9hY3Rpb25fdGFibGVbXSA9IHtcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUzMC1cdFx0Lm9wdGF0dHJzXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTMxOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTMyLVx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUzOS1cdFx0LmFjdGlvblx0XHQ9IFNFRzZfTE9DQUxfQUNUSU9OX0VORF9EVDYsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTU0MDojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU0MS1cdFx0LmF0dHJzXHRcdD0gMCxcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU1Ny1cdFx0Lm9wdGF0dHJzXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTU4OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTU5LVx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NDYsXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE3NTk9c2VnNl9lbmRfZHRfaW5mbyAqc2VnNl9wb3NzaWJsZV9lbmRfZHRfaW5mbyhzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QpXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTc2MC17XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTc2MTojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTc2Mi1cdHJldHVybiBcdTAwMjZzbHd0LVx1MDAzZWR0X2luZm87XG4tLVxubmV0L2wzbWRldi9LY29uZmlnLTUtXG5uZXQvbDNtZGV2L0tjb25maWc6Njpjb25maWcgTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9sM21kZXYvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtMMyBNYXN0ZXIgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90by5jPTEyND1zdGF0aWMgYm9vbCBpbl92cmZfcG9zdHJvdXRpbmcoY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYy0xMjUte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYzoxMjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYy0xMjctXHRpZiAoc3RhdGUtXHUwMDNlaG9vayA9PSBORl9JTkVUX1BPU1RfUk9VVElORyBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmM9ODgxPXN0YXRpYyBib29sIGluX3ZyZl9wb3N0cm91dGluZyhjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtODgyLXtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYzo4ODM6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTg4NC1cdGlmIChzdGF0ZS1cdTAwM2Vob29rID09IE5GX0lORVRfUE9TVF9ST1VUSU5HIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9zY3RwL2lucHV0LmM9OTg0PWJvb2wgc2N0cF9za19ib3VuZF9kZXZfZXEoc3RydWN0IG5ldCAqbmV0LCBpbnQgYm91bmRfZGV2X2lmLCBpbnQgZGlmLCBpbnQgc2RpZilcbi0tXG5uZXQvc2N0cC9pbnB1dC5jLTk4Ny1cbm5ldC9zY3RwL2lucHV0LmM6OTg4OiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcbm5ldC9zY3RwL2lucHV0LmMtOTg5LVx0bDNtZGV2X2FjY2VwdCA9ICEhUkVBRF9PTkNFKG5ldC1cdTAwM2VzY3RwLmwzbWRldl9hY2NlcHQpO1xuLS1cbm5ldC9zY3RwL3Byb3RvY29sLmM9MTI4OT1zdGF0aWMgaW50IF9fbmV0X2luaXQgc2N0cF9kZWZhdWx0c19pbml0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvc2N0cC9wcm90b2NvbC5jLTEzODEtXG5uZXQvc2N0cC9wcm90b2NvbC5jOjEzODI6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxubmV0L3NjdHAvcHJvdG9jb2wuYy0xMzgzLVx0bmV0LVx1MDAzZXNjdHAubDNtZGV2X2FjY2VwdCA9IDE7XG4tLVxubmV0L3NjdHAvc3lzY3RsLmM9OTU9c3RhdGljIGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgc2N0cF9uZXRfdGFibGVbXSA9IHtcbi0tXG5uZXQvc2N0cC9zeXNjdGwuYy0zNTctXHR9LFxubmV0L3NjdHAvc3lzY3RsLmM6MzU4OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9zY3RwL3N5c2N0bC5jLTM1OS1cdHtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw9NDk9Q09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9CUEY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsOjUwOkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtNTEtQ09ORklHX05FVF9WUkY9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2ND00ND1DT05GSUdfTkVUX0FDVF9CUEY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjQ1OkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQtNDYtQ09ORklHX05FVF9WUkY9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTE0MD1DT05GSUdfTkVUX0lQR1JFX0JST0FEQ0FTVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NDoxNDE6Q09ORklHX05FVF9MM19NQVNURVJfREVWPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0LTE0Mi1DT05GSUdfTkVUX1NDSF9ERUZBVUxUPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC92aXJ0aW9fbmV0L2NvbmZpZz00PUNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC92aXJ0aW9fbmV0L2NvbmZpZzo1OkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC92aXJ0aW9fbmV0L2NvbmZpZy02LUNPTkZJR19ORVRfVlJGPW1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbj0xNDg9Q09ORklHX05FVF9JUEdSRV9CUk9BRENBU1Q9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb246MTQ5OkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbi0xNTAtQ09ORklHX05FVExBQkVMPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTk2PUNPTkZJR19ORVRLSVQ9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZzo5NzpDT05GSUdfTkVUX0wzX01BU1RFUl9ERVY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZy05OC1DT05GSUdfTkVUX05TPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm9yd2FyZGluZy9jb25maWc9Mzg9Q09ORklHX05FVF9JUElQPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZzozOTpDT05GSUdfTkVUX0wzX01BU1RFUl9ERVY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnLTQwLUNPTkZJR19ORVRfTlM9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXRmaWx0ZXIvY29uZmlnPTU3PUNPTkZJR19ORVRfSVBJUD1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzo1ODpDT05GSUdfTkVUX0wzX01BU1RFUl9ERVY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldGZpbHRlci9jb25maWctNTktQ09ORklHX05FVF9OUz15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3RjcF9hby9jb25maWc9Mj1DT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3RjcF9hby9jb25maWc6MzpDT05GSUdfTkVUX0wzX01BU1RFUl9ERVY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3RjcF9hby9jb25maWctNC1DT05GSUdfTkVUX1ZSRj15XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0ODc2CgkJCQkJCQlvdXRwdXQ6IDE0MwoJCQkJCQkJdGhvdWdodHM6IDEwODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFByb3Bvc2VkIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCBgQ09ORklHX05FVF9MM19NQVNURVJfREVWYCBjYW4gYmUgZW5hYmxlZCBpbmRlcGVuZGVudGx5IG9mIGBDT05GSUdfTkVUX1ZSRmAsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBwb2ludCB0byBjb25zaWRlci4gU3BlY2lmaWNhbGx5LCBgQ09ORklHX0lQVkxBTl9MM1NgIHNlbGVjdHMgYENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAuIFRoaXMgcmFpc2VzIGEgcXVlc3Rpb246IHdoZW4gYENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAgaXMgeWVzIGFuZCBgQ09ORklHX05FVF9WUkZgIGlzIG5vLCB3aGF0IGhhcHBlbnM/CgpGdXJ0aGVyIGluc3BlY3Rpb24gcmV2ZWFscyB0aGF0IGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jYCAqZG9lcyogdXNlIGBJRkZfTDNNREVWX1JYX0hBTkRMRVJgLCBidXQgaXQgKmRvZXNuJiMzOTt0KiB1c2UgYElGRl9MM01ERVZfTUFTVEVSYCBvciBgSUZGX0wzTURFVl9TTEFWRWAuIFRoZSBWUkYgZHJpdmVyIGlzIHRoZSAqc29sZSogdXNlciBvZiB0aG9zZSBmbGFncy4gVGh1cywgaWYgYENPTkZJR19ORVRfVlJGYCBpc24mIzM5O3QgZW5hYmxlZCwgbm8gbmV0IGRldmljZSB3aWxsIGV2ZXIgaGF2ZSBgZGV2LSZndDtwcml2X2ZsYWdzICZhbXA7IElGRl9MM01ERVZfTUFTVEVSYCBvciBgZGV2LSZndDtwcml2X2ZsYWdzICZhbXA7IElGRl9MM01ERVZfU0xBVkVgIHNldC4gQ29uc2VxdWVudGx5LCBgbmV0aWZfaXNfbDNfbWFzdGVyKGRldilgIGFuZCBgbmV0aWZfaXNfbDNfc2xhdmUoZGV2KWAgd291bGQgZXZhbHVhdGUgdG8gZmFsc2UgYXQgcnVudGltZSBpbiBzdWNoIGEgc2NlbmFyaW8uIFRoZSBwcm9wb3NlZCBjaGFuZ2UsIHVzaW5nIGBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKWAsIHNpbXBseSBtYWtlcyB0aGF0IGV2YWx1YXRpb24gaGFwcGVuIGF0IGNvbXBpbGUgdGltZSB3aGVuIGBDT05GSUdfTkVUX1ZSRmAgaXMgJiMzOTtuJiMzOTssIGFuZCBsZWF2ZXMgdGhlIHNhbWUgcnVudGltZSBjaGVjayBpbiBwbGFjZSB3aGVuIFZSRiBpcyBlbmFibGVkLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHBsYWNlcyB3aGVyZSB0aGVzZSBmbGFncyBhcmUgc2V0LiBTbywgSSBuZWVkIHRvIGNoZWNrIHRoZSBlbnRpcmUgdHJlZS4gQSBxdWljayBzZWFyY2ggY29uZmlybXMgdGhhdCBgSUZGX0wzTURFVl9NQVNURVJgIGFuZCBgSUZGX0wzTURFVl9TTEFWRWAgYXJlIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhgIChhbG9uZyB3aXRoIHRoZSBoZWxwZXIgZnVuY3Rpb25zKSwgYW5kIHNldC91bnNldCBpbiBgZHJpdmVycy9uZXQvdnJmLmNgLiBObyBvdGhlciBjb2RlIHBhdGhzIG1vZGlmeSB0aGVzZSBmbGFncy4KClRoZXJlZm9yZSwgdGhlIGV4cHJlc3Npb25zIGBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSAmYW1wOyZhbXA7IChkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVIpYCBhbmQgYGRldi0mZ3Q7cHJpdl9mbGFncyAmYW1wOyBJRkZfTDNNREVWX01BU1RFUmAgYXJlIDEwMCUgc2VtYW50aWNhbGx5IGlkZW50aWNhbC4gVGhlIHByb3Bvc2VkIGNoYW5nZSBvbmx5IGRpZmZlcnMgYnkgZW5hYmxpbmcgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbiB3aGVuIGBDT05GSUdfTkVUX1ZSRmAgaXMgZGlzYWJsZWQuCgpOb3csIGxldCYjMzk7cyBhcHBseSB0aGUgV29ydGhGdXp6aW5nIGNyaXRlcmlhLiBUaGUgcGF0Y2ggbW9kaWZpZXMgRG9jdW1lbnRhdGlvbi8gb3IgS2NvbmZpZyBmaWxlcywgY29kZSBjb21tZW50cywgbG9nZ2luZyBvciB0cmFjZXBvaW50cy4gSXQgYWxzbyBhbHRlcnMgbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4gSXQgZG9lc24mIzM5O3QgdG91Y2ggdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbm9yIGRvZXMgaXQgdG91Y2ggY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyBvciB0aGUgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzLiBUaGlzIHBhdGNoIGlzIGVzc2VudGlhbGx5IGEgbm9uLWZ1bmN0aW9uYWwgb3B0aW1pemF0aW9uIHRvIGhlbHBlciBmdW5jdGlvbnMuIEl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGxvZ2ljLCBub3IgZG9lcyBpdCBhZmZlY3QgZXhlY3V0aW9uIGZsb3cgb3IgcnVudGltZSBiZWhhdmlvciBpbiBhbnkga2VybmVsIGNvbmZpZ3VyYXRpb24uCgpUaGUgcmVzdWx0IGlzOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgYXJyYXlzIGFyZSBlbXB0eS4gVGhlIHJlYXNvbmluZywgd2hpY2ggSSB3aWxsIHN1bW1hcml6ZSBmb3IgdGhlIGZpbmFsIHN0ZXAsIGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGhlbHBlciBmdW5jdGlvbnMgdG8gZ3VhcmQgZmxhZyBjaGVja3MsIGFuZCB0aGVzZSBmbGFncyBhcmUgZXhjbHVzaXZlbHkgc2V0IGJ5IHRoZSBWUkYgZHJpdmVyLiBUaGlzIGlzIHB1cmVseSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24gd2hlbiBWUkYgaXMgZGlzYWJsZWQsIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXJpbmcgcnVudGltZSBiZWhhdmlvci4KClNvIGxldCYjMzk7cyBmaW5hbGl6ZSB0aGUgYHNldC1yZXN1bHRzYDoKLSBXb3J0aEZ1enppbmc6IGZhbHNlCi0gRm9jdXNTeW1ib2xzOiBbXQotIEVuYWJsZUNvbmZpZ3M6IFtdCi0gUmVhc29uaW5nOiBUaGUgcGF0Y2ggbW9kaWZpZXMgYG5ldGlmX2lzX2wzX21hc3RlcigpYCBhbmQgYG5ldGlmX2lzX2wzX3NsYXZlKClgIGluIGBpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oYCB0byBndWFyZCB0aGUgZmxhZyBjaGVja3Mgd2l0aCBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgLiBCZWNhdXNlIHRoZSBgSUZGX0wzTURFVl9NQVNURVJgIGFuZCBgSUZGX0wzTURFVl9TTEFWRWAgZmxhZ3MgYXJlIGV4Y2x1c2l2ZWx5IHNldCBieSB0aGUgVlJGIGRyaXZlciAoYGRyaXZlcnMvbmV0L3ZyZi5jYCksIHRoaXMgY2hhbmdlIGlzIHB1cmVseSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24gd2hlbiBgQ09ORklHX05FVF9WUkZgIGlzIGRpc2FibGVkIGFuZCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGJlaGF2aW9yIGluIGFueSBrZXJuZWwgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIG5ldGlmX2lzX2wzX21hc3RlcigpIGFuZCBuZXRpZl9pc19sM19zbGF2ZSgpIGluIGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmggdG8gaW5jbHVkZSBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKS4gQmVjYXVzZSBJRkZfTDNNREVWX01BU1RFUiBhbmQgSUZGX0wzTURFVl9TTEFWRSBmbGFncyBhcmUgZXhjbHVzaXZlbHkgbWFuaXB1bGF0ZWQgYnkgZHJpdmVycy9uZXQvdnJmLmMsIHRoaXMgY2hhbmdlIGlzIHB1cmVseSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24gd2hlbiBDT05GSUdfTkVUX1ZSRiBpcyBkaXNhYmxlZCBhbmQgZG9lcyBub3QgYWx0ZXIgcnVudGltZSBiZWhhdmlvciBvciBleGVjdXRpb24gZmxvdyB1bmRlciBhbnkgY29uZmlndXJhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgbmV0aWZfaXNfbDNfbWFzdGVyKCkgYW5kIG5ldGlmX2lzX2wzX3NsYXZlKCkgaW4gaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCB0byBpbmNsdWRlIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpLiBCZWNhdXNlIElGRl9MM01ERVZfTUFTVEVSIGFuZCBJRkZfTDNNREVWX1NMQVZFIGZsYWdzIGFyZSBleGNsdXNpdmVseSBtYW5pcHVsYXRlZCBieSBkcml2ZXJzL25ldC92cmYuYywgdGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbiB3aGVuIENPTkZJR19ORVRfVlJGIGlzIGRpc2FibGVkIGFuZCBkb2VzIG5vdCBhbHRlciBydW50aW1lIGJlaGF2aW9yIG9yIGV4ZWN1dGlvbiBmbG93IHVuZGVyIGFueSBjb25maWd1cmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDA6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAwOjUxOjUwLjU4MDI5NTgxN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDE0NDU0NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBuZXRpZl9pc19sM19tYXN0ZXIoKSBhbmQgbmV0aWZfaXNfbDNfc2xhdmUoKSBpbiBpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIHRvIGluY2x1ZGUgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikuIEJlY2F1c2UgSUZGX0wzTURFVl9NQVNURVIgYW5kIElGRl9MM01ERVZfU0xBVkUgZmxhZ3MgYXJlIGV4Y2x1c2l2ZWx5IG1hbmlwdWxhdGVkIGJ5IGRyaXZlcnMvbmV0L3ZyZi5jLCB0aGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9uIHdoZW4gQ09ORklHX05FVF9WUkYgaXMgZGlzYWJsZWQgYW5kIGRvZXMgbm90IGFsdGVyIHJ1bnRpbWUgYmVoYXZpb3Igb3IgZXhlY3V0aW9uIGZsb3cgdW5kZXIgYW55IGNvbmZpZ3VyYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMDo1MTo1MC41ODAzMDE2MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDUzMTYyMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3YWRkYzU2MzZjYjY0ZjAyOWUwODE2YzljZjYwMDNiNmJmM2JiZmE4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDEgMDA6NTE6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG5pbmRleCA4N2NhZmM5MzJlOWU2Li44NDU0NjQ2ZDZhNDU0IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXFxuQEAgLTU2MDYsMTIgKzU2MDYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIG5ldGlmX2hhc19sM19yeF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBzdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfbWFzdGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0cmV0dXJuIGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSO1xcbitcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikgXFx1MDAyNlxcdTAwMjYgKGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKTtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBib29sIG5ldGlmX2lzX2wzX3NsYXZlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0cmV0dXJuIGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9MM01ERVZfU0xBVkU7XFxuK1xcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSBcXHUwMDI2XFx1MDAyNiAoZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjYgSUZGX0wzTURFVl9TTEFWRSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgaW50IGRldl9zZGlmKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAwOjUxOjUyLjA4NjU3NTY0M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTk1MDgxNTY0MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgbmV0aWZfaXNfbDNfbWFzdGVyKCkgYW5kIG5ldGlmX2lzX2wzX3NsYXZlKCkgaW4gaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCB0byBpbmNsdWRlIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpLiBCZWNhdXNlIElGRl9MM01ERVZfTUFTVEVSIGFuZCBJRkZfTDNNREVWX1NMQVZFIGZsYWdzIGFyZSBleGNsdXNpdmVseSBtYW5pcHVsYXRlZCBieSBkcml2ZXJzL25ldC92cmYuYywgdGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbiB3aGVuIENPTkZJR19ORVRfVlJGIGlzIGRpc2FibGVkIGFuZCBkb2VzIG5vdCBhbHRlciBydW50aW1lIGJlaGF2aW9yIG9yIGV4ZWN1dGlvbiBmbG93IHVuZGVyIGFueSBjb25maWd1cmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2FkZGM1NjM2Y2I2NGYwMjllMDgxNmM5Y2Y2MDAzYjZiZjNiYmZhOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDA6NTE6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxuaW5kZXggODdjYWZjOTMyZTllNi4uODQ1NDY0NmQ2YTQ1NCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbkBAIC01NjA2LDEyICs1NjA2LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9oYXNfbDNfcnhfaGFuZGxlcihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19tYXN0ZXIoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4tXHRyZXR1cm4gZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSO1xuK1x0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpIFx1MDAyNlx1MDAyNiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBib29sIG5ldGlmX2lzX2wzX3NsYXZlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0cmV0dXJuIGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1NMQVZFO1xuK1x0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpIFx1MDAyNlx1MDAyNiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfU0xBVkUpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGludCBkZXZfc2RpZihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTE6NTIuMDg2NTc4NTIzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTgxNTYzMDQyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERldmljZSBDaGFuZ2UqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gSXQgbG9va3MgbGlrZSB3ZSdyZSBtb2RpZnlpbmcgYGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2VzIGFyZSB0YXJnZXRpbmcgdGhlIGBuZXRpZl9pc19sM19tYXN0ZXJgIGFuZCBgbmV0aWZfaXNfbDNfc2xhdmVgIGlubGluZSBmdW5jdGlvbnMuIEl0IGFwcGVhcnMgdGhleSBhcmUgYWRkaW5nIGEgcHJlLWNvbmRpdGlvbiwgb25seSBlbmFibGluZyB0aGUgZnVuY3Rpb25hbGl0eSBpZiBgQ09ORklHX05FVF9WUkZgIGlzIGVuYWJsZWQuIEl0J3MgYSBjbGVhbiBhbmQgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgZWZmZWN0aXZlbHkgZ2F0aW5nIHRoZSBMMyBtYXN0ZXIvc2xhdmUgZnVuY3Rpb25hbGl0eSBiZWhpbmQgdGhhdCBWUkYgY29uZmlndXJhdGlvbiBvcHRpb24uXG5cbk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gV2hlcmUgYXJlIHRoZXNlIGZ1bmN0aW9ucyB1c2VkIHRocm91Z2hvdXQgdGhlIGtlcm5lbD8gV2hhdCBtb2R1bGVzIG9yIGZlYXR1cmVzIGRlcGVuZCBvbiB0aGlzIGBJRkZfTDNNREVWX01BU1RFUmAgYW5kIGBJRkZfTDNNREVWX1NMQVZFYCBsb2dpYz8gVGltZSB0byBmaXJlIHVwIGBncmVwcGVyYCBhbmQgZG8gc29tZSBpbnZlc3RpZ2F0aW9uIHRvIHNlZSB3aGVyZSB0aGlzIGlzIHV0aWxpemVkLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgY29uZGl0aW9uYWwgbG9naWMgY2hhbmdlIGJlZm9yZSBnaXZpbmcgdGhpcyBhIG1vcmUgdGhvcm91Z2ggcmV2aWV3LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTc0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTE6NTcuOTAyMjExNTAxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTgwMDQ5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0aWZfaXNfbDNfKG1hc3RlcnxzbGF2ZSlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9tYWluLmM9MzYxPXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqaXBvaWJfZ2V0X21hc3Rlcl9uZXRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYy0zNjctXFx0bWFzdGVyID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfZ2V0X3JjdShkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfbWFpbi5jOjM2ODpcXHRpZiAoIW1hc3RlciB8fCBuZXRpZl9pc19sM19tYXN0ZXIobWFzdGVyKSlcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYy0zNjktXFx0XFx0bWFzdGVyID0gZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYz00NzE0PXN0YXRpYyBpbnQgbWx4c3dfc3BfbmV0ZGV2aWNlX3BvcnRfdXBwZXJfZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmxvd2VyX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNDczOS1cXHRcXHQgICAgIW5ldGlmX2lzX21hY3ZsYW4odXBwZXJfZGV2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NDc0MDpcXHRcXHQgICAgIW5ldGlmX2lzX2wzX21hc3Rlcih1cHBlcl9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy00NzQxLVxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jPTQ5NTY9c3RhdGljIGludCBtbHhzd19zcF9uZXRkZXZpY2VfcG9ydF92bGFuX2V2ZW50KHN0cnVjdCBuZXRfZGV2aWNlICp2bGFuX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNDk3NC1cXHRcXHQgICAgIW5ldGlmX2lzX21hY3ZsYW4odXBwZXJfZGV2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NDk3NTpcXHRcXHQgICAgIW5ldGlmX2lzX2wzX21hc3Rlcih1cHBlcl9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy00OTc2LVxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jPTUwNDY9c3RhdGljIGludCBtbHhzd19zcF9uZXRkZXZpY2VfYnJpZGdlX3ZsYW5fZXZlbnQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTA2NC1cXHRcXHRpZiAoIW5ldGlmX2lzX21hY3ZsYW4odXBwZXJfZGV2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NTA2NTpcXHRcXHQgICAgIW5ldGlmX2lzX2wzX21hc3Rlcih1cHBlcl9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MDY2LVxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jPTUxMDc9c3RhdGljIGludCBtbHhzd19zcF9uZXRkZXZpY2VfYnJpZGdlX2V2ZW50KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3AsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUxMjYtXFx0XFx0ICAgICFuZXRpZl9pc19tYWN2bGFuKHVwcGVyX2RldikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jOjUxMjc6XFx0XFx0ICAgICFuZXRpZl9pc19sM19tYXN0ZXIodXBwZXJfZGV2KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTEyOC1cXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiVW5rbm93biB1cHBlciBkZXZpY2UgdHlwZVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYz01MTYwPXN0YXRpYyBpbnQgbWx4c3dfc3BfbmV0ZGV2aWNlX21hY3ZsYW5fZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKm1hY3ZsYW5fZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NTE3NDpcXHRpZiAoIW5ldGlmX2lzX2wzX21hc3Rlcih1cHBlcl9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MTc1LVxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz0xOTY4PXN0YXRpYyBpbnQgbWx4c3dfc3BfbmV0ZGV2aWNlX2lwaXBfb2xfZXZlbnQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTE5OTItXFx0XFx0ZXh0YWNrID0gaW5mby1cXHUwMDNlZXh0YWNrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjE5OTM6XFx0XFx0aWYgKG5ldGlmX2lzX2wzX21hc3RlcihjaHVwLVxcdTAwM2V1cHBlcl9kZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTE5OTQtXFx0XFx0XFx0ZXJyID0gbWx4c3dfc3BfbmV0ZGV2aWNlX2lwaXBfb2xfdnJmX2V2ZW50KG1seHN3X3NwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM9MjAxMT1fX21seHN3X3NwX25ldGRldmljZV9pcGlwX3VsX2V2ZW50KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3AsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yMDI0LVxcdFxcdGV4dGFjayA9IGluZm8tXFx1MDAzZWV4dGFjaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzoyMDI1OlxcdFxcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoY2h1cC1cXHUwMDNldXBwZXJfZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yMDI2LVxcdFxcdFxcdHJldHVybiBtbHhzd19zcF9uZXRkZXZpY2VfaXBpcF91bF92cmZfZXZlbnQobWx4c3dfc3AsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz04MjYyPW1seHN3X3NwX3JpZl9zaG91bGRfY29uZmlnKHN0cnVjdCBtbHhzd19zcF9yaWYgKnJpZiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTgyNzktXFx0XFx0aWYgKHJpZiBcXHUwMDI2XFx1MDAyNiBhZGRyX2xpc3RfZW1wdHkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzo4MjgwOlxcdFxcdCAgICAhbmV0aWZfaXNfbDNfc2xhdmUobWx4c3dfc3BfcmlmX2RldihyaWYpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy04MjgxLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM9OTc0Mj1zdGF0aWMgYm9vbCBtbHhzd19zcF9yb3V0ZXJfbmV0ZGV2aWNlX2ludGVyZXN0aW5nKHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3AsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy05NzUwLVxcdCAgICBtbHhzd19zcF9uZXRkZXZfaXNfaXBpcF9vbChtbHhzd19zcCwgZGV2KSB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjk3NTE6XFx0ICAgIG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTk3NTItXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz05OTY3PXN0YXRpYyBib29sIG1seHN3X3NwX2lzX3ZyZl9ldmVudCh1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy05OTcyLVxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzo5OTczOlxcdHJldHVybiBuZXRpZl9pc19sM19tYXN0ZXIoaW5mby1cXHUwMDNldXBwZXJfZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy05OTc0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jPTEwNDE9c3RhdGljIGludCB2cmZfYWRkX3NsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpwb3J0X2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNDMte1xcbmRyaXZlcnMvbmV0L3ZyZi5jOjEwNDQ6XFx0aWYgKG5ldGlmX2lzX2wzX21hc3Rlcihwb3J0X2RldikpIHtcXG5kcml2ZXJzL25ldC92cmYuYy0xMDQ1LVxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNDktXFxuZHJpdmVycy9uZXQvdnJmLmM6MTA1MDpcXHRpZiAobmV0aWZfaXNfbDNfc2xhdmUocG9ydF9kZXYpKVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNTEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYz0xNzQ4PXN0YXRpYyBpbnQgdnJmX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTE3NTYtXFxuZHJpdmVycy9uZXQvdnJmLmM6MTc1NzpcXHRcXHRpZiAoIW5ldGlmX2lzX2wzX3NsYXZlKGRldikpXFxuZHJpdmVycy9uZXQvdnJmLmMtMTc1OC1cXHRcXHRcXHRnb3RvIG91dDtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTYwMj1zdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaGFzX2wzX3J4X2hhbmRsZXIoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYwNi1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjU2MDc6c3RhdGljIGlubGluZSBib29sIG5ldGlmX2lzX2wzX21hc3Rlcihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYwOC17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MTEtXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjEyOnN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19zbGF2ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxMy17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTU2MTc9c3RhdGljIGlubGluZSBpbnQgZGV2X3NkaWYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxOS0jaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjIwOlxcdGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYyMS1cXHRcXHRyZXR1cm4gZGV2LVxcdTAwM2VpZmluZGV4O1xcbi0tXFxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaD0zNjk9c3RhdGljIGlubGluZSBzdHJ1Y3QgaW5ldDZfZGV2ICpfX2luNl9kZXZfc3RhdHNfZ2V0KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5pbmNsdWRlL25ldC9hZGRyY29uZi5oLTM3MS17XFxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaDozNzI6XFx0aWYgKG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKSB7XFxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaC0zNzMtXFx0XFx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UoZGV2X25ldChkZXYpLCBpbmV0Nl9paWYoc2tiKSk7XFxuLS1cXG5pbmNsdWRlL25ldC9ncm8uaD01NTU9c3RhdGljIGlubGluZSB2b2lkIGluZXRfZ2V0X2lpZl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCAqaWlmLCBpbnQgKnNkaWYpXFxuLS1cXG5pbmNsdWRlL25ldC9ncm8uaC01NjAtI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbmluY2x1ZGUvbmV0L2dyby5oOjU2MTpcXHRpZiAobmV0aWZfaXNfbDNfc2xhdmUoc2tiLVxcdTAwM2VkZXYpKSB7XFxuaW5jbHVkZS9uZXQvZ3JvLmgtNTYyLVxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICptYXN0ZXIgPSBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1KHNrYi1cXHUwMDNlZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L2dyby5oPTU3Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5ldDZfZ2V0X2lpZl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCAqaWlmLCBpbnQgKnNkaWYpXFxuLS1cXG5pbmNsdWRlL25ldC9ncm8uaC01ODItI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbmluY2x1ZGUvbmV0L2dyby5oOjU4MzpcXHRpZiAobmV0aWZfaXNfbDNfc2xhdmUoc2tiLVxcdTAwM2VkZXYpKSB7XFxuaW5jbHVkZS9uZXQvZ3JvLmgtNTg0LVxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICptYXN0ZXIgPSBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1KHNrYi1cXHUwMDNlZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oPTEwOT1zdHJ1Y3QgbmV0X2RldmljZSAqbDNtZGV2X21hc3Rlcl9kZXZfcmN1KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpfZGV2KVxcbi0tXFxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTIyLVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oOjEyMzpcXHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGRldikpXFxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTI0LVxcdFxcdG1hc3RlciA9IGRldjtcXG5pbmNsdWRlL25ldC9sM21kZXYuaDoxMjU6XFx0ZWxzZSBpZiAobmV0aWZfaXNfbDNfc2xhdmUoZGV2KSlcXG5pbmNsdWRlL25ldC9sM21kZXYuaC0xMjYtXFx0XFx0bWFzdGVyID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfZ2V0X3JjdShkZXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg9MTU3PXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pbmRleF9pc19sM19tYXN0ZXIoc3RydWN0IG5ldCAqbmV0LCBpbnQgaWZpbmRleClcXG4tLVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oLTE2OC1cXHRpZiAoZGV2KVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oOjE2OTpcXHRcXHRyYyA9IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpO1xcbmluY2x1ZGUvbmV0L2wzbWRldi5oLTE3MC1cXG4tLVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oPTE3OT1zdHJ1Y3Qgc2tfYnVmZiAqbDNtZGV2X2wzX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcHJvdG8pXFxuLS1cXG5pbmNsdWRlL25ldC9sM21kZXYuaC0xODItXFxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg6MTgzOlxcdGlmIChuZXRpZl9pc19sM19zbGF2ZShza2ItXFx1MDAzZWRldikpXFxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTg0LVxcdFxcdG1hc3RlciA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2dldF9yY3Uoc2tiLVxcdTAwM2VkZXYpO1xcbmluY2x1ZGUvbmV0L2wzbWRldi5oOjE4NTpcXHRlbHNlIGlmIChuZXRpZl9pc19sM19tYXN0ZXIoc2tiLVxcdTAwM2VkZXYpIHx8XFxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTg2LVxcdFxcdCBuZXRpZl9oYXNfbDNfcnhfaGFuZGxlcihza2ItXFx1MDAzZWRldikpXFxuLS1cXG5pbmNsdWRlL25ldC9sM21kZXYuaD0yMDg9c3RydWN0IHNrX2J1ZmYgKmwzbWRldl9sM19vdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcHJvdG8pXFxuLS1cXG5pbmNsdWRlL25ldC9sM21kZXYuaC0yMTMtXFx0ZGV2ID0gc2tiX2RzdF9kZXZfcmN1KHNrYik7XFxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg6MjE0OlxcdGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKSB7XFxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMjE1LVxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICptYXN0ZXI7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jPTk3ND1zdGF0aWMgdW5zaWduZWQgaW50IGlwX3NhYm90YWdlX2luKHZvaWQgKnByaXYsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jLTk4NC1cXHRcXHRpZiAoIW5mX2JyaWRnZS1cXHUwMDNlaW5fcHJlcm91dGluZyBcXHUwMDI2XFx1MDAyNlxcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmM6OTg1OlxcdFxcdCAgICAhbmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cXHUwMDNlZGV2KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmM6OTg2OlxcdFxcdCAgICAhbmV0aWZfaXNfbDNfc2xhdmUoc2tiLVxcdTAwM2VkZXYpKSB7XFxubmV0L2JyaWRnZS9icl9uZXRmaWx0ZXJfaG9va3MuYy05ODctXFx0XFx0XFx0bmZfYnJpZGdlLVxcdTAwM2VzYWJvdGFnZV9pbl9kb25lID0gMTtcXG4tLVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jPTczOD1zdGF0aWMgaW50IGZpYl9ubDJydWxlX2xvY2tlZChzdHJ1Y3QgZmliX3J1bGUgKm5scnVsZSxcXG4tLVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTc1OS1cXHRcXHRcXHRubHJ1bGUtXFx1MDAzZWlpZmluZGV4ID0gUkVBRF9PTkNFKGRldi1cXHUwMDNlaWZpbmRleCk7XFxubmV0L2NvcmUvZmliX3J1bGVzLmM6NzYwOlxcdFxcdFxcdG5scnVsZS1cXHUwMDNlaWlmX2lzX2wzX21hc3RlciA9IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpO1xcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTc2MS1cXHRcXHR9XFxuLS1cXG5uZXQvY29yZS9maWJfcnVsZXMuYy03NjktXFx0XFx0XFx0bmxydWxlLVxcdTAwM2VvaWZpbmRleCA9IFJFQURfT05DRShkZXYtXFx1MDAzZWlmaW5kZXgpO1xcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjc3MDpcXHRcXHRcXHRubHJ1bGUtXFx1MDAzZW9pZl9pc19sM19tYXN0ZXIgPSBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KTtcXG5uZXQvY29yZS9maWJfcnVsZXMuYy03NzEtXFx0XFx0fVxcbi0tXFxubmV0L2NvcmUvZmliX3J1bGVzLmM9MTM2MD1zdGF0aWMgdm9pZCBhdHRhY2hfcnVsZXMoc3RydWN0IGxpc3RfaGVhZCAqcnVsZXMsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvY29yZS9maWJfcnVsZXMuYy0xMzY4LVxcdFxcdFxcdFdSSVRFX09OQ0UocnVsZS1cXHUwMDNlaWlmX2lzX2wzX21hc3RlcixcXG5uZXQvY29yZS9maWJfcnVsZXMuYzoxMzY5OlxcdFxcdFxcdFxcdCAgIG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKTtcXG5uZXQvY29yZS9maWJfcnVsZXMuYy0xMzcwLVxcdFxcdH1cXG4tLVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTEzNzQtXFx0XFx0XFx0V1JJVEVfT05DRShydWxlLVxcdTAwM2VvaWZfaXNfbDNfbWFzdGVyLFxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjEzNzU6XFx0XFx0XFx0XFx0ICAgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikpO1xcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTEzNzYtXFx0XFx0fVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTUwNj1zdGF0aWMgaW50IGZpYl9uZXRkZXZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTU3LVxcdFxcdGlmICh1cHBlcl9pbmZvLVxcdTAwM2V1cHBlcl9kZXYgXFx1MDAyNlxcdTAwMjZcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNTU4OlxcdFxcdCAgICBuZXRpZl9pc19sM19tYXN0ZXIodXBwZXJfaW5mby1cXHUwMDNldXBwZXJfZGV2KSlcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTU5LVxcdFxcdFxcdGZpYl9kaXNhYmxlX2lwKGRldiwgTkVUREVWX0RPV04sIHRydWUpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTExMDM9aW50IGlnbXBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTExMS1cXG5uZXQvaXB2NC9pZ21wLmM6MTExMjpcXHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGRldikpIHtcXG5uZXQvaXB2NC9pZ21wLmMtMTExMy1cXHRcXHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShkZXZfbmV0KGRldiksIElQQ0Ioc2tiKS1cXHUwMDNlaWlmKTtcXG4tLVxcbm5ldC9pcHY0L2lwbXIuYz0yMTg5PWludCBpcF9tcl9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvaXBtci5jLTIyMDEtXFx0ZGV2ID0gc2tiLVxcdTAwM2VkZXY7XFxubmV0L2lwdjQvaXBtci5jOjIyMDI6XFx0aWYgKG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXFx1MDAzZWRldikpIHtcXG5uZXQvaXB2NC9pcG1yLmMtMjIwMy1cXHRcXHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShuZXQsIElQQ0Ioc2tiKS1cXHUwMDNlaWlmKTtcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmM9OTY3PXN0YXRpYyBpbnQgaXBfZXJyb3Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmMtOTc4LVxcbm5ldC9pcHY0L3JvdXRlLmM6OTc5OlxcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoc2tiLVxcdTAwM2VkZXYpKSB7XFxubmV0L2lwdjQvcm91dGUuYy05ODAtXFx0XFx0ZGV2ID0gX19kZXZfZ2V0X2J5X2luZGV4KGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpLCBJUENCKHNrYiktXFx1MDAzZWlpZik7XFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jPTI1MjM9aXBfcm91dGVfaW5wdXRfcmN1KHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiBkYWRkciwgX19iZTMyIHNhZGRyLFxcbi0tXFxubmV0L2lwdjQvcm91dGUuYy0yNTQ5LVxcdFxcdC8qIGNoZWNrIGwzIG1hc3RlciBpZiBubyBtYXRjaCB5ZXQgKi9cXG5uZXQvaXB2NC9yb3V0ZS5jOjI1NTA6XFx0XFx0aWYgKCFvdXIgXFx1MDAyNlxcdTAwMjYgbmV0aWZfaXNfbDNfc2xhdmUoZGV2KSkge1xcbm5ldC9pcHY0L3JvdXRlLmMtMjU1MS1cXHRcXHRcXHRzdHJ1Y3QgaW5fZGV2aWNlICpsM19pbl9kZXY7XFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jPTI1OTE9c3RhdGljIHN0cnVjdCBydGFibGUgKl9fbWtyb3V0ZV9vdXRwdXQoY29uc3Qgc3RydWN0IGZpYl9yZXN1bHQgKnJlcyxcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmMtMjYwOS1cXHRcXHQgICAgIShkZXZfb3V0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9MT09QQkFDSykgXFx1MDAyNlxcdTAwMjZcXG5uZXQvaXB2NC9yb3V0ZS5jOjI2MTA6XFx0XFx0ICAgICFuZXRpZl9pc19sM19tYXN0ZXIoZGV2X291dCkpXFxubmV0L2lwdjQvcm91dGUuYy0yNjExLVxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmM9MTU3Nj1zdGF0aWMgaW50IHRjcF9hb19hZGRfY21kKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgaW50IGZhbWlseSxcXG4tLVxcbm5ldC9pcHY0L3RjcF9hby5jLTE2MjMtXFx0XFx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3Uoc29ja19uZXQoc2spLCBjbWQuaWZpbmRleCk7XFxubmV0L2lwdjQvdGNwX2FvLmM6MTYyNDpcXHRcXHRpZiAoZGV2IFxcdTAwMjZcXHUwMDI2IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxcbm5ldC9pcHY0L3RjcF9hby5jLTE2MjUtXFx0XFx0XFx0bDNpbmRleCA9IGRldi1cXHUwMDNlaWZpbmRleDtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM9MTQ3OT1zdGF0aWMgaW50IHRjcF92NF9wYXJzZV9tZDVfa2V5cyhzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0xNTE0LVxcdFxcdGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KHNvY2tfbmV0KHNrKSwgY21kLnRjcG1faWZpbmRleCk7XFxubmV0L2lwdjQvdGNwX2lwdjQuYzoxNTE1OlxcdFxcdGlmIChkZXYgXFx1MDAyNlxcdTAwMjYgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikpXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0xNTE2LVxcdFxcdFxcdGwzaW5kZXggPSBkZXYtXFx1MDAzZWlmaW5kZXg7XFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTEwNzQ9aXB2Nl9hZGRfYWRkcihzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCBzdHJ1Y3QgaWZhNl9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMTA5MS1cXHR9IGVsc2UgaWYgKCEoaWRldi1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9MT09QQkFDSykgXFx1MDAyNlxcdTAwMjZcXG5uZXQvaXB2Ni9hZGRyY29uZi5jOjEwOTI6XFx0XFx0ICAgIW5ldGlmX2lzX2wzX21hc3RlcihpZGV2LVxcdTAwM2VkZXYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L2lwdjYvYWRkcmNvbmYuYy0xMDkzLVxcdFxcdCAgIGFkZHJfdHlwZSBcXHUwMDI2IElQVjZfQUREUl9MT09QQkFDSykge1xcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0yNTcxPXN0YXRpYyBzdHJ1Y3QgaW5ldDZfZGV2ICphZGRyY29uZl9hZGRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1ODQtXFx0LyogQWRkIGRlZmF1bHQgbXVsdGljYXN0IHJvdXRlICovXFxubmV0L2lwdjYvYWRkcmNvbmYuYzoyNTg1OlxcdGlmICghKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfTE9PUEJBQ0spIFxcdTAwMjZcXHUwMDI2ICFuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSlcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1ODYtXFx0XFx0YWRkcmNvbmZfYWRkX21yb3V0ZShkZXYpO1xcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0zNDM5PXN0YXRpYyB2b2lkIGFkZHJjb25mX2FkZHJfZ2VuKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIGJvb2wgcHJlZml4X3JvdXRlKVxcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYy0zNDQzLVxcdC8qIG5vIGxpbmsgbG9jYWwgYWRkcmVzc2VzIG9uIEwzIG1hc3RlciBkZXZpY2VzICovXFxubmV0L2lwdjYvYWRkcmNvbmYuYzozNDQ0OlxcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoaWRldi1cXHUwMDNlZGV2KSlcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTM0NDUtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0zNjcyPXN0YXRpYyBpbnQgYWRkcmNvbmZfbm90aWZ5KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcywgdW5zaWduZWQgbG9uZyBldmVudCxcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMzg0MS1cXHRcXHQgKi9cXG5uZXQvaXB2Ni9hZGRyY29uZi5jOjM4NDI6XFx0XFx0aWYgKGluZm8tXFx1MDAzZXVwcGVyX2RldiBcXHUwMDI2XFx1MDAyNiBuZXRpZl9pc19sM19tYXN0ZXIoaW5mby1cXHUwMDNldXBwZXJfZGV2KSlcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTM4NDMtXFx0XFx0XFx0YWRkcmNvbmZfaWZkb3duKGRldiwgZmFsc2UpO1xcbi0tXFxubmV0L2lwdjYvaWNtcC5jPTQxOT1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmljbXA2X2Rldihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvaWNtcC5jLTQyNy1cXHQgKi9cXG5uZXQvaXB2Ni9pY21wLmM6NDI4OlxcdGlmICh1bmxpa2VseShkZXYtXFx1MDAzZWlmaW5kZXggPT0gTE9PUEJBQ0tfSUZJTkRFWCB8fCBuZXRpZl9pc19sM19tYXN0ZXIoc2tiLVxcdTAwM2VkZXYpKSkge1xcbm5ldC9pcHY2L2ljbXAuYy00MjktXFx0XFx0Y29uc3Qgc3RydWN0IHJ0Nl9pbmZvICpydDYgPSBza2JfcnQ2X2luZm8oc2tiKTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9pbnB1dC5jPTE4OD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmlwNl9yY3ZfY29yZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjYvaXA2X2lucHV0LmMtMjU3LVxcdCAgICAhKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfTE9PUEJBQ0spIFxcdTAwMjZcXHUwMDI2XFxubmV0L2lwdjYvaXA2X2lucHV0LmM6MjU4OlxcdCAgICAhbmV0aWZfaXNfbDNfbWFzdGVyKGRldikpXFxubmV0L2lwdjYvaXA2X2lucHV0LmMtMjU5LVxcdFxcdGdvdG8gZXJyO1xcbi0tXFxubmV0L2lwdjYvaXA2bXIuYz0yMzQ2PWludCBpcDZfbXJfaW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L2lwNm1yLmMtMjM2MC1cXHQgKi9cXG5uZXQvaXB2Ni9pcDZtci5jOjIzNjE6XFx0aWYgKG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKSB7XFxubmV0L2lwdjYvaXA2bXIuYy0yMzYyLVxcdFxcdGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgSVBDQihza2IpLVxcdTAwM2VpaWYpO1xcbi0tXFxubmV0L2lwdjYvbmRpc2MuYz03ODk9c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIG5kaXNjX3JlY3ZfbnMoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L25kaXNjLmMtODg1LVxcdFxcdC8qIHBlcmhhcHMgYW4gYWRkcmVzcyBvbiB0aGUgbWFzdGVyIGRldmljZSAqL1xcbm5ldC9pcHY2L25kaXNjLmM6ODg2OlxcdFxcdGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKSB7XFxubmV0L2lwdjYvbmRpc2MuYy04ODctXFx0XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm1kZXY7XFxuLS1cXG5uZXQvaXB2Ni9uZGlzYy5jPTE2NTg9dm9pZCBuZGlzY19zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqdGFyZ2V0KVxcbi0tXFxubmV0L2lwdjYvbmRpc2MuYy0xNjc1LVxcbm5ldC9pcHY2L25kaXNjLmM6MTY3NjpcXHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGRldikpIHtcXG5uZXQvaXB2Ni9uZGlzYy5jLTE2NzctXFx0XFx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBJUENCKHNrYiktXFx1MDAzZWlpZik7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTEwNTk9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICppcDZfcnRfZ2V0X2Rldl9yY3UoY29uc3Qgc3RydWN0IGZpYjZfcmVzdWx0ICpyZXMpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTEwNjctXFx0XFx0ICovXFxubmV0L2lwdjYvcm91dGUuYzoxMDY4OlxcdFxcdGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L2lwdjYvcm91dGUuYy0xMDY5LVxcdFxcdCAgICAhcnQ2X25lZWRfc3RyaWN0KFxcdTAwMjZyZXMtXFx1MDAzZWY2aS1cXHUwMDNlZmliNl9kc3QuYWRkcikpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTEwNzEtXFx0XFx0XFx0ICAgICAgZGV2X25ldChkZXYpLVxcdTAwM2Vsb29wYmFja19kZXY7XFxubmV0L2lwdjYvcm91dGUuYzoxMDcyOlxcdFxcdGVsc2UgaWYgKCFuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSlcXG5uZXQvaXB2Ni9yb3V0ZS5jLTEwNzMtXFx0XFx0XFx0ZGV2ID0gZGV2X25ldChkZXYpLVxcdTAwM2Vsb29wYmFja19kZXY7XFxubmV0L2lwdjYvcm91dGUuYzoxMDc0OlxcdFxcdC8qIGxhc3QgY2FzZSBpcyBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSBpcyB0cnVlIGluIHdoaWNoXFxubmV0L2lwdjYvcm91dGUuYy0xMDc1LVxcdFxcdCAqIGNhc2Ugd2Ugd2FudCBkZXYgcmV0dXJuZWQgdG8gYmUgZGV2XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ2MjE9c3RhdGljIGludCBpcDZfcGt0X2Ryb3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggY29kZSwgaW50IGlwc3RhdHNfbWliX25vcm91dGVzKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00NjI5LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDYzMDpcXHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cXHUwMDNlZGV2KSB8fFxcbm5ldC9pcHY2L3JvdXRlLmMtNDYzMS1cXHQgICAgZGV2ID09IG5ldC1cXHUwMDNlbG9vcGJhY2tfZGV2KVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00NjUyLVxcdC8qIFN0YXJ0IG92ZXIgYnkgZHJvcHBpbmcgdGhlIGRzdCBmb3IgbDNtZGV2IGNhc2UgKi9cXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ2NTM6XFx0aWYgKG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXFx1MDAzZWRldikpXFxubmV0L2lwdjYvcm91dGUuYy00NjU0LVxcdFxcdHNrYl9kc3RfZHJvcChza2IpO1xcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTEwOTU9c3RhdGljIHN0cnVjdCBza19idWZmICplbmRfZHRfdnJmX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgZmFtaWx5LFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEwOTgtXFx0LyogYmFzZWQgb24gbDNtZGV2X2lwX3Jjdjsgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbWFzdGVyICovXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjEwOTk6XFx0aWYgKHVubGlrZWx5KCFuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSBcXHUwMDI2XFx1MDAyNiAhbmV0aWZfaGFzX2wzX3J4X2hhbmRsZXIoZGV2KSkpXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTExMDAtXFx0XFx0Z290byBkcm9wO1xcbi0tXFxubmV0L2lwdjYvc2l0LmM9NTI5PXN0YXRpYyBpbnQgaXBpcDZfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvKVxcbi0tXFxubmV0L2lwdjYvc2l0LmMtNTY3LVxcbm5ldC9pcHY2L3NpdC5jOjU2ODpcXHRzaWZpbmRleCA9IG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXFx1MDAzZWRldikgPyBJUENCKHNrYiktXFx1MDAzZWlpZiA6IDA7XFxubmV0L2lwdjYvc2l0LmMtNTY5LVxcdHQgPSBpcGlwNl90dW5uZWxfbG9va3VwKGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpLCBza2ItXFx1MDAzZWRldixcXG4tLVxcbm5ldC9pcHY2L3NpdC5jPTY4MD1zdGF0aWMgaW50IGlwaXA2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvc2l0LmMtNjg2LVxcbm5ldC9pcHY2L3NpdC5jOjY4NzpcXHRzaWZpbmRleCA9IG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXFx1MDAzZWRldikgPyBJUENCKHNrYiktXFx1MDAzZWlpZiA6IDA7XFxubmV0L2lwdjYvc2l0LmMtNjg4LVxcdHR1bm5lbCA9IGlwaXA2X3R1bm5lbF9sb29rdXAoZGV2X25ldChza2ItXFx1MDAzZWRldiksIHNrYi1cXHUwMDNlZGV2LFxcbi0tXFxubmV0L2lwdjYvc2l0LmM9NzUzPXN0YXRpYyBpbnQgc2l0X3R1bm5lbF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaXBwcm90bylcXG4tLVxcbm5ldC9pcHY2L3NpdC5jLTc1OC1cXG5uZXQvaXB2Ni9zaXQuYzo3NTk6XFx0c2lmaW5kZXggPSBuZXRpZl9pc19sM19tYXN0ZXIoc2tiLVxcdTAwM2VkZXYpID8gSVBDQihza2IpLVxcdTAwM2VpaWYgOiAwO1xcbm5ldC9pcHY2L3NpdC5jLTc2MC1cXG4tLVxcbm5ldC9pcHY2L3NpdC5jPTEwOTU9c3RhdGljIHZvaWQgaXBpcDZfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvaXB2Ni9zaXQuYy0xMTI0LVxcbm5ldC9pcHY2L3NpdC5jOjExMjU6XFx0aWYgKHRkZXYgXFx1MDAyNlxcdTAwMjYgIW5ldGlmX2lzX2wzX21hc3Rlcih0ZGV2KSkge1xcbm5ldC9pcHY2L3NpdC5jLTExMjYtXFx0XFx0aW50IG10dTtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9NjMxPXN0YXRpYyBpbnQgdGNwX3Y2X3BhcnNlX21kNV9rZXlzKHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTY2OS1cXHRcXHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShzb2NrX25ldChzayksIGNtZC50Y3BtX2lmaW5kZXgpO1xcbm5ldC9pcHY2L3RjcF9pcHY2LmM6NjcwOlxcdFxcdGlmIChkZXYgXFx1MDAyNlxcdTAwMjYgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikpXFxubmV0L2lwdjYvdGNwX2lwdjYuYy02NzEtXFx0XFx0XFx0bDNpbmRleCA9IGRldi1cXHUwMDNlaWZpbmRleDtcXG4tLVxcbm5ldC9sM21kZXYvbDNtZGV2LmM9MTEwPWludCBsM21kZXZfbWFzdGVyX2lmaW5kZXhfcmN1KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvbDNtZGV2L2wzbWRldi5jLTExNi1cXG5uZXQvbDNtZGV2L2wzbWRldi5jOjExNzpcXHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGRldikpIHtcXG5uZXQvbDNtZGV2L2wzbWRldi5jLTExOC1cXHRcXHRpZmluZGV4ID0gZGV2LVxcdTAwM2VpZmluZGV4O1xcbm5ldC9sM21kZXYvbDNtZGV2LmM6MTE5OlxcdH0gZWxzZSBpZiAobmV0aWZfaXNfbDNfc2xhdmUoZGV2KSkge1xcbm5ldC9sM21kZXYvbDNtZGV2LmMtMTIwLVxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICptYXN0ZXI7XFxuLS1cXG5uZXQvbDNtZGV2L2wzbWRldi5jPTE0ND1pbnQgbDNtZGV2X21hc3Rlcl91cHBlcl9pZmluZGV4X2J5X2luZGV4X3JjdShzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4KVxcbi0tXFxubmV0L2wzbWRldi9sM21kZXYuYy0xNDgtXFx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBpZmluZGV4KTtcXG5uZXQvbDNtZGV2L2wzbWRldi5jOjE0OTpcXHR3aGlsZSAoZGV2IFxcdTAwMjZcXHUwMDI2ICFuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSlcXG5uZXQvbDNtZGV2L2wzbWRldi5jLTE1MC1cXHRcXHRkZXYgPSBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1KGRldik7XFxuLS1cXG5uZXQvbDNtZGV2L2wzbWRldi5jPTE2Mj11MzIgbDNtZGV2X2ZpYl90YWJsZV9yY3UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9sM21kZXYvbDNtZGV2LmMtMTY4LVxcbm5ldC9sM21kZXYvbDNtZGV2LmM6MTY5OlxcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSkge1xcbm5ldC9sM21kZXYvbDNtZGV2LmMtMTcwLVxcdFxcdGlmIChkZXYtXFx1MDAzZWwzbWRldl9vcHMtXFx1MDAzZWwzbWRldl9maWJfdGFibGUpXFxubmV0L2wzbWRldi9sM21kZXYuYy0xNzEtXFx0XFx0XFx0dGJfaWQgPSBkZXYtXFx1MDAzZWwzbWRldl9vcHMtXFx1MDAzZWwzbWRldl9maWJfdGFibGUoZGV2KTtcXG5uZXQvbDNtZGV2L2wzbWRldi5jOjE3MjpcXHR9IGVsc2UgaWYgKG5ldGlmX2lzX2wzX3NsYXZlKGRldikpIHtcXG5uZXQvbDNtZGV2L2wzbWRldi5jLTE3My1cXHRcXHQvKiBVc2VycyBvZiBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1IG5lZWQgbm9uLWNvbnN0LFxcbi0tXFxubmV0L2wzbWRldi9sM21kZXYuYz0yMTg9c3RydWN0IGRzdF9lbnRyeSAqbDNtZGV2X2xpbmtfc2NvcGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9sM21kZXYvbDNtZGV2LmMtMjI2LVxcdFxcdGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgZmw2LVxcdTAwM2VmbG93aTZfb2lmKTtcXG5uZXQvbDNtZGV2L2wzbWRldi5jOjIyNzpcXHRcXHRpZiAoZGV2IFxcdTAwMjZcXHUwMDI2IG5ldGlmX2lzX2wzX3NsYXZlKGRldikpXFxubmV0L2wzbWRldi9sM21kZXYuYy0yMjgtXFx0XFx0XFx0ZGV2ID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfZ2V0X3JjdShkZXYpO1xcbm5ldC9sM21kZXYvbDNtZGV2LmMtMjI5LVxcbm5ldC9sM21kZXYvbDNtZGV2LmM6MjMwOlxcdFxcdGlmIChkZXYgXFx1MDAyNlxcdTAwMjYgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbDNtZGV2L2wzbWRldi5jLTIzMS1cXHRcXHQgICAgZGV2LVxcdTAwM2VsM21kZXZfb3BzLVxcdTAwM2VsM21kZXZfbGlua19zY29wZV9sb29rdXApXFxuLS1cXG5uZXQvbDNtZGV2L2wzbWRldi5jPTI0Nz1pbnQgbDNtZGV2X2ZpYl9ydWxlX21hdGNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZsb3dpICpmbCxcXG4tLVxcbm5ldC9sM21kZXYvbDNtZGV2LmMtMjU5LVxcdGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgZmwtXFx1MDAzZWZsb3dpX2wzbWRldik7XFxubmV0L2wzbWRldi9sM21kZXYuYzoyNjA6XFx0aWYgKGRldiBcXHUwMDI2XFx1MDAyNiBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9sM21kZXYvbDNtZGV2LmMtMjYxLVxcdCAgICBkZXYtXFx1MDAzZWwzbWRldl9vcHMtXFx1MDAzZWwzbWRldl9maWJfdGFibGUpIHtcXG4tLVxcbm5ldC9sM21kZXYvbDNtZGV2LmM9MjcxPXZvaWQgbDNtZGV2X3VwZGF0ZV9mbG93KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZsb3dpICpmbClcXG4tLVxcbm5ldC9sM21kZXYvbDNtZGV2LmMtMjg3LVxcdFxcdFxcdCAqL1xcbm5ldC9sM21kZXYvbDNtZGV2LmM6Mjg4OlxcdFxcdFxcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSlcXG5uZXQvbDNtZGV2L2wzbWRldi5jLTI4OS1cXHRcXHRcXHRcXHRmbC1cXHUwMDNlZmxvd2lfb2lmID0gMDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvLmM9MTI0PXN0YXRpYyBib29sIGluX3ZyZl9wb3N0cm91dGluZyhjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90by5jLTEyNy1cXHRpZiAoc3RhdGUtXFx1MDAzZWhvb2sgPT0gTkZfSU5FVF9QT1NUX1JPVVRJTkcgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90by5jOjEyODpcXHQgICAgbmV0aWZfaXNfbDNfbWFzdGVyKHN0YXRlLVxcdTAwM2VvdXQpKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvLmMtMTI5LVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jPTg4MT1zdGF0aWMgYm9vbCBpbl92cmZfcG9zdHJvdXRpbmcoY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTg4NC1cXHRpZiAoc3RhdGUtXFx1MDAzZWhvb2sgPT0gTkZfSU5FVF9QT1NUX1JPVVRJTkcgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmM6ODg1OlxcdCAgICBuZXRpZl9pc19sM19tYXN0ZXIoc3RhdGUtXFx1MDAzZW91dCkpXFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTg4Ni1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MDAuNTIwMjIxMTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzU0MjIyNDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgVmlydHVhbCBSb3V0aW5nIFx1MDAyNiBGb3J3YXJkaW5nIChWUkYpIGFuZCBMYXllciAzIE1hc3RlciBEZXZpY2VzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHNvbWUgbmV0d29ya2luZyBjb25maWd1cmF0aW9uIGFuZCBJIG5lZWQgYSBxdWljayByZWZyZXNoZXIgb24gdGhlc2Ugc3BlY2lmaWNzLiBMZXQncyBzdGFydCBieSB1bnBhY2tpbmcgd2hhdCBgQ09ORklHX05FVF9WUkZgIGFuZCBgQ09ORklHX05FVF9MM19NQVNURVJfREVWYCBhY3R1YWxseSAqZG8qIHdpdGhpbiB0aGlzIGNvbnRleHQuIEkndmUgZ290IGEgZGVjZW50IGdyYXNwLCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBzb2xpZGlmeSB0aGUgdW5kZXJseWluZyBpbXBsaWNhdGlvbnMgb2YgdGhlc2Ugc3ltYm9scy5cblxuTm93LCBJIG5lZWQgdG8gem9vbSBpbiBvbiBob3cgdGhlIGBJRkZfTDNNREVWX01BU1RFUmAgYW5kIGBJRkZfTDNNREVWX1NMQVZFYCBmbGFncyBhcmUgdXNlZC4gSSBuZWVkIHRvIHJlZnJlc2ggbXlzZWxmIG9mIHRoZSBudWFuY2VzIG9mIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRob3NlIGZsYWdzIGFuZCB0aG9zZSBjb25maWd1cmF0aW9ucy4gVGhlbiwgSSdsbCBuZWVkIHRvIHBpbnBvaW50IHByZWNpc2VseSAqd2hlcmUqIHRob3NlIGZsYWdzIGFyZSBiZWluZyBzZXQgaW4gdGhlIGNvZGUuIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2ggdG8gaWRlbnRpZnkgdGhlIHJlbGV2YW50IGNvZGUgbG9jYXRpb25zIGFuZCB0aGVuIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIHNjZW5hcmlvcyB0aGF0IHRyaWdnZXIgdGhlc2UgZmxhZyBzZXR0aW5ncy4gSSBuZWVkIHRvIGtlZXAgdGhpcyBzdHJlYW1saW5lZCwgc28gSSdsbCBwcmlvcml0aXplIGZpbmRpbmcgdGhlIG1vc3QgZGlyZWN0IGFzc2lnbm1lbnRzIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSByYWJiaXQgaG9sZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExODg3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MDIuODc0NDQ4MDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDk5MDI0MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSUZGX0wzTURFVl9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0yMDU9aW50IGlwdmxhbl9sM3NfcmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjE0LVxcdFxcdGRldi1cXHUwMDNlbDNtZGV2X29wcyA9IFxcdTAwMjZpcHZsX2wzbWRldl9vcHM7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoyMTU6XFx0XFx0ZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9MM01ERVZfUlhfSEFORExFUjtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIxNi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jPTIyMT12b2lkIGlwdmxhbl9sM3NfdW5yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMjYtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoyMjc6XFx0ZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjY9IH5JRkZfTDNNREVWX1JYX0hBTkRMRVI7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMjgtXFx0aXB2bGFuX3VucmVnaXN0ZXJfbmZfaG9vayhyZWFkX3BuZXQoXFx1MDAyNnBvcnQtXFx1MDAzZXBuZXQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jPTEwMTI9c3RhdGljIGludCBkb192cmZfYWRkX3NsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpwb3J0X2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMjUtXFxuZHJpdmVycy9uZXQvdnJmLmM6MTAyNjpcXHRwb3J0X2Rldi1cXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTDNNREVWX1NMQVZFO1xcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMjctXFx0cmV0ID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfbGluayhwb3J0X2RldiwgZGV2LCBOVUxMLCBOVUxMLCBleHRhY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmMtMTAzNS1lcnI6XFxuZHJpdmVycy9uZXQvdnJmLmM6MTAzNjpcXHRwb3J0X2Rldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2PSB+SUZGX0wzTURFVl9TTEFWRTtcXG5kcml2ZXJzL25ldC92cmYuYy0xMDM3LVxcdHN5bmNocm9uaXplX25ldCgpO1xcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmM9MTA1Nz1zdGF0aWMgaW50IGRvX3ZyZl9kZWxfc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKnBvcnRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmMtMTA2MC1cXHRuZXRkZXZfdXBwZXJfZGV2X3VubGluayhwb3J0X2RldiwgZGV2KTtcXG5kcml2ZXJzL25ldC92cmYuYzoxMDYxOlxcdHBvcnRfZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjY9IH5JRkZfTDNNREVWX1NMQVZFO1xcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNjItXFx0LyogTWFrZSBzdXJlIHRoYXQgY29uY3VycmVudCBSQ1UgcmVhZGVycyB0aGF0IGlkZW50aWZpZWQgdGhlIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmM9MTYzNj1zdGF0aWMgaW50IHZyZl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYy0xNjU4LVxcbmRyaXZlcnMvbmV0L3ZyZi5jOjE2NTk6XFx0ZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9MM01ERVZfTUFTVEVSO1xcbmRyaXZlcnMvbmV0L3ZyZi5jLTE2NjAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE0NTU9c3RydWN0IG5ldF9kZXZpY2Vfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc0OC0gKlxcdHVuZGVybHlpbmcgc3RhY2tlZCBkZXZpY2VzXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzQ5OiAqIEBJRkZfTDNNREVWX01BU1RFUjogZGV2aWNlIGlzIGFuIEwzIG1hc3RlciBkZXZpY2VcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTAtICogQElGRl9OT19RVUVVRTogZGV2aWNlIGNhbiBydW4gd2l0aG91dCBxZGlzYyBhdHRhY2hlZFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc1MS0gKiBASUZGX09QRU5WU1dJVENIOiBkZXZpY2UgaXMgYSBPcGVuIHZTd2l0Y2ggbWFzdGVyXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzUyOiAqIEBJRkZfTDNNREVWX1NMQVZFOiBkZXZpY2UgaXMgZW5zbGF2ZWQgdG8gYW4gTDMgbWFzdGVyIGRldmljZVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc1My0gKiBASUZGX1RFQU06IGRldmljZSBpcyBhIHRlYW0gZGV2aWNlXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTktICogQElGRl9GQUlMT1ZFUl9TTEFWRTogZGV2aWNlIGlzIGxvd2VyIGRldiBvZiBhIGZhaWxvdmVyIG1hc3RlciBkZXZpY2VcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE3NjA6ICogQElGRl9MM01ERVZfUlhfSEFORExFUjogb25seSBpbnZva2UgdGhlIHJ4IGhhbmRsZXIgb2YgTDMgbWFzdGVyIGRldmljZVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc2MS0gKiBASUZGX05PX0FERFJDT05GOiBwcmV2ZW50IGlwdjYgYWRkcmNvbmZcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MTc2NT1lbnVtIG5ldGRldl9wcml2X2ZsYWdzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4My1cXHRJRkZfWE1JVF9EU1RfUkVMRUFTRV9QRVJNXFx0PSAxXFx1MDAzY1xcdTAwM2MxNyxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE3ODQ6XFx0SUZGX0wzTURFVl9NQVNURVJcXHRcXHQ9IDFcXHUwMDNjXFx1MDAzYzE4LFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4NS1cXHRJRkZfTk9fUVVFVUVcXHRcXHRcXHQ9IDFcXHUwMDNjXFx1MDAzYzE5LFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4Ni1cXHRJRkZfT1BFTlZTV0lUQ0hcXHRcXHRcXHQ9IDFcXHUwMDNjXFx1MDAzYzIwLFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTc4NzpcXHRJRkZfTDNNREVWX1NMQVZFXFx0XFx0PSAxXFx1MDAzY1xcdTAwM2MyMSxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3ODgtXFx0SUZGX1RFQU1cXHRcXHRcXHQ9IDFcXHUwMDNjXFx1MDAzYzIyLFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzkzLVxcdElGRl9GQUlMT1ZFUl9TTEFWRVxcdFxcdD0gMVxcdTAwM2NcXHUwMDNjMjgsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzk0OlxcdElGRl9MM01ERVZfUlhfSEFORExFUlxcdFxcdD0gMVxcdTAwM2NcXHUwMDNjMjksXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzk1LVxcdElGRl9OT19BRERSQ09ORlxcdFxcdFxcdD0gQklUX1VMTCgzMCksXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTU2MDI9c3RhdGljIGlubGluZSBib29sIG5ldGlmX2hhc19sM19yeF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjAzLXtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjU2MDQ6XFx0cmV0dXJuIGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9MM01ERVZfUlhfSEFORExFUjtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDUtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjA3PXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19tYXN0ZXIoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDgte1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYwOTpcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikgXFx1MDAyNlxcdTAwMjYgKGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKTtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MTAtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjEyPXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19zbGF2ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxMy17XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjE0OlxcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSBcXHUwMDI2XFx1MDAyNiAoZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjYgSUZGX0wzTURFVl9TTEFWRSk7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjE1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MDUuMDg0MzU2MjI3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzEyMTk1MTYwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgSUZGX0wzTURFVl8qYCBGbGFncyoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYElGRl9MM01ERVZfTUFTVEVSYCBhbmQgYElGRl9MM01ERVZfU0xBVkVgIGFyZSAqb25seSogc2V0IHdpdGhpbiBgZHJpdmVycy9uZXQvdnJmLmNgIGluaXRpYWxseS4gVGhhdCdzIGludGVyZXN0aW5nLCBidXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSSBzaG91bGQgdmVyaWZ5IHRoYXQgbm8gb3RoZXIgbW9kdWxlcyBhcmUgdG91Y2hpbmcgdGhlc2UgZmxhZ3MgZGlyZWN0bHkuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgYGdyZXBgIG91dHB1dCB0byBjb25maXJtLiBBbHJpZ2h0LCBjb25maXJtZWQuIGB2cmYuY2AgZGVmaW5pdGVseSBzZXRzIGBJRkZfTDNNREVWX1NMQVZFYCBvbiBgcG9ydF9kZXZgIGFuZCBgSUZGX0wzTURFVl9NQVNURVJgIG9uIGBkZXZgLlxuXG5Ob3csIGxvb2tpbmcgZGVlcGVyLCBJIHNlZSB0aGF0IGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jYCBzZXRzIGBJRkZfTDNNREVWX1JYX0hBTkRMRVJgLCBidXQgdGhhdCdzIGhhbmRsZWQgdGhyb3VnaCBgbmV0aWZfaGFzX2wzX3J4X2hhbmRsZXJgIHdoaWNoIGlzIGEgZGlmZmVyZW50IGNvbmNlcm4uIEkgd2FudCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSBvdGhlciBwb3RlbnRpYWwgY29udGVuZGVycy4gSSB3aWxsIG5vdyBleGFtaW5lIGBLY29uZmlnYCBmb3IgYE5FVF9WUkZgIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5NDMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MDguMjA2MzExNjM3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTU3MTQ3NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9WUkZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz00NjM9Y29uZmlnIE5FVEtJVFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzEtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzI6Y29uZmlnIE5FVF9WUkZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3My1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBSb3V0aW5nIGFuZCBGb3J3YXJkaW5nIChMaXRlKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MTAuNTAyMDMyMTUxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDczNjk0NzA3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgbmV0d29yayBjb25maWd1cmF0aW9uIGJldHRlci4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGp1bXAgc3RyYWlnaHQgaW50byB0aGUgc291cmNlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBvZiBmb2N1c2luZyBvbiB0aGUgYGRyaXZlcnMvbmV0L0tjb25maWdgIGZpbGUsIGFyb3VuZCBsaW5lIDQ3Mi4gVGhhdCdzIHVzdWFsbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBnZXR0aW5nIGEgaGFuZGxlIG9uIGEgbW9kdWxlJ3MgY29yZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCdzIGV4cG9zZWQgdGhyb3VnaCB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEknbSBleHBlY3RpbmcgdG8gZmluZCBzb21lIGNydWNpYWwgb3B0aW9ucyBkZWZpbmVkIGFyb3VuZCB0aGF0IGFyZWEsIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBwYXJ0aWN1bGFyIGRyaXZlciBvciBuZXR3b3JrIGZlYXR1cmUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGhvb2tzIEkgbmVlZCB0byBleHBsb3JlIGl0cyBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gYW5kIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBjb21wb25lbnRzIGl0IGludGVyYWN0cyB3aXRoLiBMZXQncyBzZWUgd2hhdCdzIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NTMwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MTUuMjM4OTgxMjk2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDcwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDcwOlxcdFxcdCAgdG8gb3BlcmF0ZSBpbiBMMyBvciBMMiBtb2RlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiA0NzE6XFx0XFxuIDQ3MjpcXHRjb25maWcgTkVUX1ZSRlxcbiA0NzM6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgUm91dGluZyBhbmQgRm9yd2FyZGluZyAoTGl0ZSlcXFwiXFxuIDQ3NDpcXHRcXHRkZXBlbmRzIG9uIElQX01VTFRJUExFX1RBQkxFU1xcbiA0NzU6XFx0XFx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxcbiA0NzY6XFx0XFx0ZGVwZW5kcyBvbiBJUFY2X01VTFRJUExFX1RBQkxFUyB8fCBJUFY2PW5cXG4gNDc3OlxcdFxcdGhlbHBcXG4gNDc4OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgc3VwcG9ydCBmb3IgbWFwcGluZyBpbnRlcmZhY2VzIGludG8gVlJGJ3MuIFRoZVxcbiA0Nzk6XFx0XFx0ICBzdXBwb3J0IGVuYWJsZXMgVlJGIGRldmljZXMuXFxuIDQ4MDpcXHRcXG4gNDgxOlxcdGNvbmZpZyBWU09DS01PTlxcbiA0ODI6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcXFwiXFxuIDQ4MzpcXHRcXHRkZXBlbmRzIG9uIFZIT1NUX1ZTT0NLXFxuIDQ4NDpcXHRcXHRoZWxwXFxuIDQ4NTpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgYSBtb25pdG9yaW5nIG5ldCBkZXZpY2UgZm9yIHZzb2NrIHNvY2tldHMuIEl0IGlzXFxuIDQ4NjpcXHRcXHQgIG1vc3RseSBpbnRlbmRlZCBmb3IgZGV2ZWxvcGVycyBvciBzdXBwb3J0IHRvIGRlYnVnIHZzb2NrIGlzc3Vlcy4gSWZcXG4gNDg3OlxcdFxcdCAgdW5zdXJlLCBzYXkgTi5cXG4gNDg4OlxcdFxcbiA0ODk6XFx0Y29uZmlnIE1ISV9ORVRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MTUuMjM5MDQ5MDU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5OTI5ODc2MjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIFZSRiBDb25maWd1cmF0aW9uIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgaW50ZXJwbGF5IG9mIGBDT05GSUdfTkVUX1ZSRmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBydW4gdGhyb3VnaCB0aGUgdGhyZWUgcG9zc2libGUgc3RhdGVzOiBgQ09ORklHX05FVF9WUkY9bmAsIGBDT05GSUdfTkVUX1ZSRj1tYCwgYW5kIGBDT05GSUdfTkVUX1ZSRj15YC4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGhvdyBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgIGFmZmVjdHMgYG5ldGlmX2lzX2wzX21hc3RlcmAgYW5kIGBuZXRpZl9pc19sM19zbGF2ZWAuXG5cbklmIGBDT05GSUdfTkVUX1ZSRj1uYCwgdGhvc2UgZnVuY3Rpb25zIG5vdyByZXR1cm4gYGZhbHNlYCBhdCBjb21waWxlIHRpbWUsIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgb3B0aW1pemF0aW9uIGJlY2F1c2UgdGhlIGNvbXBpbGVyIGNhbiBlbGltaW5hdGUgdGhlIGNvbmRpdGlvbmFsIGNoZWNrcyBpbnZvbHZpbmcgYGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX01BU1RFUi9TTEFWRWAgYWx0b2dldGhlci4gTm8gbW9yZSBydW50aW1lIGNoZWNrcywgd2hpY2ggaXMgZ3JlYXQgZm9yIGZhc3QgcGF0aHMuIFNpbmNlIGBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKWAgYmVjb21lcyBmYWxzZSwgdGhlIGNvbXBpbGVyIGNhbiBvcHRpbWl6ZSB0aGUgY29kZSwgYXZvaWRpbmcgdGhlIGJyYW5jaCBhbmQgbWVtb3J5IGxvYWQgYXNzb2NpYXRlZCB3aXRoIHRoYXQgY2hlY2suXG5cbklmIGBDT05GSUdfTkVUX1ZSRmAgaXMgJ3knIG9yICdtJywgYElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpYCB3aWxsIGJlIHRydWUsIG1lYW5pbmcgdGhlIGNvbmRpdGlvbmFsIGAoMSBcdTAwMjZcdTAwMjYgKGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX01BU1RFUikpYCBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byB0aGUgZXhpc3RpbmcgbG9naWMsIHNvIG5vIGNoYW5nZSB0aGVyZS5cblxuQnV0IGRvZXMgdGhpcyBjaGFuZ2UgQU5ZIGtlcm5lbCBiZWhhdmlvcj8gTGV0J3MgYmUgbWV0aWN1bG91czpcblxuKiAgICoqQ2FzZSAxOiBWUkYgRW5hYmxlZCAoYHlgIG9yIGBtYCkqKjogYElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpYCBpcyAxLiBgbmV0aWZfaXNfbDNfbWFzdGVyYCBiZWNvbWVzIGAxIFx1MDAyNlx1MDAyNiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKWAsIHdoaWNoIGlzIGp1c3QgYGJvb2woZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKWAuIFRoZSBzYW1lIGxvZ2ljIGV4aXN0cyBmb3IgYG5ldGlmX2lzX2wzX3NsYXZlYC4gU28sIGFic29sdXRlbHkgbm8gY2hhbmdlIGluIGJlaGF2aW9yIGhlcmUuXG5cbiogICAqKkNhc2UgMjogVlJGIERpc2FibGVkIChgbmApKio6ICBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgIGlzIDAuICBgbmV0aWZfaXNfbDNfbWFzdGVyYCByZXR1cm5zIGBmYWxzZWAgYW5kIGBuZXRpZl9pc19sM19zbGF2ZWAgcmV0dXJucyBgZmFsc2VgLiAgQnV0LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXM6IENvdWxkIGBkZXYtXHUwMDNlcHJpdl9mbGFncyBcdTAwMjYgSUZGX0wzTURFVl9NQVNURVIvU0xBVkVgICpldmVyKiBiZSBub24temVybyB3aGVuIFZSRiBpcyBkaXNhYmxlZD9cblxuSSBjaGVja2VkIGlmIGFueSBvdGhlciBwYXJ0IG9mIHRoZSBrZXJuZWwgY291bGQgcG90ZW50aWFsbHkgc2V0IGBJRkZfTDNNREVWX01BU1RFUmAgb3IgYElGRl9MM01ERVZfU0xBVkVgLiBEb2luZyBhIGBnaXQgZ3JlcGAgcmV2ZWFscyB0aGF0IE9OTFkgYGRyaXZlcnMvbmV0L3ZyZi5jYCBzZXRzIHRob3NlIGZsYWdzLiBJZiBWUkYgaXMgZGlzYWJsZWQsIHRoYXQgZW50aXJlIGZpbGUgKmlzbid0IGNvbXBpbGVkKi4gU28sIHRob3NlIGZsYWdzIHdvdWxkICpuZXZlciogYmUgc2V0LiBUaGVyZWZvcmUsIHdoZW4gVlJGIGlzIGRpc2FibGVkLCBgZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSYCB3YXMgKmFsd2F5cyogZWZmZWN0aXZlbHkgMCwgcmVnYXJkbGVzcyBvZiB0aGlzIHBhdGNoLlxuXG5TbywgaXQgc2VlbXMgd2UgaGF2ZSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24sIGRlYWQgY29kZSBlbGltaW5hdGlvbiwgYW5kICpubyogY2hhbmdlIGluIGFjdHVhbCBydW50aW1lIGJlaGF2aW9yLiBUaGUgY29kZSBwYXRoIGlzIG5ldmVyIHJlYWNoYWJsZSwgbWFraW5nIGl0IGEgc2FmZSBvcHRpbWl6YXRpb24sIGJ1dCBJIHNob3VsZCBsb29rIGF0IHRoZSBydWxlcyBmb3Igd2hldGhlciBhIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCAqb25seSogY29udGFpbnMgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIFRoaXMgc2VlbXMgbGlrZSBhIHNsYW0gZHVuazogdGhlIHBhdGNoIGlzIHdvcnRoICpub3QqIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MDYxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAwOjUyOjM1LjE2ODkyOTU0N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MTYwMDAwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJRkZfTDNNREVWXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM9MjA1PWludCBpcHZsYW5fbDNzX3JlZ2lzdGVyKHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIxNC1cXHRcXHRkZXYtXFx1MDAzZWwzbWRldl9vcHMgPSBcXHUwMDI2aXB2bF9sM21kZXZfb3BzO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MjE1OlxcdFxcdGRldi1cXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTDNNREVWX1JYX0hBTkRMRVI7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMTYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0yMjE9dm9pZCBpcHZsYW5fbDNzX3VucmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjI2LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MjI3OlxcdGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2PSB+SUZGX0wzTURFVl9SWF9IQU5ETEVSO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjI4LVxcdGlwdmxhbl91bnJlZ2lzdGVyX25mX2hvb2socmVhZF9wbmV0KFxcdTAwMjZwb3J0LVxcdTAwM2VwbmV0KSk7XFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYz0xMDEyPXN0YXRpYyBpbnQgZG9fdnJmX2FkZF9zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYy0xMDI1LVxcbmRyaXZlcnMvbmV0L3ZyZi5jOjEwMjY6XFx0cG9ydF9kZXYtXFx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0wzTURFVl9TTEFWRTtcXG5kcml2ZXJzL25ldC92cmYuYy0xMDI3LVxcdHJldCA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2xpbmsocG9ydF9kZXYsIGRldiwgTlVMTCwgTlVMTCwgZXh0YWNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMzUtZXJyOlxcbmRyaXZlcnMvbmV0L3ZyZi5jOjEwMzY6XFx0cG9ydF9kZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNj0gfklGRl9MM01ERVZfU0xBVkU7XFxuZHJpdmVycy9uZXQvdnJmLmMtMTAzNy1cXHRzeW5jaHJvbml6ZV9uZXQoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jPTEwNTc9c3RhdGljIGludCBkb192cmZfZGVsX3NsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpwb3J0X2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNjAtXFx0bmV0ZGV2X3VwcGVyX2Rldl91bmxpbmsocG9ydF9kZXYsIGRldik7XFxuZHJpdmVycy9uZXQvdnJmLmM6MTA2MTpcXHRwb3J0X2Rldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2PSB+SUZGX0wzTURFVl9TTEFWRTtcXG5kcml2ZXJzL25ldC92cmYuYy0xMDYyLVxcdC8qIE1ha2Ugc3VyZSB0aGF0IGNvbmN1cnJlbnQgUkNVIHJlYWRlcnMgdGhhdCBpZGVudGlmaWVkIHRoZSBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jPTE2MzY9c3RhdGljIGludCB2cmZfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmMtMTY1OC1cXG5kcml2ZXJzL25ldC92cmYuYzoxNjU5OlxcdGRldi1cXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTDNNREVWX01BU1RFUjtcXG5kcml2ZXJzL25ldC92cmYuYy0xNjYwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xNDU1PXN0cnVjdCBuZXRfZGV2aWNlX29wcyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NDgtICpcXHR1bmRlcmx5aW5nIHN0YWNrZWQgZGV2aWNlc1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTc0OTogKiBASUZGX0wzTURFVl9NQVNURVI6IGRldmljZSBpcyBhbiBMMyBtYXN0ZXIgZGV2aWNlXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzUwLSAqIEBJRkZfTk9fUVVFVUU6IGRldmljZSBjYW4gcnVuIHdpdGhvdXQgcWRpc2MgYXR0YWNoZWRcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTEtICogQElGRl9PUEVOVlNXSVRDSDogZGV2aWNlIGlzIGEgT3BlbiB2U3dpdGNoIG1hc3RlclxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTc1MjogKiBASUZGX0wzTURFVl9TTEFWRTogZGV2aWNlIGlzIGVuc2xhdmVkIHRvIGFuIEwzIG1hc3RlciBkZXZpY2VcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTMtICogQElGRl9URUFNOiBkZXZpY2UgaXMgYSB0ZWFtIGRldmljZVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzU5LSAqIEBJRkZfRkFJTE9WRVJfU0xBVkU6IGRldmljZSBpcyBsb3dlciBkZXYgb2YgYSBmYWlsb3ZlciBtYXN0ZXIgZGV2aWNlXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzYwOiAqIEBJRkZfTDNNREVWX1JYX0hBTkRMRVI6IG9ubHkgaW52b2tlIHRoZSByeCBoYW5kbGVyIG9mIEwzIG1hc3RlciBkZXZpY2VcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NjEtICogQElGRl9OT19BRERSQ09ORjogcHJldmVudCBpcHY2IGFkZHJjb25mXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE3NjU9ZW51bSBuZXRkZXZfcHJpdl9mbGFncyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3ODMtXFx0SUZGX1hNSVRfRFNUX1JFTEVBU0VfUEVSTVxcdD0gMVxcdTAwM2NcXHUwMDNjMTcsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzg0OlxcdElGRl9MM01ERVZfTUFTVEVSXFx0XFx0PSAxXFx1MDAzY1xcdTAwM2MxOCxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3ODUtXFx0SUZGX05PX1FVRVVFXFx0XFx0XFx0PSAxXFx1MDAzY1xcdTAwM2MxOSxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3ODYtXFx0SUZGX09QRU5WU1dJVENIXFx0XFx0XFx0PSAxXFx1MDAzY1xcdTAwM2MyMCxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE3ODc6XFx0SUZGX0wzTURFVl9TTEFWRVxcdFxcdD0gMVxcdTAwM2NcXHUwMDNjMjEsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzg4LVxcdElGRl9URUFNXFx0XFx0XFx0PSAxXFx1MDAzY1xcdTAwM2MyMixcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc5My1cXHRJRkZfRkFJTE9WRVJfU0xBVkVcXHRcXHQ9IDFcXHUwMDNjXFx1MDAzYzI4LFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTc5NDpcXHRJRkZfTDNNREVWX1JYX0hBTkRMRVJcXHRcXHQ9IDFcXHUwMDNjXFx1MDAzYzI5LFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc5NS1cXHRJRkZfTk9fQUREUkNPTkZcXHRcXHRcXHQ9IEJJVF9VTEwoMzApLFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjAyPXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9oYXNfbDNfcnhfaGFuZGxlcihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYwMy17XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjA0OlxcdHJldHVybiBkZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNiBJRkZfTDNNREVWX1JYX0hBTkRMRVI7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjA1LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTYwNz1zdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfbWFzdGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjA4LXtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjU2MDk6XFx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpIFxcdTAwMjZcXHUwMDI2IChkZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNiBJRkZfTDNNREVWX01BU1RFUik7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjEwLX1cXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTYxMj1zdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfc2xhdmUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MTMte1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYxNDpcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikgXFx1MDAyNlxcdTAwMjYgKGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9MM01ERVZfU0xBVkUpO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxNS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAwOjUyOjM4LjAyMDUzMzY0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozOTIxMzQ4OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIEwzTURFViBLY29uZmlnKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTDNNREVWLiBMZXQncyBkaXZlIHJpZ2h0IGludG8gdGhlIGBuZXQvbDNtZGV2L0tjb25maWdgIGZpbGUuIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gdGhyb3VnaCBpdCB0byBnZXQgYSBmZWVsIGZvciB3aGF0IGNvbmZpZ3VyYWJsZSBmZWF0dXJlcyBhbmQgc2V0dGluZ3MgYXJlIGF2YWlsYWJsZS4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSBhIHRyZWFzdXJlIHRyb3ZlIG9mIGluZm9ybWF0aW9uLCByZXZlYWxpbmcgdGhlIGtub2JzIGFuZCBkaWFscyB0aGF0IGNvbnRyb2wgdGhpcyBwYXJ0IG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJJ20gbG9va2luZyBmb3IgdGhlIGNvcmUgb3B0aW9ucywgdGhlIGRlcGVuZGVuY2llcywgYW5kIGFueSBzdWJ0bGV0aWVzIHRoYXQgbWlnaHQganVtcCBvdXQuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGJ1aWxkaW5nIGJsb2NrcyBiZWZvcmUgSSBjYW4gcHV0IHRvZ2V0aGVyIGFueXRoaW5nIGludGVyZXN0aW5nIHdpdGggaXQuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc3MiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAwOjUyOjQxLjk0MTg4NDkzMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5OTU4NjI3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfTDNfTUFTVEVSX0RFVlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdD02MDc9dGNwX2wzbWRldl9hY2NlcHQgLSBCT09MRUFOXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdC02MTItXFx0d2hpY2ggdGhlIHBhY2tldHMgb3JpZ2luYXRlZC4gT25seSB2YWxpZCB3aGVuIHRoZSBrZXJuZWwgd2FzXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3Q6NjEzOlxcdGNvbXBpbGVkIHdpdGggQ09ORklHX05FVF9MM19NQVNURVJfREVWLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0LTYxNC1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0PTE0NTQ9dWRwX2wzbWRldl9hY2NlcHQgLSBCT09MRUFOXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdC0xNDU4LVxcdG9yaWdpbmF0ZWQuIE9ubHkgdmFsaWQgd2hlbiB0aGUga2VybmVsIHdhcyBjb21waWxlZCB3aXRoXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3Q6MTQ1OTpcXHRDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QtMTQ2MC1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0PTE1MTk9cmF3X2wzbWRldl9hY2NlcHQgLSBCT09MRUFOXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdC0xNTIzLVxcdG9yaWdpbmF0ZWQuIE9ubHkgdmFsaWQgd2hlbiB0aGUga2VybmVsIHdhcyBjb21waWxlZCB3aXRoXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3Q6MTUyNDpcXHRDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QtMTUyNS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0PTM3OTc9bDNtZGV2X2FjY2VwdCAtIEJPT0xFQU5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0LTM4MDEtXFx0b3JpZ2luYXRlZC4gT25seSB2YWxpZCB3aGVuIHRoZSBrZXJuZWwgd2FzIGNvbXBpbGVkIHdpdGhcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdDozODAyOlxcdENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVi5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdC0zODAzLVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xOTM9Y29uZmlnIElQVkxBTl9MM1NcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTk2LVxcdGRlZl9ib29sIHlcXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NzpcXHRzZWxlY3QgTkVUX0wzX01BU1RFUl9ERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDcyPWNvbmZpZyBORVRfVlJGXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3NC1cXHRkZXBlbmRzIG9uIElQX01VTFRJUExFX1RBQkxFU1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc1OlxcdGRlcGVuZHMgb24gTkVUX0wzX01BU1RFUl9ERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3Ni1cXHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTIHx8IElQVjY9blxcbi0tXFxuaW5jbHVkZS9saW51eC9pcHY2Lmg9MTU2PXN0cnVjdCBpbmV0Nl9za2JfcGFybSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2lwdjYuaC0xODMtXFxuaW5jbHVkZS9saW51eC9pcHY2Lmg6MTg0OiNpZiBkZWZpbmVkKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcXG5pbmNsdWRlL2xpbnV4L2lwdjYuaC0xODUtc3RhdGljIGlubGluZSBib29sIGlwdjZfbDNtZGV2X3NrYihfX3UxNiBmbGFncylcXG4tLVxcbmluY2x1ZGUvbGludXgvaXB2Ni5oPTIxMj1zdGF0aWMgaW5saW5lIGludCBpbmV0Nl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9saW51eC9pcHY2LmgtMjEzLXtcXG5pbmNsdWRlL2xpbnV4L2lwdjYuaDoyMTQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbmluY2x1ZGUvbGludXgvaXB2Ni5oLTIxNS1cXHRpZiAoc2tiIFxcdTAwMjZcXHUwMDI2IGlwdjZfbDNtZGV2X3NrYihJUDZDQihza2IpLVxcdTAwM2VmbGFncykpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxNTg9c3RydWN0IG5ldF9kZXZpY2Uge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yMzAwLVxcdGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqZXRodG9vbF9vcHM7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyMzAxOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIzMDItXFx0Y29uc3Qgc3RydWN0IGwzbWRldl9vcHNcXHQqbDNtZGV2X29wcztcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTYxNz1zdGF0aWMgaW5saW5lIGludCBkZXZfc2RpZihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxOC17XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjE5OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MjAtXFx0aWYgKG5ldGlmX2lzX2wzX3NsYXZlKGRldikpXFxuLS1cXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaD0xMjE9c3RhdGljIGlubGluZSB2b2lkIGZpYl9ydWxlX3B1dChzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUpXFxuLS1cXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaC0xMjYtXFxuaW5jbHVkZS9uZXQvZmliX3J1bGVzLmg6MTI3OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaC0xMjgtc3RhdGljIGlubGluZSB1MzIgZmliX3J1bGVfZ2V0X3RhYmxlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcXG4tLVxcbmluY2x1ZGUvbmV0L2dyby5oPTU1NT1zdGF0aWMgaW5saW5lIHZvaWQgaW5ldF9nZXRfaWlmX3NkaWYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICppaWYsIGludCAqc2RpZilcXG4tLVxcbmluY2x1ZGUvbmV0L2dyby5oLTU1OS1cXG5pbmNsdWRlL25ldC9ncm8uaDo1NjA6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbmluY2x1ZGUvbmV0L2dyby5oLTU2MS1cXHRpZiAobmV0aWZfaXNfbDNfc2xhdmUoc2tiLVxcdTAwM2VkZXYpKSB7XFxuLS1cXG5pbmNsdWRlL25ldC9ncm8uaD01NzY9c3RhdGljIGlubGluZSB2b2lkIGluZXQ2X2dldF9paWZfc2RpZihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKmlpZiwgaW50ICpzZGlmKVxcbi0tXFxuaW5jbHVkZS9uZXQvZ3JvLmgtNTgxLVxcbmluY2x1ZGUvbmV0L2dyby5oOjU4MjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXFxuaW5jbHVkZS9uZXQvZ3JvLmgtNTgzLVxcdGlmIChuZXRpZl9pc19sM19zbGF2ZShza2ItXFx1MDAzZWRldikpIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oPTExNT1zdGF0aWMgaW5saW5lIGludCBpbmV0X3JlcXVlc3RfYm91bmRfZGV2X2lmKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oLTExOC1cXHRpbnQgYm91bmRfZGV2X2lmID0gUkVBRF9PTkNFKHNrLVxcdTAwM2Vza19ib3VuZF9kZXZfaWYpO1xcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oOjExOTojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxuaW5jbHVkZS9uZXQvaW5ldF9zb2NrLmgtMTIwLVxcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcXG4tLVxcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oPTEyOT1zdGF0aWMgaW5saW5lIGludCBpbmV0X3NrX2JvdW5kX2wzbWRldihjb25zdCBzdHJ1Y3Qgc29jayAqc2spXFxuaW5jbHVkZS9uZXQvaW5ldF9zb2NrLmgtMTMwLXtcXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaDoxMzE6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oLTEzMi1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuLS1cXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaD0xNTA9c3RhdGljIGlubGluZSBib29sIGluZXRfc2tfYm91bmRfZGV2X2VxKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oLTE1My17XFxuaW5jbHVkZS9uZXQvaW5ldF9zb2NrLmg6MTU0OiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaC0xNTUtXFx0cmV0dXJuIGluZXRfYm91bmRfZGV2X2VxKCEhUkVBRF9PTkNFKG5ldC1cXHUwMDNlaXB2NC5zeXNjdGxfdGNwX2wzbWRldl9hY2NlcHQpLFxcbi0tXFxuaW5jbHVkZS9uZXQvaXAuaD0xMTE9c3RhdGljIGlubGluZSBpbnQgaW5ldF9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9uZXQvaXAuaC0xMTIte1xcbmluY2x1ZGUvbmV0L2lwLmg6MTEzOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcXG5pbmNsdWRlL25ldC9pcC5oLTExNC1cXHRpZiAoc2tiIFxcdTAwMjZcXHUwMDI2IGlwdjRfbDNtZGV2X3NrYihJUENCKHNrYiktXFx1MDAzZWZsYWdzKSlcXG4tLVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oPTM1PXN0cnVjdCBsM21kZXZfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oLTQ3LVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oOjQ4OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5pbmNsdWRlL25ldC9sM21kZXYuaC00OS1cXG4tLVxcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaD01NT1zdHJ1Y3QgbmV0bnNfaXB2NCB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0LmgtMTcwLVxcdHUzMiBzeXNjdGxfaXBfbG9jYWxfcG9ydF9zdGVwX3dpZHRoO1xcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaDoxNzE6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaC0xNzItXFx0dTggc3lzY3RsX3Jhd19sM21kZXZfYWNjZXB0O1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oLTI1NS1cXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0Lmg6MjU2OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0LmgtMjU3LVxcdHU4IHN5c2N0bF91ZHBfbDNtZGV2X2FjY2VwdDtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldG5zL3NjdHAuaD0xMz1zdHJ1Y3QgbmV0bnNfc2N0cCB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRucy9zY3RwLmgtMTc4LVxcbmluY2x1ZGUvbmV0L25ldG5zL3NjdHAuaDoxNzk6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbmluY2x1ZGUvbmV0L25ldG5zL3NjdHAuaC0xODAtXFx0aW50IGwzbWRldl9hY2NlcHQ7XFxuLS1cXG5pbmNsdWRlL25ldC9yYXcuaD04OT1zdGF0aWMgaW5saW5lIGJvb2wgcmF3X3NrX2JvdW5kX2Rldl9lcShzdHJ1Y3QgbmV0ICpuZXQsIGludCBib3VuZF9kZXZfaWYsXFxuLS1cXG5pbmNsdWRlL25ldC9yYXcuaC05MS17XFxuaW5jbHVkZS9uZXQvcmF3Lmg6OTI6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbmluY2x1ZGUvbmV0L3Jhdy5oLTkzLVxcdHJldHVybiBpbmV0X2JvdW5kX2Rldl9lcShSRUFEX09OQ0UobmV0LVxcdTAwM2VpcHY0LnN5c2N0bF9yYXdfbDNtZGV2X2FjY2VwdCksXFxuLS1cXG5pbmNsdWRlL25ldC90Y3AuaD0xMTc5PXN0YXRpYyBpbmxpbmUgaW50IHRjcF92Nl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9uZXQvdGNwLmgtMTE4MC17XFxuaW5jbHVkZS9uZXQvdGNwLmg6MTE4MTojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXFxuaW5jbHVkZS9uZXQvdGNwLmgtMTE4Mi1cXHRpZiAoc2tiIFxcdTAwMjZcXHUwMDI2IGlwdjZfbDNtZGV2X3NrYihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWhlYWRlci5oNi5mbGFncykpXFxuLS1cXG5pbmNsdWRlL25ldC90Y3AuaD0xMTk1PXN0YXRpYyBpbmxpbmUgaW50IHRjcF92NF9zZGlmKHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9uZXQvdGNwLmgtMTE5Ni17XFxuaW5jbHVkZS9uZXQvdGNwLmg6MTE5NzojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXFxuaW5jbHVkZS9uZXQvdGNwLmgtMTE5OC1cXHRpZiAoc2tiIFxcdTAwMjZcXHUwMDI2IGlwdjRfbDNtZGV2X3NrYihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWhlYWRlci5oNC5mbGFncykpXFxuLS1cXG5pbmNsdWRlL25ldC91ZHAuaD0zODU9c3RhdGljIGlubGluZSBib29sIHVkcF9za19ib3VuZF9kZXZfZXEoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgYm91bmRfZGV2X2lmLFxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwLmgtMzg3LXtcXG5pbmNsdWRlL25ldC91ZHAuaDozODg6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbmluY2x1ZGUvbmV0L3VkcC5oLTM4OS1cXHRyZXR1cm4gaW5ldF9ib3VuZF9kZXZfZXEoISFSRUFEX09OQ0UobmV0LVxcdTAwM2VpcHY0LnN5c2N0bF91ZHBfbDNtZGV2X2FjY2VwdCksXFxuLS1cXG5uZXQvTWFrZWZpbGU9Njk9b2JqLSQoQ09ORklHX05FVF9TV0lUQ0hERVYpXFx0Kz0gc3dpdGNoZGV2L1xcbm5ldC9NYWtlZmlsZTo3MDpvYmotJChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXFx0Kz0gbDNtZGV2L1xcbm5ldC9NYWtlZmlsZS03MS1vYmotJChDT05GSUdfUVJUUilcXHRcXHQrPSBxcnRyL1xcbi0tXFxubmV0L2NvcmUvZmliX3J1bGVzLmM9NDM5PXN0YXRpYyBzdHJ1Y3QgZmliX3J1bGUgKnJ1bGVfZmluZChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLFxcbi0tXFxubmV0L2NvcmUvZmliX3J1bGVzLmMtNTE5LVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjUyMDojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2NvcmUvZmliX3J1bGVzLmMtNTIxLXN0YXRpYyBpbnQgZmliX25sMnJ1bGVfbDNtZGV2KHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXFxuLS1cXG5uZXQvaXB2NC9yYXcuYz0xMTE2PXN0YXRpYyB2b2lkIHJhd19zeXNjdGxfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9pcHY0L3Jhdy5jLTExMTcte1xcbm5ldC9pcHY0L3Jhdy5jOjExMTg6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbm5ldC9pcHY0L3Jhdy5jLTExMTktXFx0bmV0LVxcdTAwM2VpcHY0LnN5c2N0bF9yYXdfbDNtZGV2X2FjY2VwdCA9IDE7XFxuLS1cXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYz02Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgaXB2NF9uZXRfdGFibGVbXSA9IHtcXG4tLVxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTcyNS1cXHR9LFxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjcyNjojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtNzI3LVxcdHtcXG4tLVxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTg5Mi1cXHR9LFxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjg5MzojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtODk0LVxcdHtcXG4tLVxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTExOTUtXFx0fSxcXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYzoxMTk2OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYy0xMTk3LVxcdHtcXG4tLVxcbm5ldC9pcHY0L3VkcC5jPTM2OTk9c3RhdGljIHZvaWQgX19uZXRfaW5pdCB1ZHBfc3lzY3RsX2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L2lwdjQvdWRwLmMtMzcwMy1cXG5uZXQvaXB2NC91ZHAuYzozNzA0OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2NC91ZHAuYy0zNzA1LVxcdG5ldC1cXHUwMDNlaXB2NC5zeXNjdGxfdWRwX2wzbWRldl9hY2NlcHQgPSAwO1xcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE4Nz1zdHJ1Y3Qgc2VnNl9sb2NhbF9sd3Qge1xcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE5NS1cXHRzdHJ1Y3QgYnBmX2x3dF9wcm9nIGJwZjtcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTk2OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTk3LVxcdHN0cnVjdCBzZWc2X2VuZF9kdF9pbmZvIGR0X2luZm87XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM9OTk4PXN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9keDQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMDIxLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMDIyOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTAyMy1zdGF0aWMgc3RydWN0IG5ldCAqZmliNl9jb25maWdfZ2V0X25ldChjb25zdCBzdHJ1Y3QgZmliNl9jb25maWcgKmZpYjZfY2ZnKVxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTEyNzQ9c3RhdGljIGludCBpbnB1dF9hY3Rpb25fZW5kX2R0NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEyODItXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjEyODM6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMjg0LVxcdGlmIChzZWc2X2VuZF9kdDZfZ2V0X21vZGUoc2x3dCkgPT0gRFRfTEVHQUNZX01PREUpXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTMxNS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTMxNjojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEzMTctc3RhdGljIGludCBzZWc2X2VuZF9kdDQ2X2J1aWxkKHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dCwgY29uc3Qgdm9pZCAqY2ZnLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE0ODc9c3RhdGljIHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjIHNlZzZfYWN0aW9uX3RhYmxlW10gPSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUzMC1cXHRcXHQub3B0YXR0cnNcXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTUzMTojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1MzItXFx0XFx0LmlucHV0XFx0XFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTM5LVxcdFxcdC5hY3Rpb25cXHRcXHQ9IFNFRzZfTE9DQUxfQUNUSU9OX0VORF9EVDYsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1NDA6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQxLVxcdFxcdC5hdHRyc1xcdFxcdD0gMCxcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTU3LVxcdFxcdC5vcHRhdHRyc1xcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTU4OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU1OS1cXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ0NixcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xNzU5PXNlZzZfZW5kX2R0X2luZm8gKnNlZzZfcG9zc2libGVfZW5kX2R0X2luZm8oc3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0KVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNzYwLXtcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTc2MTojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE3NjItXFx0cmV0dXJuIFxcdTAwMjZzbHd0LVxcdTAwM2VkdF9pbmZvO1xcbi0tXFxubmV0L2wzbWRldi9LY29uZmlnLTUtXFxubmV0L2wzbWRldi9LY29uZmlnOjY6Y29uZmlnIE5FVF9MM19NQVNURVJfREVWXFxubmV0L2wzbWRldi9LY29uZmlnLTctXFx0Ym9vbCBcXFwiTDMgTWFzdGVyIGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYz0xMjQ9c3RhdGljIGJvb2wgaW5fdnJmX3Bvc3Ryb3V0aW5nKGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZSlcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90by5jLTEyNS17XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYzoxMjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvLmMtMTI3LVxcdGlmIChzdGF0ZS1cXHUwMDNlaG9vayA9PSBORl9JTkVUX1BPU1RfUk9VVElORyBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jPTg4MT1zdGF0aWMgYm9vbCBpbl92cmZfcG9zdHJvdXRpbmcoY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYy04ODIte1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYzo4ODM6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYy04ODQtXFx0aWYgKHN0YXRlLVxcdTAwM2Vob29rID09IE5GX0lORVRfUE9TVF9ST1VUSU5HIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvc2N0cC9pbnB1dC5jPTk4ND1ib29sIHNjdHBfc2tfYm91bmRfZGV2X2VxKHN0cnVjdCBuZXQgKm5ldCwgaW50IGJvdW5kX2Rldl9pZiwgaW50IGRpZiwgaW50IHNkaWYpXFxuLS1cXG5uZXQvc2N0cC9pbnB1dC5jLTk4Ny1cXG5uZXQvc2N0cC9pbnB1dC5jOjk4ODojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXFxubmV0L3NjdHAvaW5wdXQuYy05ODktXFx0bDNtZGV2X2FjY2VwdCA9ICEhUkVBRF9PTkNFKG5ldC1cXHUwMDNlc2N0cC5sM21kZXZfYWNjZXB0KTtcXG4tLVxcbm5ldC9zY3RwL3Byb3RvY29sLmM9MTI4OT1zdGF0aWMgaW50IF9fbmV0X2luaXQgc2N0cF9kZWZhdWx0c19pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9zY3RwL3Byb3RvY29sLmMtMTM4MS1cXG5uZXQvc2N0cC9wcm90b2NvbC5jOjEzODI6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbm5ldC9zY3RwL3Byb3RvY29sLmMtMTM4My1cXHRuZXQtXFx1MDAzZXNjdHAubDNtZGV2X2FjY2VwdCA9IDE7XFxuLS1cXG5uZXQvc2N0cC9zeXNjdGwuYz05NT1zdGF0aWMgY29uc3Qgc3RydWN0IGN0bF90YWJsZSBzY3RwX25ldF90YWJsZVtdID0ge1xcbi0tXFxubmV0L3NjdHAvc3lzY3RsLmMtMzU3LVxcdH0sXFxubmV0L3NjdHAvc3lzY3RsLmM6MzU4OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvc2N0cC9zeXNjdGwuYy0zNTktXFx0e1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsPTQ5PUNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQlBGPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw6NTA6Q09ORklHX05FVF9MM19NQVNURVJfREVWPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtNTEtQ09ORklHX05FVF9WUkY9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTQ0PUNPTkZJR19ORVRfQUNUX0JQRj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjQ1OkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0LTQ2LUNPTkZJR19ORVRfVlJGPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTE0MD1DT05GSUdfTkVUX0lQR1JFX0JST0FEQ0FTVD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ6MTQxOkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQtMTQyLUNPTkZJR19ORVRfU0NIX0RFRkFVTFQ9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvdmlydGlvX25ldC9jb25maWc9ND1DT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQvY29uZmlnOjU6Q09ORklHX05FVF9MM19NQVNURVJfREVWPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC92aXJ0aW9fbmV0L2NvbmZpZy02LUNPTkZJR19ORVRfVlJGPW1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTE0OD1DT05GSUdfTkVUX0lQR1JFX0JST0FEQ0FTVD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb246MTQ5OkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb24tMTUwLUNPTkZJR19ORVRMQUJFTD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTk2PUNPTkZJR19ORVRLSVQ9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWc6OTc6Q09ORklHX05FVF9MM19NQVNURVJfREVWPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnLTk4LUNPTkZJR19ORVRfTlM9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnPTM4PUNPTkZJR19ORVRfSVBJUD1tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnOjM5OkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnLTQwLUNPTkZJR19ORVRfTlM9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldGZpbHRlci9jb25maWc9NTc9Q09ORklHX05FVF9JUElQPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzo1ODpDT05GSUdfTkVUX0wzX01BU1RFUl9ERVY9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXRmaWx0ZXIvY29uZmlnLTU5LUNPTkZJR19ORVRfTlM9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3RjcF9hby9jb25maWc9Mj1DT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90Y3BfYW8vY29uZmlnOjM6Q09ORklHX05FVF9MM19NQVNURVJfREVWPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGNwX2FvL2NvbmZpZy00LUNPTkZJR19ORVRfVlJGPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6NDMuOTQxNDc1NjM5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc2NTMyMDc4OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFByb3Bvc2VkIEtlcm5lbCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoYXQgYENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAgY2FuIGJlIGVuYWJsZWQgaW5kZXBlbmRlbnRseSBvZiBgQ09ORklHX05FVF9WUkZgLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgcG9pbnQgdG8gY29uc2lkZXIuIFNwZWNpZmljYWxseSwgYENPTkZJR19JUFZMQU5fTDNTYCBzZWxlY3RzIGBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZgLiBUaGlzIHJhaXNlcyBhIHF1ZXN0aW9uOiB3aGVuIGBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZgIGlzIHllcyBhbmQgYENPTkZJR19ORVRfVlJGYCBpcyBubywgd2hhdCBoYXBwZW5zP1xuXG5GdXJ0aGVyIGluc3BlY3Rpb24gcmV2ZWFscyB0aGF0IGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jYCAqZG9lcyogdXNlIGBJRkZfTDNNREVWX1JYX0hBTkRMRVJgLCBidXQgaXQgKmRvZXNuJ3QqIHVzZSBgSUZGX0wzTURFVl9NQVNURVJgIG9yIGBJRkZfTDNNREVWX1NMQVZFYC4gVGhlIFZSRiBkcml2ZXIgaXMgdGhlICpzb2xlKiB1c2VyIG9mIHRob3NlIGZsYWdzLiBUaHVzLCBpZiBgQ09ORklHX05FVF9WUkZgIGlzbid0IGVuYWJsZWQsIG5vIG5ldCBkZXZpY2Ugd2lsbCBldmVyIGhhdmUgYGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX01BU1RFUmAgb3IgYGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1NMQVZFYCBzZXQuIENvbnNlcXVlbnRseSwgYG5ldGlmX2lzX2wzX21hc3RlcihkZXYpYCBhbmQgYG5ldGlmX2lzX2wzX3NsYXZlKGRldilgIHdvdWxkIGV2YWx1YXRlIHRvIGZhbHNlIGF0IHJ1bnRpbWUgaW4gc3VjaCBhIHNjZW5hcmlvLiBUaGUgcHJvcG9zZWQgY2hhbmdlLCB1c2luZyBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgLCBzaW1wbHkgbWFrZXMgdGhhdCBldmFsdWF0aW9uIGhhcHBlbiBhdCBjb21waWxlIHRpbWUgd2hlbiBgQ09ORklHX05FVF9WUkZgIGlzICduJywgYW5kIGxlYXZlcyB0aGUgc2FtZSBydW50aW1lIGNoZWNrIGluIHBsYWNlIHdoZW4gVlJGIGlzIGVuYWJsZWQuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiBwbGFjZXMgd2hlcmUgdGhlc2UgZmxhZ3MgYXJlIHNldC4gU28sIEkgbmVlZCB0byBjaGVjayB0aGUgZW50aXJlIHRyZWUuIEEgcXVpY2sgc2VhcmNoIGNvbmZpcm1zIHRoYXQgYElGRl9MM01ERVZfTUFTVEVSYCBhbmQgYElGRl9MM01ERVZfU0xBVkVgIGFyZSBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oYCAoYWxvbmcgd2l0aCB0aGUgaGVscGVyIGZ1bmN0aW9ucyksIGFuZCBzZXQvdW5zZXQgaW4gYGRyaXZlcnMvbmV0L3ZyZi5jYC4gTm8gb3RoZXIgY29kZSBwYXRocyBtb2RpZnkgdGhlc2UgZmxhZ3MuXG5cblRoZXJlZm9yZSwgdGhlIGV4cHJlc3Npb25zIGBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSBcdTAwMjZcdTAwMjYgKGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX01BU1RFUilgIGFuZCBgZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSYCBhcmUgMTAwJSBzZW1hbnRpY2FsbHkgaWRlbnRpY2FsLiBUaGUgcHJvcG9zZWQgY2hhbmdlIG9ubHkgZGlmZmVycyBieSBlbmFibGluZyBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9uIHdoZW4gYENPTkZJR19ORVRfVlJGYCBpcyBkaXNhYmxlZC5cblxuTm93LCBsZXQncyBhcHBseSB0aGUgV29ydGhGdXp6aW5nIGNyaXRlcmlhLiBUaGUgcGF0Y2ggbW9kaWZpZXMgRG9jdW1lbnRhdGlvbi8gb3IgS2NvbmZpZyBmaWxlcywgY29kZSBjb21tZW50cywgbG9nZ2luZyBvciB0cmFjZXBvaW50cy4gSXQgYWxzbyBhbHRlcnMgbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4gSXQgZG9lc24ndCB0b3VjaCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBub3IgZG9lcyBpdCB0b3VjaCBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIG9yIHRoZSAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MuIFRoaXMgcGF0Y2ggaXMgZXNzZW50aWFsbHkgYSBub24tZnVuY3Rpb25hbCBvcHRpbWl6YXRpb24gdG8gaGVscGVyIGZ1bmN0aW9ucy4gSXQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBsb2dpYywgbm9yIGRvZXMgaXQgYWZmZWN0IGV4ZWN1dGlvbiBmbG93IG9yIHJ1bnRpbWUgYmVoYXZpb3IgaW4gYW55IGtlcm5lbCBjb25maWd1cmF0aW9uLlxuXG5UaGUgcmVzdWx0IGlzOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgYXJyYXlzIGFyZSBlbXB0eS4gVGhlIHJlYXNvbmluZywgd2hpY2ggSSB3aWxsIHN1bW1hcml6ZSBmb3IgdGhlIGZpbmFsIHN0ZXAsIGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGhlbHBlciBmdW5jdGlvbnMgdG8gZ3VhcmQgZmxhZyBjaGVja3MsIGFuZCB0aGVzZSBmbGFncyBhcmUgZXhjbHVzaXZlbHkgc2V0IGJ5IHRoZSBWUkYgZHJpdmVyLiBUaGlzIGlzIHB1cmVseSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24gd2hlbiBWUkYgaXMgZGlzYWJsZWQsIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXJpbmcgcnVudGltZSBiZWhhdmlvci5cblxuU28gbGV0J3MgZmluYWxpemUgdGhlIGBzZXQtcmVzdWx0c2A6XG4tIFdvcnRoRnV6emluZzogZmFsc2Vcbi0gRm9jdXNTeW1ib2xzOiBbXVxuLSBFbmFibGVDb25maWdzOiBbXVxuLSBSZWFzb25pbmc6IFRoZSBwYXRjaCBtb2RpZmllcyBgbmV0aWZfaXNfbDNfbWFzdGVyKClgIGFuZCBgbmV0aWZfaXNfbDNfc2xhdmUoKWAgaW4gYGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhgIHRvIGd1YXJkIHRoZSBmbGFnIGNoZWNrcyB3aXRoIGBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKWAuIEJlY2F1c2UgdGhlIGBJRkZfTDNNREVWX01BU1RFUmAgYW5kIGBJRkZfTDNNREVWX1NMQVZFYCBmbGFncyBhcmUgZXhjbHVzaXZlbHkgc2V0IGJ5IHRoZSBWUkYgZHJpdmVyIChgZHJpdmVycy9uZXQvdnJmLmNgKSwgdGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbiB3aGVuIGBDT05GSUdfTkVUX1ZSRmAgaXMgZGlzYWJsZWQgYW5kIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gYmVoYXZpb3IgaW4gYW55IGtlcm5lbCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDg3NiwiT3V0cHV0VG9rZW5zIjoxNDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAwOjUyOjUxLjU5NDY4NjI2N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgbmV0aWZfaXNfbDNfbWFzdGVyKCkgYW5kIG5ldGlmX2lzX2wzX3NsYXZlKCkgaW4gaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCB0byBpbmNsdWRlIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpLiBCZWNhdXNlIElGRl9MM01ERVZfTUFTVEVSIGFuZCBJRkZfTDNNREVWX1NMQVZFIGZsYWdzIGFyZSBleGNsdXNpdmVseSBtYW5pcHVsYXRlZCBieSBkcml2ZXJzL25ldC92cmYuYywgdGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbiB3aGVuIENPTkZJR19ORVRfVlJGIGlzIGRpc2FibGVkIGFuZCBkb2VzIG5vdCBhbHRlciBydW50aW1lIGJlaGF2aW9yIG9yIGV4ZWN1dGlvbiBmbG93IHVuZGVyIGFueSBjb25maWd1cmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBuZXRpZl9pc19sM19tYXN0ZXIoKSBhbmQgbmV0aWZfaXNfbDNfc2xhdmUoKSBpbiBpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIHRvIGluY2x1ZGUgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikuIEJlY2F1c2UgSUZGX0wzTURFVl9NQVNURVIgYW5kIElGRl9MM01ERVZfU0xBVkUgZmxhZ3MgYXJlIGV4Y2x1c2l2ZWx5IG1hbmlwdWxhdGVkIGJ5IGRyaXZlcnMvbmV0L3ZyZi5jLCB0aGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9uIHdoZW4gQ09ORklHX05FVF9WUkYgaXMgZGlzYWJsZWQgYW5kIGRvZXMgbm90IGFsdGVyIHJ1bnRpbWUgYmVoYXZpb3Igb3IgZXhlY3V0aW9uIGZsb3cgdW5kZXIgYW55IGNvbmZpZ3VyYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMDo1Mjo1MS41OTQ3MzUwODdaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6ldwb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-01 00:05:53 +0000 UTC FinishedAt: 2026-09-01 00:52: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+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBuZXRpZl9pc19sM19tYXN0ZXIoKSBhbmQgbmV0aWZfaXNfbDNfc2xhdmUoKSBpbiBpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIHRvIGluY2x1ZGUgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikuIEJlY2F1c2UgSUZGX0wzTURFVl9NQVNURVIgYW5kIElGRl9MM01ERVZfU0xBVkUgZmxhZ3MgYXJlIGV4Y2x1c2l2ZWx5IG1hbmlwdWxhdGVkIGJ5IGRyaXZlcnMvbmV0L3ZyZi5jLCB0aGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9uIHdoZW4gQ09ORklHX05FVF9WUkYgaXMgZGlzYWJsZWQgYW5kIGRvZXMgbm90IGFsdGVyIHJ1bnRpbWUgYmVoYXZpb3Igb3IgZXhlY3V0aW9uIGZsb3cgdW5kZXIgYW55IGNvbmZpZ3VyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2FkZGM1NjM2Y2I2NGYwMjllMDgxNmM5Y2Y2MDAzYjZiZjNiYmZhOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDA6NTE6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbmluZGV4IDg3Y2FmYzkzMmU5ZTYuLjg0NTQ2NDZkNmE0NTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG5AQCAtNTYwNiwxMiAmIzQzOzU2MDYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIG5ldGlmX2hhc19sM19yeF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gc3RhdGljIGlubGluZSBib29sIG5ldGlmX2lzX2wzX21hc3Rlcihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbi1cdHJldHVybiBkZXYtXHUwMDNlcHJpdl9mbGFncyBcdTAwMjYgSUZGX0wzTURFVl9NQVNURVI7XG4mIzQzO1x0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpIFx1MDAyNlx1MDAyNiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBib29sIG5ldGlmX2lzX2wzX3NsYXZlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0cmV0dXJuIGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1NMQVZFO1xuJiM0MztcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSBcdTAwMjZcdTAwMjYgKGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1NMQVZFKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBpbnQgZGV2X3NkaWYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMDo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIG5ldGlmX2lzX2wzX21hc3RlcigpIGFuZCBuZXRpZl9pc19sM19zbGF2ZSgpIGluIGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmggdG8gaW5jbHVkZSBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKS4gQmVjYXVzZSBJRkZfTDNNREVWX01BU1RFUiBhbmQgSUZGX0wzTURFVl9TTEFWRSBmbGFncyBhcmUgZXhjbHVzaXZlbHkgbWFuaXB1bGF0ZWQgYnkgZHJpdmVycy9uZXQvdnJmLmMsIHRoaXMgY2hhbmdlIGlzIHB1cmVseSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24gd2hlbiBDT05GSUdfTkVUX1ZSRiBpcyBkaXNhYmxlZCBhbmQgZG9lcyBub3QgYWx0ZXIgcnVudGltZSBiZWhhdmlvciBvciBleGVjdXRpb24gZmxvdyB1bmRlciBhbnkgY29uZmlndXJhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3YWRkYzU2MzZjYjY0ZjAyOWUwODE2YzljZjYwMDNiNmJmM2JiZmE4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMSAwMDo1MTo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oCmluZGV4IDg3Y2FmYzkzMmU5ZTYuLjg0NTQ2NDZkNmE0NTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaApAQCAtNTYwNiwxMiAmIzQzOzU2MDYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIG5ldGlmX2hhc19sM19yeF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19tYXN0ZXIoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKLQlyZXR1cm4gZGV2LSZndDtwcml2X2ZsYWdzICZhbXA7IElGRl9MM01ERVZfTUFTVEVSOwomIzQzOwlyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikgJmFtcDsmYW1wOyAoZGV2LSZndDtwcml2X2ZsYWdzICZhbXA7IElGRl9MM01ERVZfTUFTVEVSKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIG5ldGlmX2lzX2wzX3NsYXZlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0JcmV0dXJuIGRldi0mZ3Q7cHJpdl9mbGFncyAmYW1wOyBJRkZfTDNNREVWX1NMQVZFOwomIzQzOwlyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikgJmFtcDsmYW1wOyAoZGV2LSZndDtwcml2X2ZsYWdzICZhbXA7IElGRl9MM01ERVZfU0xBVkUpOwogfQogCiBzdGF0aWMgaW5saW5lIGludCBkZXZfc2RpZihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTc0CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRGV2aWNlIENoYW5nZSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIG1vZGlmeWluZyBgaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaGAuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZXMgYXJlIHRhcmdldGluZyB0aGUgYG5ldGlmX2lzX2wzX21hc3RlcmAgYW5kIGBuZXRpZl9pc19sM19zbGF2ZWAgaW5saW5lIGZ1bmN0aW9ucy4gSXQgYXBwZWFycyB0aGV5IGFyZSBhZGRpbmcgYSBwcmUtY29uZGl0aW9uLCBvbmx5IGVuYWJsaW5nIHRoZSBmdW5jdGlvbmFsaXR5IGlmIGBDT05GSUdfTkVUX1ZSRmAgaXMgZW5hYmxlZC4gSXQmIzM5O3MgYSBjbGVhbiBhbmQgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgZWZmZWN0aXZlbHkgZ2F0aW5nIHRoZSBMMyBtYXN0ZXIvc2xhdmUgZnVuY3Rpb25hbGl0eSBiZWhpbmQgdGhhdCBWUkYgY29uZmlndXJhdGlvbiBvcHRpb24uCgpOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuIFdoZXJlIGFyZSB0aGVzZSBmdW5jdGlvbnMgdXNlZCB0aHJvdWdob3V0IHRoZSBrZXJuZWw/IFdoYXQgbW9kdWxlcyBvciBmZWF0dXJlcyBkZXBlbmQgb24gdGhpcyBgSUZGX0wzTURFVl9NQVNURVJgIGFuZCBgSUZGX0wzTURFVl9TTEFWRWAgbG9naWM/IFRpbWUgdG8gZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIGRvIHNvbWUgaW52ZXN0aWdhdGlvbiB0byBzZWUgd2hlcmUgdGhpcyBpcyB1dGlsaXplZC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIGNvbmRpdGlvbmFsIGxvZ2ljIGNoYW5nZSBiZWZvcmUgZ2l2aW5nIHRoaXMgYSBtb3JlIHRob3JvdWdoIHJldmlldy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRpZl9pc19sM18obWFzdGVyfHNsYXZlKSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYz0zNjE9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICppcG9pYl9nZXRfbWFzdGVyX25ldF9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYy0zNjctXHRtYXN0ZXIgPSBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1KGRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYzozNjg6XHRpZiAoIW1hc3RlciB8fCBuZXRpZl9pc19sM19tYXN0ZXIobWFzdGVyKSlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfbWFpbi5jLTM2OS1cdFx0bWFzdGVyID0gZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM9NDcxND1zdGF0aWMgaW50IG1seHN3X3NwX25ldGRldmljZV9wb3J0X3VwcGVyX2V2ZW50KHN0cnVjdCBuZXRfZGV2aWNlICpsb3dlcl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy00NzM5LVx0XHQgICAgIW5ldGlmX2lzX21hY3ZsYW4odXBwZXJfZGV2KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NDc0MDpcdFx0ICAgICFuZXRpZl9pc19sM19tYXN0ZXIodXBwZXJfZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy00NzQxLVx0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O1Vua25vd24gdXBwZXIgZGV2aWNlIHR5cGVcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM9NDk1Nj1zdGF0aWMgaW50IG1seHN3X3NwX25ldGRldmljZV9wb3J0X3ZsYW5fZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKnZsYW5fZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNDk3NC1cdFx0ICAgICFuZXRpZl9pc19tYWN2bGFuKHVwcGVyX2RldikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jOjQ5NzU6XHRcdCAgICAhbmV0aWZfaXNfbDNfbWFzdGVyKHVwcGVyX2RldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNDk3Ni1cdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jPTUwNDY9c3RhdGljIGludCBtbHhzd19zcF9uZXRkZXZpY2VfYnJpZGdlX3ZsYW5fZXZlbnQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUwNjQtXHRcdGlmICghbmV0aWZfaXNfbWFjdmxhbih1cHBlcl9kZXYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzo1MDY1Olx0XHQgICAgIW5ldGlmX2lzX2wzX21hc3Rlcih1cHBlcl9kZXYpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUwNjYtXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCYjMzQ7VW5rbm93biB1cHBlciBkZXZpY2UgdHlwZVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYz01MTA3PXN0YXRpYyBpbnQgbWx4c3dfc3BfbmV0ZGV2aWNlX2JyaWRnZV9ldmVudChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTEyNi1cdFx0ICAgICFuZXRpZl9pc19tYWN2bGFuKHVwcGVyX2RldikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jOjUxMjc6XHRcdCAgICAhbmV0aWZfaXNfbDNfbWFzdGVyKHVwcGVyX2RldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTEyOC1cdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jPTUxNjA9c3RhdGljIGludCBtbHhzd19zcF9uZXRkZXZpY2VfbWFjdmxhbl9ldmVudChzdHJ1Y3QgbmV0X2RldmljZSAqbWFjdmxhbl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzo1MTc0Olx0aWYgKCFuZXRpZl9pc19sM19tYXN0ZXIodXBwZXJfZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MTc1LVx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz0xOTY4PXN0YXRpYyBpbnQgbWx4c3dfc3BfbmV0ZGV2aWNlX2lwaXBfb2xfZXZlbnQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0xOTkyLVx0XHRleHRhY2sgPSBpbmZvLVx1MDAzZWV4dGFjaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjE5OTM6XHRcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoY2h1cC1cdTAwM2V1cHBlcl9kZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMTk5NC1cdFx0XHRlcnIgPSBtbHhzd19zcF9uZXRkZXZpY2VfaXBpcF9vbF92cmZfZXZlbnQobWx4c3dfc3AsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM9MjAxMT1fX21seHN3X3NwX25ldGRldmljZV9pcGlwX3VsX2V2ZW50KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3AsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMjAyNC1cdFx0ZXh0YWNrID0gaW5mby1cdTAwM2VleHRhY2s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzoyMDI1Olx0XHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGNodXAtXHUwMDNldXBwZXJfZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTIwMjYtXHRcdFx0cmV0dXJuIG1seHN3X3NwX25ldGRldmljZV9pcGlwX3VsX3ZyZl9ldmVudChtbHhzd19zcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz04MjYyPW1seHN3X3NwX3JpZl9zaG91bGRfY29uZmlnKHN0cnVjdCBtbHhzd19zcF9yaWYgKnJpZiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy04Mjc5LVx0XHRpZiAocmlmIFx1MDAyNlx1MDAyNiBhZGRyX2xpc3RfZW1wdHkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzo4MjgwOlx0XHQgICAgIW5ldGlmX2lzX2wzX3NsYXZlKG1seHN3X3NwX3JpZl9kZXYocmlmKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy04MjgxLVx0XHRcdHJldHVybiB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jPTk3NDI9c3RhdGljIGJvb2wgbWx4c3dfc3Bfcm91dGVyX25ldGRldmljZV9pbnRlcmVzdGluZyhzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTk3NTAtXHQgICAgbWx4c3dfc3BfbmV0ZGV2X2lzX2lwaXBfb2wobWx4c3dfc3AsIGRldikgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjk3NTE6XHQgICAgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy05NzUyLVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz05OTY3PXN0YXRpYyBib29sIG1seHN3X3NwX2lzX3ZyZl9ldmVudCh1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtOTk3Mi1cdFx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6OTk3MzpcdHJldHVybiBuZXRpZl9pc19sM19tYXN0ZXIoaW5mby1cdTAwM2V1cHBlcl9kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtOTk3NC19XG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9MTA0MT1zdGF0aWMgaW50IHZyZl9hZGRfc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKnBvcnRfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNDMte1xuZHJpdmVycy9uZXQvdnJmLmM6MTA0NDpcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIocG9ydF9kZXYpKSB7XG5kcml2ZXJzL25ldC92cmYuYy0xMDQ1LVx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTA0OS1cbmRyaXZlcnMvbmV0L3ZyZi5jOjEwNTA6XHRpZiAobmV0aWZfaXNfbDNfc2xhdmUocG9ydF9kZXYpKVxuZHJpdmVycy9uZXQvdnJmLmMtMTA1MS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9MTc0OD1zdGF0aWMgaW50IHZyZl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTc1Ni1cbmRyaXZlcnMvbmV0L3ZyZi5jOjE3NTc6XHRcdGlmICghbmV0aWZfaXNfbDNfc2xhdmUoZGV2KSlcbmRyaXZlcnMvbmV0L3ZyZi5jLTE3NTgtXHRcdFx0Z290byBvdXQ7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjAyPXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9oYXNfbDNfcnhfaGFuZGxlcihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYwNi1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYwNzpzdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfbWFzdGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDgte1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxMS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYxMjpzdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfc2xhdmUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxMy17XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjE3PXN0YXRpYyBpbmxpbmUgaW50IGRldl9zZGlmKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjE5LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYyMDpcdGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjIxLVx0XHRyZXR1cm4gZGV2LVx1MDAzZWlmaW5kZXg7XG4tLVxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaD0zNjk9c3RhdGljIGlubGluZSBzdHJ1Y3QgaW5ldDZfZGV2ICpfX2luNl9kZXZfc3RhdHNfZ2V0KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaC0zNzEte1xuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaDozNzI6XHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGRldikpIHtcbmluY2x1ZGUvbmV0L2FkZHJjb25mLmgtMzczLVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShkZXZfbmV0KGRldiksIGluZXQ2X2lpZihza2IpKTtcbi0tXG5pbmNsdWRlL25ldC9ncm8uaD01NTU9c3RhdGljIGlubGluZSB2b2lkIGluZXRfZ2V0X2lpZl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCAqaWlmLCBpbnQgKnNkaWYpXG4tLVxuaW5jbHVkZS9uZXQvZ3JvLmgtNTYwLSNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcbmluY2x1ZGUvbmV0L2dyby5oOjU2MTpcdGlmIChuZXRpZl9pc19sM19zbGF2ZShza2ItXHUwMDNlZGV2KSkge1xuaW5jbHVkZS9uZXQvZ3JvLmgtNTYyLVx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbWFzdGVyID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfZ2V0X3JjdShza2ItXHUwMDNlZGV2KTtcbi0tXG5pbmNsdWRlL25ldC9ncm8uaD01NzY9c3RhdGljIGlubGluZSB2b2lkIGluZXQ2X2dldF9paWZfc2RpZihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKmlpZiwgaW50ICpzZGlmKVxuLS1cbmluY2x1ZGUvbmV0L2dyby5oLTU4Mi0jaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXG5pbmNsdWRlL25ldC9ncm8uaDo1ODM6XHRpZiAobmV0aWZfaXNfbDNfc2xhdmUoc2tiLVx1MDAzZWRldikpIHtcbmluY2x1ZGUvbmV0L2dyby5oLTU4NC1cdFx0c3RydWN0IG5ldF9kZXZpY2UgKm1hc3RlciA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2dldF9yY3Uoc2tiLVx1MDAzZWRldik7XG4tLVxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg9MTA5PXN0cnVjdCBuZXRfZGV2aWNlICpsM21kZXZfbWFzdGVyX2Rldl9yY3UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKl9kZXYpXG4tLVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTIyLVxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg6MTIzOlx0aWYgKG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTI0LVx0XHRtYXN0ZXIgPSBkZXY7XG5pbmNsdWRlL25ldC9sM21kZXYuaDoxMjU6XHRlbHNlIGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTI2LVx0XHRtYXN0ZXIgPSBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1KGRldik7XG4tLVxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg9MTU3PXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pbmRleF9pc19sM19tYXN0ZXIoc3RydWN0IG5ldCAqbmV0LCBpbnQgaWZpbmRleClcbi0tXG5pbmNsdWRlL25ldC9sM21kZXYuaC0xNjgtXHRpZiAoZGV2KVxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg6MTY5Olx0XHRyYyA9IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpO1xuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTcwLVxuLS1cbmluY2x1ZGUvbmV0L2wzbWRldi5oPTE3OT1zdHJ1Y3Qgc2tfYnVmZiAqbDNtZGV2X2wzX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcHJvdG8pXG4tLVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTgyLVxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg6MTgzOlx0aWYgKG5ldGlmX2lzX2wzX3NsYXZlKHNrYi1cdTAwM2VkZXYpKVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTg0LVx0XHRtYXN0ZXIgPSBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1KHNrYi1cdTAwM2VkZXYpO1xuaW5jbHVkZS9uZXQvbDNtZGV2Lmg6MTg1Olx0ZWxzZSBpZiAobmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cdTAwM2VkZXYpIHx8XG5pbmNsdWRlL25ldC9sM21kZXYuaC0xODYtXHRcdCBuZXRpZl9oYXNfbDNfcnhfaGFuZGxlcihza2ItXHUwMDNlZGV2KSlcbi0tXG5pbmNsdWRlL25ldC9sM21kZXYuaD0yMDg9c3RydWN0IHNrX2J1ZmYgKmwzbWRldl9sM19vdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcHJvdG8pXG4tLVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMjEzLVx0ZGV2ID0gc2tiX2RzdF9kZXZfcmN1KHNrYik7XG5pbmNsdWRlL25ldC9sM21kZXYuaDoyMTQ6XHRpZiAobmV0aWZfaXNfbDNfc2xhdmUoZGV2KSkge1xuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMjE1LVx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbWFzdGVyO1xuLS1cbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmM9OTc0PXN0YXRpYyB1bnNpZ25lZCBpbnQgaXBfc2Fib3RhZ2VfaW4odm9pZCAqcHJpdixcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jLTk4NC1cdFx0aWYgKCFuZl9icmlkZ2UtXHUwMDNlaW5fcHJlcm91dGluZyBcdTAwMjZcdTAwMjZcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmM6OTg1Olx0XHQgICAgIW5ldGlmX2lzX2wzX21hc3Rlcihza2ItXHUwMDNlZGV2KSBcdTAwMjZcdTAwMjZcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmM6OTg2Olx0XHQgICAgIW5ldGlmX2lzX2wzX3NsYXZlKHNrYi1cdTAwM2VkZXYpKSB7XG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jLTk4Ny1cdFx0XHRuZl9icmlkZ2UtXHUwMDNlc2Fib3RhZ2VfaW5fZG9uZSA9IDE7XG4tLVxubmV0L2NvcmUvZmliX3J1bGVzLmM9NzM4PXN0YXRpYyBpbnQgZmliX25sMnJ1bGVfbG9ja2VkKHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLFxuLS1cbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTc1OS1cdFx0XHRubHJ1bGUtXHUwMDNlaWlmaW5kZXggPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWlmaW5kZXgpO1xubmV0L2NvcmUvZmliX3J1bGVzLmM6NzYwOlx0XHRcdG5scnVsZS1cdTAwM2VpaWZfaXNfbDNfbWFzdGVyID0gbmV0aWZfaXNfbDNfbWFzdGVyKGRldik7XG5uZXQvY29yZS9maWJfcnVsZXMuYy03NjEtXHRcdH1cbi0tXG5uZXQvY29yZS9maWJfcnVsZXMuYy03NjktXHRcdFx0bmxydWxlLVx1MDAzZW9pZmluZGV4ID0gUkVBRF9PTkNFKGRldi1cdTAwM2VpZmluZGV4KTtcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjc3MDpcdFx0XHRubHJ1bGUtXHUwMDNlb2lmX2lzX2wzX21hc3RlciA9IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpO1xubmV0L2NvcmUvZmliX3J1bGVzLmMtNzcxLVx0XHR9XG4tLVxubmV0L2NvcmUvZmliX3J1bGVzLmM9MTM2MD1zdGF0aWMgdm9pZCBhdHRhY2hfcnVsZXMoc3RydWN0IGxpc3RfaGVhZCAqcnVsZXMsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2NvcmUvZmliX3J1bGVzLmMtMTM2OC1cdFx0XHRXUklURV9PTkNFKHJ1bGUtXHUwMDNlaWlmX2lzX2wzX21hc3Rlcixcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjEzNjk6XHRcdFx0XHQgICBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSk7XG5uZXQvY29yZS9maWJfcnVsZXMuYy0xMzcwLVx0XHR9XG4tLVxubmV0L2NvcmUvZmliX3J1bGVzLmMtMTM3NC1cdFx0XHRXUklURV9PTkNFKHJ1bGUtXHUwMDNlb2lmX2lzX2wzX21hc3Rlcixcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjEzNzU6XHRcdFx0XHQgICBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSk7XG5uZXQvY29yZS9maWJfcnVsZXMuYy0xMzc2LVx0XHR9XG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTUwNj1zdGF0aWMgaW50IGZpYl9uZXRkZXZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTU1Ny1cdFx0aWYgKHVwcGVyX2luZm8tXHUwMDNldXBwZXJfZGV2IFx1MDAyNlx1MDAyNlxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTU1ODpcdFx0ICAgIG5ldGlmX2lzX2wzX21hc3Rlcih1cHBlcl9pbmZvLVx1MDAzZXVwcGVyX2RldikpXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTU5LVx0XHRcdGZpYl9kaXNhYmxlX2lwKGRldiwgTkVUREVWX0RPV04sIHRydWUpO1xuLS1cbm5ldC9pcHY0L2lnbXAuYz0xMTAzPWludCBpZ21wX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L2lnbXAuYy0xMTExLVxubmV0L2lwdjQvaWdtcC5jOjExMTI6XHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGRldikpIHtcbm5ldC9pcHY0L2lnbXAuYy0xMTEzLVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShkZXZfbmV0KGRldiksIElQQ0Ioc2tiKS1cdTAwM2VpaWYpO1xuLS1cbm5ldC9pcHY0L2lwbXIuYz0yMTg5PWludCBpcF9tcl9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L2lwbXIuYy0yMjAxLVx0ZGV2ID0gc2tiLVx1MDAzZWRldjtcbm5ldC9pcHY0L2lwbXIuYzoyMjAyOlx0aWYgKG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXHUwMDNlZGV2KSkge1xubmV0L2lwdjQvaXBtci5jLTIyMDMtXHRcdGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgSVBDQihza2IpLVx1MDAzZWlpZik7XG4tLVxubmV0L2lwdjQvcm91dGUuYz05Njc9c3RhdGljIGludCBpcF9lcnJvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3JvdXRlLmMtOTc4LVxubmV0L2lwdjQvcm91dGUuYzo5Nzk6XHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cdTAwM2VkZXYpKSB7XG5uZXQvaXB2NC9yb3V0ZS5jLTk4MC1cdFx0ZGV2ID0gX19kZXZfZ2V0X2J5X2luZGV4KGRldl9uZXQoc2tiLVx1MDAzZWRldiksIElQQ0Ioc2tiKS1cdTAwM2VpaWYpO1xuLS1cbm5ldC9pcHY0L3JvdXRlLmM9MjUyMz1pcF9yb3V0ZV9pbnB1dF9yY3Uoc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTMyIGRhZGRyLCBfX2JlMzIgc2FkZHIsXG4tLVxubmV0L2lwdjQvcm91dGUuYy0yNTQ5LVx0XHQvKiBjaGVjayBsMyBtYXN0ZXIgaWYgbm8gbWF0Y2ggeWV0ICovXG5uZXQvaXB2NC9yb3V0ZS5jOjI1NTA6XHRcdGlmICghb3VyIFx1MDAyNlx1MDAyNiBuZXRpZl9pc19sM19zbGF2ZShkZXYpKSB7XG5uZXQvaXB2NC9yb3V0ZS5jLTI1NTEtXHRcdFx0c3RydWN0IGluX2RldmljZSAqbDNfaW5fZGV2O1xuLS1cbm5ldC9pcHY0L3JvdXRlLmM9MjU5MT1zdGF0aWMgc3RydWN0IHJ0YWJsZSAqX19ta3JvdXRlX291dHB1dChjb25zdCBzdHJ1Y3QgZmliX3Jlc3VsdCAqcmVzLFxuLS1cbm5ldC9pcHY0L3JvdXRlLmMtMjYwOS1cdFx0ICAgICEoZGV2X291dC1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0xPT1BCQUNLKSBcdTAwMjZcdTAwMjZcbm5ldC9pcHY0L3JvdXRlLmM6MjYxMDpcdFx0ICAgICFuZXRpZl9pc19sM19tYXN0ZXIoZGV2X291dCkpXG5uZXQvaXB2NC9yb3V0ZS5jLTI2MTEtXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4tLVxubmV0L2lwdjQvdGNwX2FvLmM9MTU3Nj1zdGF0aWMgaW50IHRjcF9hb19hZGRfY21kKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgaW50IGZhbWlseSxcbi0tXG5uZXQvaXB2NC90Y3BfYW8uYy0xNjIzLVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShzb2NrX25ldChzayksIGNtZC5pZmluZGV4KTtcbm5ldC9pcHY0L3RjcF9hby5jOjE2MjQ6XHRcdGlmIChkZXYgXHUwMDI2XHUwMDI2IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxubmV0L2lwdjQvdGNwX2FvLmMtMTYyNS1cdFx0XHRsM2luZGV4ID0gZGV2LVx1MDAzZWlmaW5kZXg7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0xNDc5PXN0YXRpYyBpbnQgdGNwX3Y0X3BhcnNlX21kNV9rZXlzKHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0xNTE0LVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShzb2NrX25ldChzayksIGNtZC50Y3BtX2lmaW5kZXgpO1xubmV0L2lwdjQvdGNwX2lwdjQuYzoxNTE1Olx0XHRpZiAoZGV2IFx1MDAyNlx1MDAyNiBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSlcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTUxNi1cdFx0XHRsM2luZGV4ID0gZGV2LVx1MDAzZWlmaW5kZXg7XG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYz0xMDc0PWlwdjZfYWRkX2FkZHIoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgc3RydWN0IGlmYTZfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0xMDkxLVx0fSBlbHNlIGlmICghKGlkZXYtXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfTE9PUEJBQ0spIFx1MDAyNlx1MDAyNlxubmV0L2lwdjYvYWRkcmNvbmYuYzoxMDkyOlx0XHQgICAhbmV0aWZfaXNfbDNfbWFzdGVyKGlkZXYtXHUwMDNlZGV2KSBcdTAwMjZcdTAwMjZcbm5ldC9pcHY2L2FkZHJjb25mLmMtMTA5My1cdFx0ICAgYWRkcl90eXBlIFx1MDAyNiBJUFY2X0FERFJfTE9PUEJBQ0spIHtcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTI1NzE9c3RhdGljIHN0cnVjdCBpbmV0Nl9kZXYgKmFkZHJjb25mX2FkZF9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1ODQtXHQvKiBBZGQgZGVmYXVsdCBtdWx0aWNhc3Qgcm91dGUgKi9cbm5ldC9pcHY2L2FkZHJjb25mLmM6MjU4NTpcdGlmICghKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0xPT1BCQUNLKSBcdTAwMjZcdTAwMjYgIW5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxubmV0L2lwdjYvYWRkcmNvbmYuYy0yNTg2LVx0XHRhZGRyY29uZl9hZGRfbXJvdXRlKGRldik7XG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYz0zNDM5PXN0YXRpYyB2b2lkIGFkZHJjb25mX2FkZHJfZ2VuKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIGJvb2wgcHJlZml4X3JvdXRlKVxuLS1cbm5ldC9pcHY2L2FkZHJjb25mLmMtMzQ0My1cdC8qIG5vIGxpbmsgbG9jYWwgYWRkcmVzc2VzIG9uIEwzIG1hc3RlciBkZXZpY2VzICovXG5uZXQvaXB2Ni9hZGRyY29uZi5jOjM0NDQ6XHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGlkZXYtXHUwMDNlZGV2KSlcbm5ldC9pcHY2L2FkZHJjb25mLmMtMzQ0NS1cdFx0cmV0dXJuO1xuLS1cbm5ldC9pcHY2L2FkZHJjb25mLmM9MzY3Mj1zdGF0aWMgaW50IGFkZHJjb25mX25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0zODQxLVx0XHQgKi9cbm5ldC9pcHY2L2FkZHJjb25mLmM6Mzg0MjpcdFx0aWYgKGluZm8tXHUwMDNldXBwZXJfZGV2IFx1MDAyNlx1MDAyNiBuZXRpZl9pc19sM19tYXN0ZXIoaW5mby1cdTAwM2V1cHBlcl9kZXYpKVxubmV0L2lwdjYvYWRkcmNvbmYuYy0zODQzLVx0XHRcdGFkZHJjb25mX2lmZG93bihkZXYsIGZhbHNlKTtcbi0tXG5uZXQvaXB2Ni9pY21wLmM9NDE5PXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqaWNtcDZfZGV2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvaWNtcC5jLTQyNy1cdCAqL1xubmV0L2lwdjYvaWNtcC5jOjQyODpcdGlmICh1bmxpa2VseShkZXYtXHUwMDNlaWZpbmRleCA9PSBMT09QQkFDS19JRklOREVYIHx8IG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXHUwMDNlZGV2KSkpIHtcbm5ldC9pcHY2L2ljbXAuYy00MjktXHRcdGNvbnN0IHN0cnVjdCBydDZfaW5mbyAqcnQ2ID0gc2tiX3J0Nl9pbmZvKHNrYik7XG4tLVxubmV0L2lwdjYvaXA2X2lucHV0LmM9MTg4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaXA2X3Jjdl9jb3JlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjYvaXA2X2lucHV0LmMtMjU3LVx0ICAgICEoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfTE9PUEJBQ0spIFx1MDAyNlx1MDAyNlxubmV0L2lwdjYvaXA2X2lucHV0LmM6MjU4Olx0ICAgICFuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSlcbm5ldC9pcHY2L2lwNl9pbnB1dC5jLTI1OS1cdFx0Z290byBlcnI7XG4tLVxubmV0L2lwdjYvaXA2bXIuYz0yMzQ2PWludCBpcDZfbXJfaW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni9pcDZtci5jLTIzNjAtXHQgKi9cbm5ldC9pcHY2L2lwNm1yLmM6MjM2MTpcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSkge1xubmV0L2lwdjYvaXA2bXIuYy0yMzYyLVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShuZXQsIElQQ0Ioc2tiKS1cdTAwM2VpaWYpO1xuLS1cbm5ldC9pcHY2L25kaXNjLmM9Nzg5PXN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiBuZGlzY19yZWN2X25zKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvbmRpc2MuYy04ODUtXHRcdC8qIHBlcmhhcHMgYW4gYWRkcmVzcyBvbiB0aGUgbWFzdGVyIGRldmljZSAqL1xubmV0L2lwdjYvbmRpc2MuYzo4ODY6XHRcdGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKSB7XG5uZXQvaXB2Ni9uZGlzYy5jLTg4Ny1cdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbWRldjtcbi0tXG5uZXQvaXB2Ni9uZGlzYy5jPTE2NTg9dm9pZCBuZGlzY19zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqdGFyZ2V0KVxuLS1cbm5ldC9pcHY2L25kaXNjLmMtMTY3NS1cbm5ldC9pcHY2L25kaXNjLmM6MTY3NjpcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSkge1xubmV0L2lwdjYvbmRpc2MuYy0xNjc3LVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShuZXQsIElQQ0Ioc2tiKS1cdTAwM2VpaWYpO1xuLS1cbm5ldC9pcHY2L3JvdXRlLmM9MTA1OT1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmlwNl9ydF9nZXRfZGV2X3JjdShjb25zdCBzdHJ1Y3QgZmliNl9yZXN1bHQgKnJlcylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTEwNjctXHRcdCAqL1xubmV0L2lwdjYvcm91dGUuYzoxMDY4Olx0XHRpZiAobmV0aWZfaXNfbDNfc2xhdmUoZGV2KSBcdTAwMjZcdTAwMjZcbm5ldC9pcHY2L3JvdXRlLmMtMTA2OS1cdFx0ICAgICFydDZfbmVlZF9zdHJpY3QoXHUwMDI2cmVzLVx1MDAzZWY2aS1cdTAwM2VmaWI2X2RzdC5hZGRyKSlcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTEwNzEtXHRcdFx0ICAgICAgZGV2X25ldChkZXYpLVx1MDAzZWxvb3BiYWNrX2Rldjtcbm5ldC9pcHY2L3JvdXRlLmM6MTA3MjpcdFx0ZWxzZSBpZiAoIW5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxubmV0L2lwdjYvcm91dGUuYy0xMDczLVx0XHRcdGRldiA9IGRldl9uZXQoZGV2KS1cdTAwM2Vsb29wYmFja19kZXY7XG5uZXQvaXB2Ni9yb3V0ZS5jOjEwNzQ6XHRcdC8qIGxhc3QgY2FzZSBpcyBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSBpcyB0cnVlIGluIHdoaWNoXG5uZXQvaXB2Ni9yb3V0ZS5jLTEwNzUtXHRcdCAqIGNhc2Ugd2Ugd2FudCBkZXYgcmV0dXJuZWQgdG8gYmUgZGV2XG4tLVxubmV0L2lwdjYvcm91dGUuYz00NjIxPXN0YXRpYyBpbnQgaXA2X3BrdF9kcm9wKHN0cnVjdCBza19idWZmICpza2IsIHU4IGNvZGUsIGludCBpcHN0YXRzX21pYl9ub3JvdXRlcylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ2MjktXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ2MzA6XHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cdTAwM2VkZXYpIHx8XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ2MzEtXHQgICAgZGV2ID09IG5ldC1cdTAwM2Vsb29wYmFja19kZXYpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00NjUyLVx0LyogU3RhcnQgb3ZlciBieSBkcm9wcGluZyB0aGUgZHN0IGZvciBsM21kZXYgY2FzZSAqL1xubmV0L2lwdjYvcm91dGUuYzo0NjUzOlx0aWYgKG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXHUwMDNlZGV2KSlcbm5ldC9pcHY2L3JvdXRlLmMtNDY1NC1cdFx0c2tiX2RzdF9kcm9wKHNrYik7XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTEwOTU9c3RhdGljIHN0cnVjdCBza19idWZmICplbmRfZHRfdnJmX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgZmFtaWx5LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMDk4LVx0LyogYmFzZWQgb24gbDNtZGV2X2lwX3Jjdjsgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbWFzdGVyICovXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTA5OTpcdGlmICh1bmxpa2VseSghbmV0aWZfaXNfbDNfbWFzdGVyKGRldikgXHUwMDI2XHUwMDI2ICFuZXRpZl9oYXNfbDNfcnhfaGFuZGxlcihkZXYpKSlcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMTAwLVx0XHRnb3RvIGRyb3A7XG4tLVxubmV0L2lwdjYvc2l0LmM9NTI5PXN0YXRpYyBpbnQgaXBpcDZfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvKVxuLS1cbm5ldC9pcHY2L3NpdC5jLTU2Ny1cbm5ldC9pcHY2L3NpdC5jOjU2ODpcdHNpZmluZGV4ID0gbmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cdTAwM2VkZXYpID8gSVBDQihza2IpLVx1MDAzZWlpZiA6IDA7XG5uZXQvaXB2Ni9zaXQuYy01NjktXHR0ID0gaXBpcDZfdHVubmVsX2xvb2t1cChkZXZfbmV0KHNrYi1cdTAwM2VkZXYpLCBza2ItXHUwMDNlZGV2LFxuLS1cbm5ldC9pcHY2L3NpdC5jPTY4MD1zdGF0aWMgaW50IGlwaXA2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3NpdC5jLTY4Ni1cbm5ldC9pcHY2L3NpdC5jOjY4NzpcdHNpZmluZGV4ID0gbmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cdTAwM2VkZXYpID8gSVBDQihza2IpLVx1MDAzZWlpZiA6IDA7XG5uZXQvaXB2Ni9zaXQuYy02ODgtXHR0dW5uZWwgPSBpcGlwNl90dW5uZWxfbG9va3VwKGRldl9uZXQoc2tiLVx1MDAzZWRldiksIHNrYi1cdTAwM2VkZXYsXG4tLVxubmV0L2lwdjYvc2l0LmM9NzUzPXN0YXRpYyBpbnQgc2l0X3R1bm5lbF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaXBwcm90bylcbi0tXG5uZXQvaXB2Ni9zaXQuYy03NTgtXG5uZXQvaXB2Ni9zaXQuYzo3NTk6XHRzaWZpbmRleCA9IG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXHUwMDNlZGV2KSA/IElQQ0Ioc2tiKS1cdTAwM2VpaWYgOiAwO1xubmV0L2lwdjYvc2l0LmMtNzYwLVxuLS1cbm5ldC9pcHY2L3NpdC5jPTEwOTU9c3RhdGljIHZvaWQgaXBpcDZfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2lwdjYvc2l0LmMtMTEyNC1cbm5ldC9pcHY2L3NpdC5jOjExMjU6XHRpZiAodGRldiBcdTAwMjZcdTAwMjYgIW5ldGlmX2lzX2wzX21hc3Rlcih0ZGV2KSkge1xubmV0L2lwdjYvc2l0LmMtMTEyNi1cdFx0aW50IG10dTtcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTYzMT1zdGF0aWMgaW50IHRjcF92Nl9wYXJzZV9tZDVfa2V5cyhzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtNjY5LVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShzb2NrX25ldChzayksIGNtZC50Y3BtX2lmaW5kZXgpO1xubmV0L2lwdjYvdGNwX2lwdjYuYzo2NzA6XHRcdGlmIChkZXYgXHUwMDI2XHUwMDI2IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxubmV0L2lwdjYvdGNwX2lwdjYuYy02NzEtXHRcdFx0bDNpbmRleCA9IGRldi1cdTAwM2VpZmluZGV4O1xuLS1cbm5ldC9sM21kZXYvbDNtZGV2LmM9MTEwPWludCBsM21kZXZfbWFzdGVyX2lmaW5kZXhfcmN1KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2wzbWRldi9sM21kZXYuYy0xMTYtXG5uZXQvbDNtZGV2L2wzbWRldi5jOjExNzpcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSkge1xubmV0L2wzbWRldi9sM21kZXYuYy0xMTgtXHRcdGlmaW5kZXggPSBkZXYtXHUwMDNlaWZpbmRleDtcbm5ldC9sM21kZXYvbDNtZGV2LmM6MTE5Olx0fSBlbHNlIGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKSB7XG5uZXQvbDNtZGV2L2wzbWRldi5jLTEyMC1cdFx0c3RydWN0IG5ldF9kZXZpY2UgKm1hc3Rlcjtcbi0tXG5uZXQvbDNtZGV2L2wzbWRldi5jPTE0ND1pbnQgbDNtZGV2X21hc3Rlcl91cHBlcl9pZmluZGV4X2J5X2luZGV4X3JjdShzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4KVxuLS1cbm5ldC9sM21kZXYvbDNtZGV2LmMtMTQ4LVx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBpZmluZGV4KTtcbm5ldC9sM21kZXYvbDNtZGV2LmM6MTQ5Olx0d2hpbGUgKGRldiBcdTAwMjZcdTAwMjYgIW5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxubmV0L2wzbWRldi9sM21kZXYuYy0xNTAtXHRcdGRldiA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2dldF9yY3UoZGV2KTtcbi0tXG5uZXQvbDNtZGV2L2wzbWRldi5jPTE2Mj11MzIgbDNtZGV2X2ZpYl90YWJsZV9yY3UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbDNtZGV2L2wzbWRldi5jLTE2OC1cbm5ldC9sM21kZXYvbDNtZGV2LmM6MTY5Olx0aWYgKG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKSB7XG5uZXQvbDNtZGV2L2wzbWRldi5jLTE3MC1cdFx0aWYgKGRldi1cdTAwM2VsM21kZXZfb3BzLVx1MDAzZWwzbWRldl9maWJfdGFibGUpXG5uZXQvbDNtZGV2L2wzbWRldi5jLTE3MS1cdFx0XHR0Yl9pZCA9IGRldi1cdTAwM2VsM21kZXZfb3BzLVx1MDAzZWwzbWRldl9maWJfdGFibGUoZGV2KTtcbm5ldC9sM21kZXYvbDNtZGV2LmM6MTcyOlx0fSBlbHNlIGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKSB7XG5uZXQvbDNtZGV2L2wzbWRldi5jLTE3My1cdFx0LyogVXNlcnMgb2YgbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfZ2V0X3JjdSBuZWVkIG5vbi1jb25zdCxcbi0tXG5uZXQvbDNtZGV2L2wzbWRldi5jPTIxOD1zdHJ1Y3QgZHN0X2VudHJ5ICpsM21kZXZfbGlua19zY29wZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9sM21kZXYvbDNtZGV2LmMtMjI2LVx0XHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShuZXQsIGZsNi1cdTAwM2VmbG93aTZfb2lmKTtcbm5ldC9sM21kZXYvbDNtZGV2LmM6MjI3Olx0XHRpZiAoZGV2IFx1MDAyNlx1MDAyNiBuZXRpZl9pc19sM19zbGF2ZShkZXYpKVxubmV0L2wzbWRldi9sM21kZXYuYy0yMjgtXHRcdFx0ZGV2ID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfZ2V0X3JjdShkZXYpO1xubmV0L2wzbWRldi9sM21kZXYuYy0yMjktXG5uZXQvbDNtZGV2L2wzbWRldi5jOjIzMDpcdFx0aWYgKGRldiBcdTAwMjZcdTAwMjYgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikgXHUwMDI2XHUwMDI2XG5uZXQvbDNtZGV2L2wzbWRldi5jLTIzMS1cdFx0ICAgIGRldi1cdTAwM2VsM21kZXZfb3BzLVx1MDAzZWwzbWRldl9saW5rX3Njb3BlX2xvb2t1cClcbi0tXG5uZXQvbDNtZGV2L2wzbWRldi5jPTI0Nz1pbnQgbDNtZGV2X2ZpYl9ydWxlX21hdGNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZsb3dpICpmbCxcbi0tXG5uZXQvbDNtZGV2L2wzbWRldi5jLTI1OS1cdGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgZmwtXHUwMDNlZmxvd2lfbDNtZGV2KTtcbm5ldC9sM21kZXYvbDNtZGV2LmM6MjYwOlx0aWYgKGRldiBcdTAwMjZcdTAwMjYgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikgXHUwMDI2XHUwMDI2XG5uZXQvbDNtZGV2L2wzbWRldi5jLTI2MS1cdCAgICBkZXYtXHUwMDNlbDNtZGV2X29wcy1cdTAwM2VsM21kZXZfZmliX3RhYmxlKSB7XG4tLVxubmV0L2wzbWRldi9sM21kZXYuYz0yNzE9dm9pZCBsM21kZXZfdXBkYXRlX2Zsb3coc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2kgKmZsKVxuLS1cbm5ldC9sM21kZXYvbDNtZGV2LmMtMjg3LVx0XHRcdCAqL1xubmV0L2wzbWRldi9sM21kZXYuYzoyODg6XHRcdFx0aWYgKG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxubmV0L2wzbWRldi9sM21kZXYuYy0yODktXHRcdFx0XHRmbC1cdTAwM2VmbG93aV9vaWYgPSAwO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvLmM9MTI0PXN0YXRpYyBib29sIGluX3ZyZl9wb3N0cm91dGluZyhjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYy0xMjctXHRpZiAoc3RhdGUtXHUwMDNlaG9vayA9PSBORl9JTkVUX1BPU1RfUk9VVElORyBcdTAwMjZcdTAwMjZcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvLmM6MTI4Olx0ICAgIG5ldGlmX2lzX2wzX21hc3RlcihzdGF0ZS1cdTAwM2VvdXQpKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYy0xMjktXHRcdHJldHVybiB0cnVlO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYz04ODE9c3RhdGljIGJvb2wgaW5fdnJmX3Bvc3Ryb3V0aW5nKGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtODg0LVx0aWYgKHN0YXRlLVx1MDAzZWhvb2sgPT0gTkZfSU5FVF9QT1NUX1JPVVRJTkcgXHUwMDI2XHUwMDI2XG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmM6ODg1Olx0ICAgIG5ldGlmX2lzX2wzX21hc3RlcihzdGF0ZS1cdTAwM2VvdXQpKVxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTg4Ni1cdFx0cmV0dXJuIHRydWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4ODcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgVmlydHVhbCBSb3V0aW5nICZhbXA7IEZvcndhcmRpbmcgKFZSRikgYW5kIExheWVyIDMgTWFzdGVyIERldmljZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byBzb21lIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbiBhbmQgSSBuZWVkIGEgcXVpY2sgcmVmcmVzaGVyIG9uIHRoZXNlIHNwZWNpZmljcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHVucGFja2luZyB3aGF0IGBDT05GSUdfTkVUX1ZSRmAgYW5kIGBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZgIGFjdHVhbGx5ICpkbyogd2l0aGluIHRoaXMgY29udGV4dC4gSSYjMzk7dmUgZ290IGEgZGVjZW50IGdyYXNwLCBidXQgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gc29saWRpZnkgdGhlIHVuZGVybHlpbmcgaW1wbGljYXRpb25zIG9mIHRoZXNlIHN5bWJvbHMuCgpOb3csIEkgbmVlZCB0byB6b29tIGluIG9uIGhvdyB0aGUgYElGRl9MM01ERVZfTUFTVEVSYCBhbmQgYElGRl9MM01ERVZfU0xBVkVgIGZsYWdzIGFyZSB1c2VkLiBJIG5lZWQgdG8gcmVmcmVzaCBteXNlbGYgb2YgdGhlIG51YW5jZXMgb2YgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhvc2UgZmxhZ3MgYW5kIHRob3NlIGNvbmZpZ3VyYXRpb25zLiBUaGVuLCBJJiMzOTtsbCBuZWVkIHRvIHBpbnBvaW50IHByZWNpc2VseSAqd2hlcmUqIHRob3NlIGZsYWdzIGFyZSBiZWluZyBzZXQgaW4gdGhlIGNvZGUuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgd2l0aCBhIHF1aWNrIHNlYXJjaCB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgY29kZSBsb2NhdGlvbnMgYW5kIHRoZW4gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgbG9naWMgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgc2NlbmFyaW9zIHRoYXQgdHJpZ2dlciB0aGVzZSBmbGFnIHNldHRpbmdzLiBJIG5lZWQgdG8ga2VlcCB0aGlzIHN0cmVhbWxpbmVkLCBzbyBJJiMzOTtsbCBwcmlvcml0aXplIGZpbmRpbmcgdGhlIG1vc3QgZGlyZWN0IGFzc2lnbm1lbnRzIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSByYWJiaXQgaG9sZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SUZGX0wzTURFVl8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0yMDU9aW50IGlwdmxhbl9sM3NfcmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIxNC1cdFx0ZGV2LVx1MDAzZWwzbWRldl9vcHMgPSBcdTAwMjZpcHZsX2wzbWRldl9vcHM7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjIxNTpcdFx0ZGV2LVx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0wzTURFVl9SWF9IQU5ETEVSO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMTYtXHR9XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0yMjE9dm9pZCBpcHZsYW5fbDNzX3VucmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIyNi1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MjI3Olx0ZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2PSB+SUZGX0wzTURFVl9SWF9IQU5ETEVSO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMjgtXHRpcHZsYW5fdW5yZWdpc3Rlcl9uZl9ob29rKHJlYWRfcG5ldChcdTAwMjZwb3J0LVx1MDAzZXBuZXQpKTtcbi0tXG5kcml2ZXJzL25ldC92cmYuYz0xMDEyPXN0YXRpYyBpbnQgZG9fdnJmX2FkZF9zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTAyNS1cbmRyaXZlcnMvbmV0L3ZyZi5jOjEwMjY6XHRwb3J0X2Rldi1cdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9MM01ERVZfU0xBVkU7XG5kcml2ZXJzL25ldC92cmYuYy0xMDI3LVx0cmV0ID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfbGluayhwb3J0X2RldiwgZGV2LCBOVUxMLCBOVUxMLCBleHRhY2spO1xuLS1cbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMzUtZXJyOlxuZHJpdmVycy9uZXQvdnJmLmM6MTAzNjpcdHBvcnRfZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2PSB+SUZGX0wzTURFVl9TTEFWRTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMzctXHRzeW5jaHJvbml6ZV9uZXQoKTtcbi0tXG5kcml2ZXJzL25ldC92cmYuYz0xMDU3PXN0YXRpYyBpbnQgZG9fdnJmX2RlbF9zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTA2MC1cdG5ldGRldl91cHBlcl9kZXZfdW5saW5rKHBvcnRfZGV2LCBkZXYpO1xuZHJpdmVycy9uZXQvdnJmLmM6MTA2MTpcdHBvcnRfZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2PSB+SUZGX0wzTURFVl9TTEFWRTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNjItXHQvKiBNYWtlIHN1cmUgdGhhdCBjb25jdXJyZW50IFJDVSByZWFkZXJzIHRoYXQgaWRlbnRpZmllZCB0aGUgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9MTYzNj1zdGF0aWMgaW50IHZyZl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTY1OC1cbmRyaXZlcnMvbmV0L3ZyZi5jOjE2NTk6XHRkZXYtXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTDNNREVWX01BU1RFUjtcbmRyaXZlcnMvbmV0L3ZyZi5jLTE2NjAtXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xNDU1PXN0cnVjdCBuZXRfZGV2aWNlX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzQ4LSAqXHR1bmRlcmx5aW5nIHN0YWNrZWQgZGV2aWNlc1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzQ5OiAqIEBJRkZfTDNNREVWX01BU1RFUjogZGV2aWNlIGlzIGFuIEwzIG1hc3RlciBkZXZpY2VcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc1MC0gKiBASUZGX05PX1FVRVVFOiBkZXZpY2UgY2FuIHJ1biB3aXRob3V0IHFkaXNjIGF0dGFjaGVkXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTEtICogQElGRl9PUEVOVlNXSVRDSDogZGV2aWNlIGlzIGEgT3BlbiB2U3dpdGNoIG1hc3RlclxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzUyOiAqIEBJRkZfTDNNREVWX1NMQVZFOiBkZXZpY2UgaXMgZW5zbGF2ZWQgdG8gYW4gTDMgbWFzdGVyIGRldmljZVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzUzLSAqIEBJRkZfVEVBTTogZGV2aWNlIGlzIGEgdGVhbSBkZXZpY2Vcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTktICogQElGRl9GQUlMT1ZFUl9TTEFWRTogZGV2aWNlIGlzIGxvd2VyIGRldiBvZiBhIGZhaWxvdmVyIG1hc3RlciBkZXZpY2VcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTc2MDogKiBASUZGX0wzTURFVl9SWF9IQU5ETEVSOiBvbmx5IGludm9rZSB0aGUgcnggaGFuZGxlciBvZiBMMyBtYXN0ZXIgZGV2aWNlXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NjEtICogQElGRl9OT19BRERSQ09ORjogcHJldmVudCBpcHY2IGFkZHJjb25mXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xNzY1PWVudW0gbmV0ZGV2X3ByaXZfZmxhZ3Mge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4My1cdElGRl9YTUlUX0RTVF9SRUxFQVNFX1BFUk1cdD0gMVx1MDAzY1x1MDAzYzE3LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzg0Olx0SUZGX0wzTURFVl9NQVNURVJcdFx0PSAxXHUwMDNjXHUwMDNjMTgsXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3ODUtXHRJRkZfTk9fUVVFVUVcdFx0XHQ9IDFcdTAwM2NcdTAwM2MxOSxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4Ni1cdElGRl9PUEVOVlNXSVRDSFx0XHRcdD0gMVx1MDAzY1x1MDAzYzIwLFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzg3Olx0SUZGX0wzTURFVl9TTEFWRVx0XHQ9IDFcdTAwM2NcdTAwM2MyMSxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4OC1cdElGRl9URUFNXHRcdFx0PSAxXHUwMDNjXHUwMDNjMjIsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzkzLVx0SUZGX0ZBSUxPVkVSX1NMQVZFXHRcdD0gMVx1MDAzY1x1MDAzYzI4LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzk0Olx0SUZGX0wzTURFVl9SWF9IQU5ETEVSXHRcdD0gMVx1MDAzY1x1MDAzYzI5LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzk1LVx0SUZGX05PX0FERFJDT05GXHRcdFx0PSBCSVRfVUxMKDMwKSxcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTU2MDI9c3RhdGljIGlubGluZSBib29sIG5ldGlmX2hhc19sM19yeF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDMte1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjA0Olx0cmV0dXJuIGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1JYX0hBTkRMRVI7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDUtfVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTYwNz1zdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfbWFzdGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDgte1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjA5Olx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpIFx1MDAyNlx1MDAyNiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxMC19XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjEyPXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19zbGF2ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjEzLXtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYxNDpcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSBcdTAwMjZcdTAwMjYgKGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1NMQVZFKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxNS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM5NDMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYElGRl9MM01ERVZfKmAgRmxhZ3MqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSBgSUZGX0wzTURFVl9NQVNURVJgIGFuZCBgSUZGX0wzTURFVl9TTEFWRWAgYXJlICpvbmx5KiBzZXQgd2l0aGluIGBkcml2ZXJzL25ldC92cmYuY2AgaW5pdGlhbGx5LiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBidXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSSBzaG91bGQgdmVyaWZ5IHRoYXQgbm8gb3RoZXIgbW9kdWxlcyBhcmUgdG91Y2hpbmcgdGhlc2UgZmxhZ3MgZGlyZWN0bHkuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBgZ3JlcGAgb3V0cHV0IHRvIGNvbmZpcm0uIEFscmlnaHQsIGNvbmZpcm1lZC4gYHZyZi5jYCBkZWZpbml0ZWx5IHNldHMgYElGRl9MM01ERVZfU0xBVkVgIG9uIGBwb3J0X2RldmAgYW5kIGBJRkZfTDNNREVWX01BU1RFUmAgb24gYGRldmAuCgpOb3csIGxvb2tpbmcgZGVlcGVyLCBJIHNlZSB0aGF0IGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jYCBzZXRzIGBJRkZfTDNNREVWX1JYX0hBTkRMRVJgLCBidXQgdGhhdCYjMzk7cyBoYW5kbGVkIHRocm91Z2ggYG5ldGlmX2hhc19sM19yeF9oYW5kbGVyYCB3aGljaCBpcyBhIGRpZmZlcmVudCBjb25jZXJuLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IG90aGVyIHBvdGVudGlhbCBjb250ZW5kZXJzLiBJIHdpbGwgbm93IGV4YW1pbmUgYEtjb25maWdgIGZvciBgTkVUX1ZSRmAgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfVlJGJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3MS1cbmRyaXZlcnMvbmV0L0tjb25maWc6NDcyOmNvbmZpZyBORVRfVlJGXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3My1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgUm91dGluZyBhbmQgRm9yd2FyZGluZyAoTGl0ZSlcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDUzMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBOZXR3b3JrIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gYmV0dGVyLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQganVtcCBzdHJhaWdodCBpbnRvIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBvZiBmb2N1c2luZyBvbiB0aGUgYGRyaXZlcnMvbmV0L0tjb25maWdgIGZpbGUsIGFyb3VuZCBsaW5lIDQ3Mi4gVGhhdCYjMzk7cyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZ2V0dGluZyBhIGhhbmRsZSBvbiBhIG1vZHVsZSYjMzk7cyBjb3JlIGRlcGVuZGVuY2llcyBhbmQgaG93IGl0JiMzOTtzIGV4cG9zZWQgdGhyb3VnaCB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgc29tZSBjcnVjaWFsIG9wdGlvbnMgZGVmaW5lZCBhcm91bmQgdGhhdCBhcmVhLCBwcm9iYWJseSByZWxhdGVkIHRvIGEgcGFydGljdWxhciBkcml2ZXIgb3IgbmV0d29yayBmZWF0dXJlLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBob29rcyBJIG5lZWQgdG8gZXhwbG9yZSBpdHMgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIGFuZCB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgY29tcG9uZW50cyBpdCBpbnRlcmFjdHMgd2l0aC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRoZXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDcwOlx0XHQgIHRvIG9wZXJhdGUgaW4gTDMgb3IgTDIgbW9kZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiA0NzE6XHRcbiA0NzI6XHRjb25maWcgTkVUX1ZSRlxuIDQ3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBSb3V0aW5nIGFuZCBGb3J3YXJkaW5nIChMaXRlKVwmIzM0O1xuIDQ3NDpcdFx0ZGVwZW5kcyBvbiBJUF9NVUxUSVBMRV9UQUJMRVNcbiA0NzU6XHRcdGRlcGVuZHMgb24gTkVUX0wzX01BU1RFUl9ERVZcbiA0NzY6XHRcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVMgfHwgSVBWNj1uXG4gNDc3Olx0XHRoZWxwXG4gNDc4Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIHN1cHBvcnQgZm9yIG1hcHBpbmcgaW50ZXJmYWNlcyBpbnRvIFZSRiYjMzk7cy4gVGhlXG4gNDc5Olx0XHQgIHN1cHBvcnQgZW5hYmxlcyBWUkYgZGV2aWNlcy5cbiA0ODA6XHRcbiA0ODE6XHRjb25maWcgVlNPQ0tNT05cbiA0ODI6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcJiMzNDtcbiA0ODM6XHRcdGRlcGVuZHMgb24gVkhPU1RfVlNPQ0tcbiA0ODQ6XHRcdGhlbHBcbiA0ODU6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBhIG1vbml0b3JpbmcgbmV0IGRldmljZSBmb3IgdnNvY2sgc29ja2V0cy4gSXQgaXNcbiA0ODY6XHRcdCAgbW9zdGx5IGludGVuZGVkIGZvciBkZXZlbG9wZXJzIG9yIHN1cHBvcnQgdG8gZGVidWcgdnNvY2sgaXNzdWVzLiBJZlxuIDQ4NzpcdFx0ICB1bnN1cmUsIHNheSBOLlxuIDQ4ODpcdFxuIDQ4OTpcdGNvbmZpZyBNSElfTkVUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MDYxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTI0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBWUkYgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgaW50ZXJwbGF5IG9mIGBDT05GSUdfTkVUX1ZSRmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBydW4gdGhyb3VnaCB0aGUgdGhyZWUgcG9zc2libGUgc3RhdGVzOiBgQ09ORklHX05FVF9WUkY9bmAsIGBDT05GSUdfTkVUX1ZSRj1tYCwgYW5kIGBDT05GSUdfTkVUX1ZSRj15YC4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGhvdyBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgIGFmZmVjdHMgYG5ldGlmX2lzX2wzX21hc3RlcmAgYW5kIGBuZXRpZl9pc19sM19zbGF2ZWAuCgpJZiBgQ09ORklHX05FVF9WUkY9bmAsIHRob3NlIGZ1bmN0aW9ucyBub3cgcmV0dXJuIGBmYWxzZWAgYXQgY29tcGlsZSB0aW1lLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IG9wdGltaXphdGlvbiBiZWNhdXNlIHRoZSBjb21waWxlciBjYW4gZWxpbWluYXRlIHRoZSBjb25kaXRpb25hbCBjaGVja3MgaW52b2x2aW5nIGBkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVIvU0xBVkVgIGFsdG9nZXRoZXIuIE5vIG1vcmUgcnVudGltZSBjaGVja3MsIHdoaWNoIGlzIGdyZWF0IGZvciBmYXN0IHBhdGhzLiBTaW5jZSBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgIGJlY29tZXMgZmFsc2UsIHRoZSBjb21waWxlciBjYW4gb3B0aW1pemUgdGhlIGNvZGUsIGF2b2lkaW5nIHRoZSBicmFuY2ggYW5kIG1lbW9yeSBsb2FkIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGNoZWNrLgoKSWYgYENPTkZJR19ORVRfVlJGYCBpcyAmIzM5O3kmIzM5OyBvciAmIzM5O20mIzM5OywgYElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpYCB3aWxsIGJlIHRydWUsIG1lYW5pbmcgdGhlIGNvbmRpdGlvbmFsIGAoMSAmYW1wOyZhbXA7IChkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVIpKWAgaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gdGhlIGV4aXN0aW5nIGxvZ2ljLCBzbyBubyBjaGFuZ2UgdGhlcmUuCgpCdXQgZG9lcyB0aGlzIGNoYW5nZSBBTlkga2VybmVsIGJlaGF2aW9yPyBMZXQmIzM5O3MgYmUgbWV0aWN1bG91czoKCiogICAqKkNhc2UgMTogVlJGIEVuYWJsZWQgKGB5YCBvciBgbWApKio6IGBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKWAgaXMgMS4gYG5ldGlmX2lzX2wzX21hc3RlcmAgYmVjb21lcyBgMSAmYW1wOyZhbXA7IChkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVIpYCwgd2hpY2ggaXMganVzdCBgYm9vbChkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVIpYC4gVGhlIHNhbWUgbG9naWMgZXhpc3RzIGZvciBgbmV0aWZfaXNfbDNfc2xhdmVgLiBTbywgYWJzb2x1dGVseSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IgaGVyZS4KCiogICAqKkNhc2UgMjogVlJGIERpc2FibGVkIChgbmApKio6ICBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgIGlzIDAuICBgbmV0aWZfaXNfbDNfbWFzdGVyYCByZXR1cm5zIGBmYWxzZWAgYW5kIGBuZXRpZl9pc19sM19zbGF2ZWAgcmV0dXJucyBgZmFsc2VgLiAgQnV0LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXM6IENvdWxkIGBkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVIvU0xBVkVgICpldmVyKiBiZSBub24temVybyB3aGVuIFZSRiBpcyBkaXNhYmxlZD8KCkkgY2hlY2tlZCBpZiBhbnkgb3RoZXIgcGFydCBvZiB0aGUga2VybmVsIGNvdWxkIHBvdGVudGlhbGx5IHNldCBgSUZGX0wzTURFVl9NQVNURVJgIG9yIGBJRkZfTDNNREVWX1NMQVZFYC4gRG9pbmcgYSBgZ2l0IGdyZXBgIHJldmVhbHMgdGhhdCBPTkxZIGBkcml2ZXJzL25ldC92cmYuY2Agc2V0cyB0aG9zZSBmbGFncy4gSWYgVlJGIGlzIGRpc2FibGVkLCB0aGF0IGVudGlyZSBmaWxlICppc24mIzM5O3QgY29tcGlsZWQqLiBTbywgdGhvc2UgZmxhZ3Mgd291bGQgKm5ldmVyKiBiZSBzZXQuIFRoZXJlZm9yZSwgd2hlbiBWUkYgaXMgZGlzYWJsZWQsIGBkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVJgIHdhcyAqYWx3YXlzKiBlZmZlY3RpdmVseSAwLCByZWdhcmRsZXNzIG9mIHRoaXMgcGF0Y2guCgpTbywgaXQgc2VlbXMgd2UgaGF2ZSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24sIGRlYWQgY29kZSBlbGltaW5hdGlvbiwgYW5kICpubyogY2hhbmdlIGluIGFjdHVhbCBydW50aW1lIGJlaGF2aW9yLiBUaGUgY29kZSBwYXRoIGlzIG5ldmVyIHJlYWNoYWJsZSwgbWFraW5nIGl0IGEgc2FmZSBvcHRpbWl6YXRpb24sIGJ1dCBJIHNob3VsZCBsb29rIGF0IHRoZSBydWxlcyBmb3Igd2hldGhlciBhIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCAqb25seSogY29udGFpbnMgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIFRoaXMgc2VlbXMgbGlrZSBhIHNsYW0gZHVuazogdGhlIHBhdGNoIGlzIHdvcnRoICpub3QqIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0lGRl9MM01ERVYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0yMDU9aW50IGlwdmxhbl9sM3NfcmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIxNC1cdFx0ZGV2LVx1MDAzZWwzbWRldl9vcHMgPSBcdTAwMjZpcHZsX2wzbWRldl9vcHM7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjIxNTpcdFx0ZGV2LVx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0wzTURFVl9SWF9IQU5ETEVSO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMTYtXHR9XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0yMjE9dm9pZCBpcHZsYW5fbDNzX3VucmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIyNi1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MjI3Olx0ZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2PSB+SUZGX0wzTURFVl9SWF9IQU5ETEVSO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMjgtXHRpcHZsYW5fdW5yZWdpc3Rlcl9uZl9ob29rKHJlYWRfcG5ldChcdTAwMjZwb3J0LVx1MDAzZXBuZXQpKTtcbi0tXG5kcml2ZXJzL25ldC92cmYuYz0xMDEyPXN0YXRpYyBpbnQgZG9fdnJmX2FkZF9zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTAyNS1cbmRyaXZlcnMvbmV0L3ZyZi5jOjEwMjY6XHRwb3J0X2Rldi1cdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9MM01ERVZfU0xBVkU7XG5kcml2ZXJzL25ldC92cmYuYy0xMDI3LVx0cmV0ID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfbGluayhwb3J0X2RldiwgZGV2LCBOVUxMLCBOVUxMLCBleHRhY2spO1xuLS1cbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMzUtZXJyOlxuZHJpdmVycy9uZXQvdnJmLmM6MTAzNjpcdHBvcnRfZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2PSB+SUZGX0wzTURFVl9TTEFWRTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMzctXHRzeW5jaHJvbml6ZV9uZXQoKTtcbi0tXG5kcml2ZXJzL25ldC92cmYuYz0xMDU3PXN0YXRpYyBpbnQgZG9fdnJmX2RlbF9zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTA2MC1cdG5ldGRldl91cHBlcl9kZXZfdW5saW5rKHBvcnRfZGV2LCBkZXYpO1xuZHJpdmVycy9uZXQvdnJmLmM6MTA2MTpcdHBvcnRfZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2PSB+SUZGX0wzTURFVl9TTEFWRTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNjItXHQvKiBNYWtlIHN1cmUgdGhhdCBjb25jdXJyZW50IFJDVSByZWFkZXJzIHRoYXQgaWRlbnRpZmllZCB0aGUgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9MTYzNj1zdGF0aWMgaW50IHZyZl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMTY1OC1cbmRyaXZlcnMvbmV0L3ZyZi5jOjE2NTk6XHRkZXYtXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTDNNREVWX01BU1RFUjtcbmRyaXZlcnMvbmV0L3ZyZi5jLTE2NjAtXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xNDU1PXN0cnVjdCBuZXRfZGV2aWNlX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzQ4LSAqXHR1bmRlcmx5aW5nIHN0YWNrZWQgZGV2aWNlc1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzQ5OiAqIEBJRkZfTDNNREVWX01BU1RFUjogZGV2aWNlIGlzIGFuIEwzIG1hc3RlciBkZXZpY2VcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc1MC0gKiBASUZGX05PX1FVRVVFOiBkZXZpY2UgY2FuIHJ1biB3aXRob3V0IHFkaXNjIGF0dGFjaGVkXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTEtICogQElGRl9PUEVOVlNXSVRDSDogZGV2aWNlIGlzIGEgT3BlbiB2U3dpdGNoIG1hc3RlclxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzUyOiAqIEBJRkZfTDNNREVWX1NMQVZFOiBkZXZpY2UgaXMgZW5zbGF2ZWQgdG8gYW4gTDMgbWFzdGVyIGRldmljZVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzUzLSAqIEBJRkZfVEVBTTogZGV2aWNlIGlzIGEgdGVhbSBkZXZpY2Vcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTktICogQElGRl9GQUlMT1ZFUl9TTEFWRTogZGV2aWNlIGlzIGxvd2VyIGRldiBvZiBhIGZhaWxvdmVyIG1hc3RlciBkZXZpY2VcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTc2MDogKiBASUZGX0wzTURFVl9SWF9IQU5ETEVSOiBvbmx5IGludm9rZSB0aGUgcnggaGFuZGxlciBvZiBMMyBtYXN0ZXIgZGV2aWNlXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NjEtICogQElGRl9OT19BRERSQ09ORjogcHJldmVudCBpcHY2IGFkZHJjb25mXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xNzY1PWVudW0gbmV0ZGV2X3ByaXZfZmxhZ3Mge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4My1cdElGRl9YTUlUX0RTVF9SRUxFQVNFX1BFUk1cdD0gMVx1MDAzY1x1MDAzYzE3LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzg0Olx0SUZGX0wzTURFVl9NQVNURVJcdFx0PSAxXHUwMDNjXHUwMDNjMTgsXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3ODUtXHRJRkZfTk9fUVVFVUVcdFx0XHQ9IDFcdTAwM2NcdTAwM2MxOSxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4Ni1cdElGRl9PUEVOVlNXSVRDSFx0XHRcdD0gMVx1MDAzY1x1MDAzYzIwLFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzg3Olx0SUZGX0wzTURFVl9TTEFWRVx0XHQ9IDFcdTAwM2NcdTAwM2MyMSxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4OC1cdElGRl9URUFNXHRcdFx0PSAxXHUwMDNjXHUwMDNjMjIsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzkzLVx0SUZGX0ZBSUxPVkVSX1NMQVZFXHRcdD0gMVx1MDAzY1x1MDAzYzI4LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzk0Olx0SUZGX0wzTURFVl9SWF9IQU5ETEVSXHRcdD0gMVx1MDAzY1x1MDAzYzI5LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzk1LVx0SUZGX05PX0FERFJDT05GXHRcdFx0PSBCSVRfVUxMKDMwKSxcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTU2MDI9c3RhdGljIGlubGluZSBib29sIG5ldGlmX2hhc19sM19yeF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDMte1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjA0Olx0cmV0dXJuIGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1JYX0hBTkRMRVI7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDUtfVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTYwNz1zdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfbWFzdGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDgte1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjA5Olx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpIFx1MDAyNlx1MDAyNiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxMC19XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjEyPXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19zbGF2ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjEzLXtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYxNDpcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSBcdTAwMjZcdTAwMjYgKGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1NMQVZFKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxNS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzcyCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBMM01ERVYgS2NvbmZpZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBMM01ERVYuIExldCYjMzk7cyBkaXZlIHJpZ2h0IGludG8gdGhlIGBuZXQvbDNtZGV2L0tjb25maWdgIGZpbGUuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIHRocm91Z2ggaXQgdG8gZ2V0IGEgZmVlbCBmb3Igd2hhdCBjb25maWd1cmFibGUgZmVhdHVyZXMgYW5kIHNldHRpbmdzIGFyZSBhdmFpbGFibGUuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgYmUgYSB0cmVhc3VyZSB0cm92ZSBvZiBpbmZvcm1hdGlvbiwgcmV2ZWFsaW5nIHRoZSBrbm9icyBhbmQgZGlhbHMgdGhhdCBjb250cm9sIHRoaXMgcGFydCBvZiB0aGUgbmV0d29ya2luZyBzdGFjay4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgY29yZSBvcHRpb25zLCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHN1YnRsZXRpZXMgdGhhdCBtaWdodCBqdW1wIG91dC4gR290dGEgdW5kZXJzdGFuZCB0aGUgYnVpbGRpbmcgYmxvY2tzIGJlZm9yZSBJIGNhbiBwdXQgdG9nZXRoZXIgYW55dGhpbmcgaW50ZXJlc3Rpbmcgd2l0aCBpdC4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9MM19NQVNURVJfREVWJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0PTYwNz10Y3BfbDNtZGV2X2FjY2VwdCAtIEJPT0xFQU5cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdC02MTItXHR3aGljaCB0aGUgcGFja2V0cyBvcmlnaW5hdGVkLiBPbmx5IHZhbGlkIHdoZW4gdGhlIGtlcm5lbCB3YXNcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0OjYxMzpcdGNvbXBpbGVkIHdpdGggQ09ORklHX05FVF9MM19NQVNURVJfREVWLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QtNjE0LVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0PTE0NTQ9dWRwX2wzbWRldl9hY2NlcHQgLSBCT09MRUFOXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QtMTQ1OC1cdG9yaWdpbmF0ZWQuIE9ubHkgdmFsaWQgd2hlbiB0aGUga2VybmVsIHdhcyBjb21waWxlZCB3aXRoXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdDoxNDU5Olx0Q09ORklHX05FVF9MM19NQVNURVJfREVWLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QtMTQ2MC1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdD0xNTE5PXJhd19sM21kZXZfYWNjZXB0IC0gQk9PTEVBTlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0LTE1MjMtXHRvcmlnaW5hdGVkLiBPbmx5IHZhbGlkIHdoZW4gdGhlIGtlcm5lbCB3YXMgY29tcGlsZWQgd2l0aFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3Q6MTUyNDpcdENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVi5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0LTE1MjUtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3Q9Mzc5Nz1sM21kZXZfYWNjZXB0IC0gQk9PTEVBTlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0LTM4MDEtXHRvcmlnaW5hdGVkLiBPbmx5IHZhbGlkIHdoZW4gdGhlIGtlcm5lbCB3YXMgY29tcGlsZWQgd2l0aFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3Q6MzgwMjpcdENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVi5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0LTM4MDMtXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xOTM9Y29uZmlnIElQVkxBTl9MM1Ncbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Ni1cdGRlZl9ib29sIHlcbmRyaXZlcnMvbmV0L0tjb25maWc6MTk3Olx0c2VsZWN0IE5FVF9MM19NQVNURVJfREVWXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5OC1cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ3Mj1jb25maWcgTkVUX1ZSRlxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNDc0LVx0ZGVwZW5kcyBvbiBJUF9NVUxUSVBMRV9UQUJMRVNcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc1Olx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzYtXHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTIHx8IElQVjY9blxuLS1cbmluY2x1ZGUvbGludXgvaXB2Ni5oPTE1Nj1zdHJ1Y3QgaW5ldDZfc2tiX3Bhcm0ge1xuLS1cbmluY2x1ZGUvbGludXgvaXB2Ni5oLTE4My1cbmluY2x1ZGUvbGludXgvaXB2Ni5oOjE4NDojaWYgZGVmaW5lZChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXG5pbmNsdWRlL2xpbnV4L2lwdjYuaC0xODUtc3RhdGljIGlubGluZSBib29sIGlwdjZfbDNtZGV2X3NrYihfX3UxNiBmbGFncylcbi0tXG5pbmNsdWRlL2xpbnV4L2lwdjYuaD0yMTI9c3RhdGljIGlubGluZSBpbnQgaW5ldDZfc2RpZihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuaW5jbHVkZS9saW51eC9pcHY2LmgtMjEzLXtcbmluY2x1ZGUvbGludXgvaXB2Ni5oOjIxNDojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXG5pbmNsdWRlL2xpbnV4L2lwdjYuaC0yMTUtXHRpZiAoc2tiIFx1MDAyNlx1MDAyNiBpcHY2X2wzbWRldl9za2IoSVA2Q0Ioc2tiKS1cdTAwM2VmbGFncykpXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yMTU4PXN0cnVjdCBuZXRfZGV2aWNlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIzMDAtXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKmV0aHRvb2xfb3BzO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyMzAxOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjMwMi1cdGNvbnN0IHN0cnVjdCBsM21kZXZfb3BzXHQqbDNtZGV2X29wcztcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTU2MTc9c3RhdGljIGlubGluZSBpbnQgZGV2X3NkaWYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxOC17XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjU2MTk6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjIwLVx0aWYgKG5ldGlmX2lzX2wzX3NsYXZlKGRldikpXG4tLVxuaW5jbHVkZS9uZXQvZmliX3J1bGVzLmg9MTIxPXN0YXRpYyBpbmxpbmUgdm9pZCBmaWJfcnVsZV9wdXQoc3RydWN0IGZpYl9ydWxlICpydWxlKVxuLS1cbmluY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oLTEyNi1cbmluY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oOjEyNzojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaC0xMjgtc3RhdGljIGlubGluZSB1MzIgZmliX3J1bGVfZ2V0X3RhYmxlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcbi0tXG5pbmNsdWRlL25ldC9ncm8uaD01NTU9c3RhdGljIGlubGluZSB2b2lkIGluZXRfZ2V0X2lpZl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCAqaWlmLCBpbnQgKnNkaWYpXG4tLVxuaW5jbHVkZS9uZXQvZ3JvLmgtNTU5LVxuaW5jbHVkZS9uZXQvZ3JvLmg6NTYwOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcbmluY2x1ZGUvbmV0L2dyby5oLTU2MS1cdGlmIChuZXRpZl9pc19sM19zbGF2ZShza2ItXHUwMDNlZGV2KSkge1xuLS1cbmluY2x1ZGUvbmV0L2dyby5oPTU3Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5ldDZfZ2V0X2lpZl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCAqaWlmLCBpbnQgKnNkaWYpXG4tLVxuaW5jbHVkZS9uZXQvZ3JvLmgtNTgxLVxuaW5jbHVkZS9uZXQvZ3JvLmg6NTgyOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcbmluY2x1ZGUvbmV0L2dyby5oLTU4My1cdGlmIChuZXRpZl9pc19sM19zbGF2ZShza2ItXHUwMDNlZGV2KSkge1xuLS1cbmluY2x1ZGUvbmV0L2luZXRfc29jay5oPTExNT1zdGF0aWMgaW5saW5lIGludCBpbmV0X3JlcXVlc3RfYm91bmRfZGV2X2lmKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbi0tXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaC0xMTgtXHRpbnQgYm91bmRfZGV2X2lmID0gUkVBRF9PTkNFKHNrLVx1MDAzZXNrX2JvdW5kX2Rldl9pZik7XG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaDoxMTk6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxuaW5jbHVkZS9uZXQvaW5ldF9zb2NrLmgtMTIwLVx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuLS1cbmluY2x1ZGUvbmV0L2luZXRfc29jay5oPTEyOT1zdGF0aWMgaW5saW5lIGludCBpbmV0X3NrX2JvdW5kX2wzbWRldihjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaC0xMzAte1xuaW5jbHVkZS9uZXQvaW5ldF9zb2NrLmg6MTMxOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oLTEzMi1cdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcbi0tXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaD0xNTA9c3RhdGljIGlubGluZSBib29sIGluZXRfc2tfYm91bmRfZGV2X2VxKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaC0xNTMte1xuaW5jbHVkZS9uZXQvaW5ldF9zb2NrLmg6MTU0OiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oLTE1NS1cdHJldHVybiBpbmV0X2JvdW5kX2Rldl9lcSghIVJFQURfT05DRShuZXQtXHUwMDNlaXB2NC5zeXNjdGxfdGNwX2wzbWRldl9hY2NlcHQpLFxuLS1cbmluY2x1ZGUvbmV0L2lwLmg9MTExPXN0YXRpYyBpbmxpbmUgaW50IGluZXRfc2RpZihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuaW5jbHVkZS9uZXQvaXAuaC0xMTIte1xuaW5jbHVkZS9uZXQvaXAuaDoxMTM6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxuaW5jbHVkZS9uZXQvaXAuaC0xMTQtXHRpZiAoc2tiIFx1MDAyNlx1MDAyNiBpcHY0X2wzbWRldl9za2IoSVBDQihza2IpLVx1MDAzZWZsYWdzKSlcbi0tXG5pbmNsdWRlL25ldC9sM21kZXYuaD0zNT1zdHJ1Y3QgbDNtZGV2X29wcyB7XG4tLVxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtNDctXG5pbmNsdWRlL25ldC9sM21kZXYuaDo0ODojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5pbmNsdWRlL25ldC9sM21kZXYuaC00OS1cbi0tXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0Lmg9NTU9c3RydWN0IG5ldG5zX2lwdjQge1xuLS1cbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaC0xNzAtXHR1MzIgc3lzY3RsX2lwX2xvY2FsX3BvcnRfc3RlcF93aWR0aDtcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaDoxNzE6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oLTE3Mi1cdHU4IHN5c2N0bF9yYXdfbDNtZGV2X2FjY2VwdDtcbi0tXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0LmgtMjU1LVxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oOjI1NjojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0LmgtMjU3LVx0dTggc3lzY3RsX3VkcF9sM21kZXZfYWNjZXB0O1xuLS1cbmluY2x1ZGUvbmV0L25ldG5zL3NjdHAuaD0xMz1zdHJ1Y3QgbmV0bnNfc2N0cCB7XG4tLVxuaW5jbHVkZS9uZXQvbmV0bnMvc2N0cC5oLTE3OC1cbmluY2x1ZGUvbmV0L25ldG5zL3NjdHAuaDoxNzk6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxuaW5jbHVkZS9uZXQvbmV0bnMvc2N0cC5oLTE4MC1cdGludCBsM21kZXZfYWNjZXB0O1xuLS1cbmluY2x1ZGUvbmV0L3Jhdy5oPTg5PXN0YXRpYyBpbmxpbmUgYm9vbCByYXdfc2tfYm91bmRfZGV2X2VxKHN0cnVjdCBuZXQgKm5ldCwgaW50IGJvdW5kX2Rldl9pZixcbi0tXG5pbmNsdWRlL25ldC9yYXcuaC05MS17XG5pbmNsdWRlL25ldC9yYXcuaDo5MjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXG5pbmNsdWRlL25ldC9yYXcuaC05My1cdHJldHVybiBpbmV0X2JvdW5kX2Rldl9lcShSRUFEX09OQ0UobmV0LVx1MDAzZWlwdjQuc3lzY3RsX3Jhd19sM21kZXZfYWNjZXB0KSxcbi0tXG5pbmNsdWRlL25ldC90Y3AuaD0xMTc5PXN0YXRpYyBpbmxpbmUgaW50IHRjcF92Nl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL25ldC90Y3AuaC0xMTgwLXtcbmluY2x1ZGUvbmV0L3RjcC5oOjExODE6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxuaW5jbHVkZS9uZXQvdGNwLmgtMTE4Mi1cdGlmIChza2IgXHUwMDI2XHUwMDI2IGlwdjZfbDNtZGV2X3NrYihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlaGVhZGVyLmg2LmZsYWdzKSlcbi0tXG5pbmNsdWRlL25ldC90Y3AuaD0xMTk1PXN0YXRpYyBpbmxpbmUgaW50IHRjcF92NF9zZGlmKHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL25ldC90Y3AuaC0xMTk2LXtcbmluY2x1ZGUvbmV0L3RjcC5oOjExOTc6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxuaW5jbHVkZS9uZXQvdGNwLmgtMTE5OC1cdGlmIChza2IgXHUwMDI2XHUwMDI2IGlwdjRfbDNtZGV2X3NrYihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlaGVhZGVyLmg0LmZsYWdzKSlcbi0tXG5pbmNsdWRlL25ldC91ZHAuaD0zODU9c3RhdGljIGlubGluZSBib29sIHVkcF9za19ib3VuZF9kZXZfZXEoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgYm91bmRfZGV2X2lmLFxuLS1cbmluY2x1ZGUvbmV0L3VkcC5oLTM4Ny17XG5pbmNsdWRlL25ldC91ZHAuaDozODg6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxuaW5jbHVkZS9uZXQvdWRwLmgtMzg5LVx0cmV0dXJuIGluZXRfYm91bmRfZGV2X2VxKCEhUkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnN5c2N0bF91ZHBfbDNtZGV2X2FjY2VwdCksXG4tLVxubmV0L01ha2VmaWxlPTY5PW9iai0kKENPTkZJR19ORVRfU1dJVENIREVWKVx0JiM0Mzs9IHN3aXRjaGRldi9cbm5ldC9NYWtlZmlsZTo3MDpvYmotJChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXHQmIzQzOz0gbDNtZGV2L1xubmV0L01ha2VmaWxlLTcxLW9iai0kKENPTkZJR19RUlRSKVx0XHQmIzQzOz0gcXJ0ci9cbi0tXG5uZXQvY29yZS9maWJfcnVsZXMuYz00Mzk9c3RhdGljIHN0cnVjdCBmaWJfcnVsZSAqcnVsZV9maW5kKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXG4tLVxubmV0L2NvcmUvZmliX3J1bGVzLmMtNTE5LVxubmV0L2NvcmUvZmliX3J1bGVzLmM6NTIwOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTUyMS1zdGF0aWMgaW50IGZpYl9ubDJydWxlX2wzbWRldihzdHJ1Y3QgbmxhdHRyICpubGEsIHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLFxuLS1cbm5ldC9pcHY0L3Jhdy5jPTExMTY9c3RhdGljIHZvaWQgcmF3X3N5c2N0bF9pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvaXB2NC9yYXcuYy0xMTE3LXtcbm5ldC9pcHY0L3Jhdy5jOjExMTg6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxubmV0L2lwdjQvcmF3LmMtMTExOS1cdG5ldC1cdTAwM2VpcHY0LnN5c2N0bF9yYXdfbDNtZGV2X2FjY2VwdCA9IDE7XG4tLVxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM9NjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7XG4tLVxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtNzI1LVx0fSxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjcyNjojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYy03MjctXHR7XG4tLVxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtODkyLVx0fSxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjg5MzojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYy04OTQtXHR7XG4tLVxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMTE5NS1cdH0sXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYzoxMTk2OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTExOTctXHR7XG4tLVxubmV0L2lwdjQvdWRwLmM9MzY5OT1zdGF0aWMgdm9pZCBfX25ldF9pbml0IHVkcF9zeXNjdGxfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjQvdWRwLmMtMzcwMy1cbm5ldC9pcHY0L3VkcC5jOjM3MDQ6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxubmV0L2lwdjQvdWRwLmMtMzcwNS1cdG5ldC1cdTAwM2VpcHY0LnN5c2N0bF91ZHBfbDNtZGV2X2FjY2VwdCA9IDA7XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE4Nz1zdHJ1Y3Qgc2VnNl9sb2NhbF9sd3Qge1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xOTUtXHRzdHJ1Y3QgYnBmX2x3dF9wcm9nIGJwZjtcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxOTY6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE5Ny1cdHN0cnVjdCBzZWc2X2VuZF9kdF9pbmZvIGR0X2luZm87XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTk5OD1zdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHg0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEwMjEtXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTAyMjojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTAyMy1zdGF0aWMgc3RydWN0IG5ldCAqZmliNl9jb25maWdfZ2V0X25ldChjb25zdCBzdHJ1Y3QgZmliNl9jb25maWcgKmZpYjZfY2ZnKVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xMjc0PXN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDYoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTI4Mi1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMjgzOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMjg0LVx0aWYgKHNlZzZfZW5kX2R0Nl9nZXRfbW9kZShzbHd0KSA9PSBEVF9MRUdBQ1lfTU9ERSlcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTMxNS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzE2OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzE3LXN0YXRpYyBpbnQgc2VnNl9lbmRfZHQ0Nl9idWlsZChzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QsIGNvbnN0IHZvaWQgKmNmZyxcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM9MTQ4Nz1zdGF0aWMgc3RydWN0IHNlZzZfYWN0aW9uX2Rlc2Mgc2VnNl9hY3Rpb25fdGFibGVbXSA9IHtcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUzMC1cdFx0Lm9wdGF0dHJzXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTMxOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTMyLVx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUzOS1cdFx0LmFjdGlvblx0XHQ9IFNFRzZfTE9DQUxfQUNUSU9OX0VORF9EVDYsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTU0MDojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU0MS1cdFx0LmF0dHJzXHRcdD0gMCxcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU1Ny1cdFx0Lm9wdGF0dHJzXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTU4OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTU5LVx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NDYsXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE3NTk9c2VnNl9lbmRfZHRfaW5mbyAqc2VnNl9wb3NzaWJsZV9lbmRfZHRfaW5mbyhzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QpXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTc2MC17XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTc2MTojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTc2Mi1cdHJldHVybiBcdTAwMjZzbHd0LVx1MDAzZWR0X2luZm87XG4tLVxubmV0L2wzbWRldi9LY29uZmlnLTUtXG5uZXQvbDNtZGV2L0tjb25maWc6Njpjb25maWcgTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9sM21kZXYvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtMMyBNYXN0ZXIgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90by5jPTEyND1zdGF0aWMgYm9vbCBpbl92cmZfcG9zdHJvdXRpbmcoY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYy0xMjUte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYzoxMjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYy0xMjctXHRpZiAoc3RhdGUtXHUwMDNlaG9vayA9PSBORl9JTkVUX1BPU1RfUk9VVElORyBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmM9ODgxPXN0YXRpYyBib29sIGluX3ZyZl9wb3N0cm91dGluZyhjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtODgyLXtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYzo4ODM6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTg4NC1cdGlmIChzdGF0ZS1cdTAwM2Vob29rID09IE5GX0lORVRfUE9TVF9ST1VUSU5HIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9zY3RwL2lucHV0LmM9OTg0PWJvb2wgc2N0cF9za19ib3VuZF9kZXZfZXEoc3RydWN0IG5ldCAqbmV0LCBpbnQgYm91bmRfZGV2X2lmLCBpbnQgZGlmLCBpbnQgc2RpZilcbi0tXG5uZXQvc2N0cC9pbnB1dC5jLTk4Ny1cbm5ldC9zY3RwL2lucHV0LmM6OTg4OiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcbm5ldC9zY3RwL2lucHV0LmMtOTg5LVx0bDNtZGV2X2FjY2VwdCA9ICEhUkVBRF9PTkNFKG5ldC1cdTAwM2VzY3RwLmwzbWRldl9hY2NlcHQpO1xuLS1cbm5ldC9zY3RwL3Byb3RvY29sLmM9MTI4OT1zdGF0aWMgaW50IF9fbmV0X2luaXQgc2N0cF9kZWZhdWx0c19pbml0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvc2N0cC9wcm90b2NvbC5jLTEzODEtXG5uZXQvc2N0cC9wcm90b2NvbC5jOjEzODI6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxubmV0L3NjdHAvcHJvdG9jb2wuYy0xMzgzLVx0bmV0LVx1MDAzZXNjdHAubDNtZGV2X2FjY2VwdCA9IDE7XG4tLVxubmV0L3NjdHAvc3lzY3RsLmM9OTU9c3RhdGljIGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgc2N0cF9uZXRfdGFibGVbXSA9IHtcbi0tXG5uZXQvc2N0cC9zeXNjdGwuYy0zNTctXHR9LFxubmV0L3NjdHAvc3lzY3RsLmM6MzU4OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9zY3RwL3N5c2N0bC5jLTM1OS1cdHtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw9NDk9Q09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9CUEY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsOjUwOkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtNTEtQ09ORklHX05FVF9WUkY9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2ND00ND1DT05GSUdfTkVUX0FDVF9CUEY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjQ1OkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQtNDYtQ09ORklHX05FVF9WUkY9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTE0MD1DT05GSUdfTkVUX0lQR1JFX0JST0FEQ0FTVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NDoxNDE6Q09ORklHX05FVF9MM19NQVNURVJfREVWPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0LTE0Mi1DT05GSUdfTkVUX1NDSF9ERUZBVUxUPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC92aXJ0aW9fbmV0L2NvbmZpZz00PUNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC92aXJ0aW9fbmV0L2NvbmZpZzo1OkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC92aXJ0aW9fbmV0L2NvbmZpZy02LUNPTkZJR19ORVRfVlJGPW1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbj0xNDg9Q09ORklHX05FVF9JUEdSRV9CUk9BRENBU1Q9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb246MTQ5OkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbi0xNTAtQ09ORklHX05FVExBQkVMPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTk2PUNPTkZJR19ORVRLSVQ9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZzo5NzpDT05GSUdfTkVUX0wzX01BU1RFUl9ERVY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZy05OC1DT05GSUdfTkVUX05TPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm9yd2FyZGluZy9jb25maWc9Mzg9Q09ORklHX05FVF9JUElQPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZzozOTpDT05GSUdfTkVUX0wzX01BU1RFUl9ERVY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnLTQwLUNPTkZJR19ORVRfTlM9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXRmaWx0ZXIvY29uZmlnPTU3PUNPTkZJR19ORVRfSVBJUD1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzo1ODpDT05GSUdfTkVUX0wzX01BU1RFUl9ERVY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldGZpbHRlci9jb25maWctNTktQ09ORklHX05FVF9OUz15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3RjcF9hby9jb25maWc9Mj1DT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3RjcF9hby9jb25maWc6MzpDT05GSUdfTkVUX0wzX01BU1RFUl9ERVY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3RjcF9hby9jb25maWctNC1DT05GSUdfTkVUX1ZSRj15XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0ODc2CgkJCQkJCQlvdXRwdXQ6IDE0MwoJCQkJCQkJdGhvdWdodHM6IDEwODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFByb3Bvc2VkIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCBgQ09ORklHX05FVF9MM19NQVNURVJfREVWYCBjYW4gYmUgZW5hYmxlZCBpbmRlcGVuZGVudGx5IG9mIGBDT05GSUdfTkVUX1ZSRmAsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBwb2ludCB0byBjb25zaWRlci4gU3BlY2lmaWNhbGx5LCBgQ09ORklHX0lQVkxBTl9MM1NgIHNlbGVjdHMgYENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAuIFRoaXMgcmFpc2VzIGEgcXVlc3Rpb246IHdoZW4gYENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAgaXMgeWVzIGFuZCBgQ09ORklHX05FVF9WUkZgIGlzIG5vLCB3aGF0IGhhcHBlbnM/CgpGdXJ0aGVyIGluc3BlY3Rpb24gcmV2ZWFscyB0aGF0IGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jYCAqZG9lcyogdXNlIGBJRkZfTDNNREVWX1JYX0hBTkRMRVJgLCBidXQgaXQgKmRvZXNuJiMzOTt0KiB1c2UgYElGRl9MM01ERVZfTUFTVEVSYCBvciBgSUZGX0wzTURFVl9TTEFWRWAuIFRoZSBWUkYgZHJpdmVyIGlzIHRoZSAqc29sZSogdXNlciBvZiB0aG9zZSBmbGFncy4gVGh1cywgaWYgYENPTkZJR19ORVRfVlJGYCBpc24mIzM5O3QgZW5hYmxlZCwgbm8gbmV0IGRldmljZSB3aWxsIGV2ZXIgaGF2ZSBgZGV2LSZndDtwcml2X2ZsYWdzICZhbXA7IElGRl9MM01ERVZfTUFTVEVSYCBvciBgZGV2LSZndDtwcml2X2ZsYWdzICZhbXA7IElGRl9MM01ERVZfU0xBVkVgIHNldC4gQ29uc2VxdWVudGx5LCBgbmV0aWZfaXNfbDNfbWFzdGVyKGRldilgIGFuZCBgbmV0aWZfaXNfbDNfc2xhdmUoZGV2KWAgd291bGQgZXZhbHVhdGUgdG8gZmFsc2UgYXQgcnVudGltZSBpbiBzdWNoIGEgc2NlbmFyaW8uIFRoZSBwcm9wb3NlZCBjaGFuZ2UsIHVzaW5nIGBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKWAsIHNpbXBseSBtYWtlcyB0aGF0IGV2YWx1YXRpb24gaGFwcGVuIGF0IGNvbXBpbGUgdGltZSB3aGVuIGBDT05GSUdfTkVUX1ZSRmAgaXMgJiMzOTtuJiMzOTssIGFuZCBsZWF2ZXMgdGhlIHNhbWUgcnVudGltZSBjaGVjayBpbiBwbGFjZSB3aGVuIFZSRiBpcyBlbmFibGVkLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHBsYWNlcyB3aGVyZSB0aGVzZSBmbGFncyBhcmUgc2V0LiBTbywgSSBuZWVkIHRvIGNoZWNrIHRoZSBlbnRpcmUgdHJlZS4gQSBxdWljayBzZWFyY2ggY29uZmlybXMgdGhhdCBgSUZGX0wzTURFVl9NQVNURVJgIGFuZCBgSUZGX0wzTURFVl9TTEFWRWAgYXJlIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhgIChhbG9uZyB3aXRoIHRoZSBoZWxwZXIgZnVuY3Rpb25zKSwgYW5kIHNldC91bnNldCBpbiBgZHJpdmVycy9uZXQvdnJmLmNgLiBObyBvdGhlciBjb2RlIHBhdGhzIG1vZGlmeSB0aGVzZSBmbGFncy4KClRoZXJlZm9yZSwgdGhlIGV4cHJlc3Npb25zIGBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSAmYW1wOyZhbXA7IChkZXYtJmd0O3ByaXZfZmxhZ3MgJmFtcDsgSUZGX0wzTURFVl9NQVNURVIpYCBhbmQgYGRldi0mZ3Q7cHJpdl9mbGFncyAmYW1wOyBJRkZfTDNNREVWX01BU1RFUmAgYXJlIDEwMCUgc2VtYW50aWNhbGx5IGlkZW50aWNhbC4gVGhlIHByb3Bvc2VkIGNoYW5nZSBvbmx5IGRpZmZlcnMgYnkgZW5hYmxpbmcgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbiB3aGVuIGBDT05GSUdfTkVUX1ZSRmAgaXMgZGlzYWJsZWQuCgpOb3csIGxldCYjMzk7cyBhcHBseSB0aGUgV29ydGhGdXp6aW5nIGNyaXRlcmlhLiBUaGUgcGF0Y2ggbW9kaWZpZXMgRG9jdW1lbnRhdGlvbi8gb3IgS2NvbmZpZyBmaWxlcywgY29kZSBjb21tZW50cywgbG9nZ2luZyBvciB0cmFjZXBvaW50cy4gSXQgYWxzbyBhbHRlcnMgbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4gSXQgZG9lc24mIzM5O3QgdG91Y2ggdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbm9yIGRvZXMgaXQgdG91Y2ggY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyBvciB0aGUgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzLiBUaGlzIHBhdGNoIGlzIGVzc2VudGlhbGx5IGEgbm9uLWZ1bmN0aW9uYWwgb3B0aW1pemF0aW9uIHRvIGhlbHBlciBmdW5jdGlvbnMuIEl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGxvZ2ljLCBub3IgZG9lcyBpdCBhZmZlY3QgZXhlY3V0aW9uIGZsb3cgb3IgcnVudGltZSBiZWhhdmlvciBpbiBhbnkga2VybmVsIGNvbmZpZ3VyYXRpb24uCgpUaGUgcmVzdWx0IGlzOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgYXJyYXlzIGFyZSBlbXB0eS4gVGhlIHJlYXNvbmluZywgd2hpY2ggSSB3aWxsIHN1bW1hcml6ZSBmb3IgdGhlIGZpbmFsIHN0ZXAsIGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGhlbHBlciBmdW5jdGlvbnMgdG8gZ3VhcmQgZmxhZyBjaGVja3MsIGFuZCB0aGVzZSBmbGFncyBhcmUgZXhjbHVzaXZlbHkgc2V0IGJ5IHRoZSBWUkYgZHJpdmVyLiBUaGlzIGlzIHB1cmVseSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24gd2hlbiBWUkYgaXMgZGlzYWJsZWQsIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXJpbmcgcnVudGltZSBiZWhhdmlvci4KClNvIGxldCYjMzk7cyBmaW5hbGl6ZSB0aGUgYHNldC1yZXN1bHRzYDoKLSBXb3J0aEZ1enppbmc6IGZhbHNlCi0gRm9jdXNTeW1ib2xzOiBbXQotIEVuYWJsZUNvbmZpZ3M6IFtdCi0gUmVhc29uaW5nOiBUaGUgcGF0Y2ggbW9kaWZpZXMgYG5ldGlmX2lzX2wzX21hc3RlcigpYCBhbmQgYG5ldGlmX2lzX2wzX3NsYXZlKClgIGluIGBpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oYCB0byBndWFyZCB0aGUgZmxhZyBjaGVja3Mgd2l0aCBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgLiBCZWNhdXNlIHRoZSBgSUZGX0wzTURFVl9NQVNURVJgIGFuZCBgSUZGX0wzTURFVl9TTEFWRWAgZmxhZ3MgYXJlIGV4Y2x1c2l2ZWx5IHNldCBieSB0aGUgVlJGIGRyaXZlciAoYGRyaXZlcnMvbmV0L3ZyZi5jYCksIHRoaXMgY2hhbmdlIGlzIHB1cmVseSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24gd2hlbiBgQ09ORklHX05FVF9WUkZgIGlzIGRpc2FibGVkIGFuZCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGJlaGF2aW9yIGluIGFueSBrZXJuZWwgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIG5ldGlmX2lzX2wzX21hc3RlcigpIGFuZCBuZXRpZl9pc19sM19zbGF2ZSgpIGluIGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmggdG8gaW5jbHVkZSBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKS4gQmVjYXVzZSBJRkZfTDNNREVWX01BU1RFUiBhbmQgSUZGX0wzTURFVl9TTEFWRSBmbGFncyBhcmUgZXhjbHVzaXZlbHkgbWFuaXB1bGF0ZWQgYnkgZHJpdmVycy9uZXQvdnJmLmMsIHRoaXMgY2hhbmdlIGlzIHB1cmVseSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24gd2hlbiBDT05GSUdfTkVUX1ZSRiBpcyBkaXNhYmxlZCBhbmQgZG9lcyBub3QgYWx0ZXIgcnVudGltZSBiZWhhdmlvciBvciBleGVjdXRpb24gZmxvdyB1bmRlciBhbnkgY29uZmlndXJhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgbmV0aWZfaXNfbDNfbWFzdGVyKCkgYW5kIG5ldGlmX2lzX2wzX3NsYXZlKCkgaW4gaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCB0byBpbmNsdWRlIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpLiBCZWNhdXNlIElGRl9MM01ERVZfTUFTVEVSIGFuZCBJRkZfTDNNREVWX1NMQVZFIGZsYWdzIGFyZSBleGNsdXNpdmVseSBtYW5pcHVsYXRlZCBieSBkcml2ZXJzL25ldC92cmYuYywgdGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbiB3aGVuIENPTkZJR19ORVRfVlJGIGlzIGRpc2FibGVkIGFuZCBkb2VzIG5vdCBhbHRlciBydW50aW1lIGJlaGF2aW9yIG9yIGV4ZWN1dGlvbiBmbG93IHVuZGVyIGFueSBjb25maWd1cmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDA6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAwOjUxOjUwLjU4MDI5NTgxN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDE0NDU0NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBuZXRpZl9pc19sM19tYXN0ZXIoKSBhbmQgbmV0aWZfaXNfbDNfc2xhdmUoKSBpbiBpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIHRvIGluY2x1ZGUgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikuIEJlY2F1c2UgSUZGX0wzTURFVl9NQVNURVIgYW5kIElGRl9MM01ERVZfU0xBVkUgZmxhZ3MgYXJlIGV4Y2x1c2l2ZWx5IG1hbmlwdWxhdGVkIGJ5IGRyaXZlcnMvbmV0L3ZyZi5jLCB0aGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9uIHdoZW4gQ09ORklHX05FVF9WUkYgaXMgZGlzYWJsZWQgYW5kIGRvZXMgbm90IGFsdGVyIHJ1bnRpbWUgYmVoYXZpb3Igb3IgZXhlY3V0aW9uIGZsb3cgdW5kZXIgYW55IGNvbmZpZ3VyYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMDo1MTo1MC41ODAzMDE2MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDUzMTYyMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3YWRkYzU2MzZjYjY0ZjAyOWUwODE2YzljZjYwMDNiNmJmM2JiZmE4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDEgMDA6NTE6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG5pbmRleCA4N2NhZmM5MzJlOWU2Li44NDU0NjQ2ZDZhNDU0IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXFxuQEAgLTU2MDYsMTIgKzU2MDYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIG5ldGlmX2hhc19sM19yeF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBzdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfbWFzdGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0cmV0dXJuIGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSO1xcbitcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikgXFx1MDAyNlxcdTAwMjYgKGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKTtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBib29sIG5ldGlmX2lzX2wzX3NsYXZlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0cmV0dXJuIGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9MM01ERVZfU0xBVkU7XFxuK1xcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSBcXHUwMDI2XFx1MDAyNiAoZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjYgSUZGX0wzTURFVl9TTEFWRSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgaW50IGRldl9zZGlmKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAwOjUxOjUyLjA4NjU3NTY0M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTk1MDgxNTY0MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgbmV0aWZfaXNfbDNfbWFzdGVyKCkgYW5kIG5ldGlmX2lzX2wzX3NsYXZlKCkgaW4gaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCB0byBpbmNsdWRlIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpLiBCZWNhdXNlIElGRl9MM01ERVZfTUFTVEVSIGFuZCBJRkZfTDNNREVWX1NMQVZFIGZsYWdzIGFyZSBleGNsdXNpdmVseSBtYW5pcHVsYXRlZCBieSBkcml2ZXJzL25ldC92cmYuYywgdGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbiB3aGVuIENPTkZJR19ORVRfVlJGIGlzIGRpc2FibGVkIGFuZCBkb2VzIG5vdCBhbHRlciBydW50aW1lIGJlaGF2aW9yIG9yIGV4ZWN1dGlvbiBmbG93IHVuZGVyIGFueSBjb25maWd1cmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2FkZGM1NjM2Y2I2NGYwMjllMDgxNmM5Y2Y2MDAzYjZiZjNiYmZhOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDA6NTE6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxuaW5kZXggODdjYWZjOTMyZTllNi4uODQ1NDY0NmQ2YTQ1NCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbkBAIC01NjA2LDEyICs1NjA2LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9oYXNfbDNfcnhfaGFuZGxlcihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19tYXN0ZXIoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4tXHRyZXR1cm4gZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSO1xuK1x0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpIFx1MDAyNlx1MDAyNiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBib29sIG5ldGlmX2lzX2wzX3NsYXZlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0cmV0dXJuIGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1NMQVZFO1xuK1x0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpIFx1MDAyNlx1MDAyNiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfU0xBVkUpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGludCBkZXZfc2RpZihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTE6NTIuMDg2NTc4NTIzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTgxNTYzMDQyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERldmljZSBDaGFuZ2UqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gSXQgbG9va3MgbGlrZSB3ZSdyZSBtb2RpZnlpbmcgYGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2VzIGFyZSB0YXJnZXRpbmcgdGhlIGBuZXRpZl9pc19sM19tYXN0ZXJgIGFuZCBgbmV0aWZfaXNfbDNfc2xhdmVgIGlubGluZSBmdW5jdGlvbnMuIEl0IGFwcGVhcnMgdGhleSBhcmUgYWRkaW5nIGEgcHJlLWNvbmRpdGlvbiwgb25seSBlbmFibGluZyB0aGUgZnVuY3Rpb25hbGl0eSBpZiBgQ09ORklHX05FVF9WUkZgIGlzIGVuYWJsZWQuIEl0J3MgYSBjbGVhbiBhbmQgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgZWZmZWN0aXZlbHkgZ2F0aW5nIHRoZSBMMyBtYXN0ZXIvc2xhdmUgZnVuY3Rpb25hbGl0eSBiZWhpbmQgdGhhdCBWUkYgY29uZmlndXJhdGlvbiBvcHRpb24uXG5cbk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gV2hlcmUgYXJlIHRoZXNlIGZ1bmN0aW9ucyB1c2VkIHRocm91Z2hvdXQgdGhlIGtlcm5lbD8gV2hhdCBtb2R1bGVzIG9yIGZlYXR1cmVzIGRlcGVuZCBvbiB0aGlzIGBJRkZfTDNNREVWX01BU1RFUmAgYW5kIGBJRkZfTDNNREVWX1NMQVZFYCBsb2dpYz8gVGltZSB0byBmaXJlIHVwIGBncmVwcGVyYCBhbmQgZG8gc29tZSBpbnZlc3RpZ2F0aW9uIHRvIHNlZSB3aGVyZSB0aGlzIGlzIHV0aWxpemVkLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgY29uZGl0aW9uYWwgbG9naWMgY2hhbmdlIGJlZm9yZSBnaXZpbmcgdGhpcyBhIG1vcmUgdGhvcm91Z2ggcmV2aWV3LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTc0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTE6NTcuOTAyMjExNTAxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTgwMDQ5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0aWZfaXNfbDNfKG1hc3RlcnxzbGF2ZSlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9tYWluLmM9MzYxPXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqaXBvaWJfZ2V0X21hc3Rlcl9uZXRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYy0zNjctXFx0bWFzdGVyID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfZ2V0X3JjdShkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfbWFpbi5jOjM2ODpcXHRpZiAoIW1hc3RlciB8fCBuZXRpZl9pc19sM19tYXN0ZXIobWFzdGVyKSlcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYy0zNjktXFx0XFx0bWFzdGVyID0gZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYz00NzE0PXN0YXRpYyBpbnQgbWx4c3dfc3BfbmV0ZGV2aWNlX3BvcnRfdXBwZXJfZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmxvd2VyX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNDczOS1cXHRcXHQgICAgIW5ldGlmX2lzX21hY3ZsYW4odXBwZXJfZGV2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NDc0MDpcXHRcXHQgICAgIW5ldGlmX2lzX2wzX21hc3Rlcih1cHBlcl9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy00NzQxLVxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jPTQ5NTY9c3RhdGljIGludCBtbHhzd19zcF9uZXRkZXZpY2VfcG9ydF92bGFuX2V2ZW50KHN0cnVjdCBuZXRfZGV2aWNlICp2bGFuX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNDk3NC1cXHRcXHQgICAgIW5ldGlmX2lzX21hY3ZsYW4odXBwZXJfZGV2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NDk3NTpcXHRcXHQgICAgIW5ldGlmX2lzX2wzX21hc3Rlcih1cHBlcl9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy00OTc2LVxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jPTUwNDY9c3RhdGljIGludCBtbHhzd19zcF9uZXRkZXZpY2VfYnJpZGdlX3ZsYW5fZXZlbnQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTA2NC1cXHRcXHRpZiAoIW5ldGlmX2lzX21hY3ZsYW4odXBwZXJfZGV2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NTA2NTpcXHRcXHQgICAgIW5ldGlmX2lzX2wzX21hc3Rlcih1cHBlcl9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MDY2LVxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jPTUxMDc9c3RhdGljIGludCBtbHhzd19zcF9uZXRkZXZpY2VfYnJpZGdlX2V2ZW50KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3AsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUxMjYtXFx0XFx0ICAgICFuZXRpZl9pc19tYWN2bGFuKHVwcGVyX2RldikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jOjUxMjc6XFx0XFx0ICAgICFuZXRpZl9pc19sM19tYXN0ZXIodXBwZXJfZGV2KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTEyOC1cXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiVW5rbm93biB1cHBlciBkZXZpY2UgdHlwZVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYz01MTYwPXN0YXRpYyBpbnQgbWx4c3dfc3BfbmV0ZGV2aWNlX21hY3ZsYW5fZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKm1hY3ZsYW5fZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NTE3NDpcXHRpZiAoIW5ldGlmX2lzX2wzX21hc3Rlcih1cHBlcl9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MTc1LVxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJVbmtub3duIHVwcGVyIGRldmljZSB0eXBlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz0xOTY4PXN0YXRpYyBpbnQgbWx4c3dfc3BfbmV0ZGV2aWNlX2lwaXBfb2xfZXZlbnQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTE5OTItXFx0XFx0ZXh0YWNrID0gaW5mby1cXHUwMDNlZXh0YWNrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjE5OTM6XFx0XFx0aWYgKG5ldGlmX2lzX2wzX21hc3RlcihjaHVwLVxcdTAwM2V1cHBlcl9kZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTE5OTQtXFx0XFx0XFx0ZXJyID0gbWx4c3dfc3BfbmV0ZGV2aWNlX2lwaXBfb2xfdnJmX2V2ZW50KG1seHN3X3NwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM9MjAxMT1fX21seHN3X3NwX25ldGRldmljZV9pcGlwX3VsX2V2ZW50KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3AsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yMDI0LVxcdFxcdGV4dGFjayA9IGluZm8tXFx1MDAzZWV4dGFjaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzoyMDI1OlxcdFxcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoY2h1cC1cXHUwMDNldXBwZXJfZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yMDI2LVxcdFxcdFxcdHJldHVybiBtbHhzd19zcF9uZXRkZXZpY2VfaXBpcF91bF92cmZfZXZlbnQobWx4c3dfc3AsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz04MjYyPW1seHN3X3NwX3JpZl9zaG91bGRfY29uZmlnKHN0cnVjdCBtbHhzd19zcF9yaWYgKnJpZiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTgyNzktXFx0XFx0aWYgKHJpZiBcXHUwMDI2XFx1MDAyNiBhZGRyX2xpc3RfZW1wdHkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzo4MjgwOlxcdFxcdCAgICAhbmV0aWZfaXNfbDNfc2xhdmUobWx4c3dfc3BfcmlmX2RldihyaWYpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy04MjgxLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM9OTc0Mj1zdGF0aWMgYm9vbCBtbHhzd19zcF9yb3V0ZXJfbmV0ZGV2aWNlX2ludGVyZXN0aW5nKHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3AsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy05NzUwLVxcdCAgICBtbHhzd19zcF9uZXRkZXZfaXNfaXBpcF9vbChtbHhzd19zcCwgZGV2KSB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjk3NTE6XFx0ICAgIG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTk3NTItXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz05OTY3PXN0YXRpYyBib29sIG1seHN3X3NwX2lzX3ZyZl9ldmVudCh1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy05OTcyLVxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzo5OTczOlxcdHJldHVybiBuZXRpZl9pc19sM19tYXN0ZXIoaW5mby1cXHUwMDNldXBwZXJfZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy05OTc0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jPTEwNDE9c3RhdGljIGludCB2cmZfYWRkX3NsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpwb3J0X2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNDMte1xcbmRyaXZlcnMvbmV0L3ZyZi5jOjEwNDQ6XFx0aWYgKG5ldGlmX2lzX2wzX21hc3Rlcihwb3J0X2RldikpIHtcXG5kcml2ZXJzL25ldC92cmYuYy0xMDQ1LVxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNDktXFxuZHJpdmVycy9uZXQvdnJmLmM6MTA1MDpcXHRpZiAobmV0aWZfaXNfbDNfc2xhdmUocG9ydF9kZXYpKVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNTEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYz0xNzQ4PXN0YXRpYyBpbnQgdnJmX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTE3NTYtXFxuZHJpdmVycy9uZXQvdnJmLmM6MTc1NzpcXHRcXHRpZiAoIW5ldGlmX2lzX2wzX3NsYXZlKGRldikpXFxuZHJpdmVycy9uZXQvdnJmLmMtMTc1OC1cXHRcXHRcXHRnb3RvIG91dDtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTYwMj1zdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaGFzX2wzX3J4X2hhbmRsZXIoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYwNi1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjU2MDc6c3RhdGljIGlubGluZSBib29sIG5ldGlmX2lzX2wzX21hc3Rlcihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYwOC17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MTEtXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjEyOnN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19zbGF2ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxMy17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTU2MTc9c3RhdGljIGlubGluZSBpbnQgZGV2X3NkaWYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxOS0jaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjIwOlxcdGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYyMS1cXHRcXHRyZXR1cm4gZGV2LVxcdTAwM2VpZmluZGV4O1xcbi0tXFxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaD0zNjk9c3RhdGljIGlubGluZSBzdHJ1Y3QgaW5ldDZfZGV2ICpfX2luNl9kZXZfc3RhdHNfZ2V0KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5pbmNsdWRlL25ldC9hZGRyY29uZi5oLTM3MS17XFxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaDozNzI6XFx0aWYgKG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKSB7XFxuaW5jbHVkZS9uZXQvYWRkcmNvbmYuaC0zNzMtXFx0XFx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UoZGV2X25ldChkZXYpLCBpbmV0Nl9paWYoc2tiKSk7XFxuLS1cXG5pbmNsdWRlL25ldC9ncm8uaD01NTU9c3RhdGljIGlubGluZSB2b2lkIGluZXRfZ2V0X2lpZl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCAqaWlmLCBpbnQgKnNkaWYpXFxuLS1cXG5pbmNsdWRlL25ldC9ncm8uaC01NjAtI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbmluY2x1ZGUvbmV0L2dyby5oOjU2MTpcXHRpZiAobmV0aWZfaXNfbDNfc2xhdmUoc2tiLVxcdTAwM2VkZXYpKSB7XFxuaW5jbHVkZS9uZXQvZ3JvLmgtNTYyLVxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICptYXN0ZXIgPSBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1KHNrYi1cXHUwMDNlZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L2dyby5oPTU3Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5ldDZfZ2V0X2lpZl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCAqaWlmLCBpbnQgKnNkaWYpXFxuLS1cXG5pbmNsdWRlL25ldC9ncm8uaC01ODItI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbmluY2x1ZGUvbmV0L2dyby5oOjU4MzpcXHRpZiAobmV0aWZfaXNfbDNfc2xhdmUoc2tiLVxcdTAwM2VkZXYpKSB7XFxuaW5jbHVkZS9uZXQvZ3JvLmgtNTg0LVxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICptYXN0ZXIgPSBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1KHNrYi1cXHUwMDNlZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oPTEwOT1zdHJ1Y3QgbmV0X2RldmljZSAqbDNtZGV2X21hc3Rlcl9kZXZfcmN1KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpfZGV2KVxcbi0tXFxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTIyLVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oOjEyMzpcXHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGRldikpXFxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTI0LVxcdFxcdG1hc3RlciA9IGRldjtcXG5pbmNsdWRlL25ldC9sM21kZXYuaDoxMjU6XFx0ZWxzZSBpZiAobmV0aWZfaXNfbDNfc2xhdmUoZGV2KSlcXG5pbmNsdWRlL25ldC9sM21kZXYuaC0xMjYtXFx0XFx0bWFzdGVyID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfZ2V0X3JjdShkZXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg9MTU3PXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pbmRleF9pc19sM19tYXN0ZXIoc3RydWN0IG5ldCAqbmV0LCBpbnQgaWZpbmRleClcXG4tLVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oLTE2OC1cXHRpZiAoZGV2KVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oOjE2OTpcXHRcXHRyYyA9IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpO1xcbmluY2x1ZGUvbmV0L2wzbWRldi5oLTE3MC1cXG4tLVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oPTE3OT1zdHJ1Y3Qgc2tfYnVmZiAqbDNtZGV2X2wzX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcHJvdG8pXFxuLS1cXG5pbmNsdWRlL25ldC9sM21kZXYuaC0xODItXFxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg6MTgzOlxcdGlmIChuZXRpZl9pc19sM19zbGF2ZShza2ItXFx1MDAzZWRldikpXFxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTg0LVxcdFxcdG1hc3RlciA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2dldF9yY3Uoc2tiLVxcdTAwM2VkZXYpO1xcbmluY2x1ZGUvbmV0L2wzbWRldi5oOjE4NTpcXHRlbHNlIGlmIChuZXRpZl9pc19sM19tYXN0ZXIoc2tiLVxcdTAwM2VkZXYpIHx8XFxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMTg2LVxcdFxcdCBuZXRpZl9oYXNfbDNfcnhfaGFuZGxlcihza2ItXFx1MDAzZWRldikpXFxuLS1cXG5pbmNsdWRlL25ldC9sM21kZXYuaD0yMDg9c3RydWN0IHNrX2J1ZmYgKmwzbWRldl9sM19vdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcHJvdG8pXFxuLS1cXG5pbmNsdWRlL25ldC9sM21kZXYuaC0yMTMtXFx0ZGV2ID0gc2tiX2RzdF9kZXZfcmN1KHNrYik7XFxuaW5jbHVkZS9uZXQvbDNtZGV2Lmg6MjE0OlxcdGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKSB7XFxuaW5jbHVkZS9uZXQvbDNtZGV2LmgtMjE1LVxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICptYXN0ZXI7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jPTk3ND1zdGF0aWMgdW5zaWduZWQgaW50IGlwX3NhYm90YWdlX2luKHZvaWQgKnByaXYsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jLTk4NC1cXHRcXHRpZiAoIW5mX2JyaWRnZS1cXHUwMDNlaW5fcHJlcm91dGluZyBcXHUwMDI2XFx1MDAyNlxcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmM6OTg1OlxcdFxcdCAgICAhbmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cXHUwMDNlZGV2KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmM6OTg2OlxcdFxcdCAgICAhbmV0aWZfaXNfbDNfc2xhdmUoc2tiLVxcdTAwM2VkZXYpKSB7XFxubmV0L2JyaWRnZS9icl9uZXRmaWx0ZXJfaG9va3MuYy05ODctXFx0XFx0XFx0bmZfYnJpZGdlLVxcdTAwM2VzYWJvdGFnZV9pbl9kb25lID0gMTtcXG4tLVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jPTczOD1zdGF0aWMgaW50IGZpYl9ubDJydWxlX2xvY2tlZChzdHJ1Y3QgZmliX3J1bGUgKm5scnVsZSxcXG4tLVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTc1OS1cXHRcXHRcXHRubHJ1bGUtXFx1MDAzZWlpZmluZGV4ID0gUkVBRF9PTkNFKGRldi1cXHUwMDNlaWZpbmRleCk7XFxubmV0L2NvcmUvZmliX3J1bGVzLmM6NzYwOlxcdFxcdFxcdG5scnVsZS1cXHUwMDNlaWlmX2lzX2wzX21hc3RlciA9IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpO1xcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTc2MS1cXHRcXHR9XFxuLS1cXG5uZXQvY29yZS9maWJfcnVsZXMuYy03NjktXFx0XFx0XFx0bmxydWxlLVxcdTAwM2VvaWZpbmRleCA9IFJFQURfT05DRShkZXYtXFx1MDAzZWlmaW5kZXgpO1xcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjc3MDpcXHRcXHRcXHRubHJ1bGUtXFx1MDAzZW9pZl9pc19sM19tYXN0ZXIgPSBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KTtcXG5uZXQvY29yZS9maWJfcnVsZXMuYy03NzEtXFx0XFx0fVxcbi0tXFxubmV0L2NvcmUvZmliX3J1bGVzLmM9MTM2MD1zdGF0aWMgdm9pZCBhdHRhY2hfcnVsZXMoc3RydWN0IGxpc3RfaGVhZCAqcnVsZXMsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvY29yZS9maWJfcnVsZXMuYy0xMzY4LVxcdFxcdFxcdFdSSVRFX09OQ0UocnVsZS1cXHUwMDNlaWlmX2lzX2wzX21hc3RlcixcXG5uZXQvY29yZS9maWJfcnVsZXMuYzoxMzY5OlxcdFxcdFxcdFxcdCAgIG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKTtcXG5uZXQvY29yZS9maWJfcnVsZXMuYy0xMzcwLVxcdFxcdH1cXG4tLVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTEzNzQtXFx0XFx0XFx0V1JJVEVfT05DRShydWxlLVxcdTAwM2VvaWZfaXNfbDNfbWFzdGVyLFxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjEzNzU6XFx0XFx0XFx0XFx0ICAgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikpO1xcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTEzNzYtXFx0XFx0fVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTUwNj1zdGF0aWMgaW50IGZpYl9uZXRkZXZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTU3LVxcdFxcdGlmICh1cHBlcl9pbmZvLVxcdTAwM2V1cHBlcl9kZXYgXFx1MDAyNlxcdTAwMjZcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNTU4OlxcdFxcdCAgICBuZXRpZl9pc19sM19tYXN0ZXIodXBwZXJfaW5mby1cXHUwMDNldXBwZXJfZGV2KSlcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTU5LVxcdFxcdFxcdGZpYl9kaXNhYmxlX2lwKGRldiwgTkVUREVWX0RPV04sIHRydWUpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTExMDM9aW50IGlnbXBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTExMS1cXG5uZXQvaXB2NC9pZ21wLmM6MTExMjpcXHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGRldikpIHtcXG5uZXQvaXB2NC9pZ21wLmMtMTExMy1cXHRcXHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShkZXZfbmV0KGRldiksIElQQ0Ioc2tiKS1cXHUwMDNlaWlmKTtcXG4tLVxcbm5ldC9pcHY0L2lwbXIuYz0yMTg5PWludCBpcF9tcl9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvaXBtci5jLTIyMDEtXFx0ZGV2ID0gc2tiLVxcdTAwM2VkZXY7XFxubmV0L2lwdjQvaXBtci5jOjIyMDI6XFx0aWYgKG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXFx1MDAzZWRldikpIHtcXG5uZXQvaXB2NC9pcG1yLmMtMjIwMy1cXHRcXHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShuZXQsIElQQ0Ioc2tiKS1cXHUwMDNlaWlmKTtcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmM9OTY3PXN0YXRpYyBpbnQgaXBfZXJyb3Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmMtOTc4LVxcbm5ldC9pcHY0L3JvdXRlLmM6OTc5OlxcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoc2tiLVxcdTAwM2VkZXYpKSB7XFxubmV0L2lwdjQvcm91dGUuYy05ODAtXFx0XFx0ZGV2ID0gX19kZXZfZ2V0X2J5X2luZGV4KGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpLCBJUENCKHNrYiktXFx1MDAzZWlpZik7XFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jPTI1MjM9aXBfcm91dGVfaW5wdXRfcmN1KHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiBkYWRkciwgX19iZTMyIHNhZGRyLFxcbi0tXFxubmV0L2lwdjQvcm91dGUuYy0yNTQ5LVxcdFxcdC8qIGNoZWNrIGwzIG1hc3RlciBpZiBubyBtYXRjaCB5ZXQgKi9cXG5uZXQvaXB2NC9yb3V0ZS5jOjI1NTA6XFx0XFx0aWYgKCFvdXIgXFx1MDAyNlxcdTAwMjYgbmV0aWZfaXNfbDNfc2xhdmUoZGV2KSkge1xcbm5ldC9pcHY0L3JvdXRlLmMtMjU1MS1cXHRcXHRcXHRzdHJ1Y3QgaW5fZGV2aWNlICpsM19pbl9kZXY7XFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jPTI1OTE9c3RhdGljIHN0cnVjdCBydGFibGUgKl9fbWtyb3V0ZV9vdXRwdXQoY29uc3Qgc3RydWN0IGZpYl9yZXN1bHQgKnJlcyxcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmMtMjYwOS1cXHRcXHQgICAgIShkZXZfb3V0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9MT09QQkFDSykgXFx1MDAyNlxcdTAwMjZcXG5uZXQvaXB2NC9yb3V0ZS5jOjI2MTA6XFx0XFx0ICAgICFuZXRpZl9pc19sM19tYXN0ZXIoZGV2X291dCkpXFxubmV0L2lwdjQvcm91dGUuYy0yNjExLVxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbi0tXFxubmV0L2lwdjQvdGNwX2FvLmM9MTU3Nj1zdGF0aWMgaW50IHRjcF9hb19hZGRfY21kKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgaW50IGZhbWlseSxcXG4tLVxcbm5ldC9pcHY0L3RjcF9hby5jLTE2MjMtXFx0XFx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3Uoc29ja19uZXQoc2spLCBjbWQuaWZpbmRleCk7XFxubmV0L2lwdjQvdGNwX2FvLmM6MTYyNDpcXHRcXHRpZiAoZGV2IFxcdTAwMjZcXHUwMDI2IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKVxcbm5ldC9pcHY0L3RjcF9hby5jLTE2MjUtXFx0XFx0XFx0bDNpbmRleCA9IGRldi1cXHUwMDNlaWZpbmRleDtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM9MTQ3OT1zdGF0aWMgaW50IHRjcF92NF9wYXJzZV9tZDVfa2V5cyhzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0xNTE0LVxcdFxcdGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KHNvY2tfbmV0KHNrKSwgY21kLnRjcG1faWZpbmRleCk7XFxubmV0L2lwdjQvdGNwX2lwdjQuYzoxNTE1OlxcdFxcdGlmIChkZXYgXFx1MDAyNlxcdTAwMjYgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikpXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0xNTE2LVxcdFxcdFxcdGwzaW5kZXggPSBkZXYtXFx1MDAzZWlmaW5kZXg7XFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jPTEwNzQ9aXB2Nl9hZGRfYWRkcihzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCBzdHJ1Y3QgaWZhNl9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMTA5MS1cXHR9IGVsc2UgaWYgKCEoaWRldi1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9MT09QQkFDSykgXFx1MDAyNlxcdTAwMjZcXG5uZXQvaXB2Ni9hZGRyY29uZi5jOjEwOTI6XFx0XFx0ICAgIW5ldGlmX2lzX2wzX21hc3RlcihpZGV2LVxcdTAwM2VkZXYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L2lwdjYvYWRkcmNvbmYuYy0xMDkzLVxcdFxcdCAgIGFkZHJfdHlwZSBcXHUwMDI2IElQVjZfQUREUl9MT09QQkFDSykge1xcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0yNTcxPXN0YXRpYyBzdHJ1Y3QgaW5ldDZfZGV2ICphZGRyY29uZl9hZGRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1ODQtXFx0LyogQWRkIGRlZmF1bHQgbXVsdGljYXN0IHJvdXRlICovXFxubmV0L2lwdjYvYWRkcmNvbmYuYzoyNTg1OlxcdGlmICghKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfTE9PUEJBQ0spIFxcdTAwMjZcXHUwMDI2ICFuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSlcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1ODYtXFx0XFx0YWRkcmNvbmZfYWRkX21yb3V0ZShkZXYpO1xcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0zNDM5PXN0YXRpYyB2b2lkIGFkZHJjb25mX2FkZHJfZ2VuKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIGJvb2wgcHJlZml4X3JvdXRlKVxcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYy0zNDQzLVxcdC8qIG5vIGxpbmsgbG9jYWwgYWRkcmVzc2VzIG9uIEwzIG1hc3RlciBkZXZpY2VzICovXFxubmV0L2lwdjYvYWRkcmNvbmYuYzozNDQ0OlxcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoaWRldi1cXHUwMDNlZGV2KSlcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTM0NDUtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0zNjcyPXN0YXRpYyBpbnQgYWRkcmNvbmZfbm90aWZ5KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcywgdW5zaWduZWQgbG9uZyBldmVudCxcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMzg0MS1cXHRcXHQgKi9cXG5uZXQvaXB2Ni9hZGRyY29uZi5jOjM4NDI6XFx0XFx0aWYgKGluZm8tXFx1MDAzZXVwcGVyX2RldiBcXHUwMDI2XFx1MDAyNiBuZXRpZl9pc19sM19tYXN0ZXIoaW5mby1cXHUwMDNldXBwZXJfZGV2KSlcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTM4NDMtXFx0XFx0XFx0YWRkcmNvbmZfaWZkb3duKGRldiwgZmFsc2UpO1xcbi0tXFxubmV0L2lwdjYvaWNtcC5jPTQxOT1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmljbXA2X2Rldihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvaWNtcC5jLTQyNy1cXHQgKi9cXG5uZXQvaXB2Ni9pY21wLmM6NDI4OlxcdGlmICh1bmxpa2VseShkZXYtXFx1MDAzZWlmaW5kZXggPT0gTE9PUEJBQ0tfSUZJTkRFWCB8fCBuZXRpZl9pc19sM19tYXN0ZXIoc2tiLVxcdTAwM2VkZXYpKSkge1xcbm5ldC9pcHY2L2ljbXAuYy00MjktXFx0XFx0Y29uc3Qgc3RydWN0IHJ0Nl9pbmZvICpydDYgPSBza2JfcnQ2X2luZm8oc2tiKTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9pbnB1dC5jPTE4OD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmlwNl9yY3ZfY29yZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjYvaXA2X2lucHV0LmMtMjU3LVxcdCAgICAhKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfTE9PUEJBQ0spIFxcdTAwMjZcXHUwMDI2XFxubmV0L2lwdjYvaXA2X2lucHV0LmM6MjU4OlxcdCAgICAhbmV0aWZfaXNfbDNfbWFzdGVyKGRldikpXFxubmV0L2lwdjYvaXA2X2lucHV0LmMtMjU5LVxcdFxcdGdvdG8gZXJyO1xcbi0tXFxubmV0L2lwdjYvaXA2bXIuYz0yMzQ2PWludCBpcDZfbXJfaW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L2lwNm1yLmMtMjM2MC1cXHQgKi9cXG5uZXQvaXB2Ni9pcDZtci5jOjIzNjE6XFx0aWYgKG5ldGlmX2lzX2wzX21hc3RlcihkZXYpKSB7XFxubmV0L2lwdjYvaXA2bXIuYy0yMzYyLVxcdFxcdGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgSVBDQihza2IpLVxcdTAwM2VpaWYpO1xcbi0tXFxubmV0L2lwdjYvbmRpc2MuYz03ODk9c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIG5kaXNjX3JlY3ZfbnMoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L25kaXNjLmMtODg1LVxcdFxcdC8qIHBlcmhhcHMgYW4gYWRkcmVzcyBvbiB0aGUgbWFzdGVyIGRldmljZSAqL1xcbm5ldC9pcHY2L25kaXNjLmM6ODg2OlxcdFxcdGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpKSB7XFxubmV0L2lwdjYvbmRpc2MuYy04ODctXFx0XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm1kZXY7XFxuLS1cXG5uZXQvaXB2Ni9uZGlzYy5jPTE2NTg9dm9pZCBuZGlzY19zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqdGFyZ2V0KVxcbi0tXFxubmV0L2lwdjYvbmRpc2MuYy0xNjc1LVxcbm5ldC9pcHY2L25kaXNjLmM6MTY3NjpcXHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGRldikpIHtcXG5uZXQvaXB2Ni9uZGlzYy5jLTE2NzctXFx0XFx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBJUENCKHNrYiktXFx1MDAzZWlpZik7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTEwNTk9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICppcDZfcnRfZ2V0X2Rldl9yY3UoY29uc3Qgc3RydWN0IGZpYjZfcmVzdWx0ICpyZXMpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTEwNjctXFx0XFx0ICovXFxubmV0L2lwdjYvcm91dGUuYzoxMDY4OlxcdFxcdGlmIChuZXRpZl9pc19sM19zbGF2ZShkZXYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L2lwdjYvcm91dGUuYy0xMDY5LVxcdFxcdCAgICAhcnQ2X25lZWRfc3RyaWN0KFxcdTAwMjZyZXMtXFx1MDAzZWY2aS1cXHUwMDNlZmliNl9kc3QuYWRkcikpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTEwNzEtXFx0XFx0XFx0ICAgICAgZGV2X25ldChkZXYpLVxcdTAwM2Vsb29wYmFja19kZXY7XFxubmV0L2lwdjYvcm91dGUuYzoxMDcyOlxcdFxcdGVsc2UgaWYgKCFuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSlcXG5uZXQvaXB2Ni9yb3V0ZS5jLTEwNzMtXFx0XFx0XFx0ZGV2ID0gZGV2X25ldChkZXYpLVxcdTAwM2Vsb29wYmFja19kZXY7XFxubmV0L2lwdjYvcm91dGUuYzoxMDc0OlxcdFxcdC8qIGxhc3QgY2FzZSBpcyBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSBpcyB0cnVlIGluIHdoaWNoXFxubmV0L2lwdjYvcm91dGUuYy0xMDc1LVxcdFxcdCAqIGNhc2Ugd2Ugd2FudCBkZXYgcmV0dXJuZWQgdG8gYmUgZGV2XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ2MjE9c3RhdGljIGludCBpcDZfcGt0X2Ryb3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggY29kZSwgaW50IGlwc3RhdHNfbWliX25vcm91dGVzKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00NjI5LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDYzMDpcXHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKHNrYi1cXHUwMDNlZGV2KSB8fFxcbm5ldC9pcHY2L3JvdXRlLmMtNDYzMS1cXHQgICAgZGV2ID09IG5ldC1cXHUwMDNlbG9vcGJhY2tfZGV2KVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00NjUyLVxcdC8qIFN0YXJ0IG92ZXIgYnkgZHJvcHBpbmcgdGhlIGRzdCBmb3IgbDNtZGV2IGNhc2UgKi9cXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ2NTM6XFx0aWYgKG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXFx1MDAzZWRldikpXFxubmV0L2lwdjYvcm91dGUuYy00NjU0LVxcdFxcdHNrYl9kc3RfZHJvcChza2IpO1xcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTEwOTU9c3RhdGljIHN0cnVjdCBza19idWZmICplbmRfZHRfdnJmX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgZmFtaWx5LFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEwOTgtXFx0LyogYmFzZWQgb24gbDNtZGV2X2lwX3Jjdjsgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbWFzdGVyICovXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjEwOTk6XFx0aWYgKHVubGlrZWx5KCFuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSBcXHUwMDI2XFx1MDAyNiAhbmV0aWZfaGFzX2wzX3J4X2hhbmRsZXIoZGV2KSkpXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTExMDAtXFx0XFx0Z290byBkcm9wO1xcbi0tXFxubmV0L2lwdjYvc2l0LmM9NTI5PXN0YXRpYyBpbnQgaXBpcDZfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvKVxcbi0tXFxubmV0L2lwdjYvc2l0LmMtNTY3LVxcbm5ldC9pcHY2L3NpdC5jOjU2ODpcXHRzaWZpbmRleCA9IG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXFx1MDAzZWRldikgPyBJUENCKHNrYiktXFx1MDAzZWlpZiA6IDA7XFxubmV0L2lwdjYvc2l0LmMtNTY5LVxcdHQgPSBpcGlwNl90dW5uZWxfbG9va3VwKGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpLCBza2ItXFx1MDAzZWRldixcXG4tLVxcbm5ldC9pcHY2L3NpdC5jPTY4MD1zdGF0aWMgaW50IGlwaXA2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvc2l0LmMtNjg2LVxcbm5ldC9pcHY2L3NpdC5jOjY4NzpcXHRzaWZpbmRleCA9IG5ldGlmX2lzX2wzX21hc3Rlcihza2ItXFx1MDAzZWRldikgPyBJUENCKHNrYiktXFx1MDAzZWlpZiA6IDA7XFxubmV0L2lwdjYvc2l0LmMtNjg4LVxcdHR1bm5lbCA9IGlwaXA2X3R1bm5lbF9sb29rdXAoZGV2X25ldChza2ItXFx1MDAzZWRldiksIHNrYi1cXHUwMDNlZGV2LFxcbi0tXFxubmV0L2lwdjYvc2l0LmM9NzUzPXN0YXRpYyBpbnQgc2l0X3R1bm5lbF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaXBwcm90bylcXG4tLVxcbm5ldC9pcHY2L3NpdC5jLTc1OC1cXG5uZXQvaXB2Ni9zaXQuYzo3NTk6XFx0c2lmaW5kZXggPSBuZXRpZl9pc19sM19tYXN0ZXIoc2tiLVxcdTAwM2VkZXYpID8gSVBDQihza2IpLVxcdTAwM2VpaWYgOiAwO1xcbm5ldC9pcHY2L3NpdC5jLTc2MC1cXG4tLVxcbm5ldC9pcHY2L3NpdC5jPTEwOTU9c3RhdGljIHZvaWQgaXBpcDZfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvaXB2Ni9zaXQuYy0xMTI0LVxcbm5ldC9pcHY2L3NpdC5jOjExMjU6XFx0aWYgKHRkZXYgXFx1MDAyNlxcdTAwMjYgIW5ldGlmX2lzX2wzX21hc3Rlcih0ZGV2KSkge1xcbm5ldC9pcHY2L3NpdC5jLTExMjYtXFx0XFx0aW50IG10dTtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9NjMxPXN0YXRpYyBpbnQgdGNwX3Y2X3BhcnNlX21kNV9rZXlzKHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTY2OS1cXHRcXHRkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShzb2NrX25ldChzayksIGNtZC50Y3BtX2lmaW5kZXgpO1xcbm5ldC9pcHY2L3RjcF9pcHY2LmM6NjcwOlxcdFxcdGlmIChkZXYgXFx1MDAyNlxcdTAwMjYgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikpXFxubmV0L2lwdjYvdGNwX2lwdjYuYy02NzEtXFx0XFx0XFx0bDNpbmRleCA9IGRldi1cXHUwMDNlaWZpbmRleDtcXG4tLVxcbm5ldC9sM21kZXYvbDNtZGV2LmM9MTEwPWludCBsM21kZXZfbWFzdGVyX2lmaW5kZXhfcmN1KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvbDNtZGV2L2wzbWRldi5jLTExNi1cXG5uZXQvbDNtZGV2L2wzbWRldi5jOjExNzpcXHRpZiAobmV0aWZfaXNfbDNfbWFzdGVyKGRldikpIHtcXG5uZXQvbDNtZGV2L2wzbWRldi5jLTExOC1cXHRcXHRpZmluZGV4ID0gZGV2LVxcdTAwM2VpZmluZGV4O1xcbm5ldC9sM21kZXYvbDNtZGV2LmM6MTE5OlxcdH0gZWxzZSBpZiAobmV0aWZfaXNfbDNfc2xhdmUoZGV2KSkge1xcbm5ldC9sM21kZXYvbDNtZGV2LmMtMTIwLVxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICptYXN0ZXI7XFxuLS1cXG5uZXQvbDNtZGV2L2wzbWRldi5jPTE0ND1pbnQgbDNtZGV2X21hc3Rlcl91cHBlcl9pZmluZGV4X2J5X2luZGV4X3JjdShzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4KVxcbi0tXFxubmV0L2wzbWRldi9sM21kZXYuYy0xNDgtXFx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBpZmluZGV4KTtcXG5uZXQvbDNtZGV2L2wzbWRldi5jOjE0OTpcXHR3aGlsZSAoZGV2IFxcdTAwMjZcXHUwMDI2ICFuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSlcXG5uZXQvbDNtZGV2L2wzbWRldi5jLTE1MC1cXHRcXHRkZXYgPSBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1KGRldik7XFxuLS1cXG5uZXQvbDNtZGV2L2wzbWRldi5jPTE2Mj11MzIgbDNtZGV2X2ZpYl90YWJsZV9yY3UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9sM21kZXYvbDNtZGV2LmMtMTY4LVxcbm5ldC9sM21kZXYvbDNtZGV2LmM6MTY5OlxcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSkge1xcbm5ldC9sM21kZXYvbDNtZGV2LmMtMTcwLVxcdFxcdGlmIChkZXYtXFx1MDAzZWwzbWRldl9vcHMtXFx1MDAzZWwzbWRldl9maWJfdGFibGUpXFxubmV0L2wzbWRldi9sM21kZXYuYy0xNzEtXFx0XFx0XFx0dGJfaWQgPSBkZXYtXFx1MDAzZWwzbWRldl9vcHMtXFx1MDAzZWwzbWRldl9maWJfdGFibGUoZGV2KTtcXG5uZXQvbDNtZGV2L2wzbWRldi5jOjE3MjpcXHR9IGVsc2UgaWYgKG5ldGlmX2lzX2wzX3NsYXZlKGRldikpIHtcXG5uZXQvbDNtZGV2L2wzbWRldi5jLTE3My1cXHRcXHQvKiBVc2VycyBvZiBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9nZXRfcmN1IG5lZWQgbm9uLWNvbnN0LFxcbi0tXFxubmV0L2wzbWRldi9sM21kZXYuYz0yMTg9c3RydWN0IGRzdF9lbnRyeSAqbDNtZGV2X2xpbmtfc2NvcGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9sM21kZXYvbDNtZGV2LmMtMjI2LVxcdFxcdGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgZmw2LVxcdTAwM2VmbG93aTZfb2lmKTtcXG5uZXQvbDNtZGV2L2wzbWRldi5jOjIyNzpcXHRcXHRpZiAoZGV2IFxcdTAwMjZcXHUwMDI2IG5ldGlmX2lzX2wzX3NsYXZlKGRldikpXFxubmV0L2wzbWRldi9sM21kZXYuYy0yMjgtXFx0XFx0XFx0ZGV2ID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfZ2V0X3JjdShkZXYpO1xcbm5ldC9sM21kZXYvbDNtZGV2LmMtMjI5LVxcbm5ldC9sM21kZXYvbDNtZGV2LmM6MjMwOlxcdFxcdGlmIChkZXYgXFx1MDAyNlxcdTAwMjYgbmV0aWZfaXNfbDNfbWFzdGVyKGRldikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbDNtZGV2L2wzbWRldi5jLTIzMS1cXHRcXHQgICAgZGV2LVxcdTAwM2VsM21kZXZfb3BzLVxcdTAwM2VsM21kZXZfbGlua19zY29wZV9sb29rdXApXFxuLS1cXG5uZXQvbDNtZGV2L2wzbWRldi5jPTI0Nz1pbnQgbDNtZGV2X2ZpYl9ydWxlX21hdGNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZsb3dpICpmbCxcXG4tLVxcbm5ldC9sM21kZXYvbDNtZGV2LmMtMjU5LVxcdGRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgZmwtXFx1MDAzZWZsb3dpX2wzbWRldik7XFxubmV0L2wzbWRldi9sM21kZXYuYzoyNjA6XFx0aWYgKGRldiBcXHUwMDI2XFx1MDAyNiBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9sM21kZXYvbDNtZGV2LmMtMjYxLVxcdCAgICBkZXYtXFx1MDAzZWwzbWRldl9vcHMtXFx1MDAzZWwzbWRldl9maWJfdGFibGUpIHtcXG4tLVxcbm5ldC9sM21kZXYvbDNtZGV2LmM9MjcxPXZvaWQgbDNtZGV2X3VwZGF0ZV9mbG93KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZsb3dpICpmbClcXG4tLVxcbm5ldC9sM21kZXYvbDNtZGV2LmMtMjg3LVxcdFxcdFxcdCAqL1xcbm5ldC9sM21kZXYvbDNtZGV2LmM6Mjg4OlxcdFxcdFxcdGlmIChuZXRpZl9pc19sM19tYXN0ZXIoZGV2KSlcXG5uZXQvbDNtZGV2L2wzbWRldi5jLTI4OS1cXHRcXHRcXHRcXHRmbC1cXHUwMDNlZmxvd2lfb2lmID0gMDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvLmM9MTI0PXN0YXRpYyBib29sIGluX3ZyZl9wb3N0cm91dGluZyhjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90by5jLTEyNy1cXHRpZiAoc3RhdGUtXFx1MDAzZWhvb2sgPT0gTkZfSU5FVF9QT1NUX1JPVVRJTkcgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90by5jOjEyODpcXHQgICAgbmV0aWZfaXNfbDNfbWFzdGVyKHN0YXRlLVxcdTAwM2VvdXQpKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvLmMtMTI5LVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jPTg4MT1zdGF0aWMgYm9vbCBpbl92cmZfcG9zdHJvdXRpbmcoY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTg4NC1cXHRpZiAoc3RhdGUtXFx1MDAzZWhvb2sgPT0gTkZfSU5FVF9QT1NUX1JPVVRJTkcgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmM6ODg1OlxcdCAgICBuZXRpZl9pc19sM19tYXN0ZXIoc3RhdGUtXFx1MDAzZW91dCkpXFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jLTg4Ni1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MDAuNTIwMjIxMTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzU0MjIyNDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgVmlydHVhbCBSb3V0aW5nIFx1MDAyNiBGb3J3YXJkaW5nIChWUkYpIGFuZCBMYXllciAzIE1hc3RlciBEZXZpY2VzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHNvbWUgbmV0d29ya2luZyBjb25maWd1cmF0aW9uIGFuZCBJIG5lZWQgYSBxdWljayByZWZyZXNoZXIgb24gdGhlc2Ugc3BlY2lmaWNzLiBMZXQncyBzdGFydCBieSB1bnBhY2tpbmcgd2hhdCBgQ09ORklHX05FVF9WUkZgIGFuZCBgQ09ORklHX05FVF9MM19NQVNURVJfREVWYCBhY3R1YWxseSAqZG8qIHdpdGhpbiB0aGlzIGNvbnRleHQuIEkndmUgZ290IGEgZGVjZW50IGdyYXNwLCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBzb2xpZGlmeSB0aGUgdW5kZXJseWluZyBpbXBsaWNhdGlvbnMgb2YgdGhlc2Ugc3ltYm9scy5cblxuTm93LCBJIG5lZWQgdG8gem9vbSBpbiBvbiBob3cgdGhlIGBJRkZfTDNNREVWX01BU1RFUmAgYW5kIGBJRkZfTDNNREVWX1NMQVZFYCBmbGFncyBhcmUgdXNlZC4gSSBuZWVkIHRvIHJlZnJlc2ggbXlzZWxmIG9mIHRoZSBudWFuY2VzIG9mIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRob3NlIGZsYWdzIGFuZCB0aG9zZSBjb25maWd1cmF0aW9ucy4gVGhlbiwgSSdsbCBuZWVkIHRvIHBpbnBvaW50IHByZWNpc2VseSAqd2hlcmUqIHRob3NlIGZsYWdzIGFyZSBiZWluZyBzZXQgaW4gdGhlIGNvZGUuIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2ggdG8gaWRlbnRpZnkgdGhlIHJlbGV2YW50IGNvZGUgbG9jYXRpb25zIGFuZCB0aGVuIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIHNjZW5hcmlvcyB0aGF0IHRyaWdnZXIgdGhlc2UgZmxhZyBzZXR0aW5ncy4gSSBuZWVkIHRvIGtlZXAgdGhpcyBzdHJlYW1saW5lZCwgc28gSSdsbCBwcmlvcml0aXplIGZpbmRpbmcgdGhlIG1vc3QgZGlyZWN0IGFzc2lnbm1lbnRzIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSByYWJiaXQgaG9sZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExODg3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MDIuODc0NDQ4MDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDk5MDI0MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSUZGX0wzTURFVl9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0yMDU9aW50IGlwdmxhbl9sM3NfcmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjE0LVxcdFxcdGRldi1cXHUwMDNlbDNtZGV2X29wcyA9IFxcdTAwMjZpcHZsX2wzbWRldl9vcHM7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoyMTU6XFx0XFx0ZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9MM01ERVZfUlhfSEFORExFUjtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIxNi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jPTIyMT12b2lkIGlwdmxhbl9sM3NfdW5yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMjYtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoyMjc6XFx0ZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjY9IH5JRkZfTDNNREVWX1JYX0hBTkRMRVI7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMjgtXFx0aXB2bGFuX3VucmVnaXN0ZXJfbmZfaG9vayhyZWFkX3BuZXQoXFx1MDAyNnBvcnQtXFx1MDAzZXBuZXQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jPTEwMTI9c3RhdGljIGludCBkb192cmZfYWRkX3NsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpwb3J0X2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMjUtXFxuZHJpdmVycy9uZXQvdnJmLmM6MTAyNjpcXHRwb3J0X2Rldi1cXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTDNNREVWX1NMQVZFO1xcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMjctXFx0cmV0ID0gbmV0ZGV2X21hc3Rlcl91cHBlcl9kZXZfbGluayhwb3J0X2RldiwgZGV2LCBOVUxMLCBOVUxMLCBleHRhY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmMtMTAzNS1lcnI6XFxuZHJpdmVycy9uZXQvdnJmLmM6MTAzNjpcXHRwb3J0X2Rldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2PSB+SUZGX0wzTURFVl9TTEFWRTtcXG5kcml2ZXJzL25ldC92cmYuYy0xMDM3LVxcdHN5bmNocm9uaXplX25ldCgpO1xcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmM9MTA1Nz1zdGF0aWMgaW50IGRvX3ZyZl9kZWxfc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKnBvcnRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmMtMTA2MC1cXHRuZXRkZXZfdXBwZXJfZGV2X3VubGluayhwb3J0X2RldiwgZGV2KTtcXG5kcml2ZXJzL25ldC92cmYuYzoxMDYxOlxcdHBvcnRfZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjY9IH5JRkZfTDNNREVWX1NMQVZFO1xcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNjItXFx0LyogTWFrZSBzdXJlIHRoYXQgY29uY3VycmVudCBSQ1UgcmVhZGVycyB0aGF0IGlkZW50aWZpZWQgdGhlIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmM9MTYzNj1zdGF0aWMgaW50IHZyZl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYy0xNjU4LVxcbmRyaXZlcnMvbmV0L3ZyZi5jOjE2NTk6XFx0ZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9MM01ERVZfTUFTVEVSO1xcbmRyaXZlcnMvbmV0L3ZyZi5jLTE2NjAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE0NTU9c3RydWN0IG5ldF9kZXZpY2Vfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc0OC0gKlxcdHVuZGVybHlpbmcgc3RhY2tlZCBkZXZpY2VzXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzQ5OiAqIEBJRkZfTDNNREVWX01BU1RFUjogZGV2aWNlIGlzIGFuIEwzIG1hc3RlciBkZXZpY2VcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTAtICogQElGRl9OT19RVUVVRTogZGV2aWNlIGNhbiBydW4gd2l0aG91dCBxZGlzYyBhdHRhY2hlZFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc1MS0gKiBASUZGX09QRU5WU1dJVENIOiBkZXZpY2UgaXMgYSBPcGVuIHZTd2l0Y2ggbWFzdGVyXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzUyOiAqIEBJRkZfTDNNREVWX1NMQVZFOiBkZXZpY2UgaXMgZW5zbGF2ZWQgdG8gYW4gTDMgbWFzdGVyIGRldmljZVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc1My0gKiBASUZGX1RFQU06IGRldmljZSBpcyBhIHRlYW0gZGV2aWNlXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTktICogQElGRl9GQUlMT1ZFUl9TTEFWRTogZGV2aWNlIGlzIGxvd2VyIGRldiBvZiBhIGZhaWxvdmVyIG1hc3RlciBkZXZpY2VcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE3NjA6ICogQElGRl9MM01ERVZfUlhfSEFORExFUjogb25seSBpbnZva2UgdGhlIHJ4IGhhbmRsZXIgb2YgTDMgbWFzdGVyIGRldmljZVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc2MS0gKiBASUZGX05PX0FERFJDT05GOiBwcmV2ZW50IGlwdjYgYWRkcmNvbmZcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MTc2NT1lbnVtIG5ldGRldl9wcml2X2ZsYWdzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4My1cXHRJRkZfWE1JVF9EU1RfUkVMRUFTRV9QRVJNXFx0PSAxXFx1MDAzY1xcdTAwM2MxNyxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE3ODQ6XFx0SUZGX0wzTURFVl9NQVNURVJcXHRcXHQ9IDFcXHUwMDNjXFx1MDAzYzE4LFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4NS1cXHRJRkZfTk9fUVVFVUVcXHRcXHRcXHQ9IDFcXHUwMDNjXFx1MDAzYzE5LFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc4Ni1cXHRJRkZfT1BFTlZTV0lUQ0hcXHRcXHRcXHQ9IDFcXHUwMDNjXFx1MDAzYzIwLFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTc4NzpcXHRJRkZfTDNNREVWX1NMQVZFXFx0XFx0PSAxXFx1MDAzY1xcdTAwM2MyMSxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3ODgtXFx0SUZGX1RFQU1cXHRcXHRcXHQ9IDFcXHUwMDNjXFx1MDAzYzIyLFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzkzLVxcdElGRl9GQUlMT1ZFUl9TTEFWRVxcdFxcdD0gMVxcdTAwM2NcXHUwMDNjMjgsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzk0OlxcdElGRl9MM01ERVZfUlhfSEFORExFUlxcdFxcdD0gMVxcdTAwM2NcXHUwMDNjMjksXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzk1LVxcdElGRl9OT19BRERSQ09ORlxcdFxcdFxcdD0gQklUX1VMTCgzMCksXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTU2MDI9c3RhdGljIGlubGluZSBib29sIG5ldGlmX2hhc19sM19yeF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjAzLXtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjU2MDQ6XFx0cmV0dXJuIGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9MM01ERVZfUlhfSEFORExFUjtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDUtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjA3PXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19tYXN0ZXIoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MDgte1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYwOTpcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikgXFx1MDAyNlxcdTAwMjYgKGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKTtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MTAtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjEyPXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19sM19zbGF2ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxMy17XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjE0OlxcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSBcXHUwMDI2XFx1MDAyNiAoZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjYgSUZGX0wzTURFVl9TTEFWRSk7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjE1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MDUuMDg0MzU2MjI3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzEyMTk1MTYwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgSUZGX0wzTURFVl8qYCBGbGFncyoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYElGRl9MM01ERVZfTUFTVEVSYCBhbmQgYElGRl9MM01ERVZfU0xBVkVgIGFyZSAqb25seSogc2V0IHdpdGhpbiBgZHJpdmVycy9uZXQvdnJmLmNgIGluaXRpYWxseS4gVGhhdCdzIGludGVyZXN0aW5nLCBidXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSSBzaG91bGQgdmVyaWZ5IHRoYXQgbm8gb3RoZXIgbW9kdWxlcyBhcmUgdG91Y2hpbmcgdGhlc2UgZmxhZ3MgZGlyZWN0bHkuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgYGdyZXBgIG91dHB1dCB0byBjb25maXJtLiBBbHJpZ2h0LCBjb25maXJtZWQuIGB2cmYuY2AgZGVmaW5pdGVseSBzZXRzIGBJRkZfTDNNREVWX1NMQVZFYCBvbiBgcG9ydF9kZXZgIGFuZCBgSUZGX0wzTURFVl9NQVNURVJgIG9uIGBkZXZgLlxuXG5Ob3csIGxvb2tpbmcgZGVlcGVyLCBJIHNlZSB0aGF0IGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jYCBzZXRzIGBJRkZfTDNNREVWX1JYX0hBTkRMRVJgLCBidXQgdGhhdCdzIGhhbmRsZWQgdGhyb3VnaCBgbmV0aWZfaGFzX2wzX3J4X2hhbmRsZXJgIHdoaWNoIGlzIGEgZGlmZmVyZW50IGNvbmNlcm4uIEkgd2FudCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSBvdGhlciBwb3RlbnRpYWwgY29udGVuZGVycy4gSSB3aWxsIG5vdyBleGFtaW5lIGBLY29uZmlnYCBmb3IgYE5FVF9WUkZgIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5NDMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MDguMjA2MzExNjM3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTU3MTQ3NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9WUkZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz00NjM9Y29uZmlnIE5FVEtJVFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzEtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzI6Y29uZmlnIE5FVF9WUkZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3My1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBSb3V0aW5nIGFuZCBGb3J3YXJkaW5nIChMaXRlKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MTAuNTAyMDMyMTUxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDczNjk0NzA3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgbmV0d29yayBjb25maWd1cmF0aW9uIGJldHRlci4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGp1bXAgc3RyYWlnaHQgaW50byB0aGUgc291cmNlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBvZiBmb2N1c2luZyBvbiB0aGUgYGRyaXZlcnMvbmV0L0tjb25maWdgIGZpbGUsIGFyb3VuZCBsaW5lIDQ3Mi4gVGhhdCdzIHVzdWFsbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBnZXR0aW5nIGEgaGFuZGxlIG9uIGEgbW9kdWxlJ3MgY29yZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCdzIGV4cG9zZWQgdGhyb3VnaCB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEknbSBleHBlY3RpbmcgdG8gZmluZCBzb21lIGNydWNpYWwgb3B0aW9ucyBkZWZpbmVkIGFyb3VuZCB0aGF0IGFyZWEsIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBwYXJ0aWN1bGFyIGRyaXZlciBvciBuZXR3b3JrIGZlYXR1cmUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGhvb2tzIEkgbmVlZCB0byBleHBsb3JlIGl0cyBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gYW5kIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBjb21wb25lbnRzIGl0IGludGVyYWN0cyB3aXRoLiBMZXQncyBzZWUgd2hhdCdzIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NTMwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MTUuMjM4OTgxMjk2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDcwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDcwOlxcdFxcdCAgdG8gb3BlcmF0ZSBpbiBMMyBvciBMMiBtb2RlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiA0NzE6XFx0XFxuIDQ3MjpcXHRjb25maWcgTkVUX1ZSRlxcbiA0NzM6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgUm91dGluZyBhbmQgRm9yd2FyZGluZyAoTGl0ZSlcXFwiXFxuIDQ3NDpcXHRcXHRkZXBlbmRzIG9uIElQX01VTFRJUExFX1RBQkxFU1xcbiA0NzU6XFx0XFx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxcbiA0NzY6XFx0XFx0ZGVwZW5kcyBvbiBJUFY2X01VTFRJUExFX1RBQkxFUyB8fCBJUFY2PW5cXG4gNDc3OlxcdFxcdGhlbHBcXG4gNDc4OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgc3VwcG9ydCBmb3IgbWFwcGluZyBpbnRlcmZhY2VzIGludG8gVlJGJ3MuIFRoZVxcbiA0Nzk6XFx0XFx0ICBzdXBwb3J0IGVuYWJsZXMgVlJGIGRldmljZXMuXFxuIDQ4MDpcXHRcXG4gNDgxOlxcdGNvbmZpZyBWU09DS01PTlxcbiA0ODI6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcXFwiXFxuIDQ4MzpcXHRcXHRkZXBlbmRzIG9uIFZIT1NUX1ZTT0NLXFxuIDQ4NDpcXHRcXHRoZWxwXFxuIDQ4NTpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgYSBtb25pdG9yaW5nIG5ldCBkZXZpY2UgZm9yIHZzb2NrIHNvY2tldHMuIEl0IGlzXFxuIDQ4NjpcXHRcXHQgIG1vc3RseSBpbnRlbmRlZCBmb3IgZGV2ZWxvcGVycyBvciBzdXBwb3J0IHRvIGRlYnVnIHZzb2NrIGlzc3Vlcy4gSWZcXG4gNDg3OlxcdFxcdCAgdW5zdXJlLCBzYXkgTi5cXG4gNDg4OlxcdFxcbiA0ODk6XFx0Y29uZmlnIE1ISV9ORVRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6MTUuMjM5MDQ5MDU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5OTI5ODc2MjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIFZSRiBDb25maWd1cmF0aW9uIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgaW50ZXJwbGF5IG9mIGBDT05GSUdfTkVUX1ZSRmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBydW4gdGhyb3VnaCB0aGUgdGhyZWUgcG9zc2libGUgc3RhdGVzOiBgQ09ORklHX05FVF9WUkY9bmAsIGBDT05GSUdfTkVUX1ZSRj1tYCwgYW5kIGBDT05GSUdfTkVUX1ZSRj15YC4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGhvdyBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgIGFmZmVjdHMgYG5ldGlmX2lzX2wzX21hc3RlcmAgYW5kIGBuZXRpZl9pc19sM19zbGF2ZWAuXG5cbklmIGBDT05GSUdfTkVUX1ZSRj1uYCwgdGhvc2UgZnVuY3Rpb25zIG5vdyByZXR1cm4gYGZhbHNlYCBhdCBjb21waWxlIHRpbWUsIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgb3B0aW1pemF0aW9uIGJlY2F1c2UgdGhlIGNvbXBpbGVyIGNhbiBlbGltaW5hdGUgdGhlIGNvbmRpdGlvbmFsIGNoZWNrcyBpbnZvbHZpbmcgYGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX01BU1RFUi9TTEFWRWAgYWx0b2dldGhlci4gTm8gbW9yZSBydW50aW1lIGNoZWNrcywgd2hpY2ggaXMgZ3JlYXQgZm9yIGZhc3QgcGF0aHMuIFNpbmNlIGBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKWAgYmVjb21lcyBmYWxzZSwgdGhlIGNvbXBpbGVyIGNhbiBvcHRpbWl6ZSB0aGUgY29kZSwgYXZvaWRpbmcgdGhlIGJyYW5jaCBhbmQgbWVtb3J5IGxvYWQgYXNzb2NpYXRlZCB3aXRoIHRoYXQgY2hlY2suXG5cbklmIGBDT05GSUdfTkVUX1ZSRmAgaXMgJ3knIG9yICdtJywgYElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpYCB3aWxsIGJlIHRydWUsIG1lYW5pbmcgdGhlIGNvbmRpdGlvbmFsIGAoMSBcdTAwMjZcdTAwMjYgKGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX01BU1RFUikpYCBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byB0aGUgZXhpc3RpbmcgbG9naWMsIHNvIG5vIGNoYW5nZSB0aGVyZS5cblxuQnV0IGRvZXMgdGhpcyBjaGFuZ2UgQU5ZIGtlcm5lbCBiZWhhdmlvcj8gTGV0J3MgYmUgbWV0aWN1bG91czpcblxuKiAgICoqQ2FzZSAxOiBWUkYgRW5hYmxlZCAoYHlgIG9yIGBtYCkqKjogYElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpYCBpcyAxLiBgbmV0aWZfaXNfbDNfbWFzdGVyYCBiZWNvbWVzIGAxIFx1MDAyNlx1MDAyNiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKWAsIHdoaWNoIGlzIGp1c3QgYGJvb2woZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSKWAuIFRoZSBzYW1lIGxvZ2ljIGV4aXN0cyBmb3IgYG5ldGlmX2lzX2wzX3NsYXZlYC4gU28sIGFic29sdXRlbHkgbm8gY2hhbmdlIGluIGJlaGF2aW9yIGhlcmUuXG5cbiogICAqKkNhc2UgMjogVlJGIERpc2FibGVkIChgbmApKio6ICBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgIGlzIDAuICBgbmV0aWZfaXNfbDNfbWFzdGVyYCByZXR1cm5zIGBmYWxzZWAgYW5kIGBuZXRpZl9pc19sM19zbGF2ZWAgcmV0dXJucyBgZmFsc2VgLiAgQnV0LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXM6IENvdWxkIGBkZXYtXHUwMDNlcHJpdl9mbGFncyBcdTAwMjYgSUZGX0wzTURFVl9NQVNURVIvU0xBVkVgICpldmVyKiBiZSBub24temVybyB3aGVuIFZSRiBpcyBkaXNhYmxlZD9cblxuSSBjaGVja2VkIGlmIGFueSBvdGhlciBwYXJ0IG9mIHRoZSBrZXJuZWwgY291bGQgcG90ZW50aWFsbHkgc2V0IGBJRkZfTDNNREVWX01BU1RFUmAgb3IgYElGRl9MM01ERVZfU0xBVkVgLiBEb2luZyBhIGBnaXQgZ3JlcGAgcmV2ZWFscyB0aGF0IE9OTFkgYGRyaXZlcnMvbmV0L3ZyZi5jYCBzZXRzIHRob3NlIGZsYWdzLiBJZiBWUkYgaXMgZGlzYWJsZWQsIHRoYXQgZW50aXJlIGZpbGUgKmlzbid0IGNvbXBpbGVkKi4gU28sIHRob3NlIGZsYWdzIHdvdWxkICpuZXZlciogYmUgc2V0LiBUaGVyZWZvcmUsIHdoZW4gVlJGIGlzIGRpc2FibGVkLCBgZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSYCB3YXMgKmFsd2F5cyogZWZmZWN0aXZlbHkgMCwgcmVnYXJkbGVzcyBvZiB0aGlzIHBhdGNoLlxuXG5TbywgaXQgc2VlbXMgd2UgaGF2ZSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24sIGRlYWQgY29kZSBlbGltaW5hdGlvbiwgYW5kICpubyogY2hhbmdlIGluIGFjdHVhbCBydW50aW1lIGJlaGF2aW9yLiBUaGUgY29kZSBwYXRoIGlzIG5ldmVyIHJlYWNoYWJsZSwgbWFraW5nIGl0IGEgc2FmZSBvcHRpbWl6YXRpb24sIGJ1dCBJIHNob3VsZCBsb29rIGF0IHRoZSBydWxlcyBmb3Igd2hldGhlciBhIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCAqb25seSogY29udGFpbnMgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIFRoaXMgc2VlbXMgbGlrZSBhIHNsYW0gZHVuazogdGhlIHBhdGNoIGlzIHdvcnRoICpub3QqIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MDYxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAwOjUyOjM1LjE2ODkyOTU0N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MTYwMDAwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJRkZfTDNNREVWXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM9MjA1PWludCBpcHZsYW5fbDNzX3JlZ2lzdGVyKHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIxNC1cXHRcXHRkZXYtXFx1MDAzZWwzbWRldl9vcHMgPSBcXHUwMDI2aXB2bF9sM21kZXZfb3BzO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MjE1OlxcdFxcdGRldi1cXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTDNNREVWX1JYX0hBTkRMRVI7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMTYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0yMjE9dm9pZCBpcHZsYW5fbDNzX3VucmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjI2LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MjI3OlxcdGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2PSB+SUZGX0wzTURFVl9SWF9IQU5ETEVSO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjI4LVxcdGlwdmxhbl91bnJlZ2lzdGVyX25mX2hvb2socmVhZF9wbmV0KFxcdTAwMjZwb3J0LVxcdTAwM2VwbmV0KSk7XFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYz0xMDEyPXN0YXRpYyBpbnQgZG9fdnJmX2FkZF9zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYy0xMDI1LVxcbmRyaXZlcnMvbmV0L3ZyZi5jOjEwMjY6XFx0cG9ydF9kZXYtXFx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0wzTURFVl9TTEFWRTtcXG5kcml2ZXJzL25ldC92cmYuYy0xMDI3LVxcdHJldCA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2xpbmsocG9ydF9kZXYsIGRldiwgTlVMTCwgTlVMTCwgZXh0YWNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwMzUtZXJyOlxcbmRyaXZlcnMvbmV0L3ZyZi5jOjEwMzY6XFx0cG9ydF9kZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNj0gfklGRl9MM01ERVZfU0xBVkU7XFxuZHJpdmVycy9uZXQvdnJmLmMtMTAzNy1cXHRzeW5jaHJvbml6ZV9uZXQoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jPTEwNTc9c3RhdGljIGludCBkb192cmZfZGVsX3NsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpwb3J0X2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTEwNjAtXFx0bmV0ZGV2X3VwcGVyX2Rldl91bmxpbmsocG9ydF9kZXYsIGRldik7XFxuZHJpdmVycy9uZXQvdnJmLmM6MTA2MTpcXHRwb3J0X2Rldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2PSB+SUZGX0wzTURFVl9TTEFWRTtcXG5kcml2ZXJzL25ldC92cmYuYy0xMDYyLVxcdC8qIE1ha2Ugc3VyZSB0aGF0IGNvbmN1cnJlbnQgUkNVIHJlYWRlcnMgdGhhdCBpZGVudGlmaWVkIHRoZSBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jPTE2MzY9c3RhdGljIGludCB2cmZfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmMtMTY1OC1cXG5kcml2ZXJzL25ldC92cmYuYzoxNjU5OlxcdGRldi1cXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTDNNREVWX01BU1RFUjtcXG5kcml2ZXJzL25ldC92cmYuYy0xNjYwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xNDU1PXN0cnVjdCBuZXRfZGV2aWNlX29wcyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NDgtICpcXHR1bmRlcmx5aW5nIHN0YWNrZWQgZGV2aWNlc1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTc0OTogKiBASUZGX0wzTURFVl9NQVNURVI6IGRldmljZSBpcyBhbiBMMyBtYXN0ZXIgZGV2aWNlXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzUwLSAqIEBJRkZfTk9fUVVFVUU6IGRldmljZSBjYW4gcnVuIHdpdGhvdXQgcWRpc2MgYXR0YWNoZWRcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTEtICogQElGRl9PUEVOVlNXSVRDSDogZGV2aWNlIGlzIGEgT3BlbiB2U3dpdGNoIG1hc3RlclxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTc1MjogKiBASUZGX0wzTURFVl9TTEFWRTogZGV2aWNlIGlzIGVuc2xhdmVkIHRvIGFuIEwzIG1hc3RlciBkZXZpY2VcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NTMtICogQElGRl9URUFNOiBkZXZpY2UgaXMgYSB0ZWFtIGRldmljZVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzU5LSAqIEBJRkZfRkFJTE9WRVJfU0xBVkU6IGRldmljZSBpcyBsb3dlciBkZXYgb2YgYSBmYWlsb3ZlciBtYXN0ZXIgZGV2aWNlXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzYwOiAqIEBJRkZfTDNNREVWX1JYX0hBTkRMRVI6IG9ubHkgaW52b2tlIHRoZSByeCBoYW5kbGVyIG9mIEwzIG1hc3RlciBkZXZpY2VcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3NjEtICogQElGRl9OT19BRERSQ09ORjogcHJldmVudCBpcHY2IGFkZHJjb25mXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE3NjU9ZW51bSBuZXRkZXZfcHJpdl9mbGFncyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3ODMtXFx0SUZGX1hNSVRfRFNUX1JFTEVBU0VfUEVSTVxcdD0gMVxcdTAwM2NcXHUwMDNjMTcsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxNzg0OlxcdElGRl9MM01ERVZfTUFTVEVSXFx0XFx0PSAxXFx1MDAzY1xcdTAwM2MxOCxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3ODUtXFx0SUZGX05PX1FVRVVFXFx0XFx0XFx0PSAxXFx1MDAzY1xcdTAwM2MxOSxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE3ODYtXFx0SUZGX09QRU5WU1dJVENIXFx0XFx0XFx0PSAxXFx1MDAzY1xcdTAwM2MyMCxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE3ODc6XFx0SUZGX0wzTURFVl9TTEFWRVxcdFxcdD0gMVxcdTAwM2NcXHUwMDNjMjEsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xNzg4LVxcdElGRl9URUFNXFx0XFx0XFx0PSAxXFx1MDAzY1xcdTAwM2MyMixcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc5My1cXHRJRkZfRkFJTE9WRVJfU0xBVkVcXHRcXHQ9IDFcXHUwMDNjXFx1MDAzYzI4LFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTc5NDpcXHRJRkZfTDNNREVWX1JYX0hBTkRMRVJcXHRcXHQ9IDFcXHUwMDNjXFx1MDAzYzI5LFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTc5NS1cXHRJRkZfTk9fQUREUkNPTkZcXHRcXHRcXHQ9IEJJVF9VTEwoMzApLFxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01NjAyPXN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9oYXNfbDNfcnhfaGFuZGxlcihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYwMy17XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjA0OlxcdHJldHVybiBkZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNiBJRkZfTDNNREVWX1JYX0hBTkRMRVI7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjA1LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTYwNz1zdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfbWFzdGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjA4LXtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjU2MDk6XFx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpIFxcdTAwMjZcXHUwMDI2IChkZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNiBJRkZfTDNNREVWX01BU1RFUik7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01NjEwLX1cXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTYxMj1zdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfbDNfc2xhdmUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MTMte1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTYxNDpcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikgXFx1MDAyNlxcdTAwMjYgKGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9MM01ERVZfU0xBVkUpO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxNS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAwOjUyOjM4LjAyMDUzMzY0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozOTIxMzQ4OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIEwzTURFViBLY29uZmlnKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTDNNREVWLiBMZXQncyBkaXZlIHJpZ2h0IGludG8gdGhlIGBuZXQvbDNtZGV2L0tjb25maWdgIGZpbGUuIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gdGhyb3VnaCBpdCB0byBnZXQgYSBmZWVsIGZvciB3aGF0IGNvbmZpZ3VyYWJsZSBmZWF0dXJlcyBhbmQgc2V0dGluZ3MgYXJlIGF2YWlsYWJsZS4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSBhIHRyZWFzdXJlIHRyb3ZlIG9mIGluZm9ybWF0aW9uLCByZXZlYWxpbmcgdGhlIGtub2JzIGFuZCBkaWFscyB0aGF0IGNvbnRyb2wgdGhpcyBwYXJ0IG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJJ20gbG9va2luZyBmb3IgdGhlIGNvcmUgb3B0aW9ucywgdGhlIGRlcGVuZGVuY2llcywgYW5kIGFueSBzdWJ0bGV0aWVzIHRoYXQgbWlnaHQganVtcCBvdXQuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGJ1aWxkaW5nIGJsb2NrcyBiZWZvcmUgSSBjYW4gcHV0IHRvZ2V0aGVyIGFueXRoaW5nIGludGVyZXN0aW5nIHdpdGggaXQuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc3MiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAwOjUyOjQxLjk0MTg4NDkzMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5OTU4NjI3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfTDNfTUFTVEVSX0RFVlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdD02MDc9dGNwX2wzbWRldl9hY2NlcHQgLSBCT09MRUFOXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdC02MTItXFx0d2hpY2ggdGhlIHBhY2tldHMgb3JpZ2luYXRlZC4gT25seSB2YWxpZCB3aGVuIHRoZSBrZXJuZWwgd2FzXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3Q6NjEzOlxcdGNvbXBpbGVkIHdpdGggQ09ORklHX05FVF9MM19NQVNURVJfREVWLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0LTYxNC1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0PTE0NTQ9dWRwX2wzbWRldl9hY2NlcHQgLSBCT09MRUFOXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdC0xNDU4LVxcdG9yaWdpbmF0ZWQuIE9ubHkgdmFsaWQgd2hlbiB0aGUga2VybmVsIHdhcyBjb21waWxlZCB3aXRoXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3Q6MTQ1OTpcXHRDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QtMTQ2MC1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0PTE1MTk9cmF3X2wzbWRldl9hY2NlcHQgLSBCT09MRUFOXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdC0xNTIzLVxcdG9yaWdpbmF0ZWQuIE9ubHkgdmFsaWQgd2hlbiB0aGUga2VybmVsIHdhcyBjb21waWxlZCB3aXRoXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3Q6MTUyNDpcXHRDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QtMTUyNS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0PTM3OTc9bDNtZGV2X2FjY2VwdCAtIEJPT0xFQU5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0LTM4MDEtXFx0b3JpZ2luYXRlZC4gT25seSB2YWxpZCB3aGVuIHRoZSBrZXJuZWwgd2FzIGNvbXBpbGVkIHdpdGhcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdDozODAyOlxcdENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVi5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdC0zODAzLVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xOTM9Y29uZmlnIElQVkxBTl9MM1NcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTk2LVxcdGRlZl9ib29sIHlcXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NzpcXHRzZWxlY3QgTkVUX0wzX01BU1RFUl9ERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDcyPWNvbmZpZyBORVRfVlJGXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3NC1cXHRkZXBlbmRzIG9uIElQX01VTFRJUExFX1RBQkxFU1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc1OlxcdGRlcGVuZHMgb24gTkVUX0wzX01BU1RFUl9ERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3Ni1cXHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTIHx8IElQVjY9blxcbi0tXFxuaW5jbHVkZS9saW51eC9pcHY2Lmg9MTU2PXN0cnVjdCBpbmV0Nl9za2JfcGFybSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2lwdjYuaC0xODMtXFxuaW5jbHVkZS9saW51eC9pcHY2Lmg6MTg0OiNpZiBkZWZpbmVkKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcXG5pbmNsdWRlL2xpbnV4L2lwdjYuaC0xODUtc3RhdGljIGlubGluZSBib29sIGlwdjZfbDNtZGV2X3NrYihfX3UxNiBmbGFncylcXG4tLVxcbmluY2x1ZGUvbGludXgvaXB2Ni5oPTIxMj1zdGF0aWMgaW5saW5lIGludCBpbmV0Nl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9saW51eC9pcHY2LmgtMjEzLXtcXG5pbmNsdWRlL2xpbnV4L2lwdjYuaDoyMTQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbmluY2x1ZGUvbGludXgvaXB2Ni5oLTIxNS1cXHRpZiAoc2tiIFxcdTAwMjZcXHUwMDI2IGlwdjZfbDNtZGV2X3NrYihJUDZDQihza2IpLVxcdTAwM2VmbGFncykpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxNTg9c3RydWN0IG5ldF9kZXZpY2Uge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yMzAwLVxcdGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqZXRodG9vbF9vcHM7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyMzAxOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIzMDItXFx0Y29uc3Qgc3RydWN0IGwzbWRldl9vcHNcXHQqbDNtZGV2X29wcztcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTYxNz1zdGF0aWMgaW5saW5lIGludCBkZXZfc2RpZihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTYxOC17XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1NjE5OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTU2MjAtXFx0aWYgKG5ldGlmX2lzX2wzX3NsYXZlKGRldikpXFxuLS1cXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaD0xMjE9c3RhdGljIGlubGluZSB2b2lkIGZpYl9ydWxlX3B1dChzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUpXFxuLS1cXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaC0xMjYtXFxuaW5jbHVkZS9uZXQvZmliX3J1bGVzLmg6MTI3OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5pbmNsdWRlL25ldC9maWJfcnVsZXMuaC0xMjgtc3RhdGljIGlubGluZSB1MzIgZmliX3J1bGVfZ2V0X3RhYmxlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSxcXG4tLVxcbmluY2x1ZGUvbmV0L2dyby5oPTU1NT1zdGF0aWMgaW5saW5lIHZvaWQgaW5ldF9nZXRfaWlmX3NkaWYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICppaWYsIGludCAqc2RpZilcXG4tLVxcbmluY2x1ZGUvbmV0L2dyby5oLTU1OS1cXG5pbmNsdWRlL25ldC9ncm8uaDo1NjA6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbmluY2x1ZGUvbmV0L2dyby5oLTU2MS1cXHRpZiAobmV0aWZfaXNfbDNfc2xhdmUoc2tiLVxcdTAwM2VkZXYpKSB7XFxuLS1cXG5pbmNsdWRlL25ldC9ncm8uaD01NzY9c3RhdGljIGlubGluZSB2b2lkIGluZXQ2X2dldF9paWZfc2RpZihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKmlpZiwgaW50ICpzZGlmKVxcbi0tXFxuaW5jbHVkZS9uZXQvZ3JvLmgtNTgxLVxcbmluY2x1ZGUvbmV0L2dyby5oOjU4MjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXFxuaW5jbHVkZS9uZXQvZ3JvLmgtNTgzLVxcdGlmIChuZXRpZl9pc19sM19zbGF2ZShza2ItXFx1MDAzZWRldikpIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oPTExNT1zdGF0aWMgaW5saW5lIGludCBpbmV0X3JlcXVlc3RfYm91bmRfZGV2X2lmKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oLTExOC1cXHRpbnQgYm91bmRfZGV2X2lmID0gUkVBRF9PTkNFKHNrLVxcdTAwM2Vza19ib3VuZF9kZXZfaWYpO1xcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oOjExOTojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxuaW5jbHVkZS9uZXQvaW5ldF9zb2NrLmgtMTIwLVxcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcXG4tLVxcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oPTEyOT1zdGF0aWMgaW5saW5lIGludCBpbmV0X3NrX2JvdW5kX2wzbWRldihjb25zdCBzdHJ1Y3Qgc29jayAqc2spXFxuaW5jbHVkZS9uZXQvaW5ldF9zb2NrLmgtMTMwLXtcXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaDoxMzE6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oLTEzMi1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuLS1cXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaD0xNTA9c3RhdGljIGlubGluZSBib29sIGluZXRfc2tfYm91bmRfZGV2X2VxKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbmluY2x1ZGUvbmV0L2luZXRfc29jay5oLTE1My17XFxuaW5jbHVkZS9uZXQvaW5ldF9zb2NrLmg6MTU0OiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcXG5pbmNsdWRlL25ldC9pbmV0X3NvY2suaC0xNTUtXFx0cmV0dXJuIGluZXRfYm91bmRfZGV2X2VxKCEhUkVBRF9PTkNFKG5ldC1cXHUwMDNlaXB2NC5zeXNjdGxfdGNwX2wzbWRldl9hY2NlcHQpLFxcbi0tXFxuaW5jbHVkZS9uZXQvaXAuaD0xMTE9c3RhdGljIGlubGluZSBpbnQgaW5ldF9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9uZXQvaXAuaC0xMTIte1xcbmluY2x1ZGUvbmV0L2lwLmg6MTEzOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVilcXG5pbmNsdWRlL25ldC9pcC5oLTExNC1cXHRpZiAoc2tiIFxcdTAwMjZcXHUwMDI2IGlwdjRfbDNtZGV2X3NrYihJUENCKHNrYiktXFx1MDAzZWZsYWdzKSlcXG4tLVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oPTM1PXN0cnVjdCBsM21kZXZfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oLTQ3LVxcbmluY2x1ZGUvbmV0L2wzbWRldi5oOjQ4OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5pbmNsdWRlL25ldC9sM21kZXYuaC00OS1cXG4tLVxcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaD01NT1zdHJ1Y3QgbmV0bnNfaXB2NCB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0LmgtMTcwLVxcdHUzMiBzeXNjdGxfaXBfbG9jYWxfcG9ydF9zdGVwX3dpZHRoO1xcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaDoxNzE6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaC0xNzItXFx0dTggc3lzY3RsX3Jhd19sM21kZXZfYWNjZXB0O1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oLTI1NS1cXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0Lmg6MjU2OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0LmgtMjU3LVxcdHU4IHN5c2N0bF91ZHBfbDNtZGV2X2FjY2VwdDtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldG5zL3NjdHAuaD0xMz1zdHJ1Y3QgbmV0bnNfc2N0cCB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRucy9zY3RwLmgtMTc4LVxcbmluY2x1ZGUvbmV0L25ldG5zL3NjdHAuaDoxNzk6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbmluY2x1ZGUvbmV0L25ldG5zL3NjdHAuaC0xODAtXFx0aW50IGwzbWRldl9hY2NlcHQ7XFxuLS1cXG5pbmNsdWRlL25ldC9yYXcuaD04OT1zdGF0aWMgaW5saW5lIGJvb2wgcmF3X3NrX2JvdW5kX2Rldl9lcShzdHJ1Y3QgbmV0ICpuZXQsIGludCBib3VuZF9kZXZfaWYsXFxuLS1cXG5pbmNsdWRlL25ldC9yYXcuaC05MS17XFxuaW5jbHVkZS9uZXQvcmF3Lmg6OTI6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbmluY2x1ZGUvbmV0L3Jhdy5oLTkzLVxcdHJldHVybiBpbmV0X2JvdW5kX2Rldl9lcShSRUFEX09OQ0UobmV0LVxcdTAwM2VpcHY0LnN5c2N0bF9yYXdfbDNtZGV2X2FjY2VwdCksXFxuLS1cXG5pbmNsdWRlL25ldC90Y3AuaD0xMTc5PXN0YXRpYyBpbmxpbmUgaW50IHRjcF92Nl9zZGlmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9uZXQvdGNwLmgtMTE4MC17XFxuaW5jbHVkZS9uZXQvdGNwLmg6MTE4MTojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXFxuaW5jbHVkZS9uZXQvdGNwLmgtMTE4Mi1cXHRpZiAoc2tiIFxcdTAwMjZcXHUwMDI2IGlwdjZfbDNtZGV2X3NrYihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWhlYWRlci5oNi5mbGFncykpXFxuLS1cXG5pbmNsdWRlL25ldC90Y3AuaD0xMTk1PXN0YXRpYyBpbmxpbmUgaW50IHRjcF92NF9zZGlmKHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9uZXQvdGNwLmgtMTE5Ni17XFxuaW5jbHVkZS9uZXQvdGNwLmg6MTE5NzojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXFxuaW5jbHVkZS9uZXQvdGNwLmgtMTE5OC1cXHRpZiAoc2tiIFxcdTAwMjZcXHUwMDI2IGlwdjRfbDNtZGV2X3NrYihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWhlYWRlci5oNC5mbGFncykpXFxuLS1cXG5pbmNsdWRlL25ldC91ZHAuaD0zODU9c3RhdGljIGlubGluZSBib29sIHVkcF9za19ib3VuZF9kZXZfZXEoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgYm91bmRfZGV2X2lmLFxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwLmgtMzg3LXtcXG5pbmNsdWRlL25ldC91ZHAuaDozODg6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbmluY2x1ZGUvbmV0L3VkcC5oLTM4OS1cXHRyZXR1cm4gaW5ldF9ib3VuZF9kZXZfZXEoISFSRUFEX09OQ0UobmV0LVxcdTAwM2VpcHY0LnN5c2N0bF91ZHBfbDNtZGV2X2FjY2VwdCksXFxuLS1cXG5uZXQvTWFrZWZpbGU9Njk9b2JqLSQoQ09ORklHX05FVF9TV0lUQ0hERVYpXFx0Kz0gc3dpdGNoZGV2L1xcbm5ldC9NYWtlZmlsZTo3MDpvYmotJChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXFx0Kz0gbDNtZGV2L1xcbm5ldC9NYWtlZmlsZS03MS1vYmotJChDT05GSUdfUVJUUilcXHRcXHQrPSBxcnRyL1xcbi0tXFxubmV0L2NvcmUvZmliX3J1bGVzLmM9NDM5PXN0YXRpYyBzdHJ1Y3QgZmliX3J1bGUgKnJ1bGVfZmluZChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLFxcbi0tXFxubmV0L2NvcmUvZmliX3J1bGVzLmMtNTE5LVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjUyMDojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2NvcmUvZmliX3J1bGVzLmMtNTIxLXN0YXRpYyBpbnQgZmliX25sMnJ1bGVfbDNtZGV2KHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXFxuLS1cXG5uZXQvaXB2NC9yYXcuYz0xMTE2PXN0YXRpYyB2b2lkIHJhd19zeXNjdGxfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9pcHY0L3Jhdy5jLTExMTcte1xcbm5ldC9pcHY0L3Jhdy5jOjExMTg6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbm5ldC9pcHY0L3Jhdy5jLTExMTktXFx0bmV0LVxcdTAwM2VpcHY0LnN5c2N0bF9yYXdfbDNtZGV2X2FjY2VwdCA9IDE7XFxuLS1cXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYz02Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgaXB2NF9uZXRfdGFibGVbXSA9IHtcXG4tLVxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTcyNS1cXHR9LFxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjcyNjojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtNzI3LVxcdHtcXG4tLVxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTg5Mi1cXHR9LFxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjg5MzojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtODk0LVxcdHtcXG4tLVxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTExOTUtXFx0fSxcXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYzoxMTk2OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYy0xMTk3LVxcdHtcXG4tLVxcbm5ldC9pcHY0L3VkcC5jPTM2OTk9c3RhdGljIHZvaWQgX19uZXRfaW5pdCB1ZHBfc3lzY3RsX2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L2lwdjQvdWRwLmMtMzcwMy1cXG5uZXQvaXB2NC91ZHAuYzozNzA0OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2NC91ZHAuYy0zNzA1LVxcdG5ldC1cXHUwMDNlaXB2NC5zeXNjdGxfdWRwX2wzbWRldl9hY2NlcHQgPSAwO1xcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE4Nz1zdHJ1Y3Qgc2VnNl9sb2NhbF9sd3Qge1xcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE5NS1cXHRzdHJ1Y3QgYnBmX2x3dF9wcm9nIGJwZjtcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTk2OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTk3LVxcdHN0cnVjdCBzZWc2X2VuZF9kdF9pbmZvIGR0X2luZm87XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM9OTk4PXN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9keDQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMDIxLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMDIyOiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTAyMy1zdGF0aWMgc3RydWN0IG5ldCAqZmliNl9jb25maWdfZ2V0X25ldChjb25zdCBzdHJ1Y3QgZmliNl9jb25maWcgKmZpYjZfY2ZnKVxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTEyNzQ9c3RhdGljIGludCBpbnB1dF9hY3Rpb25fZW5kX2R0NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEyODItXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjEyODM6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMjg0LVxcdGlmIChzZWc2X2VuZF9kdDZfZ2V0X21vZGUoc2x3dCkgPT0gRFRfTEVHQUNZX01PREUpXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTMxNS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTMxNjojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEzMTctc3RhdGljIGludCBzZWc2X2VuZF9kdDQ2X2J1aWxkKHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dCwgY29uc3Qgdm9pZCAqY2ZnLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE0ODc9c3RhdGljIHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjIHNlZzZfYWN0aW9uX3RhYmxlW10gPSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUzMC1cXHRcXHQub3B0YXR0cnNcXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTUzMTojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1MzItXFx0XFx0LmlucHV0XFx0XFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTM5LVxcdFxcdC5hY3Rpb25cXHRcXHQ9IFNFRzZfTE9DQUxfQUNUSU9OX0VORF9EVDYsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1NDA6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQxLVxcdFxcdC5hdHRyc1xcdFxcdD0gMCxcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTU3LVxcdFxcdC5vcHRhdHRyc1xcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTU4OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU1OS1cXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ0NixcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xNzU5PXNlZzZfZW5kX2R0X2luZm8gKnNlZzZfcG9zc2libGVfZW5kX2R0X2luZm8oc3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0KVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNzYwLXtcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTc2MTojaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE3NjItXFx0cmV0dXJuIFxcdTAwMjZzbHd0LVxcdTAwM2VkdF9pbmZvO1xcbi0tXFxubmV0L2wzbWRldi9LY29uZmlnLTUtXFxubmV0L2wzbWRldi9LY29uZmlnOjY6Y29uZmlnIE5FVF9MM19NQVNURVJfREVWXFxubmV0L2wzbWRldi9LY29uZmlnLTctXFx0Ym9vbCBcXFwiTDMgTWFzdGVyIGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYz0xMjQ9c3RhdGljIGJvb2wgaW5fdnJmX3Bvc3Ryb3V0aW5nKGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZSlcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90by5jLTEyNS17XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG8uYzoxMjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvLmMtMTI3LVxcdGlmIChzdGF0ZS1cXHUwMDNlaG9vayA9PSBORl9JTkVUX1BPU1RfUk9VVElORyBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jPTg4MT1zdGF0aWMgYm9vbCBpbl92cmZfcG9zdHJvdXRpbmcoY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYy04ODIte1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYzo4ODM6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9MM19NQVNURVJfREVWKVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYy04ODQtXFx0aWYgKHN0YXRlLVxcdTAwM2Vob29rID09IE5GX0lORVRfUE9TVF9ST1VUSU5HIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvc2N0cC9pbnB1dC5jPTk4ND1ib29sIHNjdHBfc2tfYm91bmRfZGV2X2VxKHN0cnVjdCBuZXQgKm5ldCwgaW50IGJvdW5kX2Rldl9pZiwgaW50IGRpZiwgaW50IHNkaWYpXFxuLS1cXG5uZXQvc2N0cC9pbnB1dC5jLTk4Ny1cXG5uZXQvc2N0cC9pbnB1dC5jOjk4ODojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0wzX01BU1RFUl9ERVYpXFxubmV0L3NjdHAvaW5wdXQuYy05ODktXFx0bDNtZGV2X2FjY2VwdCA9ICEhUkVBRF9PTkNFKG5ldC1cXHUwMDNlc2N0cC5sM21kZXZfYWNjZXB0KTtcXG4tLVxcbm5ldC9zY3RwL3Byb3RvY29sLmM9MTI4OT1zdGF0aWMgaW50IF9fbmV0X2luaXQgc2N0cF9kZWZhdWx0c19pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9zY3RwL3Byb3RvY29sLmMtMTM4MS1cXG5uZXQvc2N0cC9wcm90b2NvbC5jOjEzODI6I2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxcbm5ldC9zY3RwL3Byb3RvY29sLmMtMTM4My1cXHRuZXQtXFx1MDAzZXNjdHAubDNtZGV2X2FjY2VwdCA9IDE7XFxuLS1cXG5uZXQvc2N0cC9zeXNjdGwuYz05NT1zdGF0aWMgY29uc3Qgc3RydWN0IGN0bF90YWJsZSBzY3RwX25ldF90YWJsZVtdID0ge1xcbi0tXFxubmV0L3NjdHAvc3lzY3RsLmMtMzU3LVxcdH0sXFxubmV0L3NjdHAvc3lzY3RsLmM6MzU4OiNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvc2N0cC9zeXNjdGwuYy0zNTktXFx0e1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsPTQ5PUNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQlBGPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw6NTA6Q09ORklHX05FVF9MM19NQVNURVJfREVWPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtNTEtQ09ORklHX05FVF9WUkY9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTQ0PUNPTkZJR19ORVRfQUNUX0JQRj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjQ1OkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0LTQ2LUNPTkZJR19ORVRfVlJGPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTE0MD1DT05GSUdfTkVUX0lQR1JFX0JST0FEQ0FTVD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ6MTQxOkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQtMTQyLUNPTkZJR19ORVRfU0NIX0RFRkFVTFQ9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvdmlydGlvX25ldC9jb25maWc9ND1DT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQvY29uZmlnOjU6Q09ORklHX05FVF9MM19NQVNURVJfREVWPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC92aXJ0aW9fbmV0L2NvbmZpZy02LUNPTkZJR19ORVRfVlJGPW1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTE0OD1DT05GSUdfTkVUX0lQR1JFX0JST0FEQ0FTVD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb246MTQ5OkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb24tMTUwLUNPTkZJR19ORVRMQUJFTD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTk2PUNPTkZJR19ORVRLSVQ9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWc6OTc6Q09ORklHX05FVF9MM19NQVNURVJfREVWPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnLTk4LUNPTkZJR19ORVRfTlM9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnPTM4PUNPTkZJR19ORVRfSVBJUD1tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnOjM5OkNPTkZJR19ORVRfTDNfTUFTVEVSX0RFVj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnLTQwLUNPTkZJR19ORVRfTlM9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldGZpbHRlci9jb25maWc9NTc9Q09ORklHX05FVF9JUElQPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzo1ODpDT05GSUdfTkVUX0wzX01BU1RFUl9ERVY9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXRmaWx0ZXIvY29uZmlnLTU5LUNPTkZJR19ORVRfTlM9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3RjcF9hby9jb25maWc9Mj1DT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90Y3BfYW8vY29uZmlnOjM6Q09ORklHX05FVF9MM19NQVNURVJfREVWPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGNwX2FvL2NvbmZpZy00LUNPTkZJR19ORVRfVlJGPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDA6NTI6NDMuOTQxNDc1NjM5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc2NTMyMDc4OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFByb3Bvc2VkIEtlcm5lbCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoYXQgYENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAgY2FuIGJlIGVuYWJsZWQgaW5kZXBlbmRlbnRseSBvZiBgQ09ORklHX05FVF9WUkZgLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgcG9pbnQgdG8gY29uc2lkZXIuIFNwZWNpZmljYWxseSwgYENPTkZJR19JUFZMQU5fTDNTYCBzZWxlY3RzIGBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZgLiBUaGlzIHJhaXNlcyBhIHF1ZXN0aW9uOiB3aGVuIGBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZgIGlzIHllcyBhbmQgYENPTkZJR19ORVRfVlJGYCBpcyBubywgd2hhdCBoYXBwZW5zP1xuXG5GdXJ0aGVyIGluc3BlY3Rpb24gcmV2ZWFscyB0aGF0IGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jYCAqZG9lcyogdXNlIGBJRkZfTDNNREVWX1JYX0hBTkRMRVJgLCBidXQgaXQgKmRvZXNuJ3QqIHVzZSBgSUZGX0wzTURFVl9NQVNURVJgIG9yIGBJRkZfTDNNREVWX1NMQVZFYC4gVGhlIFZSRiBkcml2ZXIgaXMgdGhlICpzb2xlKiB1c2VyIG9mIHRob3NlIGZsYWdzLiBUaHVzLCBpZiBgQ09ORklHX05FVF9WUkZgIGlzbid0IGVuYWJsZWQsIG5vIG5ldCBkZXZpY2Ugd2lsbCBldmVyIGhhdmUgYGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX01BU1RFUmAgb3IgYGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX1NMQVZFYCBzZXQuIENvbnNlcXVlbnRseSwgYG5ldGlmX2lzX2wzX21hc3RlcihkZXYpYCBhbmQgYG5ldGlmX2lzX2wzX3NsYXZlKGRldilgIHdvdWxkIGV2YWx1YXRlIHRvIGZhbHNlIGF0IHJ1bnRpbWUgaW4gc3VjaCBhIHNjZW5hcmlvLiBUaGUgcHJvcG9zZWQgY2hhbmdlLCB1c2luZyBgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRilgLCBzaW1wbHkgbWFrZXMgdGhhdCBldmFsdWF0aW9uIGhhcHBlbiBhdCBjb21waWxlIHRpbWUgd2hlbiBgQ09ORklHX05FVF9WUkZgIGlzICduJywgYW5kIGxlYXZlcyB0aGUgc2FtZSBydW50aW1lIGNoZWNrIGluIHBsYWNlIHdoZW4gVlJGIGlzIGVuYWJsZWQuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiBwbGFjZXMgd2hlcmUgdGhlc2UgZmxhZ3MgYXJlIHNldC4gU28sIEkgbmVlZCB0byBjaGVjayB0aGUgZW50aXJlIHRyZWUuIEEgcXVpY2sgc2VhcmNoIGNvbmZpcm1zIHRoYXQgYElGRl9MM01ERVZfTUFTVEVSYCBhbmQgYElGRl9MM01ERVZfU0xBVkVgIGFyZSBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oYCAoYWxvbmcgd2l0aCB0aGUgaGVscGVyIGZ1bmN0aW9ucyksIGFuZCBzZXQvdW5zZXQgaW4gYGRyaXZlcnMvbmV0L3ZyZi5jYC4gTm8gb3RoZXIgY29kZSBwYXRocyBtb2RpZnkgdGhlc2UgZmxhZ3MuXG5cblRoZXJlZm9yZSwgdGhlIGV4cHJlc3Npb25zIGBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKSBcdTAwMjZcdTAwMjYgKGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNiBJRkZfTDNNREVWX01BU1RFUilgIGFuZCBgZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9MM01ERVZfTUFTVEVSYCBhcmUgMTAwJSBzZW1hbnRpY2FsbHkgaWRlbnRpY2FsLiBUaGUgcHJvcG9zZWQgY2hhbmdlIG9ubHkgZGlmZmVycyBieSBlbmFibGluZyBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9uIHdoZW4gYENPTkZJR19ORVRfVlJGYCBpcyBkaXNhYmxlZC5cblxuTm93LCBsZXQncyBhcHBseSB0aGUgV29ydGhGdXp6aW5nIGNyaXRlcmlhLiBUaGUgcGF0Y2ggbW9kaWZpZXMgRG9jdW1lbnRhdGlvbi8gb3IgS2NvbmZpZyBmaWxlcywgY29kZSBjb21tZW50cywgbG9nZ2luZyBvciB0cmFjZXBvaW50cy4gSXQgYWxzbyBhbHRlcnMgbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4gSXQgZG9lc24ndCB0b3VjaCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBub3IgZG9lcyBpdCB0b3VjaCBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIG9yIHRoZSAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MuIFRoaXMgcGF0Y2ggaXMgZXNzZW50aWFsbHkgYSBub24tZnVuY3Rpb25hbCBvcHRpbWl6YXRpb24gdG8gaGVscGVyIGZ1bmN0aW9ucy4gSXQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBsb2dpYywgbm9yIGRvZXMgaXQgYWZmZWN0IGV4ZWN1dGlvbiBmbG93IG9yIHJ1bnRpbWUgYmVoYXZpb3IgaW4gYW55IGtlcm5lbCBjb25maWd1cmF0aW9uLlxuXG5UaGUgcmVzdWx0IGlzOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgYXJyYXlzIGFyZSBlbXB0eS4gVGhlIHJlYXNvbmluZywgd2hpY2ggSSB3aWxsIHN1bW1hcml6ZSBmb3IgdGhlIGZpbmFsIHN0ZXAsIGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGhlbHBlciBmdW5jdGlvbnMgdG8gZ3VhcmQgZmxhZyBjaGVja3MsIGFuZCB0aGVzZSBmbGFncyBhcmUgZXhjbHVzaXZlbHkgc2V0IGJ5IHRoZSBWUkYgZHJpdmVyLiBUaGlzIGlzIHB1cmVseSBhIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24gd2hlbiBWUkYgaXMgZGlzYWJsZWQsIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXJpbmcgcnVudGltZSBiZWhhdmlvci5cblxuU28gbGV0J3MgZmluYWxpemUgdGhlIGBzZXQtcmVzdWx0c2A6XG4tIFdvcnRoRnV6emluZzogZmFsc2Vcbi0gRm9jdXNTeW1ib2xzOiBbXVxuLSBFbmFibGVDb25maWdzOiBbXVxuLSBSZWFzb25pbmc6IFRoZSBwYXRjaCBtb2RpZmllcyBgbmV0aWZfaXNfbDNfbWFzdGVyKClgIGFuZCBgbmV0aWZfaXNfbDNfc2xhdmUoKWAgaW4gYGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhgIHRvIGd1YXJkIHRoZSBmbGFnIGNoZWNrcyB3aXRoIGBJU19FTkFCTEVEKENPTkZJR19ORVRfVlJGKWAuIEJlY2F1c2UgdGhlIGBJRkZfTDNNREVWX01BU1RFUmAgYW5kIGBJRkZfTDNNREVWX1NMQVZFYCBmbGFncyBhcmUgZXhjbHVzaXZlbHkgc2V0IGJ5IHRoZSBWUkYgZHJpdmVyIChgZHJpdmVycy9uZXQvdnJmLmNgKSwgdGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbiB3aGVuIGBDT05GSUdfTkVUX1ZSRmAgaXMgZGlzYWJsZWQgYW5kIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gYmVoYXZpb3IgaW4gYW55IGtlcm5lbCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDg3NiwiT3V0cHV0VG9rZW5zIjoxNDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAwOjUyOjUxLjU5NDY4NjI2N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgbmV0aWZfaXNfbDNfbWFzdGVyKCkgYW5kIG5ldGlmX2lzX2wzX3NsYXZlKCkgaW4gaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCB0byBpbmNsdWRlIElTX0VOQUJMRUQoQ09ORklHX05FVF9WUkYpLiBCZWNhdXNlIElGRl9MM01ERVZfTUFTVEVSIGFuZCBJRkZfTDNNREVWX1NMQVZFIGZsYWdzIGFyZSBleGNsdXNpdmVseSBtYW5pcHVsYXRlZCBieSBkcml2ZXJzL25ldC92cmYuYywgdGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbiB3aGVuIENPTkZJR19ORVRfVlJGIGlzIGRpc2FibGVkIGFuZCBkb2VzIG5vdCBhbHRlciBydW50aW1lIGJlaGF2aW9yIG9yIGV4ZWN1dGlvbiBmbG93IHVuZGVyIGFueSBjb25maWd1cmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBuZXRpZl9pc19sM19tYXN0ZXIoKSBhbmQgbmV0aWZfaXNfbDNfc2xhdmUoKSBpbiBpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIHRvIGluY2x1ZGUgSVNfRU5BQkxFRChDT05GSUdfTkVUX1ZSRikuIEJlY2F1c2UgSUZGX0wzTURFVl9NQVNURVIgYW5kIElGRl9MM01ERVZfU0xBVkUgZmxhZ3MgYXJlIGV4Y2x1c2l2ZWx5IG1hbmlwdWxhdGVkIGJ5IGRyaXZlcnMvbmV0L3ZyZi5jLCB0aGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9uIHdoZW4gQ09ORklHX05FVF9WUkYgaXMgZGlzYWJsZWQgYW5kIGRvZXMgbm90IGFsdGVyIHJ1bnRpbWUgYmVoYXZpb3Igb3IgZXhlY3V0aW9uIGZsb3cgdW5kZXIgYW55IGNvbmZpZ3VyYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMDo1Mjo1MS41OTQ3MzUwODdaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6ldwb[1] Phase: Running StartedAt: 2026-09-01 00:53:02 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6ldwb[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-01 00:53:02 +0000 UTC FinishedAt: 2026-09-01 00:53:07 +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,}