Name: series-workflowxr592 Phase: Failed StartedAt: 2026-08-08 02:19:47 +0000 UTC FinishedAt: 2026-08-08 02:37:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxr592[0] Phase: Succeeded StartedAt: 2026-08-08 02:19:47 +0000 UTC FinishedAt: 2026-08-08 02:37:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxr592[0].run-triage Phase: Succeeded StartedAt: 2026-08-08 02:19:47 +0000 UTC FinishedAt: 2026-08-08 02:37:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSAoUGVudGEgU0dNSUkpIGhhcmR3YXJlIGludGVyZmFjZSBtb2RlIHRvIHRoZSBwaHlsaW5rIGNvcmUuIFRoaXMgc3BlY2lmaWMgUEhZIGludGVyZmFjZSBtb2RlIGlzIG9ubHkgdXNlZCBieSByZWFsIGhhcmR3YXJlIE1BQy9QSFkgZHJpdmVycyAoZS5nLiwgcWNhODA3eCkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIG9yIGV0aHRvb2wuIFNpbmNlIG5vIHZpcnR1YWxpemVkIG5ldHdvcmsgZHJpdmVycyAobGlrZSBkdW1teSwgdmV0aCwgb3IgVVNCIGdhZGdldCBuZXR3b3JrIGRyaXZlcnMpIHVzZSB0aGlzIGludGVyZmFjZSBtb2RlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNhNjRhNTdlNTE2MTE4ODRmYzU2MDEzMzQ1M2VjZGRlYWM5NzUyOGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDAyOjM1OjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCAxOGQyZWFkOTdhYTU0Li45ODNhMWEzY2VlMzc0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuQEAgLTEwNDAsNiAmIzQzOzEwNDAsNyBAQCBzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbiBcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RVVNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSAoUGVudGEgU0dNSUkpIGhhcmR3YXJlIGludGVyZmFjZSBtb2RlIHRvIHRoZSBwaHlsaW5rIGNvcmUuIFRoaXMgc3BlY2lmaWMgUEhZIGludGVyZmFjZSBtb2RlIGlzIG9ubHkgdXNlZCBieSByZWFsIGhhcmR3YXJlIE1BQy9QSFkgZHJpdmVycyAoZS5nLiwgcWNhODA3eCkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIG9yIGV0aHRvb2wuIFNpbmNlIG5vIHZpcnR1YWxpemVkIG5ldHdvcmsgZHJpdmVycyAobGlrZSBkdW1teSwgdmV0aCwgb3IgVVNCIGdhZGdldCBuZXR3b3JrIGRyaXZlcnMpIHVzZSB0aGlzIGludGVyZmFjZSBtb2RlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNhNjRhNTdlNTE2MTE4ODRmYzU2MDEzMzQ1M2VjZGRlYWM5NzUyOGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyA4IDAyOjM1OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKaW5kZXggMThkMmVhZDk3YWE1NC4uOTgzYTFhM2NlZTM3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCkBAIC0xMDQwLDYgJiM0MzsxMDQwLDcgQEAgc3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKIHsKIAlzd2l0Y2ggKGludGVyZmFjZSkgewogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOgomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSToKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4NgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkFuYWx5emluZyB0aGUgUGh5bGluayBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKClgLiBUaGF0IGZ1bmN0aW9uJiMzOTtzIGEgY3J1Y2lhbCBwaWVjZSwgYXMgaXQgZGV0ZXJtaW5lcyBob3cgdGhlIFBIWSBpbnRlcmFjdHMgd2l0aCB0aGUgbmV0d29yayBzdGFjay4gU3BlY2lmaWNhbGx5LCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGludG8gdGhlIGBzd2l0Y2hgIHN0YXRlbWVudCB3aXRoaW4gYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKClgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYy4gSSBuZWVkIHRvIHNlZSBob3cgYFBTR01JSWAgaXMgYmVpbmcgaW50ZWdyYXRlZCBpbnRvIHRoZSBleGlzdGluZyBpbnRlcmZhY2UgdHlwZSBoYW5kbGluZy4gV2hhdCBpbXBsaWNhdGlvbnMgZG9lcyB0aGlzIGhhdmUgb24gdGhlIFBIWS10by1NQUMgbmVnb3RpYXRpb24gcHJvY2Vzcz8gSXMgdGhlcmUgYW55IGFkZGVkIGVycm9yIGNoZWNraW5nLCBvciBkb2VzIHRoaXMgc2ltcGx5IGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgbW9kZT8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIG1vZGVzLCBhbmQgYW55IG5ldyBkZXBlbmRlbmNpZXMgaXQgaW50cm9kdWNlcywgb3IgY2hhbmdlcyB0byB0aGUgYmVoYXZpb3Igb2YgZXhpc3RpbmcgbW9kZXMuIEFuZCBvZiBjb3Vyc2UsIEkgd2lsbCBuZWVkIHRvIGVuc3VyZSB0aGlzIGNoYW5nZSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfZ2V0X2luYmFuZF90eXBlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzM9ZW51bSBpbmJhbmRfdHlwZSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDM4LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDM5OnN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTA5MD1zdGF0aWMgdm9pZCBwaHlsaW5rX3Bjc19uZWdfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA5OC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA5OTpcdHR5cGUgPSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMTAwLVx0aWYgKHR5cGUgPT0gSU5CQU5EX05PTkUpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM3NTY9c3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODA2LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozODA3Olx0aW5iYW5kX3R5cGUgPSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODA4LVx0aWYgKGluYmFuZF90eXBlID09IElOQkFORF9OT05FKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcwMAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4KCioqQW5hbHl6aW5nIFRoaXMgUEhZIEludGVyZmFjZSBQYXRjaCoqCgpTbywgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpbnRvIHRoZSBzd2l0Y2ggc3RhdGVtZW50LiBUaGF0IG1lYW5zLCBub3csIHdoZW4gYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCBpcyBjYWxsZWQsIGl0IHNob3VsZCBjb3JyZWN0bHkgaWRlbnRpZnkgYElOQkFORF9TR01JSWAgaW5zdGVhZCBvZiBmYWxsaW5nIGJhY2sgdG8gdGhlIGRlZmF1bHQgb3IgYElOQkFORF9OT05FYC4gV2FpdCwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgIGl0c2VsZiB0byBtYWtlIHN1cmUgdGhpcyBpcyBhY3R1YWxseSBjb3JyZWN0LCBhbmQgaXQgaXMgYmVoYXZpbmcgYXMgSSB3b3VsZCBleHBlY3QsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIFBIWSBsYXllci4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBoYW5kbGluZyBvZiBgSU5CQU5EX1NHTUlJYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwMzk6XHRzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuMTA0MDpcdHtcbjEwNDE6XHRcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4xMDQyOlx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbjEwNDM6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbjEwNDQ6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbjEwNDU6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6XG4xMDQ2Olx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxuMTA0NzpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSTpcbjEwNDg6XHRcdFx0LyogVGhlc2UgcHJvdG9jb2xzIGFyZSBkZXNpZ25lZCBmb3IgdXNlIHdpdGggYSBQSFkgd2hpY2hcbjEwNDk6XHRcdFx0ICogY29tbXVuaWNhdGVzIGl0cyBuZWdvdGlhdGlvbiByZXN1bHQgYmFjayB0byB0aGUgTUFDIHZpYVxuMTA1MDpcdFx0XHQgKiBpbmJhbmQgY29tbXVuaWNhdGlvbi4gTm90ZTogdGhlcmUgZXhpc3QgUEhZcyB0aGF0IHJ1blxuMTA1MTpcdFx0XHQgKiB3aXRoIFNHTUlJIGJ1dCBkbyBub3Qgc2VuZCB0aGUgaW5iYW5kIGRhdGEuXG4xMDUyOlx0XHRcdCAqL1xuMTA1MzpcdFx0XHRyZXR1cm4gSU5CQU5EX0NJU0NPX1NHTUlJO1xuMTA1NDpcdFxuMTA1NTpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYOlxuMTA1NjpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuMTA1NzpcdFx0XHQvKiAxMDAwYmFzZS1YIGlzIGRlc2lnbmVkIGZvciB1c2UgbWVkaWEtc2lkZSBmb3IgRmlicmVcbjEwNTg6XHRcdFx0ICogY29ubmVjdGlvbnMsIGFuZCB0aHVzIHRoZSBBdXRvbmVnIGJpdCBuZWVkcyB0byBiZVxuMTA1OTpcdFx0XHQgKiB0YWtlbiBpbnRvIGFjY291bnQuIFdlIGFsc28gZG8gdGhpcyBmb3IgMjUwMGJhc2UtWFxuMTA2MDpcdFx0XHQgKiBhcyB3ZWxsLCBidXQgZHJpdmVycyBtYXkgbm90IHN1cHBvcnQgdGhpcywgc28gbWF5XG4xMDYxOlx0XHRcdCAqIG5lZWQgdG8gb3ZlcnJpZGUgdGhpcy5cbjEwNjI6XHRcdFx0ICovXG4xMDYzOlx0XHRcdHJldHVybiBJTkJBTkRfQkFTRVg7XG4xMDY0Olx0XG4xMDY1Olx0XHRkZWZhdWx0OlxuMTA2NjpcdFx0XHRyZXR1cm4gSU5CQU5EX05PTkU7XG4xMDY3Olx0XHR9XG4xMDY4Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NjcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUaGlzIFRpbnkgQ2hhbmdlPyBUaGUgUXVlc3Rpb24gb2YgVmlydHVhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcHJldHR5IG1pbm9yIG1vZGlmaWNhdGlvbiBpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBJdCYjMzk7cyBhIHNpbXBsZSByZXR1cm4gdmFsdWUgY2hhbmdlIGZvciBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIGZyb20gYElOQkFORF9OT05FYCB0byBgSU5CQU5EX0NJU0NPX1NHTUlJYC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIHRoaXMgZXZlbiB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmc/IEl0JiMzOTtzIGEgc21hbGwgY2hhbmdlLCBidXQgZXZlbiBzbWFsbCBjaGFuZ2VzIGNhbiBoaWRlIHZ1bG5lcmFiaWxpdGllcywgb2YgY291cnNlLgoKVGhlIGZ1bmN0aW9uJiMzOTtzIGNhbGxlZCBpbiBgcGh5bGlua19wY3NfbmVnX21vZGVgIGFuZCBgcGh5bGlua19zZnBfY29uZmlnX29wdGljYWxgLCB3aGljaCBuYXJyb3dzIGRvd24gdGhlIGF0dGFjayBzdXJmYWNlIHRvIGEgZGVncmVlLiBUaGUgYmlnIHByb2JsZW0sIHRob3VnaCwgaXMgaG93IGFjY2Vzc2libGUgYHBoeWxpbmtgIGlzIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBDYW4gd2UgZXZlbiB0cmlnZ2VyIHRoaXMgY2hhbmdlIGluIGEgY29udHJvbGxlZCBzZXR0aW5nPwoKTGV0JiMzOTtzIHNlZS4gYHBoeWxpbmtgICppcyogcHJldHR5IHdpZGVseSB1c2VkIGluIG5ldHdvcmsgZHJpdmVycywgc28gdGhhdCYjMzk7cyBlbmNvdXJhZ2luZy4gQnV0IGNhbiB3ZSByZWFjaCBpdCB2aWEsIHNheSwgYSB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVyLCBvciB0aHJvdWdoIE5ldGxpbmsgb3IgZXRodG9vbD8gTXkgZXhwZXJpZW5jZSBzdWdnZXN0cyBgcGh5bGlua2AgaXMgdXN1YWxseSB0aGUgZG9tYWluIG9mIHJlYWwgaGFyZHdhcmUgTUFDcy4gQnV0IHRoYXQgZG9lc24mIzM5O3QgbWVhbiBpdCYjMzk7cyBpbXBvc3NpYmxlLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIGRyaXZlcnMgdXNpbmcgYHBoeWxpbmtgIGRpcmVjdGx5LiBMZXQgbWUgY2hlY2sgdGhlIHVzZXIgbGlzdCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgdG8gYmUgc3VyZS4gVGhhdCB3b3VsZCBtYWtlIHRoaXMgdnVsbmVyYWJpbGl0eSBmYXIgbW9yZSBhY2Nlc3NpYmxlIGFuZCB3b3J0aCB0aGUgZnV6emluZyBlZmZvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcdHByaXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cdFx0XHRcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZy1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVx0XHRcdFx0IGFnLVx1MDAzZXBoeV9pZl9tb2RlLCBcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcdGJwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZicC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVx0XHRcdFx0ICAgICBicC1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXHRtYWNfZGV2LVx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcdG1hY19kZXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hY19kZXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cdFx0XHRcdFx0ICBkZXZfZndub2RlKG1hY19kZXYtXHUwMDNlZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cdFx0XHRcdCBkcG1hY19ub2RlLCBtYWMtXHUwMDNlaWZfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTcxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05ODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkxLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Mi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkzOlx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTg6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5OS1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9ODQ3PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzI6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0MS1cdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjk0MjplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDMtXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMTI9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzE0OmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzE1LVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMzg6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM5LVx0XHRcdFx0IHBmLVx1MDAzZWlmX21vZGUsIG9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQ5OkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZmVwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZmc19lbmV0X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnVnZXRoLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFx1MDAyNmRldi1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cdFx0XHRcdCBwaHlfaW50ZXJmYWNlLCBcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jPTU0ODA9c3RhdGljIGludCBtdm5ldGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jOjU1OTk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHAtXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo3MTQ4Olx0XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVx0XHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcdFx0cGh5X2xpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxOC1cdFx0XHRcdFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODIzPXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njg6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY5LVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUobWFjLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NzQ2PXN0cnVjdCBuZXRfZGV2aWNlICpmYm5pY19uZXRkZXZfYWxsb2Moc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4MzU6XHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXHRcdGZyZWVfbmV0ZGV2KG5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaD0xMTE9aW50IGZibmljX3BoeWxpbmtfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTE0LXZvaWQgZmJuaWNfcGh5bGlua19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4OC0gKiBAbmV0ZGV2OiBOZXR3b3JrIERldmljZSBzdHJ1Y3QgdG8gYXR0YWNoIHBoeWxpbmsgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE5NzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmZibi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cdFx0XHRcdCBmYm5pY19waHlsaW5rX3NlbGVjdF9pbnRlcmZhY2UoZmJuLVx1MDAzZWF1aSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMxNDI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzQzeF9waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE1MDpzdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTkzOlx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZGFwdGVyLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTQtXHRcdFx0ICAgIGFkYXB0ZXItXHUwMDNlcGh5X2ludGVyZmFjZSwgXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjY0PXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcyNDpcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyNS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz03OTE9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlX3BvcnQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHUzMiBwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjg1NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVx0XHRcdFx0IHBvcnRucCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZzcHg1X3BvcnQtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUoY29uZmlnLVx1MDAzZW5vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE3NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgb2NlbG90X3BoeWxpbmtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxNzgwOnN0YXRpYyBpbnQgb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMi1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTg0Mz1pbnQgb2NlbG90X3Byb2JlX3BvcnQoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCwgc3RydWN0IHJlZ21hcCAqdGFyZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODgwOlx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzcwPXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ2MjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDYzLVx0XHRcdFx0IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTY0LVx0XHRcdFx0IFx1MDAyNnRuNDBfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU3PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0My1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnQtXHUwMDNlc2xhdmUucG9ydF9ucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jPTEzMD1zdGF0aWMgaW50IG5nYmVfcGh5bGlua19pbml0KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYzoxNTA6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXHUwMDI2bmdiZV9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNTEtXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NDgyPWludCB0eGdiZV9waHlsaW5rX2luaXRfYW1sKHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jOjUxMzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxNC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYz0yNjg9c3RhdGljIGludCB0eGdiZV9waHlsaW5rX2luaXQoc3RydWN0IHR4Z2JlICp0eGdiZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM6MjkzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXHUwMDI2dHhnYmVfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5NC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzk1PXN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzExODpcdGxwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZscC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTE5LVx0XHRcdFx0ICAgICBscC1cdTAwM2VwaHlfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjItXHRcdHJldCA9IFBUUl9FUlIobHAtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjM6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3BoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjQtXHRcdGdvdG8gY2xlYW51cF9tZGlvO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE2PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzEtXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMjpcdFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzMtXHRcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcxLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzMtICogQHBjczogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2OT1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTMtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NS0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMy0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzNDogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM1LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0OC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0OTpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NTAtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQwLSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjAtICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDY9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNi0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyOC0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYzLSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2NS0gKiBAZG46IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgyLSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4NC0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0Mi0gKiAgIGluc3RhbmNlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDQtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzM9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4Mi0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODQtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDE1PXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQyNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5MS0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5My0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUyMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNy0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU1MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTQtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTU1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTYtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTM9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAwLSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjAxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDItICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjUyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU1LSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY1NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjc3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4MC0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2ODE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4Mi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcyMD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIzLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcyNDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzI1LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjItICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODk9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwNC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkwNTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA2LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTc9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3OC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5Nzk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4MC0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTQ1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDgtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzMtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTc0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzUtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTg2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg5LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE5MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTkxLSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3Ni0gKiAgIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3OC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI5NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTgtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjk5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDAtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI0LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzI1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjYtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ5NT1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTMtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTE0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTUtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTItICogICBsaW5rIHBhcnRuZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5NC0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxMz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNy0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxOS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM3MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc0LSAqXHRcdFx0XHQgd2hpY2ggbG9zZXMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM3NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc2LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzkxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5NS0gKlx0XHRcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzOTY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5Ny0gKlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03OTk9c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjEtXHRcdFx0XHQgcGh5X2lmX21vZGUsIFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM4LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXHRcdFx0XHQgZGV2LVx1MDAzZWludGVyZmFjZSwgXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTk3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVVNCLXRvLUV0aGVybmV0IERldmljZSBFbXVsYXRpb24gd2l0aCBQU0dNSUkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB3ZSBjYW4gZW11bGF0ZSBVU0ItdG8tRXRoZXJuZXQgZGV2aWNlcywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBhc2l4X2RldmljZXMuY2AgYW5kIGBsYW43OHh4LmNgLiBCb3RoIG9mIHRoZXNlIHVzZSBgcGh5bGlua19jcmVhdGVgLCB3aGljaCBtYWtlcyBtZSB0aGluayB0aGV5JiMzOTtyZSBnb29kIGNhbmRpZGF0ZXMgZm9yIHRlc3Rpbmcgd2l0aCBkdW1teV9oY2Qgb3Igc29tZXRoaW5nIHNpbWlsYXIgd2l0aGluIHN5emthbGxlci4KCkJ1dCB3YWl0LCBJIHNlZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gdGhlIG1peCwgYW5kIHRoYXQmIzM5O3MgdGhyb3dpbmcgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBUaGlzIGlzIGEgKnNwZWNpZmljKiBtb2RlLiBDYW4gd2UgYWN0dWFsbHkgdHJpZ2dlciB0aGlzIHdpdGggdmlydHVhbCBkcml2ZXJzPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uCgpNeSBuZXh0IG1vdmUgaXMgdG8gZmlndXJlIG91dCBpZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgc29tZXRoaW5nIGNvbmZpZ3VyYWJsZSB2aWEgdXNlcnNwYWNlIHRvb2xzIGxpa2UgbmV0bGluayBvciBldGh0b29sLCBvciBpZiBpdCYjMzk7cyBzdHJpY3RseSB0aWVkIHRvIGRldmljZSB0cmVlIGJpbmRpbmdzIG9yIHVuZGVybHlpbmcgaGFyZHdhcmUgcHJvcGVydGllcy4gTXkgZXhwZXJpZW5jZSBzdWdnZXN0cyB0aGF0IGBwaHlfaW50ZXJmYWNlX3RgIGlzIHVzdWFsbHkgZGV0ZXJtaW5lZCBieSB0aGUgZHJpdmVyIGJhc2VkIG9uIGRldmljZSB0cmVlIGluZm9ybWF0aW9uIG9yIGhhcmR3YXJlIGNhcGFiaWxpdGllcywgc28gdGhpcyBmZWVscyBsaWtlIGEgbG9uZyBzaG90LiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4KClRoZXJlZm9yZSwgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyB1c2VkIHNvIEkgY2FuIHVuZGVyc3RhbmQgaG93IHRoaXMgbW9kZSBpcyBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDEtXHRcdHJldHVybiA0O1xuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MjAyOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMjAzLVx0XHRyZXR1cm4gNTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0yOTQ9dW5zaWduZWQgbG9uZyBwaHlfY2Fwc19mcm9tX2ludGVyZmFjZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTMxMC1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEyLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM4PXN0YXRpYyBpbnQgcGh5bGlua19pbnRlcmZhY2VfbWF4X3NwZWVkKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTktXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjEtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzQ9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA4LVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODA5Olx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgxMC1cdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0Mi1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQ0LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz00OTA9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX3Byb2JlX29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTQ5LVx0XHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUwOlx0XHRcdFx0cGh5X21vZGVzKFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkpKSlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XHRcdFx0cHJpdi1cdTAwM2VwYWNrYWdlX21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU1Mi1cdFx0ZWxzZSBpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODUtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU4NjpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODctXHRkZWZhdWx0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQ0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBSZWFjaCBvZiBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBwcmltYXJpbHkgYSBRdWFsY29tbS1zcGVjaWZpYyB0aGluZywgdXNlZCBpbiB0aGUgYHFjYTgwN3guY2AgZHJpdmVyIGFuZCwgb2YgY291cnNlLCB0aGUgY29yZSBQSFkvcGh5bGluayBjb2RlLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcywgY2FuIHdlIGFjdHVhbGx5ICpoaXQqIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAgd2l0aCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgd2hlbiB3ZSYjMzk7cmUgcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIHRoaXMuCgpJZiB3ZSBjYW4gc3BpbiB1cCBhIHZpcnR1YWwgbmV0ZGV2LCBjb25maWd1cmUgaXQgdG8gdXNlIGBwaHlsaW5rYCwgYW5kIHRoZW4gKmZvcmNlKiBpdHMgaW50ZXJmYWNlIG1vZGUgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRocm91Z2ggbmV0bGluayBvciBzeXNmcyDigJMgKnRoZW4qIHdlIGhhdmUgYSBzY2VuYXJpbyB0byBjb25zaWRlci4gVGhlIGNydWNpYWwgcXVlc3Rpb24gYmVjb21lcywgY2FuIGBwaHlfaW50ZXJmYWNlX3RgIGJlIGNvbnRyb2xsZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbms/IEkgbmVlZCB0byB2ZXJpZnkgaWYgdGhhdCBsZXZlbCBvZiBjb250cm9sIGlzIGV4cG9zZWQuCgpUaGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIGFjdHVhbGx5IGFjY2Vzc2libGUgYW5kIGNvbmZpZ3VyYWJsZSBmcm9tIHVzZXJzcGFjZS4gV2UgbmVlZCB0byBmaW5kIG91dCBpZiBpdCBpcyBwb3NzaWJsZSB0byBzZXQgdGhlIGludGVyZmFjZSBtb2RlIGZyb20gdXNlcnNwYWNlLCBhcyB0aGlzIGlzIHRoZSBkZWNpZGluZyBmYWN0b3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjkyMwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgSW50ZXJmYWNlIENvbmZpZ3VyYXRpb24qKgoKSG1tLCB0aGlzIHNvdW5kcyBsaWtlIHdlJiMzOTtyZSBkaWdnaW5nIGludG8gbmV0d29yayBpbnRlcmZhY2UgY29uZmlndXJhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyBub3QgcmVpbnZlbnQgdGhlIHdoZWVsIGhlcmUuIEJlZm9yZSBJIHN0YXJ0IGdvaW5nIGRvd24gYW55IHJhYmJpdCBob2xlcywgSSYjMzk7ZCBiZXR0ZXIgY29uc2lkZXIgdGhlIHN0YW5kYXJkIHRvb2xzLiAqZXRodG9vbCogc3ByaW5ncyB0byBtaW5kIOKAkyBpdCYjMzk7cyB0aGUgZ28tdG8gdXRpbGl0eSBmb3IgcXVlcnlpbmcgYW5kIGNvbmZpZ3VyaW5nIEV0aGVybmV0IGRldmljZXMgYXQgYSBsb3cgbGV2ZWwuIEFuZCB0aGVuIHRoZXJlJiMzOTtzICpydG5ldGxpbmsqIHdoaWNoIHByb3ZpZGVzIGEgbW9yZSB2ZXJzYXRpbGUgYW5kIG1vZGVybiBpbnRlcmZhY2UsIHNvIHRoYXQgaXMgYW5vdGhlciB0byBxdWlja2x5IGNoZWNrLgoKTm93LCBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoICpwaHlfaW50ZXJmYWNlX3QqLCB0aGF0JiMzOTtzIGdldHRpbmcgZG93biBpbnRvIHRoZSB3ZWVkcyBvZiB0aGUgcGh5c2ljYWwgbGF5ZXIgYWJzdHJhY3Rpb24uIFNvLCB0aGUga2V5IHF1ZXN0aW9uIGhlcmUgaXMsIHdoZXJlIGlzIHRoYXQgdmFsdWUgYWN0dWFsbHkgYmVpbmcgc2V0IG9yIG1vZGlmaWVkIGZyb20gdXNlcnNwYWNlPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHdoZXJlIHRoYXQgc3RydWN0dXJlIGlzIHVzZWQsIGFuZCBmaWd1cmUgb3V0IGhvdyBpdCYjMzk7cyBiZWluZyBwb3B1bGF0ZWQgZnJvbSB0aGUgYXBwbGljYXRpb24gc2lkZS4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvOiBnZXQgYSBoYW5kbGUgb24gd2hlcmUgdGhvc2UgdmFsdWVzIGFyZSBjb21pbmcgZnJvbSBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCB0aGUgcG9zc2libGUgc291cmNlcyBvZiBhbnkgaXNzdWUgd2UmIzM5O3JlIGZhY2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2ludGVyZmFjZV90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL29mX25ldC5jLTI2LSAqL1xubmV0L2NvcmUvb2ZfbmV0LmM6Mjc6aW50IG9mX2dldF9waHlfbW9kZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBwaHlfaW50ZXJmYWNlX3QgKmludGVyZmFjZSlcbm5ldC9jb3JlL29mX25ldC5jLTI4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTczMTEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIG9mIHRoZSBQSFkgSW50ZXJmYWNlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgYHBoeV9pbnRlcmZhY2VfdGAgaXMgYmVpbmcgY29uZmlndXJlZCwgYW5kIGl0IGFwcGVhcnMsIGJhc2VkIG9uIHdoYXQgSSYjMzk7dmUgc2VlbiwgdGhhdCBEZXZpY2UgVHJlZSAoYG9mX2dldF9waHlfbW9kZWApIHBsYXlzIGEgc2lnbmlmaWNhbnQgcm9sZSBoZXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgaXQgZ290IG1lIHdvbmRlcmluZzogY2FuIHdlIG1hbmlwdWxhdGUgdGhpcyB2YWx1ZSwgb3IgZXZlbiBzZXQgaXQgaW5pdGlhbGx5LCB2aWEgYSBuZXRsaW5rIGludGVyZmFjZT8gVGhhdCB3b3VsZCBiZSB1c2VmdWwgZm9yIGEgbW9yZSBkeW5hbWljIHN5c3RlbS4KCk15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBpbnRvIHRoZSBrZXJuZWwgaGVhZGVycywgc3BlY2lmaWNhbGx5IGBpbmNsdWRlL3VhcGkvbGludXgvZXRodG9vbC5oYCBhbmQgYGluY2x1ZGUvdWFwaS9saW51eC9pZl9saW5rLmhgLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzIHdoZW4geW91JiMzOTtyZSBkZWFsaW5nIHdpdGggbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbiBhbmQgbWFuYWdlbWVudCBmcm9tIHVzZXJzcGFjZS4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBldGh0b29sIGNvbW1hbmRzIG9yIGlmX2xpbmsgYXR0cmlidXRlcyB0aGF0IHJlbGF0ZSB0byBQSFkgaW50ZXJmYWNlIHNlbGVjdGlvbiBvciBtb2RpZmljYXRpb24uIEhvcGVmdWxseSwgdGhlcmUmIzM5O3Mgc29tZXRoaW5nIHRoZXJlIHRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgaW5zaWdodCBhbmQgY29uZmlybXMgb3IgZGVuaWVzIHRoZSBhYmlsaXR5IHRvIG1vZGlmeSB0aGUgUEhZIGludGVyZmFjZSB2aWEgbmV0bGluay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfaW50ZXJmYWNlX3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL3VhcGkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc2NDEKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgcGh5X2ludGVyZmFjZV90YCBDb2RlIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSYjMzk7dmUgaGl0IGEgc25hZy4gVGhpcyBgcGh5X2ludGVyZmFjZV90YCBpcyBhbiBpbnRlcm5hbCBrZXJuZWwgZW51bSDigJMgdGhhdCYjMzk7cyBhIGtleSBkZXRhaWwuIEl04oCZcyBnb3QgbWUgdGhpbmtpbmc6IGhvdyBjYW4gSSBhY3R1YWxseSAqdHJpZ2dlciogdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGggaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LCBlc3BlY2lhbGx5IHdpdGhpbiBzb21ldGhpbmcgbGlrZSBRRU1VPyBJJiMzOTttIHRyeWluZyB0byB0ZXN0IHRoaXMgdGhvcm91Z2hseSwgYW5kIGEgdmlydHVhbGl6ZWQgc2V0dXAgaXMgbXkgYmVzdCBiZXQgZm9yIHJlcGVhdGFiaWxpdHkuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcGxheSBhcm91bmQgd2l0aCBgZHVtbXlfaGNkYCBjb21iaW5lZCB3aXRoIGEgVVNCIG5ldHdvcmsgZHJpdmVyLiBTb21ldGhpbmcgbGlrZSBgbGFuNzh4eGAgb3IgYGFzaXhgIGNvbWVzIHRvIG1pbmQ7IHRoZXkgYm90aCB1dGlsaXplIGBwaHlsaW5rYC4gQnV0IGhlcmUmIzM5O3MgdGhlIHJ1YjogVGhlaXIgaW50ZXJmYWNlIG1vZGUgc2VlbXMgdG8gYmUgaGFyZGNvZGVkLCBvciByZWFkIGluIGZyb20gZWl0aGVyIHRoZSBFRVBST00gb3IgRFQuIEZvciBleGFtcGxlLCB3aGVuIGxvb2tpbmcgYXQgYGxhbjc4eHhgLi4uIEkgc3VzcGVjdCB0aGlzIGlzIHdoZXJlIEkmIzM5O2xsIGhpdCB0aGUgbGltaXRhdGlvbi4gVGhpcyB3aWxsIHJlcXVpcmUgZnVydGhlciBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXYtXHUwMDNlaW50ZXJmYWNlID0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjY0OT1zdGF0aWMgc3RydWN0IHBoeV9kZXZpY2UgKmxhbjc4eHhfZ2V0X3BoeShzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2NTktXHRcdFx0LyogRXh0ZXJuYWwgUkdNSUkgUEhZIGRldGVjdGVkICovXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI2NjA6XHRcdFx0ZGV2LVx1MDAzZWludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjY2MS1cdFx0XHRwaHlkZXYtXHUwMDNlaXNfaW50ZXJuYWwgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2NjktXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI2NzA6XHRcdGRldi1cdTAwM2VpbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2NzEtXHRcdC8qIE5vIFBIWSBmb3VuZCDigJMgZmFsbGJhY2sgdG8gZml4ZWQgUEhZIChlLmcuIEtTWiBzd2l0Y2ggYm9hcmQpICovXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjc5LVx0XHQvKiBUaGVzZSB1c2UgaW50ZXJuYWwgR01JSS1jb25uZWN0ZWQgUEhZICovXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI2ODA6XHRcdGRldi1cdTAwM2VpbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjY4MS1cdFx0cGh5ZGV2LVx1MDAzZWlzX2ludGVybmFsID0gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzMjIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqQ29uc2lkZXJpbmcgUEhZIEludGVyZmFjZSBNb2RlcyoqCgpBbHJpZ2h0LCBzbyB0aGUgc3lzdGVtJiMzOTtzIGNvbmZpZ3VyaW5nIHRoZSBQSFkgaW50ZXJmYWNlIG1vZGUsIHdoaWNoIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIGhvdyBpdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgcGh5c2ljYWwgbGF5ZXIuIEl0JiMzOTtzIGV4cGxpY2l0bHkgc2V0dGluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEYCwgYFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSWAsIG9yIGBQSFlfSU5URVJGQUNFX01PREVfR01JSWAuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgc3R1ZmYsIGNvdmVyaW5nIHRoZSBjb21tb24gZ2lnYWJpdCBpbnRlcmZhY2VzLiBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiB3aGF0IGFib3V0IGEgbW9yZSBvYnNjdXJlIFBIWSBpbnRlcmZhY2UgbGlrZSB0aGUgb25lIHVzZWQgYnkgYW4gYGFzaXhgIGNoaXA/IElzIHRoYXQgcHJvcGVybHkgYWRkcmVzc2VkIGhlcmU/IFRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZCwgYmVjYXVzZSBpdCBjb3VsZCByZXF1aXJlIGEgY29tcGxldGVseSBkaWZmZXJlbnQgYXBwcm9hY2ggdG8gaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGlzIGNvbmZpZ3VyYXRpb24gaGFuZGxlcyBpdCwgb3IgaWYgaXQgbmVlZHMgc2VwYXJhdGUgaGFuZGxpbmcuIEkgYW0gZGVmaW5pdGVseSBnb2luZyB0byBoYXZlIHRvIG1ha2Ugc3VyZSB0byBhY2NvdW50IGZvciB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfaWZfbW9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Nzk5PXN0YXRpYyBpbnQgYXg4ODc3Ml9waHlsaW5rX3NldHVwKHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAxLVx0c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYgPSBkZXYtXHUwMDNlZHJpdmVyX3ByaXY7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODAyOlx0cGh5X2ludGVyZmFjZV90IHBoeV9pZl9tb2RlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwMy1cdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTUtXHRpZiAocHJpdi1cdTAwM2VlbWJkX3BoeSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MTY6XHRcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxNy1cdGVsc2VcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MTg6XHRcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyMC1cdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIxOlx0XHRcdFx0IHBoeV9pZl9tb2RlLCBcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIyLVx0aWYgKElTX0VSUihwaHlsaW5rKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5ODEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgUFNHTUlJIEludGVyZmFjZSBpbiBVU0IgRHJpdmVycyoqCgpPa2F5LCBzbyB0aGUgVVNCIGRyaXZlcnMgSSYjMzk7bSBsb29raW5nIGF0IHNlZW0gdG8gYmUgc3RpY2tpbmcgd2l0aCBlaXRoZXIgYFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTGAgb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJYC4gVGhhdCBtZWFucywgcmlnaHQgb2ZmIHRoZSBiYXQsIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpc24mIzM5O3QgYmVpbmcgZGlyZWN0bHkgdXRpbGl6ZWQgaGVyZS4gVGhlIHF1ZXN0aW9uIG5vdyBiZWNvbWVzLCBpcyB0aGVyZSBhbnkgKm90aGVyKiB3YXkgdG8gdHJpZ2dlciB0aGUgdXNhZ2Ugb2YgdGhhdCBgUFNHTUlJYCBtb2RlIHdpdGhpbiB0aGlzIGNvbnRleHQ/CgpNeSBuZXh0IHRob3VnaHQgaXMgdG8gZGlnIGludG8gYGRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guY2AuIFRoaXMgaXMgYSBQSFkgZHJpdmVyLCB3aGljaCBpcyBwcm9taXNpbmcuIFRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gSSBpbnN0YW50aWF0ZSBhIFBIWSBkZXZpY2UgdXNpbmcgKnRoaXMqIGRyaXZlciB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBtZGlvYCBuZXRsaW5rIG9yIHN5c2ZzPyBJIHZhZ3VlbHkgcmVjYWxsIHRoYXQgdGhlcmUgaXNuJiMzOTt0IGEgZGVkaWNhdGVkIG5ldGxpbmsgaW50ZXJmYWNlIGZvciBpbnN0YW50aWF0aW5nIFBIWXMuIEl0IHdvdWxkIGxpa2VseSBoYXZlIHRvIGJlIGRvbmUgdGhyb3VnaCB0aGUgTURJTyBidXMgaXRzZWxmLCByaWdodD8KCkFoLCByaWdodCwgYHFjYTgwN3hgICppcyogYSBQSFkgZHJpdmVyLiBBbmQgUEhZIGRyaXZlcnMgYXJlLCBvZiBjb3Vyc2UsICpwcm9iZWQqIHdoZW4gYSBQSFkgZGV2aWNlIGlzIGRldGVjdGVkIG9uIGFuIE1ESU8gYnVzLiBTbywgY2FuIEkgY2xldmVybHkgY3JlYXRlIGEgdmlydHVhbCBNRElPIGJ1cyBhbmQgdGhlbiBzaW11bGF0ZSBhIHZpcnR1YWwgUEhZIGRldmljZT8gSSByZW1lbWJlciBzZWVpbmcgYG1kaW8tbW9ja3VwYCBvciBgbWRpby1iY20tdW5pbWFjYCBmbG9hdGluZyBhcm91bmQuLi4KCkJ1dCBob2xkIG9uISBFdmVuIGlmIEkgY2FuIGdldCBhIHZpcnR1YWwgTURJTyBidXMgYW5kIFBIWSBzZXQgdXAsIHRoZSBgcWNhODA3eGAgZHJpdmVyIHNwZWNpZmljYWxseSByZWFkcyBgcGFja2FnZV9tb2RlYCBmcm9tIHRoZSBkZXZpY2UgdHJlZTogYG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKG5vZGUsICYjMzQ7cWNvbSxwYWNrYWdlLW1vZGUmIzM0OywgJmFtcDtwYWNrYWdlX21vZGVfbmFtZSlgLiBTbywgaXQmIzM5O3MgZXhwZWN0aW5nIGEgZGV2aWNlIHRyZWUgbm9kZSB3aXRoIGEgYHFjb20scGFja2FnZS1tb2RlID0gJiMzNDtwc2dtaWkmIzM0O2AgcHJvcGVydHksIHNwZWNpZmljYWxseS4gV2VsbCwgaW4gYSBzdGFuZGFyZCB4ODYgUUVNVSBlbnZpcm9ubWVudCwgSSBjZXJ0YWlubHkgZG9uJiMzOTt0IGhhdmUgdGhhdCBub2RlIGluIHRoZSBkZXZpY2UgdHJlZS4uLgoKV2FpdCwgKndhaXQqLiBCZWZvcmUgSSBnbyBkb3duIHRoZSByYWJiaXQgaG9sZSBvZiB2aXJ0dWFsIE1ESU8gYnVzZXMsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBzZWUgaWYgdGhlcmUgYXJlICphbnkqIG90aGVyIGRyaXZlcnMgaW4gdGhlIHN5c3RlbSB0aGF0IGFjdHVhbGx5IHV0aWxpemUgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBNYXliZSBJJiMzOTttIGJhcmtpbmcgdXAgdGhlIHdyb25nIHRyZWUgZW50aXJlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9MTU5PWludCBwaHlfaW50ZXJmYWNlX251bV9wb3J0cyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cdFx0cmV0dXJuIDQ7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXHRcdHJldHVybiA1O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzozMTE6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNDM6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXHRcdGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XHRcdFx0XHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MTpcdFx0XHRwcml2LVx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVx0XHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NTYyPXN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9jb25maWdfaW5pdF9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2Olx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cdGRlZmF1bHQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzgxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBQSFkgTGluayBQYXJzZSBNb2RlKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIGp1c3QgcmV2aWV3aW5nIHRoZSBgcGh5bGlua19wYXJzZV9tb2RlYCBmdW5jdGlvbiBhbmQgaXQgbG9va3MgbGlrZSBpdCBzdXBwb3J0cyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgYXMgd2VsbC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgY29ycmVjdGx5IGhhbmRsZWQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgdGhlIGNvZGUgcmVsYXRlZCB0byBgcGh5bGlua19wYXJzZV9tb2RlYCBhbmQgY29uZmlybSB0aGF0IGl0JiMzOTtzIHRha2luZyBpbnRvIGFjY291bnQgdGhlIFBTR01JSSBtb2RlLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGxvZ2ljYWwgb3ZlcnNpZ2h0cyB0aGVyZS4gSXTigJlzIGFsd2F5cyBnb29kIHByYWN0aWNlIHRvIHJlLWV4YW1pbmUgdGhlIGNvZGUgd2hlbiBuZXcgZnVuY3Rpb25hbGl0aWVzIGFyZSBhZGRlZCB0byBlbnN1cmUgY29ycmVjdCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzc0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NzQ6XHRzdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4gNzc1Olx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcbiA3NzY6XHR7XG4gNzc3Olx0XHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZG47XG4gNzc4Olx0XHRjb25zdCBjaGFyICptYW5hZ2VkO1xuIDc3OTpcdFx0dW5zaWduZWQgbG9uZyBjYXBzO1xuIDc4MDpcdFxuIDc4MTpcdFx0aWYgKHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VkZWZhdWx0X2FuX2luYmFuZClcbiA3ODI6XHRcdFx0cGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9IE1MT19BTl9JTkJBTkQ7XG4gNzgzOlx0XG4gNzg0Olx0XHRkbiA9IGZ3bm9kZV9nZXRfbmFtZWRfY2hpbGRfbm9kZShmd25vZGUsIFwmIzM0O2ZpeGVkLWxpbmtcJiMzNDspO1xuIDc4NTpcdFx0aWYgKGRuIHx8IGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGZ3bm9kZSwgXCYjMzQ7Zml4ZWQtbGlua1wmIzM0OykpXG4gNzg2Olx0XHRcdHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPSBNTE9fQU5fRklYRUQ7XG4gNzg3Olx0XHRmd25vZGVfaGFuZGxlX3B1dChkbik7XG4gNzg4Olx0XG4gNzg5Olx0XHRpZiAoKGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3N0cmluZyhmd25vZGUsIFwmIzM0O21hbmFnZWRcJiMzNDssIFx1MDAyNm1hbmFnZWQpID09IDAgXHUwMDI2XHUwMDI2XG4gNzkwOlx0XHQgICAgIHN0cmNtcChtYW5hZ2VkLCBcJiMzNDtpbi1iYW5kLXN0YXR1c1wmIzM0OykgPT0gMCkpIHtcbiA3OTE6XHRcdFx0aWYgKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XG4gNzkyOlx0XHRcdFx0cGh5bGlua19lcnIocGwsXG4gNzkzOlx0XHRcdFx0XHQgICAgXCYjMzQ7Y2FuJiMzOTt0IHVzZSBib3RoIGZpeGVkLWxpbmsgYW5kIGluLWJhbmQtc3RhdHVzXFxuXCYjMzQ7KTtcbiA3OTQ6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA3OTU6XHRcdFx0fVxuIDc5NjpcdFxuIDc5NzpcdFx0XHRwbC1cdTAwM2VjZmdfbGlua19hbl9tb2RlID0gTUxPX0FOX0lOQkFORDtcbiA3OTg6XHRcdH1cbiA3OTk6XHRcbiA4MDA6XHRcdGlmIChwbC1cdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9JTkJBTkQpIHtcbiA4MDE6XHRcdFx0bGlua21vZGVfemVybyhwbC1cdTAwM2VzdXBwb3J0ZWQpO1xuIDgwMjpcdFx0XHRwaHlsaW5rX3NldChwbC1cdTAwM2VzdXBwb3J0ZWQsIE1JSSk7XG4gODAzOlx0XHRcdHBoeWxpbmtfc2V0KHBsLVx1MDAzZXN1cHBvcnRlZCwgQXV0b25lZyk7XG4gODA0Olx0XHRcdHBoeWxpbmtfc2V0KHBsLVx1MDAzZXN1cHBvcnRlZCwgQXN5bV9QYXVzZSk7XG4gODA1Olx0XHRcdHBoeWxpbmtfc2V0KHBsLVx1MDAzZXN1cHBvcnRlZCwgUGF1c2UpO1xuIDgwNjpcdFxuIDgwNzpcdFx0XHRzd2l0Y2ggKHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkge1xuIDgwODpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiA4MDk6XHRcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuIDgxMDpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gODExOlx0XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6XG4gODEyOlx0XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuIDgxMzpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDpcbiA4MTQ6XHRcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcbiA4MTU6XHRcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcbiA4MTY6XHRcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUlRCSTpcbiA4MTc6XHRcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYOlxuIDgxODpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XG4gODE5Olx0XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzVHQkFTRVI6XG4gODIwOlx0XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOlxuIDgyMTpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxuIDgyMjpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdfUVhHTUlJOlxuIDgyMzpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdLUjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5MTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1NzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgQ29kZSBQYXRoIGZvciBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgc3BlY2lmaWNhbGx5LCB0aGUgYWRkaXRpb24gb2YgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRvIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAuIE15IGluaXRpYWwgdGhvdWdodCBpczogQ2FuIHRoaXMgY29kZSBwYXRoIGFjdHVhbGx5IGJlIHRyaWdnZXJlZD8gVG8gZ2V0IHRoZXJlLCBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIGEgYHBoeWxpbmtgIGluc3RhbmNlIHRoYXQgaGFzIGBpbnRlcmZhY2VgIHNldCB0byBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIFRoYXQgYGludGVyZmFjZWAgaXMgYXNzaWduZWQgZHVyaW5nIGVpdGhlciBgcGh5bGlua19jcmVhdGVgIG9yIHBvc3NpYmx5IHRocm91Z2ggYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYC4KCk15IG5leHQgbGluZSBvZiB0aGlua2luZyBpcywgZG9lcyBhbnkgZHJpdmVyICphY3R1YWxseSogc2V0IGBpbnRlcmZhY2VgIHRvIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYD8gVGhlIGNvZGUgc2VlbXMgdG8gaW5kaWNhdGUgdGhhdCBgcWNhODA3eC5jYCB1c2VzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYC4gSG93ZXZlciwgd2FpdCwgdGhhdCYjMzk7cyBhIFBIWSBkcml2ZXIhIEl0IHNldHMgYHByaXYtJmd0O3BhY2thZ2VfbW9kZWAgdG8gdGhhdCB2YWx1ZS4gU28sIGl0IGRvZXNuJiMzOTt0IGRpcmVjdGx5IGNvbmZpZ3VyZSB0aGUgYHBoeWxpbmtgJiMzOTtzIGBpbnRlcmZhY2VgLCB3aGljaCBpcyBnb29kIHNpbmNlIFBIWSBkcml2ZXJzIGFyZW4mIzM5O3QgcmVzcG9uc2libGUgZm9yIGBwaHlsaW5rYCBpbnN0YW5jZSBjcmVhdGlvbi4gVGhlIE1BQyBkcml2ZXIgaGFuZGxlcyB0aGUgYHBoeWxpbmtgIGluc3RhbmNlLgoKU28gdGhlIHF1ZXN0aW9uIHNoaWZ0czogaXMgdGhlcmUgYW55IE1BQyBkcml2ZXIgdGhhdCYjMzk7cyAqY29uZmlndXJlZCogdG8gdXNlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYD8gTXkgdXN1YWwgYXBwcm9hY2ggd291bGQgYmUgdG8gY2hlY2sgaWYgYW55IE1BQyBkcml2ZXIgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gdXNlIHRoaXMgaW50ZXJmYWNlIG1vZGUuIE9mdGVuLCBNQUMgZHJpdmVycyByZWFkIHRoZSBgcGh5LW1vZGVgIG9yIGBwaHktY29ubmVjdGlvbi10eXBlYCBmcm9tIHRoZSBkZXZpY2UgdHJlZS4gTG9va2luZyBhdCBgb2ZfZ2V0X3BoeV9tb2RlYCwgSSBzZWUgaXQgY29udmVydHMgYSBzdHJpbmcgbGlrZSBgJiMzNDtwc2dtaWkmIzM0O2AgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYHBoeV9pbnRlcmZhY2VfdGAuIFRoaXMgaXMgbXkga2V5LiBJZiBJIGNhbiBwcm92aWRlIGEgZGV2aWNlIHRyZWUgd2l0aCBgcGh5LW1vZGUgPSAmIzM0O3BzZ21paSYjMzQ7YCwgdGhlbiBhbnkgTUFDIGRyaXZlciB0aGF0IHVzZXMgYG9mX2dldF9waHlfbW9kZWAgYW5kIGNhbGxzIGBwaHlsaW5rX2NyZWF0ZWAgd2lsbCBwYXNzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB0byB0aGUgYHBoeWxpbmtgIGluc3RhbmNlLgoKVGhlIHJ1YiBpcyBJJiMzOTttIHRlc3RpbmcgaW4gc3l6a2FsbGVyLiBJJiMzOTttIHR5cGljYWxseSBvbiB4ODYgUUVNVSBvciBHQ0UgYW5kIEkgZG9uJiMzOTt0IGdldCB0byBzcGVjaWZ5IGEgY3VzdG9tIGRldmljZSB0cmVlLiBTbywgY2FuIEkgYnlwYXNzIHRoaXMgdGhyb3VnaCBzb21lIG90aGVyIG1lYW5zPwoKQ2FuIEkgZG8gdGhpcyB2aWEgbmV0bGluaz8gSSBqdXN0IHNjYW5uZWQgdGhlIGBuZXQvY29yZS9gIGFuZCBgaW5jbHVkZS91YXBpL2AgZGlyZWN0b3JpZXMsIGFuZCB0aGVyZSYjMzk7cyBub3RoaW5nIEkgY2FuIHNlZSByZWxhdGluZyB0byBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gZm9yIGBwaHlfaW50ZXJmYWNlX3RgLgoKT2ssIG5leHQgcG9zc2libGUgYXZlbnVlLCBsZXQmIzM5O3MgbG9vayBhdCBgZXRodG9vbGAgYW5kIGBldGh0b29sX2xpbmtfa3NldHRpbmdzYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNvbmZpZ3VyYXRpb24ga25vYnMgdGhlcmUgdG8gdHJpZ2dlciB0aGlzIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2ludGVyZmFjZV90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9ldGh0b29sLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzEyOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIFBoeWxpbmsgQ29uZmlndXJhdGlvbiBNYXplKioKCk9rYXksIHNvIEkmIzM5O20gaGl0dGluZyBhIHJvYWRibG9jay4gSSB3YXMgaG9waW5nIGBldGh0b29sYCB3b3VsZCBnaXZlIG1lIGRpcmVjdCBjb250cm9sIG92ZXIgdGhlIGBwaHlfaW50ZXJmYWNlX3RgIHNldHRpbmcsIGJ1dCBpdCYjMzk7cyBub3QgZXhwb3NpbmcgaXQgdGhlIHdheSBJJiMzOTtkIGV4cGVjdC4gTm93LCBob3cgZG8gSSBhY3R1YWxseSBzZXQgdGhlIGludGVyZmFjZSB3aXRoaW4gYHBoeWxpbmtgPyBJIG5lZWQgdG8gZmlndXJlIG91dCBhbiBhbHRlcm5hdGl2ZSBtZXRob2QsIGFuZCBxdWlja2x5LiBIbW1tLCBsZXQmIzM5O3MgcGl2b3QgYW5kIHNlZSBpZiBJIGNhbiBsZXZlcmFnZSBgcGh5bGlua19zZnBfY29uZmlnX29wdGljYWxgIHRvIGdldCB0aGlzIGRvbmUuIE1heWJlIHRoZXJlJiMzOTtzIGEgYmFjayBkb29yIHRoZXJlIHRoYXQgSSBjYW4gdXNlIHRvIGFjaGlldmUgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBzdGFydCBkaWdnaW5nIGluIHRoYXQgZGlyZWN0aW9uIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNzU2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM3NTY6XHRzdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsKHN0cnVjdCBwaHlsaW5rICpwbClcbjM3NTc6XHR7XG4zNzU4Olx0XHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyhzdXBwb3J0KTtcbjM3NTk6XHRcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgY29uZmlnO1xuMzc2MDpcdFx0ZW51bSBpbmJhbmRfdHlwZSBpbmJhbmRfdHlwZTtcbjM3NjE6XHRcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7XG4zNzYyOlx0XHRpbnQgcmV0O1xuMzc2MzpcdFxuMzc2NDpcdFx0cGh5bGlua19kYmcocGwsIFwmIzM0O29wdGljYWwgU0ZQOiBpbnRlcmZhY2VzPVttYWM9JSpwYmwsIHNmcD0lKnBibF1cXG5cJiMzNDssXG4zNzY1Olx0XHRcdCAgICAoaW50KVBIWV9JTlRFUkZBQ0VfTU9ERV9NQVgsXG4zNzY2Olx0XHRcdCAgICBwbC1cdTAwM2Vjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMsXG4zNzY3Olx0XHRcdCAgICAoaW50KVBIWV9JTlRFUkZBQ0VfTU9ERV9NQVgsXG4zNzY4Olx0XHRcdCAgICBwbC1cdTAwM2VzZnBfaW50ZXJmYWNlcyk7XG4zNzY5Olx0XG4zNzcwOlx0XHQvKiBGaW5kIHRoZSB1bmlvbiBvZiB0aGUgc3VwcG9ydGVkIGludGVyZmFjZXMgYnkgdGhlIFBDUy9NQUMgYW5kXG4zNzcxOlx0XHQgKiB0aGUgU0ZQIG1vZHVsZS5cbjM3NzI6XHRcdCAqL1xuMzc3MzpcdFx0cGh5X2ludGVyZmFjZV9hbmQocGwtXHUwMDNlc2ZwX2ludGVyZmFjZXMsIHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyxcbjM3NzQ6XHRcdFx0XHQgIHBsLVx1MDAzZXNmcF9pbnRlcmZhY2VzKTtcbjM3NzU6XHRcdGlmIChwaHlfaW50ZXJmYWNlX2VtcHR5KHBsLVx1MDAzZXNmcF9pbnRlcmZhY2VzKSkge1xuMzc3NjpcdFx0XHRwaHlsaW5rX2VycihwbCwgXCYjMzQ7dW5zdXBwb3J0ZWQgU0ZQIG1vZHVsZTogbm8gY29tbW9uIGludGVyZmFjZSBtb2Rlc1xcblwmIzM0Oyk7XG4zNzc3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzc3ODpcdFx0fVxuMzc3OTpcdFxuMzc4MDpcdFx0bWVtc2V0KFx1MDAyNmNvbmZpZywgMCwgc2l6ZW9mKGNvbmZpZykpO1xuMzc4MTpcdFx0bGlua21vZGVfY29weShzdXBwb3J0LCBwbC1cdTAwM2VzZnBfc3VwcG9ydCk7XG4zNzgyOlx0XHRsaW5rbW9kZV9jb3B5KGNvbmZpZy5hZHZlcnRpc2luZywgcGwtXHUwMDNlc2ZwX3N1cHBvcnQpO1xuMzc4MzpcdFx0Y29uZmlnLnNwZWVkID0gU1BFRURfVU5LTk9XTjtcbjM3ODQ6XHRcdGNvbmZpZy5kdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbjM3ODU6XHRcdGNvbmZpZy5wYXVzZSA9IE1MT19QQVVTRV9BTjtcbjM3ODY6XHRcbjM3ODc6XHRcdC8qIEZvciBhbGwgdGhlIGludGVyZmFjZXMgdGhhdCBhcmUgc3VwcG9ydGVkLCByZWR1Y2UgdGhlIHNmcF9zdXBwb3J0XG4zNzg4Olx0XHQgKiBtYXNrIHRvIG9ubHkgdGhvc2UgbGluayBtb2RlcyB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQuXG4zNzg5Olx0XHQgKi9cbjM3OTA6XHRcdHJldCA9IHBoeWxpbmtfdmFsaWRhdGVfbWFzayhwbCwgTlVMTCwgcGwtXHUwMDNlc2ZwX3N1cHBvcnQsIFx1MDAyNmNvbmZpZyxcbjM3OTE6XHRcdFx0XHRcdCAgICBwbC1cdTAwM2VzZnBfaW50ZXJmYWNlcyk7XG4zNzkyOlx0XHRpZiAocmV0KSB7XG4zNzkzOlx0XHRcdHBoeWxpbmtfZXJyKHBsLCBcJiMzNDt1bnN1cHBvcnRlZCBTRlAgbW9kdWxlOiB2YWxpZGF0aW9uIHdpdGggc3VwcG9ydCAlKnBiIGZhaWxlZFxcblwmIzM0OyxcbjM3OTQ6XHRcdFx0XHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBzdXBwb3J0KTtcbjM3OTU6XHRcdFx0cmV0dXJuIHJldDtcbjM3OTY6XHRcdH1cbjM3OTc6XHRcbjM3OTg6XHRcdGludGVyZmFjZSA9IHBoeWxpbmtfY2hvb3NlX3NmcF9pbnRlcmZhY2UocGwsIHBsLVx1MDAzZXNmcF9pbnRlcmZhY2VzKTtcbjM3OTk6XHRcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX05BKSB7XG4zODAwOlx0XHRcdHBoeWxpbmtfZXJyKHBsLCBcJiMzNDtmYWlsZWQgdG8gc2VsZWN0IFNGUCBpbnRlcmZhY2VcXG5cJiMzNDspO1xuMzgwMTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjM4MDI6XHRcdH1cbjM4MDM6XHRcbjM4MDQ6XHRcdHBoeWxpbmtfZGJnKHBsLCBcJiMzNDtvcHRpY2FsIFNGUDogY2hvc2VuICVzIGludGVyZmFjZVxcblwmIzM0OyxcbjM4MDU6XHRcdFx0ICAgIHBoeV9tb2RlcyhpbnRlcmZhY2UpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyMjIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIFNGUCBJbnRlcmZhY2UgQ29uZmlndXJhdGlvbioqCgpNeSB0aG91Z2h0IHByb2Nlc3Mgc3RhcnRzIHdpdGggYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYC4gTXkgdGFzayBpcyB0byBkZXRlcm1pbmUgd2hpY2ggaW50ZXJmYWNlIGZyb20gYHBsLSZndDtzZnBfaW50ZXJmYWNlc2Agc2hvdWxkIGJlIHNlbGVjdGVkLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gdGhlbiBhcmlzZXM6IGlzIHRoaXMgU0ZQIG1vZHVsZSBldmVuIGNhcGFibGUgb2Ygc3VwcG9ydGluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWA/IFRoaXMgaXMgdGhlIGZ1bmRhbWVudGFsIHBpZWNlIG9mIGluZm9ybWF0aW9uIEkgbmVlZCB0byBjb25maXJtLiBUbyBhbnN3ZXIgdGhpcywgSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBwb3B1bGF0aW9uIG9mIGBzZnBfaW50ZXJmYWNlc2AuIEluIGVzc2VuY2UsIEkgbmVlZCB0byBrbm93IGhvdyB0aGVzZSBpbnRlcmZhY2VzIGhhdmUgYmVlbiBjb25maWd1cmVkIGFuZCB3aGljaCBvcHRpb25zIGFyZSBhdmFpbGFibGUuIFRoaXMgc2hvdWxkIHJldmVhbCB3aGV0aGVyIFBTR01JSSBpcyBwcmVzZW50LCBhbmQgdGhlcmVmb3JlLCB2aWFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9zZnAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQ3NQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOgoKKipTRlAgTW9kdWxlIEludGVyZmFjZSBSZWFzb25pbmcqKgoKUmlnaHQsIGxldCYjMzk7cyB0aGluayB0aGlzIHRocm91Z2guIFRoZSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpc21pc3MgdGhlIGlkZWEgdGhhdCBTRlAgbW9kdWxlcyB1dGlsaXplIGBQU0dNSUlgLiBObywgdGhhdCBkb2VzbiYjMzk7dCBmZWVsIHJpZ2h0LiBUaGUgcHJvdG9jb2xzIGFuZCBwaHlzaWNhbCBpbnRlcmZhY2VzIGludm9sdmVkIGluIFNGUCBtb2R1bGVzIGFyZSB0eXBpY2FsbHkgbW9yZSBjb21wbGV4IGFuZCBvcGVyYXRlIGF0IGhpZ2hlciBzcGVlZHMgdGhhbiB3aGF0IGBQU0dNSUlgIHVzdWFsbHkgaGFuZGxlcy4gSXQganVzdCBkb2VzbiYjMzk7dCBhbGlnbiB3aXRoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlaXIgdHlwaWNhbCBjYXBhYmlsaXRpZXMuCgpPa2F5LCBzbyBpZiBub3QgYFBTR01JSWAsIHRoZW4gd2hhdCBpcyBpdD8gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIGZ1bmN0aW9uIG5hbWUgdGhhdCBJJiMzOTt2ZSBlbmNvdW50ZXJlZCBiZWZvcmUgd2hlbiBkZWFsaW5nIHdpdGggdGhlc2Ugc29ydHMgb2YgaGFyZHdhcmUgZGV0YWlscywgc29tZXRoaW5nIHRoYXQgaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgbG93LWxldmVsIGludGVyZmFjZSB0aGF0IGlzIHVzZWQgdG8gY29udHJvbCB0aGUgU0ZQIG1vZHVsZS4gSSBoYXZlIHRvIHRoaW5rIHRob3VnaC4gV2hhdCBhYm91dCBhIGZ1bmN0aW9uIGxpa2UgYHBoeWxpbmtfY2hvb3NlX3NmcF9pbnRlcmZhY2VgPyBUaGF0IGZlZWxzIHJpZ2h0LCBzaW5jZSBgcGh5bGlua2AgaXMgY29tbW9ubHkgcmVsYXRlZCB0byBoYW5kbGluZyBQSFkgaW50ZXJmYWNlcy4gSXQmIzM5O3MgcGxhdXNpYmxlIHRoYXQgdGhpcyBmdW5jdGlvbiBvciBvbmUgbGlrZSBpdCBpcyB3aGVyZSB0aGUgc3BlY2lmaWMgU0ZQIGludGVyZmFjZSBzZWxlY3Rpb24gbG9naWMgd291bGQgbGl2ZS4gSSBzaG91bGQgcHJvYmFibHkgcmVzZWFyY2ggdGhhdCBvbmUsIGFzIGEgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM4PXN0YXRpYyBpbnQgcGh5bGlua19pbnRlcmZhY2VfbWF4X3NwZWVkKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTktXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjEtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzQ9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA4LVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODA5Olx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgxMC1cdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0Mi1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQ0LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE2NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIFBhdGggSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoaXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIG1vZGUuIEkgc2VlIGl0IHBvcHMgdXAgaW4gYSBmZXcga2V5IHBsYWNlczogYHBoeWxpbmtfaW50ZXJmYWNlX21heF9zcGVlZGAsIGBwaHlsaW5rX3BhcnNlX21vZGVgLCBhbmQgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhpcyBpcyBnb2luZyB0byBiZSBpbmNyZWRpYmx5IGRpZmZpY3VsdCwgaWYgbm90IGltcG9zc2libGUsIHRvIGhpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKVGhlIGJpZyBxdWVzdGlvbiBpcywgY2FuIHdlIHNvbWVob3cgZ2V0IHRoYXQgYHBoeV9pbnRlcmZhY2VfdGAgdmFsdWUgc2V0IHRvIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYD8gVXNlcnNwYWNlIGlzIG91dCwgcmlnaHQ/IFdlIGNhbiYjMzk7dCBkaXJlY3RseSBzZXQgaXQuIFNvLCBhIHZpcnR1YWwgZHJpdmVyIHdvdWxkIG5lZWQgdG8gYmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhpcy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIGRldmljZSB0cmVlIG92ZXJsYXlzIG9yIHNvbWV0aGluZyBzaW1pbGFyIGNvdWxkIHBvc3NpYmx5IGluZmx1ZW5jZSBpdC4gTm9wZSwgbm90IHNlZWluZyBhbnl0aGluZyBwcm9taXNpbmcuCgpTeXprYWxsZXIgaXMgYSBwb3RlbnRpYWwgdG9vbCwgb2YgY291cnNlLCB3aXRoIGBzeXpfaW5pdF9uZXRfc29ja2V0YCBvciB0aGUgbGlrZSwgYnV0IGl0IGRvZXNuJiMzOTt0IHVzdWFsbHkgbG9hZCBkZXZpY2UgdHJlZSBvdmVybGF5cyB1bmxlc3Mgd2UgZXhwbGljaXRseSBjb25maWd1cmUgaXQgdG8gZG8gc28gKGFuZCB0aGF0JiMzOTtzIHByZXR0eSB1bnVzdWFsLCB1c3VhbGx5IHNwZWNpZmljIHRvIGNlcnRhaW4gaGFyZHdhcmUpLgoKTm93LCBsZXQmIzM5O3Mgc2VlLCB3aGF0IGVsc2Ugc2V0cyBgcGh5X2ludGVyZmFjZV90YD8gSSBuZWVkIHRvIGxvb2sgYXQgdGhlIHVzdWFsIHN1c3BlY3RzOiBgZHJpdmVycy9uZXQvdHVuLmNgLCBgZHJpdmVycy9uZXQvdmV0aC5jYCwgYGRyaXZlcnMvbmV0L21hY3ZsYW4uY2AsIGFuZCBgZHJpdmVycy9uZXQvZHVtbXkuY2AuIE5vcGUsIG5vbmUgb2YgdGhvc2UgdXNlIGBwaHlsaW5rYC4gV2hhdCBhYm91dCBgZHJpdmVycy9uZXQvdXNiL2A/IEkgYWxyZWFkeSBjaGVja2VkIGBsYW43OHh4YCBhbmQgYGFzaXhgLCB0aGV5IGhhcmRjb2RlIGl0LiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSBgZTEwMDBlYCBkcml2ZXIgdXNlcyBpdDsgbm9wZSwgbm90aGluZy4gV2hhdCBhYm91dCBgdmlydGlvX25ldC5jYD8gTm8gbHVjay4KCkJhc2ljYWxseSwgYHBoeWxpbmtgIGlzIGFsbW9zdCBleGNsdXNpdmVseSB1c2VkIGJ5IGRyaXZlcnMgZm9yICpyZWFsKiBoYXJkd2FyZSBNQUNzLCByaWdodD8KClNvLCBldmVuIGlmIHdlICpkaWQqIGhhdmUgYSByZWFsIGhhcmR3YXJlIE1BQyBwcmVzZW50ICh0aGluayBQQ0kgcGFzc3Rocm91Z2gpLCB3ZSYjMzk7ZCBuZWVkIHRoYXQgaGFyZHdhcmUgdG8gKnN1cHBvcnQqIGBQU0dNSUlgLCBhbmQgdGhlbiB0aGUgZGV2aWNlIHRyZWUsIEFDUEksIG9yIHRoZSBkcml2ZXIgaXRzZWxmIHdvdWxkIG5lZWQgdG8gYmUgY29uZmlndXJlZCBmb3IgaXQuIFNpbmNlIGBQU0dNSUlgIGlzIGEgdmVyeSBzcGVjaWFsaXplZCBpbnRlcmZhY2UgbW9kZSAoUGVudGEgU0dNSUkpLCB0aGF0JiMzOTtzIGFuIHVubGlrZWx5IGNvbWJpbmF0aW9uLiBBIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQgaXMgaGlnaGx5IGltcHJvYmFibGUgdG8gc3VwcG9ydCB0aGF0IHdpdGhvdXQgY3VzdG9tIGhhcmR3YXJlIGVtdWxhdGlvbi4KCk9rYXksIGxldCBtZSBicm9hZGVuIG15IHRoaW5raW5nLiBJcyB0aGVyZSBhIGRyaXZlciB0aGF0IGNvdWxkIGJlIGluc3RhbnRpYXRlZCB2aWEgYG5ldGRldnNpbWAgb3Igc29tZXRoaW5nIHNpbWlsYXIgdGhhdCBhY3R1YWxseSAqdXNlcyogYHBoeWxpbmtgPyBUaGF0IG1pZ2h0IGJlIGEgd2F5IGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MjMxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBgZmJuaWNgIFBoeWxpbmsgTGFuZHNjYXBlKioKCkhtbSwgbm8uIE5vdCBxdWl0ZSB3aGF0IEkgd2FzIHRoaW5raW5nLiBXYWl0Li4uIHdoYXQgYWJvdXQgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2AgZGlyZWN0b3J5PyBJIHNlZW0gdG8gcmVjYWxsIHRoYXQmIzM5O3Mgd2hlcmUgYHBoeWxpbmtgIGlzIHVzZWQuIFRoYXQgbWlnaHQgYmUgYSBiZXR0ZXIgcGxhY2UgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBJdCBzdWdnZXN0cyBhIGNlcnRhaW4gYXBwcm9hY2ggdG8gbmV0d29yayBpbnRlcmZhY2UgbWFuYWdlbWVudCB0aGF0IGNvdWxkIGJlIHBlcnRpbmVudCB0byBteSBjdXJyZW50IHByb2JsZW0sIGRlcGVuZGluZyBvbiB0aGUgc2NvcGUuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYW5kIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRlcmFjdGlvbnMgd2l0aGluIHRoYXQgYXJlYSBvZiB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjQ1MgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBFTkVUQyBEcml2ZXIgZm9yIEV0aGVybmV0IENvbm5lY3Rpdml0eSoqCgpSaWdodCwgc28sIGZpcnN0IHRoaW5ncyBmaXJzdCwgaXQmIzM5O3Mgbm90IGxldmVyYWdpbmcgYFBTR01JSWAsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0LCBidXQgYWxzbyBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZGlmZmVyZW50IHNldCBvZiBjb25zaWRlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGxheWVyIGludGVyZmFjZS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cgb2ZmIHRoZSBiYXQsIGFzIEkgd2FzIGV4cGVjdGluZyBhIGNlcnRhaW4gc2V0IG9mIGxvdy1sZXZlbCBjb25maWd1cmF0aW9ucywgYW5kIG5vdyBJIGNhbiBwcm9jZWVkIGZyb20gdGhlIGNvcnJlY3QgYXNzdW1wdGlvbnMuIEkgbmVlZCB0byBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhlIEVORVRDJiMzOTtzIGNvbmZpZ3VyYXRpb24uCgpUaGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgaW50byB3aGVyZSB0aGUgcmVsZXZhbnQgZHJpdmVyIGNvZGUgd291bGQgcmVzaWRlLiBNeSBmaXJzdCBndWVzcywgbG9naWNhbGx5LCBpcyBnb2luZyB0byBiZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgRnJlZXNjYWxlJiMzOTtzIChvciwgbW9yZSBhY2N1cmF0ZWx5LCBOWFAmIzM5O3MpIEV0aGVybmV0LXJlbGF0ZWQgZHJpdmVycyB0byBiZSBsb2NhdGVkLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBtYWtlZmlsZXMgYW5kIHNvdXJjZSBmaWxlcyB0aGVyZSBmb3IgaW5pdGlhbGl6YXRpb24sIE1BQyBhZGRyZXNzIGNvbmZpZ3VyYXRpb24sIGludGVycnVwdCBoYW5kbGluZywgYW5kIHRyYW5zbWl0L3JlY2VpdmUgcGF0aCBtYW5hZ2VtZW50LiBUaGF0JiMzOTtzIG15IHN0YXJ0aW5nIHBvaW50LiBGcm9tIHRoZXJlLCBJIGNhbiBmaWd1cmUgb3V0IHRoZSBzcGVjaWZpY3MgYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIEVORVRDLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3ODkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3Qgb24gU3l6a2FsbGVyIEZ1enppbmcqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgYW5kIGFzIGZhciBhcyBJIGNhbiB0ZWxsLCBpdCYjMzk7cyBvbmx5IHVzZWQgYnkgdGhlIGBxY2E4MDd4LmNgIFBIWSBkcml2ZXIgYW5kIHRoZSBjb3JlIGBwaHlsaW5rYCBpbmZyYXN0cnVjdHVyZS4gVGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gRWZmZWN0aXZlbHksIHRoaXMgcGF0Y2gganVzdCBleHRlbmRzIGBwaHlsaW5rYCB0byBoYW5kbGUgYSBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmZhY2UgbW9kZSwgYFBTR01JSWAuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gdGhpcyBjaGFuZ2UgYmUgcmVhY2hlZCBhbmQgZnV6emVkIGJ5IHN5emthbGxlciBpbiBhIHR5cGljYWwgc2V0dXA/IEkgZG9uJiMzOTt0IHRoaW5rIHNvLiBTaW5jZSB0aGlzIG1vZGUgaXNuJiMzOTt0IGV4cG9zZWQgYnkgYSB2aXJ0dWFsIGRyaXZlciwgYW5kIGNhbiYjMzk7dCBiZSBzZXQgdXAgZnJvbSB1c2Vyc3BhY2UsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGZ1enphYmxlIGZ1bmN0aW9uYWxpdHkuCgpCdXQsIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIExldCBtZSBxdWlja2x5IGNoZWNrOiBjYW4gYHBoeV9pbnRlcmZhY2VfdGAgZXZlbiBiZSBzZXQgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRocm91Z2ggb3RoZXIgbWVhbnM/IENvdWxkIEkgbWFuaXB1bGF0ZSBpdCB2aWEgYGV0aHRvb2xgPyBObywgdGhhdCBpbnRlcmZhY2UgZG9lc24mIzM5O3QgZXhwb3NlIGBwaHlfaW50ZXJmYWNlX3RgLiBXaGF0IGFib3V0IGBuZXRsaW5rYD8gTm9wZSwgdGhhdCYjMzk7cyBhbHNvIGEgZGVhZCBlbmQ7IGBwaHlfaW50ZXJmYWNlX3RgIGlzIGEga2VybmVsLWludGVybmFsIGVudW0uICBNYXliZSBgc3lzZnNgPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfaW50ZXJmYWNlX3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTIyNT1pbnQgcGh5X2Nvbm5lY3RfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyMjYtXHRcdCAgICAgICB2b2lkICgqaGFuZGxlcikoc3RydWN0IG5ldF9kZXZpY2UgKiksXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEyMjc6XHRcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjI4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEyNjE9c3RydWN0IHBoeV9kZXZpY2UgKnBoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmJ1c19pZCxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTI2Mi1cdFx0XHQgICAgICAgdm9pZCAoKmhhbmRsZXIpKHN0cnVjdCBuZXRfZGV2aWNlICopLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMjYzOlx0XHRcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjY0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE1NTE9c3RhdGljIGludCBwaHlfc2ZwX21vZHVsZV9pbnNlcnQodm9pZCAqdXBzdHJlYW0sIGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE1NTctXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE1NTg6XHRwaHlfaW50ZXJmYWNlX3QgaWZhY2U7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE1NTktXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzUyPWludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNzUzOlx0XHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE3NTQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzc3NAoJCQkJCQkJb3V0cHV0OiAxNDYKCQkJCQkJCXRob3VnaHRzOiAzMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBXb3J0aCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYHBoeV9pbnRlcmZhY2VfdGAgYXJndW1lbnQgaXMgdGhlIGtleSBoZXJlLiBJdCYjMzk7cyBwYXNzZWQgdG8gYHBoeV9jb25uZWN0YCBhbmQgYHBoeV9hdHRhY2hfZGlyZWN0YCwgYW5kIHRob3NlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGJ5IE1BQyBkcml2ZXJzLiBTbywgdGhlIE1BQyBkcml2ZXIgaXMgZnVuZGFtZW50YWxseSB0aGUgb25lIGRldGVybWluaW5nIHRoZSBgcGh5X2ludGVyZmFjZV90YCB2YWx1ZS4gQW5kIHNpbmNlIEkga25vdywgZnJvbSB0aGUgY29udGV4dCBhbmQgbXkgZXhwZXJpZW5jZSwgdGhhdCBubyB2aXJ0dWFsIE1BQyBkcml2ZXIgSSYjMzk7bSBmYW1pbGlhciB3aXRoIHVzZXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCBpdCYjMzk7cyBiYXNpY2FsbHkgaW1wb3NzaWJsZSB0byBldmVuIHJlYWNoIHRoZSBjb2RlIHBhdGggaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4KCkxldCBtZSBqdXN0IHF1aWNrbHkgcmUtZXhhbWluZSB0aGUgcGF0Y2ggaXRzZWxmLi4uIEFoLCBpdCYjMzk7cyBhIHNpbXBsZSBhZGRpdGlvbiB0byBhIHN3aXRjaCBzdGF0ZW1lbnQuIEl0JiMzOTtzIGp1c3QgYWRkaW5nIGEgY2FzZSBmb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdpdGhpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBUaGlzIGlzIGNsZWFybHkgYSBoYXJkd2FyZSBlbmFibGVtZW50IGNoYW5nZS4gSXQmIzM5O3MgZGVzaWduZWQgdG8gc3VwcG9ydCBhIHNwZWNpZmljIGhhcmR3YXJlIGludGVyZmFjZSBtb2RlLiBJdCYjMzk7cyBub3Qgc29tZXRoaW5nIHRoYXQgd291bGQgYmUgdG91Y2hlZCBvciBldmVuIHVzZWQgaW4gbXkgdmlydHVhbCBlbnZpcm9ubWVudHMuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSBhbmQgdGhlIGxhY2sgb2YgdmlydHVhbCBzdXBwb3J0LCBpdCYjMzk7cyBqdXN0IG5vdCB3b3J0aCBmdXp6aW5nLiBJIHdpbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSBoYXJkd2FyZSBpbnRlcmZhY2UgbW9kZSB0byB0aGUgcGh5bGluayBjb3JlLiBUaGlzIHNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZSBpcyBvbmx5IHVzZWQgYnkgcmVhbCBoYXJkd2FyZSBNQUMvUEhZIGRyaXZlcnMgKGUuZy4sIHFjYTgwN3gpIGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBvciBldGh0b29sLiBTaW5jZSBubyB2aXJ0dWFsaXplZCBuZXR3b3JrIGRyaXZlcnMgKGxpa2UgZHVtbXksIHZldGgsIG9yIFVTQiBnYWRnZXQgbmV0d29yayBkcml2ZXJzKSB1c2UgdGhpcyBpbnRlcmZhY2UgbW9kZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSBoYXJkd2FyZSBpbnRlcmZhY2UgbW9kZSB0byB0aGUgcGh5bGluayBjb3JlLiBUaGlzIHNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZSBpcyBvbmx5IHVzZWQgYnkgcmVhbCBoYXJkd2FyZSBNQUMvUEhZIGRyaXZlcnMgKGUuZy4sIHFjYTgwN3gpIGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBvciBldGh0b29sLiBTaW5jZSBubyB2aXJ0dWFsaXplZCBuZXR3b3JrIGRyaXZlcnMgKGxpa2UgZHVtbXksIHZldGgsIG9yIFVTQiBnYWRnZXQgbmV0d29yayBkcml2ZXJzKSB1c2UgdGhpcyBpbnRlcmZhY2UgbW9kZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNTo1NC4xNzYzODI2MzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Nzc0ODg1MDE5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSBoYXJkd2FyZSBpbnRlcmZhY2UgbW9kZSB0byB0aGUgcGh5bGluayBjb3JlLiBUaGlzIHNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZSBpcyBvbmx5IHVzZWQgYnkgcmVhbCBoYXJkd2FyZSBNQUMvUEhZIGRyaXZlcnMgKGUuZy4sIHFjYTgwN3gpIGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBvciBldGh0b29sLiBTaW5jZSBubyB2aXJ0dWFsaXplZCBuZXR3b3JrIGRyaXZlcnMgKGxpa2UgZHVtbXksIHZldGgsIG9yIFVTQiBnYWRnZXQgbmV0d29yayBkcml2ZXJzKSB1c2UgdGhpcyBpbnRlcmZhY2UgbW9kZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM1OjU0LjE3NjM5MTQzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE5MDY5OTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2E2NGE1N2U1MTYxMTg4NGZjNTYwMTMzNDUzZWNkZGVhYzk3NTI4Y1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyA4IDAyOjM1OjUzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuaW5kZXggMThkMmVhZDk3YWE1NC4uOTgzYTFhM2NlZTM3NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbkBAIC0xMDQwLDYgKzEwNDAsNyBAQCBzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbiB7XFxuIFxcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVVTR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzU6NTQuNTk2MTkwNTAxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTczMjkwMjkxNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSBoYXJkd2FyZSBpbnRlcmZhY2UgbW9kZSB0byB0aGUgcGh5bGluayBjb3JlLiBUaGlzIHNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZSBpcyBvbmx5IHVzZWQgYnkgcmVhbCBoYXJkd2FyZSBNQUMvUEhZIGRyaXZlcnMgKGUuZy4sIHFjYTgwN3gpIGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBvciBldGh0b29sLiBTaW5jZSBubyB2aXJ0dWFsaXplZCBuZXR3b3JrIGRyaXZlcnMgKGxpa2UgZHVtbXksIHZldGgsIG9yIFVTQiBnYWRnZXQgbmV0d29yayBkcml2ZXJzKSB1c2UgdGhpcyBpbnRlcmZhY2UgbW9kZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNhNjRhNTdlNTE2MTE4ODRmYzU2MDEzMzQ1M2VjZGRlYWM5NzUyOGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDAyOjM1OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDE4ZDJlYWQ5N2FhNTQuLjk4M2ExYTNjZWUzNzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMTA0MCw2ICsxMDQwLDcgQEAgc3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiB7XG4gXHRzd2l0Y2ggKGludGVyZmFjZSkge1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RVVNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM1OjU0LjU5NjE5MTY5MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDk5MTYzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkFuYWx5emluZyB0aGUgUGh5bGluayBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKClgLiBUaGF0IGZ1bmN0aW9uJ3MgYSBjcnVjaWFsIHBpZWNlLCBhcyBpdCBkZXRlcm1pbmVzIGhvdyB0aGUgUEhZIGludGVyYWN0cyB3aXRoIHRoZSBuZXR3b3JrIHN0YWNrLiBTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW50byB0aGUgYHN3aXRjaGAgc3RhdGVtZW50IHdpdGhpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUoKWAuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgbG9naWMuIEkgbmVlZCB0byBzZWUgaG93IGBQU0dNSUlgIGlzIGJlaW5nIGludGVncmF0ZWQgaW50byB0aGUgZXhpc3RpbmcgaW50ZXJmYWNlIHR5cGUgaGFuZGxpbmcuIFdoYXQgaW1wbGljYXRpb25zIGRvZXMgdGhpcyBoYXZlIG9uIHRoZSBQSFktdG8tTUFDIG5lZ290aWF0aW9uIHByb2Nlc3M/IElzIHRoZXJlIGFueSBhZGRlZCBlcnJvciBjaGVja2luZywgb3IgZG9lcyB0aGlzIHNpbXBseSBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIG1vZGU/IEknbGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIG1vZGVzLCBhbmQgYW55IG5ldyBkZXBlbmRlbmNpZXMgaXQgaW50cm9kdWNlcywgb3IgY2hhbmdlcyB0byB0aGUgYmVoYXZpb3Igb2YgZXhpc3RpbmcgbW9kZXMuIEFuZCBvZiBjb3Vyc2UsIEkgd2lsbCBuZWVkIHRvIGVuc3VyZSB0aGlzIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM1OjU4LjIwNjExMDY1NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTAwNjY3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2dldF9pbmJhbmRfdHlwZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzMz1lbnVtIGluYmFuZF90eXBlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAzOC1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMzk6c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDkwPXN0YXRpYyB2b2lkIHBoeWxpbmtfcGNzX25lZ19tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwOTgtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDk5OlxcdHR5cGUgPSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTEwMC1cXHRpZiAodHlwZSA9PSBJTkJBTkRfTk9ORSkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNzU2PXN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX29wdGljYWwoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODA2LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzgwNzpcXHRpbmJhbmRfdHlwZSA9IHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODA4LVxcdGlmIChpbmJhbmRfdHlwZSA9PSBJTkJBTkRfTk9ORSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNTo1OC4yNTExMjM1MDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODM5MjU3OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGhlcmUuXG5cbioqQW5hbHl6aW5nIFRoaXMgUEhZIEludGVyZmFjZSBQYXRjaCoqXG5cblNvLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGludG8gdGhlIHN3aXRjaCBzdGF0ZW1lbnQuIFRoYXQgbWVhbnMsIG5vdywgd2hlbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgIGlzIGNhbGxlZCwgaXQgc2hvdWxkIGNvcnJlY3RseSBpZGVudGlmeSBgSU5CQU5EX1NHTUlJYCBpbnN0ZWFkIG9mIGZhbGxpbmcgYmFjayB0byB0aGUgZGVmYXVsdCBvciBgSU5CQU5EX05PTkVgLiBXYWl0LCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAgaXRzZWxmIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjdHVhbGx5IGNvcnJlY3QsIGFuZCBpdCBpcyBiZWhhdmluZyBhcyBJIHdvdWxkIGV4cGVjdCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgUEhZIGxheWVyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGhhbmRsaW5nIG9mIGBJTkJBTkRfU0dNSUlgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzAwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MDEuMDkwMzgzNTE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAzOSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAzOTpcXHRzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbjEwNDA6XFx0e1xcbjEwNDE6XFx0XFx0c3dpdGNoIChpbnRlcmZhY2UpIHtcXG4xMDQyOlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbjEwNDM6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbjEwNDQ6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbjEwNDU6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVVTR01JSTpcXG4xMDQ2OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6XFxuMTA0NzpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdfUVhHTUlJOlxcbjEwNDg6XFx0XFx0XFx0LyogVGhlc2UgcHJvdG9jb2xzIGFyZSBkZXNpZ25lZCBmb3IgdXNlIHdpdGggYSBQSFkgd2hpY2hcXG4xMDQ5OlxcdFxcdFxcdCAqIGNvbW11bmljYXRlcyBpdHMgbmVnb3RpYXRpb24gcmVzdWx0IGJhY2sgdG8gdGhlIE1BQyB2aWFcXG4xMDUwOlxcdFxcdFxcdCAqIGluYmFuZCBjb21tdW5pY2F0aW9uLiBOb3RlOiB0aGVyZSBleGlzdCBQSFlzIHRoYXQgcnVuXFxuMTA1MTpcXHRcXHRcXHQgKiB3aXRoIFNHTUlJIGJ1dCBkbyBub3Qgc2VuZCB0aGUgaW5iYW5kIGRhdGEuXFxuMTA1MjpcXHRcXHRcXHQgKi9cXG4xMDUzOlxcdFxcdFxcdHJldHVybiBJTkJBTkRfQ0lTQ09fU0dNSUk7XFxuMTA1NDpcXHRcXG4xMDU1OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDpcXG4xMDU2OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDpcXG4xMDU3OlxcdFxcdFxcdC8qIDEwMDBiYXNlLVggaXMgZGVzaWduZWQgZm9yIHVzZSBtZWRpYS1zaWRlIGZvciBGaWJyZVxcbjEwNTg6XFx0XFx0XFx0ICogY29ubmVjdGlvbnMsIGFuZCB0aHVzIHRoZSBBdXRvbmVnIGJpdCBuZWVkcyB0byBiZVxcbjEwNTk6XFx0XFx0XFx0ICogdGFrZW4gaW50byBhY2NvdW50LiBXZSBhbHNvIGRvIHRoaXMgZm9yIDI1MDBiYXNlLVhcXG4xMDYwOlxcdFxcdFxcdCAqIGFzIHdlbGwsIGJ1dCBkcml2ZXJzIG1heSBub3Qgc3VwcG9ydCB0aGlzLCBzbyBtYXlcXG4xMDYxOlxcdFxcdFxcdCAqIG5lZWQgdG8gb3ZlcnJpZGUgdGhpcy5cXG4xMDYyOlxcdFxcdFxcdCAqL1xcbjEwNjM6XFx0XFx0XFx0cmV0dXJuIElOQkFORF9CQVNFWDtcXG4xMDY0OlxcdFxcbjEwNjU6XFx0XFx0ZGVmYXVsdDpcXG4xMDY2OlxcdFxcdFxcdHJldHVybiBJTkJBTkRfTk9ORTtcXG4xMDY3OlxcdFxcdH1cXG4xMDY4OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MDEuMDkwNTcyNjM3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE5MzQ0MTA2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRoaXMgVGlueSBDaGFuZ2U/IFRoZSBRdWVzdGlvbiBvZiBWaXJ0dWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcHJldHR5IG1pbm9yIG1vZGlmaWNhdGlvbiBpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBJdCdzIGEgc2ltcGxlIHJldHVybiB2YWx1ZSBjaGFuZ2UgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgZnJvbSBgSU5CQU5EX05PTkVgIHRvIGBJTkJBTkRfQ0lTQ09fU0dNSUlgLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgaXMgdGhpcyBldmVuIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8gSXQncyBhIHNtYWxsIGNoYW5nZSwgYnV0IGV2ZW4gc21hbGwgY2hhbmdlcyBjYW4gaGlkZSB2dWxuZXJhYmlsaXRpZXMsIG9mIGNvdXJzZS5cblxuVGhlIGZ1bmN0aW9uJ3MgY2FsbGVkIGluIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAgYW5kIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAsIHdoaWNoIG5hcnJvd3MgZG93biB0aGUgYXR0YWNrIHN1cmZhY2UgdG8gYSBkZWdyZWUuIFRoZSBiaWcgcHJvYmxlbSwgdGhvdWdoLCBpcyBob3cgYWNjZXNzaWJsZSBgcGh5bGlua2AgaXMgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENhbiB3ZSBldmVuIHRyaWdnZXIgdGhpcyBjaGFuZ2UgaW4gYSBjb250cm9sbGVkIHNldHRpbmc/XG5cbkxldCdzIHNlZS4gYHBoeWxpbmtgICppcyogcHJldHR5IHdpZGVseSB1c2VkIGluIG5ldHdvcmsgZHJpdmVycywgc28gdGhhdCdzIGVuY291cmFnaW5nLiBCdXQgY2FuIHdlIHJlYWNoIGl0IHZpYSwgc2F5LCBhIHZpcnR1YWwgbmV0d29yayBkcml2ZXIsIG9yIHRocm91Z2ggTmV0bGluayBvciBldGh0b29sPyBNeSBleHBlcmllbmNlIHN1Z2dlc3RzIGBwaHlsaW5rYCBpcyB1c3VhbGx5IHRoZSBkb21haW4gb2YgcmVhbCBoYXJkd2FyZSBNQUNzLiBCdXQgdGhhdCBkb2Vzbid0IG1lYW4gaXQncyBpbXBvc3NpYmxlLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IHZpcnR1YWwgZHJpdmVycyB1c2luZyBgcGh5bGlua2AgZGlyZWN0bHkuIExldCBtZSBjaGVjayB0aGUgdXNlciBsaXN0IGluIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCB0byBiZSBzdXJlLiBUaGF0IHdvdWxkIG1ha2UgdGhpcyB2dWxuZXJhYmlsaXR5IGZhciBtb3JlIGFjY2Vzc2libGUgYW5kIHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ2NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjA2LjI4NDAxNTY2N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzMwNTExNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMTI4PXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE0MTY6XFx0cHJpdi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cXHRcXHRcXHRcXHQgICAgICAgb2ZfZndub2RlX2hhbmRsZShwcml2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZW9mX25vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz0xMDc0PXN0YXRpYyBpbnQgYWc3MXh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGFnNzF4eCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMTA5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YWctXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBhZy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMTAtXFx0XFx0XFx0XFx0IGFnLVxcdTAwM2VwaHlfaWZfbW9kZSwgXFx1MDAyNmFnNzF4eF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwODY6XFx0YnAtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YnAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBicC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODctXFx0XFx0XFx0XFx0ICAgICBicC1cXHUwMDNlcGh5X2ludGVyZmFjZSwgXFx1MDAyNm1hY2JfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYz0yMDE9c3RhdGljIGludCBkcGFhX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXFx0bWFjX2Rldi1cXHUwMDNldXBkYXRlX3NwZWVkID0gZHBhYV9ldGhfY2dyX3NldF9zcGVlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcXHRtYWNfZGV2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hY19kZXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc2LVxcdFxcdFxcdFxcdFxcdCAgZGV2X2Z3bm9kZShtYWNfZGV2LVxcdTAwM2VkZXYpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTU2MD1pbnQgZHBhYTJfbWFjX2Nvbm5lY3Qoc3RydWN0IGRwYWEyX21hYyAqbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NjI1OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI2LVxcdFxcdFxcdFxcdCBkcG1hY19ub2RlLCBtYWMtXFx1MDAzZWlmX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTcxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkwOlxcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFxcdTAwMjZlbmV0Y19wbF9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkxLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkyLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGNyZWF0ZSBwaHlsaW5rXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkzOlxcdFxcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTk4OmVycl9waHlsaW5rX2NyZWF0ZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk5LVxcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz04NDc9c3RhdGljIGludCBlbmV0Y19wZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzA6XFx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXFx1MDAyNmVuZXRjX21hY19waHlsaW5rX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMxLVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMyOlxcdFxcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0MS1cXHRlbmV0Y19waHlsaW5rX2Rlc3Ryb3kocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTQyOmVycl9waHlsaW5rX2NyZWF0ZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDMtXFx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMTI9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMTQ6aW50IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzE1LVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMzg6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwZi1cXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzOS1cXHRcXHRcXHRcXHQgcGYtXFx1MDAzZWlmX21vZGUsIG9wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQ4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQ5OkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzUwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaDoxMzppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaC0xNC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jPTg1Mz1zdGF0aWMgaW50IGZzX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM6OTMzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZmVwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShmZXAtXFx1MDAzZWRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNmZzX2VuZXRfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jPTM0MTk9c3RhdGljIGludCB1Y2NfZ2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlKiBvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM6MzU3NDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnVnZXRoLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzUtXFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2UsIFxcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM9NTQ4MD1zdGF0aWMgaW50IG12bmV0YV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYy01NTk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM6NTU5OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU2MDAtXFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jPTY4NDA9c3RhdGljIGludCBtdnBwMl9wb3J0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jOjcxNDg6XFx0XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNzE0OS1cXHRcXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZtdnBwMl9waHlsaW5rX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcXHRcXHRwaHlfbGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlfY29uZmlnLCBmd25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE4LVxcdFxcdFxcdFxcdFxcdCAgUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODIzPXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njg6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk2OS1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShtYWMtXFx1MDAzZW9mX25vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz03NDY9c3RydWN0IG5ldF9kZXZpY2UgKmZibmljX25ldGRldl9hbGxvYyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTgzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jOjgzNTpcXHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM2LVxcdFxcdGZyZWVfbmV0ZGV2KG5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oPTExMT1pbnQgZmJuaWNfcGh5bGlua19nZXRfZmVjcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oOjExMzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaC0xMTQtdm9pZCBmYm5pY19waHlsaW5rX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYz0xNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZmJuaWNfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE4NzogKiBmYm5pY19waHlsaW5rX2NyZWF0ZSAtIFBoeWxpbmsgZGV2aWNlIGNyZWF0aW9uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg4LSAqIEBuZXRkZXY6IE5ldHdvcmsgRGV2aWNlIHN0cnVjdCB0byBhdHRhY2ggcGh5bGluayBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5Ni0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTk3OmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZmJuLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzMtXFx0XFx0XFx0XFx0IGZibmljX3BoeWxpbmtfc2VsZWN0X2ludGVyZmFjZShmYm4tXFx1MDAzZWF1aSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzE0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBsYW43NDN4X3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTUwOnN0YXRpYyBpbnQgbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTkzOlxcdHBsID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTk0LVxcdFxcdFxcdCAgICBhZGFwdGVyLVxcdTAwM2VwaHlfaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM2NjQ9c3RhdGljIGludCBsYW43NDN4X3BjaWRldl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzI0OlxcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjUtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jPTc5MT1zdGF0aWMgaW50IGxhbjk2NnhfcHJvYmVfcG9ydChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCwgdTMyIHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM6ODU2OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVxcdFxcdFxcdFxcdCBwb3J0bnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0zODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnNweDVfcG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM5MC1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShjb25maWctXFx1MDAzZW5vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTc3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBvY2Vsb3RfcGh5bGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xNzc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE3ODA6c3RhdGljIGludCBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpwb3J0bnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4MjE6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIyLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xODQzPWludCBvY2Vsb3RfcHJvYmVfcG9ydChzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LCBzdHJ1Y3QgcmVnbWFwICp0YXJnZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4ODA6XFx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4ODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTM3MD1zdGF0aWMgaW50IHN0bW1hY19waHlsaW5rX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE0NjI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZGV2X2Z3bm9kZShwcml2LVxcdTAwM2VkZXZpY2UpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2My1cXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgUEhZX0lOVEVSRkFDRV9NT0RFX1hBVUksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjQtXFx0XFx0XFx0XFx0IFxcdTAwMjZ0bjQwX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU3PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDMtXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydC1cXHUwMDNlc2xhdmUucG9ydF9ucCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM9MTMwPXN0YXRpYyBpbnQgbmdiZV9waHlsaW5rX2luaXQoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jOjE1MDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXFx1MDAyNm5nYmVfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE1MS1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYz00ODI9aW50IHR4Z2JlX3BoeWxpbmtfaW5pdF9hbWwoc3RydWN0IHR4Z2JlICp0eGdiZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM6NTEzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcXHUwMDI2dHhnYmVfbWFjX29wc19hbWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTE0LVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jPTI2OD1zdGF0aWMgaW50IHR4Z2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYzoyOTM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXFx1MDAyNnR4Z2JlX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmMtMjk0LVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTI3OTU9c3RhdGljIGludCBheGllbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTE4OlxcdGxwLVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmxwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMTktXFx0XFx0XFx0XFx0ICAgICBscC1cXHUwMDNlcGh5X21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjItXFx0XFx0cmV0ID0gUFRSX0VSUihscC1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTIzOlxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInBoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTI0LVxcdFxcdGdvdG8gY2xlYW51cF9tZGlvO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz01MTY9c3RhdGljIGludCBwaHlsaW5rX3ZhbGlkYXRlX21hY19hbmRfcGNzKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMxLVxcdGlmIChwY3MpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMjpcXHRcXHQvKiBUaGUgUENTLCBpZiBwcmVzZW50LCBtdXN0IGJlIHNldHVwIGJlZm9yZSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzMtXFx0XFx0ICogaGFzIGJlZW4gY2FsbGVkLiBJZiB0aGUgb3BzIGlzIG5vdCBpbml0aWFsaXNlZCwgcHJpbnQgYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcxLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA3MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzMtICogQHBjczogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3NcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2OT1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5My0gKiBwaHlsaW5rX3NldF9maXhlZF9saW5rKCkgLSBzZXQgdGhlIGZpeGVkIGxpbmtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzk1LSAqIEBzdGF0ZTogYSBwb2ludGVyIHRvIGEgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTgzMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9maXhlZF9saW5rKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMy0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MzQ6ICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzUtICogQGNvbmZpZzogYSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgXFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ4LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0OTpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODUwLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM2LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5Mzc6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk0MC0gKiBwaHlsaW5rX2Rlc3Ryb3koKSAtIGNsZWFudXAgYW5kIGRlc3Ryb3kgdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NDE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQyLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2MC0gKiBwaHlsaW5rX2V4cGVjdHNfcGh5KCkgLSBEZXRlcm1pbmUgaWYgcGh5bGluayBleHBlY3RzIGEgcGh5IHRvIGJlIGF0dGFjaGVkXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjA2PXN0YXRpYyBpbnQgcGh5bGlua19hdHRhY2hfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNi0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjI3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyOC0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeV9kZXZpY2UuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjMtICogcGh5bGlua19vZl9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgRFQgbW9kZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjY1LSAqIEBkbjogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI3OT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX29mX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4Mi0gKiBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgZndub2RlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODQtICogQGZ3bm9kZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBmd25vZGVfaGFuZGxlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzM4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0Mi0gKiAgIGluc3RhbmNlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM0MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM3Mz1zdGF0aWMgdm9pZCBwaHlsaW5rX2xpbmtfY2hhbmdlZChzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgdXAsIGNvbnN0IGNoYXIgKndoYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODItICogcGh5bGlua19tYWNfY2hhbmdlKCkgLSBub3RpZnkgcGh5bGluayBvZiBhIGNoYW5nZSBpbiBNQUMgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzg0LSAqIEB1cDogaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxpbmsgaXMgY3VycmVudGx5IHVwLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDE1PXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI1LSAqIHBoeWxpbmtfc3RhcnQoKSAtIHN0YXJ0IGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQyNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQ4OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0YXJ0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5MS0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDkyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5My0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTIyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RvcCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjUtICogcGh5bGlua19yeF9jbGtfc3RvcF9ibG9jaygpIC0gYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrIGluIExQSVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjUyNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU1MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU1NC0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2soKSAtIHVuYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTU1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU1Ni0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTkzPXN0YXRpYyBib29sIHBoeWxpbmtfcGh5X3BtX3NwZWVkX2N0cmwoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAwLSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwMTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDItICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2NTI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdXNwZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1NS0gKiBwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKCkgLSBwcmVwYXJlIHRvIHJlc3VtZSBhIG5ldHdvcmsgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjU2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1Ny0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjc3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjgwLSAqIHBoeWxpbmtfcmVzdW1lKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSByZXN1bWUgZXZlbnRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2ODE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjgyLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3MjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIzLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3MjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzI1LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyB0byBob2xkIHRoZSByZWFkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjAtICogcGh5bGlua19ldGh0b29sX3NldF93b2woKSAtIHNldCB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc2Mi0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjg4OT1zdGF0aWMgdm9pZCBwaHlsaW5rX2dldF9rc2V0dGluZ3MoY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5MDQtICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19nZXQoKSAtIGdldCB0aGUgY3VycmVudCBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTA1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwNi0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIHRvIGhvbGQgbGluayBzZXR0aW5nc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTU3PXN0YXRpYyBib29sIHBoeWxpbmtfdmFsaWRhdGVfcGNzX2luYmFuZF9hdXRvbmVnKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3OC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTc5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4MC0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIGZvciB0aGUgZGVzaXJlZCBtb2Rlc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTQ1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0OC0gKiBwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCgpIC0gcmVzdGFydCBuZWdvdGlhdGlvblxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNTAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE3MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzMtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE3NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzUtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTg2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODktICogcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKCkgLSBzZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE5MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxOTEtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjcyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNzYtICogICBjb3VudGVyXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjc3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNzgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI5NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI5OC0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSgpIC0gcmVhZCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjk5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMwMC0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMzIxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMyNC0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSgpIC0gc2V0IHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzMjU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI2LSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM0OTU9c3RhdGljIGludCBwaHlsaW5rX21paV93cml0ZShzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGludCBwaHlfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTMtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzUxNDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTUtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBpZnJlcSBmb3Igc29ja2V0IGlvY3Rsc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5Mi0gKiAgIGxpbmsgcGFydG5lcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTk0LSAqIEBzeW5jOiBwZXJmb3JtIGFjdGlvbiBzeW5jaHJvbm91c2x5XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM2MTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zcGVlZF9kb3duKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNy0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjE4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxOS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2M0NV9wY3NfZ2V0X3N0YXRlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM3NC0gKlxcdFxcdFxcdFxcdCB3aGljaCBsb3NlcyBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM3NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNzYtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM5MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5NS0gKlxcdFxcdFxcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzk2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5Ny0gKlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjA6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyMS1cXHRcXHRcXHRcXHQgcGh5X2lmX21vZGUsIFxcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4MzgtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShwYywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODQwLVxcdFxcdFxcdFxcdCBkZXYtXFx1MDAzZWludGVyZmFjZSwgXFx1MDAyNmxhbjc4eHhfcGh5bGlua19tYWNfb3BzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MDYuNDE3MDcxMDMzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY4MjQxNDM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFVTQi10by1FdGhlcm5ldCBEZXZpY2UgRW11bGF0aW9uIHdpdGggUFNHTUlJKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHdlIGNhbiBlbXVsYXRlIFVTQi10by1FdGhlcm5ldCBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYGFzaXhfZGV2aWNlcy5jYCBhbmQgYGxhbjc4eHguY2AuIEJvdGggb2YgdGhlc2UgdXNlIGBwaHlsaW5rX2NyZWF0ZWAsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIHRoZXkncmUgZ29vZCBjYW5kaWRhdGVzIGZvciB0ZXN0aW5nIHdpdGggZHVtbXlfaGNkIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdpdGhpbiBzeXprYWxsZXIuXG5cbkJ1dCB3YWl0LCBJIHNlZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gdGhlIG1peCwgYW5kIHRoYXQncyB0aHJvd2luZyBhIHdyZW5jaCBpbiB0aGUgd29ya3MuIFRoaXMgaXMgYSAqc3BlY2lmaWMqIG1vZGUuIENhbiB3ZSBhY3R1YWxseSB0cmlnZ2VyIHRoaXMgd2l0aCB2aXJ0dWFsIGRyaXZlcnM/IFRoYXQncyB0aGUga2V5IHF1ZXN0aW9uLlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gZmlndXJlIG91dCBpZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgc29tZXRoaW5nIGNvbmZpZ3VyYWJsZSB2aWEgdXNlcnNwYWNlIHRvb2xzIGxpa2UgbmV0bGluayBvciBldGh0b29sLCBvciBpZiBpdCdzIHN0cmljdGx5IHRpZWQgdG8gZGV2aWNlIHRyZWUgYmluZGluZ3Mgb3IgdW5kZXJseWluZyBoYXJkd2FyZSBwcm9wZXJ0aWVzLiBNeSBleHBlcmllbmNlIHN1Z2dlc3RzIHRoYXQgYHBoeV9pbnRlcmZhY2VfdGAgaXMgdXN1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSBkcml2ZXIgYmFzZWQgb24gZGV2aWNlIHRyZWUgaW5mb3JtYXRpb24gb3IgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLCBzbyB0aGlzIGZlZWxzIGxpa2UgYSBsb25nIHNob3QuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQuXG5cblRoZXJlZm9yZSwgSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIHVzZWQgc28gSSBjYW4gdW5kZXJzdGFuZCBob3cgdGhpcyBtb2RlIGlzIGNvbmZpZ3VyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTk3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjExLjA5OTQ4ODU4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NDIyMzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cXHRcXHRyZXR1cm4gNDtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cXHRcXHRyZXR1cm4gNTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cXHRcXHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcXHRcXHRcXHRcXHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVxcdFxcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVxcdGRlZmF1bHQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjExLjIzMzkxNzExM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzA1OTQzMDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFJlYWNoIG9mIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgcHJpbWFyaWx5IGEgUXVhbGNvbW0tc3BlY2lmaWMgdGhpbmcsIHVzZWQgaW4gdGhlIGBxY2E4MDd4LmNgIGRyaXZlciBhbmQsIG9mIGNvdXJzZSwgdGhlIGNvcmUgUEhZL3BoeWxpbmsgY29kZS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMsIGNhbiB3ZSBhY3R1YWxseSAqaGl0KiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgIHdpdGggYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdoZW4gd2UncmUgcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBUaGF0J3MgdGhlIGNydXggb2YgdGhpcy5cblxuSWYgd2UgY2FuIHNwaW4gdXAgYSB2aXJ0dWFsIG5ldGRldiwgY29uZmlndXJlIGl0IHRvIHVzZSBgcGh5bGlua2AsIGFuZCB0aGVuICpmb3JjZSogaXRzIGludGVyZmFjZSBtb2RlIHRvIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB0aHJvdWdoIG5ldGxpbmsgb3Igc3lzZnMg4oCTICp0aGVuKiB3ZSBoYXZlIGEgc2NlbmFyaW8gdG8gY29uc2lkZXIuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiBgcGh5X2ludGVyZmFjZV90YCBiZSBjb250cm9sbGVkIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rPyBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoYXQgbGV2ZWwgb2YgY29udHJvbCBpcyBleHBvc2VkLlxuXG5UaGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIGFjdHVhbGx5IGFjY2Vzc2libGUgYW5kIGNvbmZpZ3VyYWJsZSBmcm9tIHVzZXJzcGFjZS4gV2UgbmVlZCB0byBmaW5kIG91dCBpZiBpdCBpcyBwb3NzaWJsZSB0byBzZXQgdGhlIGludGVyZmFjZSBtb2RlIGZyb20gdXNlcnNwYWNlLCBhcyB0aGlzIGlzIHRoZSBkZWNpZGluZyBmYWN0b3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NDQ3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjE1LjkzOTg2Mjg2NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg5MDA4ODIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MTYuMDE4Nzc2NDE2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTYwNTU2MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBJbnRlcmZhY2UgQ29uZmlndXJhdGlvbioqXG5cbkhtbSwgdGhpcyBzb3VuZHMgbGlrZSB3ZSdyZSBkaWdnaW5nIGludG8gbmV0d29yayBpbnRlcmZhY2UgY29uZmlndXJhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIG5vdCByZWludmVudCB0aGUgd2hlZWwgaGVyZS4gQmVmb3JlIEkgc3RhcnQgZ29pbmcgZG93biBhbnkgcmFiYml0IGhvbGVzLCBJJ2QgYmV0dGVyIGNvbnNpZGVyIHRoZSBzdGFuZGFyZCB0b29scy4gKmV0aHRvb2wqIHNwcmluZ3MgdG8gbWluZCDigJMgaXQncyB0aGUgZ28tdG8gdXRpbGl0eSBmb3IgcXVlcnlpbmcgYW5kIGNvbmZpZ3VyaW5nIEV0aGVybmV0IGRldmljZXMgYXQgYSBsb3cgbGV2ZWwuIEFuZCB0aGVuIHRoZXJlJ3MgKnJ0bmV0bGluayogd2hpY2ggcHJvdmlkZXMgYSBtb3JlIHZlcnNhdGlsZSBhbmQgbW9kZXJuIGludGVyZmFjZSwgc28gdGhhdCBpcyBhbm90aGVyIHRvIHF1aWNrbHkgY2hlY2suXG5cbk5vdywgaWYgd2UncmUgZGVhbGluZyB3aXRoICpwaHlfaW50ZXJmYWNlX3QqLCB0aGF0J3MgZ2V0dGluZyBkb3duIGludG8gdGhlIHdlZWRzIG9mIHRoZSBwaHlzaWNhbCBsYXllciBhYnN0cmFjdGlvbi4gU28sIHRoZSBrZXkgcXVlc3Rpb24gaGVyZSBpcywgd2hlcmUgaXMgdGhhdCB2YWx1ZSBhY3R1YWxseSBiZWluZyBzZXQgb3IgbW9kaWZpZWQgZnJvbSB1c2Vyc3BhY2U/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gd2hlcmUgdGhhdCBzdHJ1Y3R1cmUgaXMgdXNlZCwgYW5kIGZpZ3VyZSBvdXQgaG93IGl0J3MgYmVpbmcgcG9wdWxhdGVkIGZyb20gdGhlIGFwcGxpY2F0aW9uIHNpZGUuIFRoYXQncyB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvOiBnZXQgYSBoYW5kbGUgb24gd2hlcmUgdGhvc2UgdmFsdWVzIGFyZSBjb21pbmcgZnJvbSBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCB0aGUgcG9zc2libGUgc291cmNlcyBvZiBhbnkgaXNzdWUgd2UncmUgZmFjaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjkyMywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjE5LjU3NDgzNDcyN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwNjA3MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2ludGVyZmFjZV90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9vZl9uZXQuYy0yNi0gKi9cXG5uZXQvY29yZS9vZl9uZXQuYzoyNzppbnQgb2ZfZ2V0X3BoeV9tb2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHBoeV9pbnRlcmZhY2VfdCAqaW50ZXJmYWNlKVxcbm5ldC9jb3JlL29mX25ldC5jLTI4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MTkuNjIyOTAxMzUxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODI0NDU1MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBvZiB0aGUgUEhZIEludGVyZmFjZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZSBgcGh5X2ludGVyZmFjZV90YCBpcyBiZWluZyBjb25maWd1cmVkLCBhbmQgaXQgYXBwZWFycywgYmFzZWQgb24gd2hhdCBJJ3ZlIHNlZW4sIHRoYXQgRGV2aWNlIFRyZWUgKGBvZl9nZXRfcGh5X21vZGVgKSBwbGF5cyBhIHNpZ25pZmljYW50IHJvbGUgaGVyZS4gVGhhdCBtYWtlcyBzZW5zZSwgYnV0IGl0IGdvdCBtZSB3b25kZXJpbmc6IGNhbiB3ZSBtYW5pcHVsYXRlIHRoaXMgdmFsdWUsIG9yIGV2ZW4gc2V0IGl0IGluaXRpYWxseSwgdmlhIGEgbmV0bGluayBpbnRlcmZhY2U/IFRoYXQgd291bGQgYmUgdXNlZnVsIGZvciBhIG1vcmUgZHluYW1pYyBzeXN0ZW0uXG5cbk15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBpbnRvIHRoZSBrZXJuZWwgaGVhZGVycywgc3BlY2lmaWNhbGx5IGBpbmNsdWRlL3VhcGkvbGludXgvZXRodG9vbC5oYCBhbmQgYGluY2x1ZGUvdWFwaS9saW51eC9pZl9saW5rLmhgLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzIHdoZW4geW91J3JlIGRlYWxpbmcgd2l0aCBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uIGFuZCBtYW5hZ2VtZW50IGZyb20gdXNlcnNwYWNlLiBJJ2xsIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZXRodG9vbCBjb21tYW5kcyBvciBpZl9saW5rIGF0dHJpYnV0ZXMgdGhhdCByZWxhdGUgdG8gUEhZIGludGVyZmFjZSBzZWxlY3Rpb24gb3IgbW9kaWZpY2F0aW9uLiBIb3BlZnVsbHksIHRoZXJlJ3Mgc29tZXRoaW5nIHRoZXJlIHRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgaW5zaWdodCBhbmQgY29uZmlybXMgb3IgZGVuaWVzIHRoZSBhYmlsaXR5IHRvIG1vZGlmeSB0aGUgUEhZIGludGVyZmFjZSB2aWEgbmV0bGluay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTczMTEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNjoyMy4yMDUzNTAwMzlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzUxNTE0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfaW50ZXJmYWNlX3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS91YXBpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MjMuMjYyNzExNTEzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTM4OTAzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYHBoeV9pbnRlcmZhY2VfdGAgQ29kZSBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJJ3ZlIGhpdCBhIHNuYWcuIFRoaXMgYHBoeV9pbnRlcmZhY2VfdGAgaXMgYW4gaW50ZXJuYWwga2VybmVsIGVudW0g4oCTIHRoYXQncyBhIGtleSBkZXRhaWwuIEl04oCZcyBnb3QgbWUgdGhpbmtpbmc6IGhvdyBjYW4gSSBhY3R1YWxseSAqdHJpZ2dlciogdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGggaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LCBlc3BlY2lhbGx5IHdpdGhpbiBzb21ldGhpbmcgbGlrZSBRRU1VPyBJJ20gdHJ5aW5nIHRvIHRlc3QgdGhpcyB0aG9yb3VnaGx5LCBhbmQgYSB2aXJ0dWFsaXplZCBzZXR1cCBpcyBteSBiZXN0IGJldCBmb3IgcmVwZWF0YWJpbGl0eS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHBsYXkgYXJvdW5kIHdpdGggYGR1bW15X2hjZGAgY29tYmluZWQgd2l0aCBhIFVTQiBuZXR3b3JrIGRyaXZlci4gU29tZXRoaW5nIGxpa2UgYGxhbjc4eHhgIG9yIGBhc2l4YCBjb21lcyB0byBtaW5kOyB0aGV5IGJvdGggdXRpbGl6ZSBgcGh5bGlua2AuIEJ1dCBoZXJlJ3MgdGhlIHJ1YjogVGhlaXIgaW50ZXJmYWNlIG1vZGUgc2VlbXMgdG8gYmUgaGFyZGNvZGVkLCBvciByZWFkIGluIGZyb20gZWl0aGVyIHRoZSBFRVBST00gb3IgRFQuIEZvciBleGFtcGxlLCB3aGVuIGxvb2tpbmcgYXQgYGxhbjc4eHhgLi4uIEkgc3VzcGVjdCB0aGlzIGlzIHdoZXJlIEknbGwgaGl0IHRoZSBsaW1pdGF0aW9uLiBUaGlzIHdpbGwgcmVxdWlyZSBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NjQxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MjYuOTc2NjA2ODU3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTI0NTk5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXYtXFx1MDAzZWludGVyZmFjZSA9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yNjQ5PXN0YXRpYyBzdHJ1Y3QgcGh5X2RldmljZSAqbGFuNzh4eF9nZXRfcGh5KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjU5LVxcdFxcdFxcdC8qIEV4dGVybmFsIFJHTUlJIFBIWSBkZXRlY3RlZCAqL1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjY2MDpcXHRcXHRcXHRkZXYtXFx1MDAzZWludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2NjEtXFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19pbnRlcm5hbCA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjY5LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjY3MDpcXHRcXHRkZXYtXFx1MDAzZWludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2NzEtXFx0XFx0LyogTm8gUEhZIGZvdW5kIOKAkyBmYWxsYmFjayB0byBmaXhlZCBQSFkgKGUuZy4gS1NaIHN3aXRjaCBib2FyZCkgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjY3OS1cXHRcXHQvKiBUaGVzZSB1c2UgaW50ZXJuYWwgR01JSS1jb25uZWN0ZWQgUEhZICovXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyNjgwOlxcdFxcdGRldi1cXHUwMDNlaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjgxLVxcdFxcdHBoeWRldi1cXHUwMDNlaXNfaW50ZXJuYWwgPSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNjoyNy4wMjE4NjIxMTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM5MTMzNTMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqQ29uc2lkZXJpbmcgUEhZIEludGVyZmFjZSBNb2RlcyoqXG5cbkFscmlnaHQsIHNvIHRoZSBzeXN0ZW0ncyBjb25maWd1cmluZyB0aGUgUEhZIGludGVyZmFjZSBtb2RlLCB3aGljaCBpcyBjcnVjaWFsIGZvciBkZXRlcm1pbmluZyBob3cgaXQgY29tbXVuaWNhdGVzIHdpdGggdGhlIHBoeXNpY2FsIGxheWVyLiBJdCdzIGV4cGxpY2l0bHkgc2V0dGluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEYCwgYFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSWAsIG9yIGBQSFlfSU5URVJGQUNFX01PREVfR01JSWAuIFRoYXQncyBzdGFuZGFyZCBzdHVmZiwgY292ZXJpbmcgdGhlIGNvbW1vbiBnaWdhYml0IGludGVyZmFjZXMuIEJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIHdoYXQgYWJvdXQgYSBtb3JlIG9ic2N1cmUgUEhZIGludGVyZmFjZSBsaWtlIHRoZSBvbmUgdXNlZCBieSBhbiBgYXNpeGAgY2hpcD8gSXMgdGhhdCBwcm9wZXJseSBhZGRyZXNzZWQgaGVyZT8gVGhhdCBuZWVkcyB0byBiZSBjb25zaWRlcmVkLCBiZWNhdXNlIGl0IGNvdWxkIHJlcXVpcmUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBhcHByb2FjaCB0byBpbnRlcmZhY2UgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoaXMgY29uZmlndXJhdGlvbiBoYW5kbGVzIGl0LCBvciBpZiBpdCBuZWVkcyBzZXBhcmF0ZSBoYW5kbGluZy4gSSBhbSBkZWZpbml0ZWx5IGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBzdXJlIHRvIGFjY291bnQgZm9yIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzIyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MzIuNDEzMjAwMjAzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzc4ODMyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfaWZfbW9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAxLVxcdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2ID0gZGV2LVxcdTAwM2Vkcml2ZXJfcHJpdjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODAyOlxcdHBoeV9pbnRlcmZhY2VfdCBwaHlfaWZfbW9kZTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAzLVxcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxNS1cXHRpZiAocHJpdi1cXHUwMDNlZW1iZF9waHkpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxNjpcXHRcXHRwaHlfaWZfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE3LVxcdGVsc2VcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODE4OlxcdFxcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIwLVxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjE6XFx0XFx0XFx0XFx0IHBoeV9pZl9tb2RlLCBcXHUwMDI2YXg4ODc3Ml9waHlsaW5rX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjItXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MzIuNDU2OTkzNDk4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjA4MDE0MTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFBTR01JSSBJbnRlcmZhY2UgaW4gVVNCIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyB0aGUgVVNCIGRyaXZlcnMgSSdtIGxvb2tpbmcgYXQgc2VlbSB0byBiZSBzdGlja2luZyB3aXRoIGVpdGhlciBgUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMYCBvciBgUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUlgLiBUaGF0IG1lYW5zLCByaWdodCBvZmYgdGhlIGJhdCwgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzbid0IGJlaW5nIGRpcmVjdGx5IHV0aWxpemVkIGhlcmUuIFRoZSBxdWVzdGlvbiBub3cgYmVjb21lcywgaXMgdGhlcmUgYW55ICpvdGhlciogd2F5IHRvIHRyaWdnZXIgdGhlIHVzYWdlIG9mIHRoYXQgYFBTR01JSWAgbW9kZSB3aXRoaW4gdGhpcyBjb250ZXh0P1xuXG5NeSBuZXh0IHRob3VnaHQgaXMgdG8gZGlnIGludG8gYGRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guY2AuIFRoaXMgaXMgYSBQSFkgZHJpdmVyLCB3aGljaCBpcyBwcm9taXNpbmcuIFRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gSSBpbnN0YW50aWF0ZSBhIFBIWSBkZXZpY2UgdXNpbmcgKnRoaXMqIGRyaXZlciB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBtZGlvYCBuZXRsaW5rIG9yIHN5c2ZzPyBJIHZhZ3VlbHkgcmVjYWxsIHRoYXQgdGhlcmUgaXNuJ3QgYSBkZWRpY2F0ZWQgbmV0bGluayBpbnRlcmZhY2UgZm9yIGluc3RhbnRpYXRpbmcgUEhZcy4gSXQgd291bGQgbGlrZWx5IGhhdmUgdG8gYmUgZG9uZSB0aHJvdWdoIHRoZSBNRElPIGJ1cyBpdHNlbGYsIHJpZ2h0P1xuXG5BaCwgcmlnaHQsIGBxY2E4MDd4YCAqaXMqIGEgUEhZIGRyaXZlci4gQW5kIFBIWSBkcml2ZXJzIGFyZSwgb2YgY291cnNlLCAqcHJvYmVkKiB3aGVuIGEgUEhZIGRldmljZSBpcyBkZXRlY3RlZCBvbiBhbiBNRElPIGJ1cy4gU28sIGNhbiBJIGNsZXZlcmx5IGNyZWF0ZSBhIHZpcnR1YWwgTURJTyBidXMgYW5kIHRoZW4gc2ltdWxhdGUgYSB2aXJ0dWFsIFBIWSBkZXZpY2U/IEkgcmVtZW1iZXIgc2VlaW5nIGBtZGlvLW1vY2t1cGAgb3IgYG1kaW8tYmNtLXVuaW1hY2AgZmxvYXRpbmcgYXJvdW5kLi4uXG5cbkJ1dCBob2xkIG9uISBFdmVuIGlmIEkgY2FuIGdldCBhIHZpcnR1YWwgTURJTyBidXMgYW5kIFBIWSBzZXQgdXAsIHRoZSBgcWNhODA3eGAgZHJpdmVyIHNwZWNpZmljYWxseSByZWFkcyBgcGFja2FnZV9tb2RlYCBmcm9tIHRoZSBkZXZpY2UgdHJlZTogYG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKG5vZGUsIFwicWNvbSxwYWNrYWdlLW1vZGVcIiwgXHUwMDI2cGFja2FnZV9tb2RlX25hbWUpYC4gU28sIGl0J3MgZXhwZWN0aW5nIGEgZGV2aWNlIHRyZWUgbm9kZSB3aXRoIGEgYHFjb20scGFja2FnZS1tb2RlID0gXCJwc2dtaWlcImAgcHJvcGVydHksIHNwZWNpZmljYWxseS4gV2VsbCwgaW4gYSBzdGFuZGFyZCB4ODYgUUVNVSBlbnZpcm9ubWVudCwgSSBjZXJ0YWlubHkgZG9uJ3QgaGF2ZSB0aGF0IG5vZGUgaW4gdGhlIGRldmljZSB0cmVlLi4uXG5cbldhaXQsICp3YWl0Ki4gQmVmb3JlIEkgZ28gZG93biB0aGUgcmFiYml0IGhvbGUgb2YgdmlydHVhbCBNRElPIGJ1c2VzLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgc2VlIGlmIHRoZXJlIGFyZSAqYW55KiBvdGhlciBkcml2ZXJzIGluIHRoZSBzeXN0ZW0gdGhhdCBhY3R1YWxseSB1dGlsaXplIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYC4gTWF5YmUgSSdtIGJhcmtpbmcgdXAgdGhlIHdyb25nIHRyZWUgZW50aXJlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTgxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjQyLjY2NTAwOTU5OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMTM1ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cXHRcXHRyZXR1cm4gNDtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cXHRcXHRyZXR1cm4gNTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cXHRcXHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcXHRcXHRcXHRcXHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVxcdFxcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVxcdGRlZmF1bHQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjQyLjgxNzE1NDQ1M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTM3MzQ2MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgUEhZIExpbmsgUGFyc2UgTW9kZSoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIGp1c3QgcmV2aWV3aW5nIHRoZSBgcGh5bGlua19wYXJzZV9tb2RlYCBmdW5jdGlvbiBhbmQgaXQgbG9va3MgbGlrZSBpdCBzdXBwb3J0cyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgYXMgd2VsbC4gVGhhdCdzIGludGVyZXN0aW5nLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBjb3JyZWN0bHkgaGFuZGxlZC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IHRoZSBjb2RlIHJlbGF0ZWQgdG8gYHBoeWxpbmtfcGFyc2VfbW9kZWAgYW5kIGNvbmZpcm0gdGhhdCBpdCdzIHRha2luZyBpbnRvIGFjY291bnQgdGhlIFBTR01JSSBtb2RlLiBMZXQncyBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBsb2dpY2FsIG92ZXJzaWdodHMgdGhlcmUuIEl04oCZcyBhbHdheXMgZ29vZCBwcmFjdGljZSB0byByZS1leGFtaW5lIHRoZSBjb2RlIHdoZW4gbmV3IGZ1bmN0aW9uYWxpdGllcyBhcmUgYWRkZWQgdG8gZW5zdXJlIGNvcnJlY3QgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzgxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6NDUuNzU0NTAzNDU1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5Nzk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc3NCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc3NDpcXHRzdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuIDc3NTpcXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKVxcbiA3NzY6XFx0e1xcbiA3Nzc6XFx0XFx0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmRuO1xcbiA3Nzg6XFx0XFx0Y29uc3QgY2hhciAqbWFuYWdlZDtcXG4gNzc5OlxcdFxcdHVuc2lnbmVkIGxvbmcgY2FwcztcXG4gNzgwOlxcdFxcbiA3ODE6XFx0XFx0aWYgKHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZWRlZmF1bHRfYW5faW5iYW5kKVxcbiA3ODI6XFx0XFx0XFx0cGwtXFx1MDAzZWNmZ19saW5rX2FuX21vZGUgPSBNTE9fQU5fSU5CQU5EO1xcbiA3ODM6XFx0XFxuIDc4NDpcXHRcXHRkbiA9IGZ3bm9kZV9nZXRfbmFtZWRfY2hpbGRfbm9kZShmd25vZGUsIFxcXCJmaXhlZC1saW5rXFxcIik7XFxuIDc4NTpcXHRcXHRpZiAoZG4gfHwgZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoZndub2RlLCBcXFwiZml4ZWQtbGlua1xcXCIpKVxcbiA3ODY6XFx0XFx0XFx0cGwtXFx1MDAzZWNmZ19saW5rX2FuX21vZGUgPSBNTE9fQU5fRklYRUQ7XFxuIDc4NzpcXHRcXHRmd25vZGVfaGFuZGxlX3B1dChkbik7XFxuIDc4ODpcXHRcXG4gNzg5OlxcdFxcdGlmICgoZndub2RlX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGZ3bm9kZSwgXFxcIm1hbmFnZWRcXFwiLCBcXHUwMDI2bWFuYWdlZCkgPT0gMCBcXHUwMDI2XFx1MDAyNlxcbiA3OTA6XFx0XFx0ICAgICBzdHJjbXAobWFuYWdlZCwgXFxcImluLWJhbmQtc3RhdHVzXFxcIikgPT0gMCkpIHtcXG4gNzkxOlxcdFxcdFxcdGlmIChwbC1cXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpIHtcXG4gNzkyOlxcdFxcdFxcdFxcdHBoeWxpbmtfZXJyKHBsLFxcbiA3OTM6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJjYW4ndCB1c2UgYm90aCBmaXhlZC1saW5rIGFuZCBpbi1iYW5kLXN0YXR1c1xcXFxuXFxcIik7XFxuIDc5NDpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNzk1OlxcdFxcdFxcdH1cXG4gNzk2OlxcdFxcbiA3OTc6XFx0XFx0XFx0cGwtXFx1MDAzZWNmZ19saW5rX2FuX21vZGUgPSBNTE9fQU5fSU5CQU5EO1xcbiA3OTg6XFx0XFx0fVxcbiA3OTk6XFx0XFxuIDgwMDpcXHRcXHRpZiAocGwtXFx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0lOQkFORCkge1xcbiA4MDE6XFx0XFx0XFx0bGlua21vZGVfemVybyhwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG4gODAyOlxcdFxcdFxcdHBoeWxpbmtfc2V0KHBsLVxcdTAwM2VzdXBwb3J0ZWQsIE1JSSk7XFxuIDgwMzpcXHRcXHRcXHRwaHlsaW5rX3NldChwbC1cXHUwMDNlc3VwcG9ydGVkLCBBdXRvbmVnKTtcXG4gODA0OlxcdFxcdFxcdHBoeWxpbmtfc2V0KHBsLVxcdTAwM2VzdXBwb3J0ZWQsIEFzeW1fUGF1c2UpO1xcbiA4MDU6XFx0XFx0XFx0cGh5bGlua19zZXQocGwtXFx1MDAzZXN1cHBvcnRlZCwgUGF1c2UpO1xcbiA4MDY6XFx0XFxuIDgwNzpcXHRcXHRcXHRzd2l0Y2ggKHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UpIHtcXG4gODA4OlxcdFxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbiA4MDk6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbiA4MTA6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbiA4MTE6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVVTR01JSTpcXG4gODEyOlxcdFxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbiA4MTM6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XFxuIDgxNDpcXHRcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxcbiA4MTU6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcXG4gODE2OlxcdFxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JUQkk6XFxuIDgxNzpcXHRcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6XFxuIDgxODpcXHRcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XFxuIDgxOTpcXHRcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV81R0JBU0VSOlxcbiA4MjA6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVI6XFxuIDgyMTpcXHRcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxcbiA4MjI6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSTpcXG4gODIzOlxcdFxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0tSOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNjo0NS43NTQ3MDMwMTVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQ5NDgzNTQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBDb2RlIFBhdGggZm9yIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgc3BlY2lmaWNhbGx5LCB0aGUgYWRkaXRpb24gb2YgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRvIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAuIE15IGluaXRpYWwgdGhvdWdodCBpczogQ2FuIHRoaXMgY29kZSBwYXRoIGFjdHVhbGx5IGJlIHRyaWdnZXJlZD8gVG8gZ2V0IHRoZXJlLCBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIGEgYHBoeWxpbmtgIGluc3RhbmNlIHRoYXQgaGFzIGBpbnRlcmZhY2VgIHNldCB0byBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIFRoYXQgYGludGVyZmFjZWAgaXMgYXNzaWduZWQgZHVyaW5nIGVpdGhlciBgcGh5bGlua19jcmVhdGVgIG9yIHBvc3NpYmx5IHRocm91Z2ggYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYC5cblxuTXkgbmV4dCBsaW5lIG9mIHRoaW5raW5nIGlzLCBkb2VzIGFueSBkcml2ZXIgKmFjdHVhbGx5KiBzZXQgYGludGVyZmFjZWAgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgPyBUaGUgY29kZSBzZWVtcyB0byBpbmRpY2F0ZSB0aGF0IGBxY2E4MDd4LmNgIHVzZXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBIb3dldmVyLCB3YWl0LCB0aGF0J3MgYSBQSFkgZHJpdmVyISBJdCBzZXRzIGBwcml2LVx1MDAzZXBhY2thZ2VfbW9kZWAgdG8gdGhhdCB2YWx1ZS4gU28sIGl0IGRvZXNuJ3QgZGlyZWN0bHkgY29uZmlndXJlIHRoZSBgcGh5bGlua2AncyBgaW50ZXJmYWNlYCwgd2hpY2ggaXMgZ29vZCBzaW5jZSBQSFkgZHJpdmVycyBhcmVuJ3QgcmVzcG9uc2libGUgZm9yIGBwaHlsaW5rYCBpbnN0YW5jZSBjcmVhdGlvbi4gVGhlIE1BQyBkcml2ZXIgaGFuZGxlcyB0aGUgYHBoeWxpbmtgIGluc3RhbmNlLlxuXG5TbyB0aGUgcXVlc3Rpb24gc2hpZnRzOiBpcyB0aGVyZSBhbnkgTUFDIGRyaXZlciB0aGF0J3MgKmNvbmZpZ3VyZWQqIHRvIHVzZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWA/IE15IHVzdWFsIGFwcHJvYWNoIHdvdWxkIGJlIHRvIGNoZWNrIGlmIGFueSBNQUMgZHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIHRvIHVzZSB0aGlzIGludGVyZmFjZSBtb2RlLiBPZnRlbiwgTUFDIGRyaXZlcnMgcmVhZCB0aGUgYHBoeS1tb2RlYCBvciBgcGh5LWNvbm5lY3Rpb24tdHlwZWAgZnJvbSB0aGUgZGV2aWNlIHRyZWUuIExvb2tpbmcgYXQgYG9mX2dldF9waHlfbW9kZWAsIEkgc2VlIGl0IGNvbnZlcnRzIGEgc3RyaW5nIGxpa2UgYFwicHNnbWlpXCJgIHRvIHRoZSBjb3JyZXNwb25kaW5nIGBwaHlfaW50ZXJmYWNlX3RgLiBUaGlzIGlzIG15IGtleS4gSWYgSSBjYW4gcHJvdmlkZSBhIGRldmljZSB0cmVlIHdpdGggYHBoeS1tb2RlID0gXCJwc2dtaWlcImAsIHRoZW4gYW55IE1BQyBkcml2ZXIgdGhhdCB1c2VzIGBvZl9nZXRfcGh5X21vZGVgIGFuZCBjYWxscyBgcGh5bGlua19jcmVhdGVgIHdpbGwgcGFzcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgdG8gdGhlIGBwaHlsaW5rYCBpbnN0YW5jZS5cblxuVGhlIHJ1YiBpcyBJJ20gdGVzdGluZyBpbiBzeXprYWxsZXIuIEknbSB0eXBpY2FsbHkgb24geDg2IFFFTVUgb3IgR0NFIGFuZCBJIGRvbid0IGdldCB0byBzcGVjaWZ5IGEgY3VzdG9tIGRldmljZSB0cmVlLiBTbywgY2FuIEkgYnlwYXNzIHRoaXMgdGhyb3VnaCBzb21lIG90aGVyIG1lYW5zP1xuXG5DYW4gSSBkbyB0aGlzIHZpYSBuZXRsaW5rPyBJIGp1c3Qgc2Nhbm5lZCB0aGUgYG5ldC9jb3JlL2AgYW5kIGBpbmNsdWRlL3VhcGkvYCBkaXJlY3RvcmllcywgYW5kIHRoZXJlJ3Mgbm90aGluZyBJIGNhbiBzZWUgcmVsYXRpbmcgdG8gbmV0bGluayBjb25maWd1cmF0aW9uIGZvciBgcGh5X2ludGVyZmFjZV90YC5cblxuT2ssIG5leHQgcG9zc2libGUgYXZlbnVlLCBsZXQncyBsb29rIGF0IGBldGh0b29sYCBhbmQgYGV0aHRvb2xfbGlua19rc2V0dGluZ3NgIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjb25maWd1cmF0aW9uIGtub2JzIHRoZXJlIHRvIHRyaWdnZXIgdGhpcyBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTkxMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjU0LjI0OTU0MTQ2MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcwNjcxMTIxLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfaW50ZXJmYWNlX3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9ldGh0b29sLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjU0LjYyMDIyMTA0MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDgwMDMyOTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIFBoeWxpbmsgQ29uZmlndXJhdGlvbiBNYXplKipcblxuT2theSwgc28gSSdtIGhpdHRpbmcgYSByb2FkYmxvY2suIEkgd2FzIGhvcGluZyBgZXRodG9vbGAgd291bGQgZ2l2ZSBtZSBkaXJlY3QgY29udHJvbCBvdmVyIHRoZSBgcGh5X2ludGVyZmFjZV90YCBzZXR0aW5nLCBidXQgaXQncyBub3QgZXhwb3NpbmcgaXQgdGhlIHdheSBJJ2QgZXhwZWN0LiBOb3csIGhvdyBkbyBJIGFjdHVhbGx5IHNldCB0aGUgaW50ZXJmYWNlIHdpdGhpbiBgcGh5bGlua2A/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGFuIGFsdGVybmF0aXZlIG1ldGhvZCwgYW5kIHF1aWNrbHkuIEhtbW0sIGxldCdzIHBpdm90IGFuZCBzZWUgaWYgSSBjYW4gbGV2ZXJhZ2UgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYCB0byBnZXQgdGhpcyBkb25lLiBNYXliZSB0aGVyZSdzIGEgYmFjayBkb29yIHRoZXJlIHRoYXQgSSBjYW4gdXNlIHRvIGFjaGlldmUgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uLiBJJ2xsIHN0YXJ0IGRpZ2dpbmcgaW4gdGhhdCBkaXJlY3Rpb24gYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTI5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6NTguMTAwMjU2MTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzc1NixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzc1NjpcXHRzdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsKHN0cnVjdCBwaHlsaW5rICpwbClcXG4zNzU3OlxcdHtcXG4zNzU4OlxcdFxcdF9fRVRIVE9PTF9ERUNMQVJFX0xJTktfTU9ERV9NQVNLKHN1cHBvcnQpO1xcbjM3NTk6XFx0XFx0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBjb25maWc7XFxuMzc2MDpcXHRcXHRlbnVtIGluYmFuZF90eXBlIGluYmFuZF90eXBlO1xcbjM3NjE6XFx0XFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZTtcXG4zNzYyOlxcdFxcdGludCByZXQ7XFxuMzc2MzpcXHRcXG4zNzY0OlxcdFxcdHBoeWxpbmtfZGJnKHBsLCBcXFwib3B0aWNhbCBTRlA6IGludGVyZmFjZXM9W21hYz0lKnBibCwgc2ZwPSUqcGJsXVxcXFxuXFxcIixcXG4zNzY1OlxcdFxcdFxcdCAgICAoaW50KVBIWV9JTlRFUkZBQ0VfTU9ERV9NQVgsXFxuMzc2NjpcXHRcXHRcXHQgICAgcGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMsXFxuMzc2NzpcXHRcXHRcXHQgICAgKGludClQSFlfSU5URVJGQUNFX01PREVfTUFYLFxcbjM3Njg6XFx0XFx0XFx0ICAgIHBsLVxcdTAwM2VzZnBfaW50ZXJmYWNlcyk7XFxuMzc2OTpcXHRcXG4zNzcwOlxcdFxcdC8qIEZpbmQgdGhlIHVuaW9uIG9mIHRoZSBzdXBwb3J0ZWQgaW50ZXJmYWNlcyBieSB0aGUgUENTL01BQyBhbmRcXG4zNzcxOlxcdFxcdCAqIHRoZSBTRlAgbW9kdWxlLlxcbjM3NzI6XFx0XFx0ICovXFxuMzc3MzpcXHRcXHRwaHlfaW50ZXJmYWNlX2FuZChwbC1cXHUwMDNlc2ZwX2ludGVyZmFjZXMsIHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzLFxcbjM3NzQ6XFx0XFx0XFx0XFx0ICBwbC1cXHUwMDNlc2ZwX2ludGVyZmFjZXMpO1xcbjM3NzU6XFx0XFx0aWYgKHBoeV9pbnRlcmZhY2VfZW1wdHkocGwtXFx1MDAzZXNmcF9pbnRlcmZhY2VzKSkge1xcbjM3NzY6XFx0XFx0XFx0cGh5bGlua19lcnIocGwsIFxcXCJ1bnN1cHBvcnRlZCBTRlAgbW9kdWxlOiBubyBjb21tb24gaW50ZXJmYWNlIG1vZGVzXFxcXG5cXFwiKTtcXG4zNzc3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjM3Nzg6XFx0XFx0fVxcbjM3Nzk6XFx0XFxuMzc4MDpcXHRcXHRtZW1zZXQoXFx1MDAyNmNvbmZpZywgMCwgc2l6ZW9mKGNvbmZpZykpO1xcbjM3ODE6XFx0XFx0bGlua21vZGVfY29weShzdXBwb3J0LCBwbC1cXHUwMDNlc2ZwX3N1cHBvcnQpO1xcbjM3ODI6XFx0XFx0bGlua21vZGVfY29weShjb25maWcuYWR2ZXJ0aXNpbmcsIHBsLVxcdTAwM2VzZnBfc3VwcG9ydCk7XFxuMzc4MzpcXHRcXHRjb25maWcuc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xcbjM3ODQ6XFx0XFx0Y29uZmlnLmR1cGxleCA9IERVUExFWF9VTktOT1dOO1xcbjM3ODU6XFx0XFx0Y29uZmlnLnBhdXNlID0gTUxPX1BBVVNFX0FOO1xcbjM3ODY6XFx0XFxuMzc4NzpcXHRcXHQvKiBGb3IgYWxsIHRoZSBpbnRlcmZhY2VzIHRoYXQgYXJlIHN1cHBvcnRlZCwgcmVkdWNlIHRoZSBzZnBfc3VwcG9ydFxcbjM3ODg6XFx0XFx0ICogbWFzayB0byBvbmx5IHRob3NlIGxpbmsgbW9kZXMgdGhhdCBjYW4gYmUgc3VwcG9ydGVkLlxcbjM3ODk6XFx0XFx0ICovXFxuMzc5MDpcXHRcXHRyZXQgPSBwaHlsaW5rX3ZhbGlkYXRlX21hc2socGwsIE5VTEwsIHBsLVxcdTAwM2VzZnBfc3VwcG9ydCwgXFx1MDAyNmNvbmZpZyxcXG4zNzkxOlxcdFxcdFxcdFxcdFxcdCAgICBwbC1cXHUwMDNlc2ZwX2ludGVyZmFjZXMpO1xcbjM3OTI6XFx0XFx0aWYgKHJldCkge1xcbjM3OTM6XFx0XFx0XFx0cGh5bGlua19lcnIocGwsIFxcXCJ1bnN1cHBvcnRlZCBTRlAgbW9kdWxlOiB2YWxpZGF0aW9uIHdpdGggc3VwcG9ydCAlKnBiIGZhaWxlZFxcXFxuXFxcIixcXG4zNzk0OlxcdFxcdFxcdFxcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHN1cHBvcnQpO1xcbjM3OTU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zNzk2OlxcdFxcdH1cXG4zNzk3OlxcdFxcbjM3OTg6XFx0XFx0aW50ZXJmYWNlID0gcGh5bGlua19jaG9vc2Vfc2ZwX2ludGVyZmFjZShwbCwgcGwtXFx1MDAzZXNmcF9pbnRlcmZhY2VzKTtcXG4zNzk5OlxcdFxcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX05BKSB7XFxuMzgwMDpcXHRcXHRcXHRwaHlsaW5rX2VycihwbCwgXFxcImZhaWxlZCB0byBzZWxlY3QgU0ZQIGludGVyZmFjZVxcXFxuXFxcIik7XFxuMzgwMTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zODAyOlxcdFxcdH1cXG4zODAzOlxcdFxcbjM4MDQ6XFx0XFx0cGh5bGlua19kYmcocGwsIFxcXCJvcHRpY2FsIFNGUDogY2hvc2VuICVzIGludGVyZmFjZVxcXFxuXFxcIixcXG4zODA1OlxcdFxcdFxcdCAgICBwaHlfbW9kZXMoaW50ZXJmYWNlKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjU4LjEwMDQ0MzQ1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjAyNTg0MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgU0ZQIEludGVyZmFjZSBDb25maWd1cmF0aW9uKipcblxuTXkgdGhvdWdodCBwcm9jZXNzIHN0YXJ0cyB3aXRoIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAuIE15IHRhc2sgaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGludGVyZmFjZSBmcm9tIGBwbC1cdTAwM2VzZnBfaW50ZXJmYWNlc2Agc2hvdWxkIGJlIHNlbGVjdGVkLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gdGhlbiBhcmlzZXM6IGlzIHRoaXMgU0ZQIG1vZHVsZSBldmVuIGNhcGFibGUgb2Ygc3VwcG9ydGluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWA/IFRoaXMgaXMgdGhlIGZ1bmRhbWVudGFsIHBpZWNlIG9mIGluZm9ybWF0aW9uIEkgbmVlZCB0byBjb25maXJtLiBUbyBhbnN3ZXIgdGhpcywgSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIHBvcHVsYXRpb24gb2YgYHNmcF9pbnRlcmZhY2VzYC4gSW4gZXNzZW5jZSwgSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGludGVyZmFjZXMgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgYW5kIHdoaWNoIG9wdGlvbnMgYXJlIGF2YWlsYWJsZS4gVGhpcyBzaG91bGQgcmV2ZWFsIHdoZXRoZXIgUFNHTUlJIGlzIHByZXNlbnQsIGFuZCB0aGVyZWZvcmUsIHZpYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyMjIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM3OjAxLjMyMDcwNDc4N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3MDIzMjQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3NmcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzc6MDEuMzcxNDE2MTYxWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzQ3ODMxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzpcblxuKipTRlAgTW9kdWxlIEludGVyZmFjZSBSZWFzb25pbmcqKlxuXG5SaWdodCwgbGV0J3MgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGUgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaXNtaXNzIHRoZSBpZGVhIHRoYXQgU0ZQIG1vZHVsZXMgdXRpbGl6ZSBgUFNHTUlJYC4gTm8sIHRoYXQgZG9lc24ndCBmZWVsIHJpZ2h0LiBUaGUgcHJvdG9jb2xzIGFuZCBwaHlzaWNhbCBpbnRlcmZhY2VzIGludm9sdmVkIGluIFNGUCBtb2R1bGVzIGFyZSB0eXBpY2FsbHkgbW9yZSBjb21wbGV4IGFuZCBvcGVyYXRlIGF0IGhpZ2hlciBzcGVlZHMgdGhhbiB3aGF0IGBQU0dNSUlgIHVzdWFsbHkgaGFuZGxlcy4gSXQganVzdCBkb2Vzbid0IGFsaWduIHdpdGggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGVpciB0eXBpY2FsIGNhcGFiaWxpdGllcy5cblxuT2theSwgc28gaWYgbm90IGBQU0dNSUlgLCB0aGVuIHdoYXQgaXMgaXQ/IE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBmdW5jdGlvbiBuYW1lIHRoYXQgSSd2ZSBlbmNvdW50ZXJlZCBiZWZvcmUgd2hlbiBkZWFsaW5nIHdpdGggdGhlc2Ugc29ydHMgb2YgaGFyZHdhcmUgZGV0YWlscywgc29tZXRoaW5nIHRoYXQgaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgbG93LWxldmVsIGludGVyZmFjZSB0aGF0IGlzIHVzZWQgdG8gY29udHJvbCB0aGUgU0ZQIG1vZHVsZS4gSSBoYXZlIHRvIHRoaW5rIHRob3VnaC4gV2hhdCBhYm91dCBhIGZ1bmN0aW9uIGxpa2UgYHBoeWxpbmtfY2hvb3NlX3NmcF9pbnRlcmZhY2VgPyBUaGF0IGZlZWxzIHJpZ2h0LCBzaW5jZSBgcGh5bGlua2AgaXMgY29tbW9ubHkgcmVsYXRlZCB0byBoYW5kbGluZyBQSFkgaW50ZXJmYWNlcy4gSXQncyBwbGF1c2libGUgdGhhdCB0aGlzIGZ1bmN0aW9uIG9yIG9uZSBsaWtlIGl0IGlzIHdoZXJlIHRoZSBzcGVjaWZpYyBTRlAgaW50ZXJmYWNlIHNlbGVjdGlvbiBsb2dpYyB3b3VsZCBsaXZlLiBJIHNob3VsZCBwcm9iYWJseSByZXNlYXJjaCB0aGF0IG9uZSwgYXMgYSBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ0NzUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzowNC43MDYyMDE3MDdaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzQ0ODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzOD1zdGF0aWMgaW50IHBoeWxpbmtfaW50ZXJmYWNlX21heF9zcGVlZChwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTktXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYxLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Nzc0PXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA4LVxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODA5OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgxMC1cXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzk9c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0Mi1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNDM6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0NC1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM3OjA0Ljc1MTk1MjkyMloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MjIyNTg5OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgUGF0aCBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIHRoaXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIG1vZGUuIEkgc2VlIGl0IHBvcHMgdXAgaW4gYSBmZXcga2V5IHBsYWNlczogYHBoeWxpbmtfaW50ZXJmYWNlX21heF9zcGVlZGAsIGBwaHlsaW5rX3BhcnNlX21vZGVgLCBhbmQgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhpcyBpcyBnb2luZyB0byBiZSBpbmNyZWRpYmx5IGRpZmZpY3VsdCwgaWYgbm90IGltcG9zc2libGUsIHRvIGhpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5UaGUgYmlnIHF1ZXN0aW9uIGlzLCBjYW4gd2Ugc29tZWhvdyBnZXQgdGhhdCBgcGh5X2ludGVyZmFjZV90YCB2YWx1ZSBzZXQgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgPyBVc2Vyc3BhY2UgaXMgb3V0LCByaWdodD8gV2UgY2FuJ3QgZGlyZWN0bHkgc2V0IGl0LiBTbywgYSB2aXJ0dWFsIGRyaXZlciB3b3VsZCBuZWVkIHRvIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoaXMuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiBkZXZpY2UgdHJlZSBvdmVybGF5cyBvciBzb21ldGhpbmcgc2ltaWxhciBjb3VsZCBwb3NzaWJseSBpbmZsdWVuY2UgaXQuIE5vcGUsIG5vdCBzZWVpbmcgYW55dGhpbmcgcHJvbWlzaW5nLlxuXG5TeXprYWxsZXIgaXMgYSBwb3RlbnRpYWwgdG9vbCwgb2YgY291cnNlLCB3aXRoIGBzeXpfaW5pdF9uZXRfc29ja2V0YCBvciB0aGUgbGlrZSwgYnV0IGl0IGRvZXNuJ3QgdXN1YWxseSBsb2FkIGRldmljZSB0cmVlIG92ZXJsYXlzIHVubGVzcyB3ZSBleHBsaWNpdGx5IGNvbmZpZ3VyZSBpdCB0byBkbyBzbyAoYW5kIHRoYXQncyBwcmV0dHkgdW51c3VhbCwgdXN1YWxseSBzcGVjaWZpYyB0byBjZXJ0YWluIGhhcmR3YXJlKS5cblxuTm93LCBsZXQncyBzZWUsIHdoYXQgZWxzZSBzZXRzIGBwaHlfaW50ZXJmYWNlX3RgPyBJIG5lZWQgdG8gbG9vayBhdCB0aGUgdXN1YWwgc3VzcGVjdHM6IGBkcml2ZXJzL25ldC90dW4uY2AsIGBkcml2ZXJzL25ldC92ZXRoLmNgLCBgZHJpdmVycy9uZXQvbWFjdmxhbi5jYCwgYW5kIGBkcml2ZXJzL25ldC9kdW1teS5jYC4gTm9wZSwgbm9uZSBvZiB0aG9zZSB1c2UgYHBoeWxpbmtgLiBXaGF0IGFib3V0IGBkcml2ZXJzL25ldC91c2IvYD8gSSBhbHJlYWR5IGNoZWNrZWQgYGxhbjc4eHhgIGFuZCBgYXNpeGAsIHRoZXkgaGFyZGNvZGUgaXQuIExldCdzIHNlZSBpZiB0aGUgYGUxMDAwZWAgZHJpdmVyIHVzZXMgaXQ7IG5vcGUsIG5vdGhpbmcuIFdoYXQgYWJvdXQgYHZpcnRpb19uZXQuY2A/IE5vIGx1Y2suXG5cbkJhc2ljYWxseSwgYHBoeWxpbmtgIGlzIGFsbW9zdCBleGNsdXNpdmVseSB1c2VkIGJ5IGRyaXZlcnMgZm9yICpyZWFsKiBoYXJkd2FyZSBNQUNzLCByaWdodD9cblxuU28sIGV2ZW4gaWYgd2UgKmRpZCogaGF2ZSBhIHJlYWwgaGFyZHdhcmUgTUFDIHByZXNlbnQgKHRoaW5rIFBDSSBwYXNzdGhyb3VnaCksIHdlJ2QgbmVlZCB0aGF0IGhhcmR3YXJlIHRvICpzdXBwb3J0KiBgUFNHTUlJYCwgYW5kIHRoZW4gdGhlIGRldmljZSB0cmVlLCBBQ1BJLCBvciB0aGUgZHJpdmVyIGl0c2VsZiB3b3VsZCBuZWVkIHRvIGJlIGNvbmZpZ3VyZWQgZm9yIGl0LiBTaW5jZSBgUFNHTUlJYCBpcyBhIHZlcnkgc3BlY2lhbGl6ZWQgaW50ZXJmYWNlIG1vZGUgKFBlbnRhIFNHTUlJKSwgdGhhdCdzIGFuIHVubGlrZWx5IGNvbWJpbmF0aW9uLiBBIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQgaXMgaGlnaGx5IGltcHJvYmFibGUgdG8gc3VwcG9ydCB0aGF0IHdpdGhvdXQgY3VzdG9tIGhhcmR3YXJlIGVtdWxhdGlvbi5cblxuT2theSwgbGV0IG1lIGJyb2FkZW4gbXkgdGhpbmtpbmcuIElzIHRoZXJlIGEgZHJpdmVyIHRoYXQgY291bGQgYmUgaW5zdGFudGlhdGVkIHZpYSBgbmV0ZGV2c2ltYCBvciBzb21ldGhpbmcgc2ltaWxhciB0aGF0IGFjdHVhbGx5ICp1c2VzKiBgcGh5bGlua2A/IFRoYXQgbWlnaHQgYmUgYSB3YXkgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTY2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM3OjEzLjk3NDU0NDc5NFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE5OTk0NDQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM3OjE0LjAyNjU1NTgwOFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjQ1MzQ1Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIGBmYm5pY2AgUGh5bGluayBMYW5kc2NhcGUqKlxuXG5IbW0sIG5vLiBOb3QgcXVpdGUgd2hhdCBJIHdhcyB0aGlua2luZy4gV2FpdC4uLiB3aGF0IGFib3V0IHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9gIGRpcmVjdG9yeT8gSSBzZWVtIHRvIHJlY2FsbCB0aGF0J3Mgd2hlcmUgYHBoeWxpbmtgIGlzIHVzZWQuIFRoYXQgbWlnaHQgYmUgYSBiZXR0ZXIgcGxhY2UgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBJdCBzdWdnZXN0cyBhIGNlcnRhaW4gYXBwcm9hY2ggdG8gbmV0d29yayBpbnRlcmZhY2UgbWFuYWdlbWVudCB0aGF0IGNvdWxkIGJlIHBlcnRpbmVudCB0byBteSBjdXJyZW50IHByb2JsZW0sIGRlcGVuZGluZyBvbiB0aGUgc2NvcGUuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYW5kIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRlcmFjdGlvbnMgd2l0aGluIHRoYXQgYXJlYSBvZiB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYyMzEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzoxNy4yNzE5MDM3OTNaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzODg5MjY0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzoxNy4zMjU4MDAxNzdaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MDk0OTY4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRU5FVEMgRHJpdmVyIGZvciBFdGhlcm5ldCBDb25uZWN0aXZpdHkqKlxuXG5SaWdodCwgc28sIGZpcnN0IHRoaW5ncyBmaXJzdCwgaXQncyBub3QgbGV2ZXJhZ2luZyBgUFNHTUlJYCwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MgYSBiaXQsIGJ1dCBhbHNvIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGRpZmZlcmVudCBzZXQgb2YgY29uc2lkZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UuIFRoYXQncyBnb29kIHRvIGtub3cgb2ZmIHRoZSBiYXQsIGFzIEkgd2FzIGV4cGVjdGluZyBhIGNlcnRhaW4gc2V0IG9mIGxvdy1sZXZlbCBjb25maWd1cmF0aW9ucywgYW5kIG5vdyBJIGNhbiBwcm9jZWVkIGZyb20gdGhlIGNvcnJlY3QgYXNzdW1wdGlvbnMuIEkgbmVlZCB0byBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhlIEVORVRDJ3MgY29uZmlndXJhdGlvbi5cblxuVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGludG8gd2hlcmUgdGhlIHJlbGV2YW50IGRyaXZlciBjb2RlIHdvdWxkIHJlc2lkZS4gTXkgZmlyc3QgZ3Vlc3MsIGxvZ2ljYWxseSwgaXMgZ29pbmcgdG8gYmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9gLiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCBGcmVlc2NhbGUncyAob3IsIG1vcmUgYWNjdXJhdGVseSwgTlhQJ3MpIEV0aGVybmV0LXJlbGF0ZWQgZHJpdmVycyB0byBiZSBsb2NhdGVkLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IG1ha2VmaWxlcyBhbmQgc291cmNlIGZpbGVzIHRoZXJlIGZvciBpbml0aWFsaXphdGlvbiwgTUFDIGFkZHJlc3MgY29uZmlndXJhdGlvbiwgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgdHJhbnNtaXQvcmVjZWl2ZSBwYXRoIG1hbmFnZW1lbnQuIFRoYXQncyBteSBzdGFydGluZyBwb2ludC4gRnJvbSB0aGVyZSwgSSBjYW4gZmlndXJlIG91dCB0aGUgc3BlY2lmaWNzIGFuZCBjb25maWd1cmF0aW9uIG9mIHRoZSBFTkVUQy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY0NTIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzoyMC43ODY3NTI1MTFaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzUzODk1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM3OjIwLjgzNzUxMzM0NVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDA0NTkyNTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3Qgb24gU3l6a2FsbGVyIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCBhbmQgYXMgZmFyIGFzIEkgY2FuIHRlbGwsIGl0J3Mgb25seSB1c2VkIGJ5IHRoZSBgcWNhODA3eC5jYCBQSFkgZHJpdmVyIGFuZCB0aGUgY29yZSBgcGh5bGlua2AgaW5mcmFzdHJ1Y3R1cmUuIFRoYXQgbmFycm93cyB0aGluZ3MgZG93biBjb25zaWRlcmFibHkuIEVmZmVjdGl2ZWx5LCB0aGlzIHBhdGNoIGp1c3QgZXh0ZW5kcyBgcGh5bGlua2AgdG8gaGFuZGxlIGEgc3BlY2lmaWMgaGFyZHdhcmUgaW50ZXJmYWNlIG1vZGUsIGBQU0dNSUlgLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gdGhpcyBjaGFuZ2UgYmUgcmVhY2hlZCBhbmQgZnV6emVkIGJ5IHN5emthbGxlciBpbiBhIHR5cGljYWwgc2V0dXA/IEkgZG9uJ3QgdGhpbmsgc28uIFNpbmNlIHRoaXMgbW9kZSBpc24ndCBleHBvc2VkIGJ5IGEgdmlydHVhbCBkcml2ZXIsIGFuZCBjYW4ndCBiZSBzZXQgdXAgZnJvbSB1c2Vyc3BhY2UsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgZnV6emFibGUgZnVuY3Rpb25hbGl0eS5cblxuQnV0LCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBMZXQgbWUgcXVpY2tseSBjaGVjazogY2FuIGBwaHlfaW50ZXJmYWNlX3RgIGV2ZW4gYmUgc2V0IHRvIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB0aHJvdWdoIG90aGVyIG1lYW5zPyBDb3VsZCBJIG1hbmlwdWxhdGUgaXQgdmlhIGBldGh0b29sYD8gTm8sIHRoYXQgaW50ZXJmYWNlIGRvZXNuJ3QgZXhwb3NlIGBwaHlfaW50ZXJmYWNlX3RgLiBXaGF0IGFib3V0IGBuZXRsaW5rYD8gTm9wZSwgdGhhdCdzIGFsc28gYSBkZWFkIGVuZDsgYHBoeV9pbnRlcmZhY2VfdGAgaXMgYSBrZXJuZWwtaW50ZXJuYWwgZW51bS4gIE1heWJlIGBzeXNmc2A/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Nzg5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM3OjI1Ljg0MjEwOTY2OVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxNDAzNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2ludGVyZmFjZV90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMjI1PWludCBwaHlfY29ubmVjdF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyMjYtXFx0XFx0ICAgICAgIHZvaWQgKCpoYW5kbGVyKShzdHJ1Y3QgbmV0X2RldmljZSAqKSxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEyMjc6XFx0XFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTI2MT1zdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgY2hhciAqYnVzX2lkLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTI2Mi1cXHRcXHRcXHQgICAgICAgdm9pZCAoKmhhbmRsZXIpKHN0cnVjdCBuZXRfZGV2aWNlICopLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTI2MzpcXHRcXHRcXHQgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNTUxPXN0YXRpYyBpbnQgcGh5X3NmcF9tb2R1bGVfaW5zZXJ0KHZvaWQgKnVwc3RyZWFtLCBjb25zdCBzdHJ1Y3Qgc2ZwX2VlcHJvbV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE1NTctXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNTU4OlxcdHBoeV9pbnRlcmZhY2VfdCBpZmFjZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE1NTktXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE3NTI9aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNzUzOlxcdFxcdCAgICAgIHUzMiBmbGFncywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE3NTQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzoyNS44OTAyNTY0NDRaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAzNDkzNzExNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEZ1enppbmcgV29ydGgqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBgcGh5X2ludGVyZmFjZV90YCBhcmd1bWVudCBpcyB0aGUga2V5IGhlcmUuIEl0J3MgcGFzc2VkIHRvIGBwaHlfY29ubmVjdGAgYW5kIGBwaHlfYXR0YWNoX2RpcmVjdGAsIGFuZCB0aG9zZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBieSBNQUMgZHJpdmVycy4gU28sIHRoZSBNQUMgZHJpdmVyIGlzIGZ1bmRhbWVudGFsbHkgdGhlIG9uZSBkZXRlcm1pbmluZyB0aGUgYHBoeV9pbnRlcmZhY2VfdGAgdmFsdWUuIEFuZCBzaW5jZSBJIGtub3csIGZyb20gdGhlIGNvbnRleHQgYW5kIG15IGV4cGVyaWVuY2UsIHRoYXQgbm8gdmlydHVhbCBNQUMgZHJpdmVyIEknbSBmYW1pbGlhciB3aXRoIHVzZXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCBpdCdzIGJhc2ljYWxseSBpbXBvc3NpYmxlIHRvIGV2ZW4gcmVhY2ggdGhlIGNvZGUgcGF0aCBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHJlLWV4YW1pbmUgdGhlIHBhdGNoIGl0c2VsZi4uLiBBaCwgaXQncyBhIHNpbXBsZSBhZGRpdGlvbiB0byBhIHN3aXRjaCBzdGF0ZW1lbnQuIEl0J3MganVzdCBhZGRpbmcgYSBjYXNlIGZvciBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgd2l0aGluIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAuIFRoaXMgaXMgY2xlYXJseSBhIGhhcmR3YXJlIGVuYWJsZW1lbnQgY2hhbmdlLiBJdCdzIGRlc2lnbmVkIHRvIHN1cHBvcnQgYSBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmZhY2UgbW9kZS4gSXQncyBub3Qgc29tZXRoaW5nIHRoYXQgd291bGQgYmUgdG91Y2hlZCBvciBldmVuIHVzZWQgaW4gbXkgdmlydHVhbCBlbnZpcm9ubWVudHMuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSBhbmQgdGhlIGxhY2sgb2YgdmlydHVhbCBzdXBwb3J0LCBpdCdzIGp1c3Qgbm90IHdvcnRoIGZ1enppbmcuIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3Nzc0LCJPdXRwdXRUb2tlbnMiOjE0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzozMS45MjUxOTU3NjlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIChQZW50YSBTR01JSSkgaGFyZHdhcmUgaW50ZXJmYWNlIG1vZGUgdG8gdGhlIHBoeWxpbmsgY29yZS4gVGhpcyBzcGVjaWZpYyBQSFkgaW50ZXJmYWNlIG1vZGUgaXMgb25seSB1c2VkIGJ5IHJlYWwgaGFyZHdhcmUgTUFDL1BIWSBkcml2ZXJzIChlLmcuLCBxY2E4MDd4KSBhbmQgY2Fubm90IGJlIGNvbmZpZ3VyZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgb3IgZXRodG9vbC4gU2luY2Ugbm8gdmlydHVhbGl6ZWQgbmV0d29yayBkcml2ZXJzIChsaWtlIGR1bW15LCB2ZXRoLCBvciBVU0IgZ2FkZ2V0IG5ldHdvcmsgZHJpdmVycykgdXNlIHRoaXMgaW50ZXJmYWNlIG1vZGUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIChQZW50YSBTR01JSSkgaGFyZHdhcmUgaW50ZXJmYWNlIG1vZGUgdG8gdGhlIHBoeWxpbmsgY29yZS4gVGhpcyBzcGVjaWZpYyBQSFkgaW50ZXJmYWNlIG1vZGUgaXMgb25seSB1c2VkIGJ5IHJlYWwgaGFyZHdhcmUgTUFDL1BIWSBkcml2ZXJzIChlLmcuLCBxY2E4MDd4KSBhbmQgY2Fubm90IGJlIGNvbmZpZ3VyZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgb3IgZXRodG9vbC4gU2luY2Ugbm8gdmlydHVhbGl6ZWQgbmV0d29yayBkcml2ZXJzIChsaWtlIGR1bW15LCB2ZXRoLCBvciBVU0IgZ2FkZ2V0IG5ldHdvcmsgZHJpdmVycykgdXNlIHRoaXMgaW50ZXJmYWNlIG1vZGUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzozMS45MjUyMjE1MTlaIiwiU2VxIjo0MywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowxr592[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-08 02:19:47 +0000 UTC FinishedAt: 2026-08-08 02:37:33 +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+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSAoUGVudGEgU0dNSUkpIGhhcmR3YXJlIGludGVyZmFjZSBtb2RlIHRvIHRoZSBwaHlsaW5rIGNvcmUuIFRoaXMgc3BlY2lmaWMgUEhZIGludGVyZmFjZSBtb2RlIGlzIG9ubHkgdXNlZCBieSByZWFsIGhhcmR3YXJlIE1BQy9QSFkgZHJpdmVycyAoZS5nLiwgcWNhODA3eCkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIG9yIGV0aHRvb2wuIFNpbmNlIG5vIHZpcnR1YWxpemVkIG5ldHdvcmsgZHJpdmVycyAobGlrZSBkdW1teSwgdmV0aCwgb3IgVVNCIGdhZGdldCBuZXR3b3JrIGRyaXZlcnMpIHVzZSB0aGlzIGludGVyZmFjZSBtb2RlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNhNjRhNTdlNTE2MTE4ODRmYzU2MDEzMzQ1M2VjZGRlYWM5NzUyOGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDAyOjM1OjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCAxOGQyZWFkOTdhYTU0Li45ODNhMWEzY2VlMzc0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuQEAgLTEwNDAsNiAmIzQzOzEwNDAsNyBAQCBzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbiBcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RVVNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSAoUGVudGEgU0dNSUkpIGhhcmR3YXJlIGludGVyZmFjZSBtb2RlIHRvIHRoZSBwaHlsaW5rIGNvcmUuIFRoaXMgc3BlY2lmaWMgUEhZIGludGVyZmFjZSBtb2RlIGlzIG9ubHkgdXNlZCBieSByZWFsIGhhcmR3YXJlIE1BQy9QSFkgZHJpdmVycyAoZS5nLiwgcWNhODA3eCkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIG9yIGV0aHRvb2wuIFNpbmNlIG5vIHZpcnR1YWxpemVkIG5ldHdvcmsgZHJpdmVycyAobGlrZSBkdW1teSwgdmV0aCwgb3IgVVNCIGdhZGdldCBuZXR3b3JrIGRyaXZlcnMpIHVzZSB0aGlzIGludGVyZmFjZSBtb2RlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNhNjRhNTdlNTE2MTE4ODRmYzU2MDEzMzQ1M2VjZGRlYWM5NzUyOGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyA4IDAyOjM1OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKaW5kZXggMThkMmVhZDk3YWE1NC4uOTgzYTFhM2NlZTM3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCkBAIC0xMDQwLDYgJiM0MzsxMDQwLDcgQEAgc3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKIHsKIAlzd2l0Y2ggKGludGVyZmFjZSkgewogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOgomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSToKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4NgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkFuYWx5emluZyB0aGUgUGh5bGluayBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKClgLiBUaGF0IGZ1bmN0aW9uJiMzOTtzIGEgY3J1Y2lhbCBwaWVjZSwgYXMgaXQgZGV0ZXJtaW5lcyBob3cgdGhlIFBIWSBpbnRlcmFjdHMgd2l0aCB0aGUgbmV0d29yayBzdGFjay4gU3BlY2lmaWNhbGx5LCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGludG8gdGhlIGBzd2l0Y2hgIHN0YXRlbWVudCB3aXRoaW4gYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKClgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYy4gSSBuZWVkIHRvIHNlZSBob3cgYFBTR01JSWAgaXMgYmVpbmcgaW50ZWdyYXRlZCBpbnRvIHRoZSBleGlzdGluZyBpbnRlcmZhY2UgdHlwZSBoYW5kbGluZy4gV2hhdCBpbXBsaWNhdGlvbnMgZG9lcyB0aGlzIGhhdmUgb24gdGhlIFBIWS10by1NQUMgbmVnb3RpYXRpb24gcHJvY2Vzcz8gSXMgdGhlcmUgYW55IGFkZGVkIGVycm9yIGNoZWNraW5nLCBvciBkb2VzIHRoaXMgc2ltcGx5IGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgbW9kZT8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIG1vZGVzLCBhbmQgYW55IG5ldyBkZXBlbmRlbmNpZXMgaXQgaW50cm9kdWNlcywgb3IgY2hhbmdlcyB0byB0aGUgYmVoYXZpb3Igb2YgZXhpc3RpbmcgbW9kZXMuIEFuZCBvZiBjb3Vyc2UsIEkgd2lsbCBuZWVkIHRvIGVuc3VyZSB0aGlzIGNoYW5nZSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfZ2V0X2luYmFuZF90eXBlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzM9ZW51bSBpbmJhbmRfdHlwZSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDM4LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDM5OnN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTA5MD1zdGF0aWMgdm9pZCBwaHlsaW5rX3Bjc19uZWdfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA5OC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA5OTpcdHR5cGUgPSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMTAwLVx0aWYgKHR5cGUgPT0gSU5CQU5EX05PTkUpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM3NTY9c3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODA2LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozODA3Olx0aW5iYW5kX3R5cGUgPSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODA4LVx0aWYgKGluYmFuZF90eXBlID09IElOQkFORF9OT05FKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcwMAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4KCioqQW5hbHl6aW5nIFRoaXMgUEhZIEludGVyZmFjZSBQYXRjaCoqCgpTbywgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpbnRvIHRoZSBzd2l0Y2ggc3RhdGVtZW50LiBUaGF0IG1lYW5zLCBub3csIHdoZW4gYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCBpcyBjYWxsZWQsIGl0IHNob3VsZCBjb3JyZWN0bHkgaWRlbnRpZnkgYElOQkFORF9TR01JSWAgaW5zdGVhZCBvZiBmYWxsaW5nIGJhY2sgdG8gdGhlIGRlZmF1bHQgb3IgYElOQkFORF9OT05FYC4gV2FpdCwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgIGl0c2VsZiB0byBtYWtlIHN1cmUgdGhpcyBpcyBhY3R1YWxseSBjb3JyZWN0LCBhbmQgaXQgaXMgYmVoYXZpbmcgYXMgSSB3b3VsZCBleHBlY3QsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIFBIWSBsYXllci4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBoYW5kbGluZyBvZiBgSU5CQU5EX1NHTUlJYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwMzk6XHRzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuMTA0MDpcdHtcbjEwNDE6XHRcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4xMDQyOlx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbjEwNDM6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbjEwNDQ6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbjEwNDU6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6XG4xMDQ2Olx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxuMTA0NzpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSTpcbjEwNDg6XHRcdFx0LyogVGhlc2UgcHJvdG9jb2xzIGFyZSBkZXNpZ25lZCBmb3IgdXNlIHdpdGggYSBQSFkgd2hpY2hcbjEwNDk6XHRcdFx0ICogY29tbXVuaWNhdGVzIGl0cyBuZWdvdGlhdGlvbiByZXN1bHQgYmFjayB0byB0aGUgTUFDIHZpYVxuMTA1MDpcdFx0XHQgKiBpbmJhbmQgY29tbXVuaWNhdGlvbi4gTm90ZTogdGhlcmUgZXhpc3QgUEhZcyB0aGF0IHJ1blxuMTA1MTpcdFx0XHQgKiB3aXRoIFNHTUlJIGJ1dCBkbyBub3Qgc2VuZCB0aGUgaW5iYW5kIGRhdGEuXG4xMDUyOlx0XHRcdCAqL1xuMTA1MzpcdFx0XHRyZXR1cm4gSU5CQU5EX0NJU0NPX1NHTUlJO1xuMTA1NDpcdFxuMTA1NTpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYOlxuMTA1NjpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuMTA1NzpcdFx0XHQvKiAxMDAwYmFzZS1YIGlzIGRlc2lnbmVkIGZvciB1c2UgbWVkaWEtc2lkZSBmb3IgRmlicmVcbjEwNTg6XHRcdFx0ICogY29ubmVjdGlvbnMsIGFuZCB0aHVzIHRoZSBBdXRvbmVnIGJpdCBuZWVkcyB0byBiZVxuMTA1OTpcdFx0XHQgKiB0YWtlbiBpbnRvIGFjY291bnQuIFdlIGFsc28gZG8gdGhpcyBmb3IgMjUwMGJhc2UtWFxuMTA2MDpcdFx0XHQgKiBhcyB3ZWxsLCBidXQgZHJpdmVycyBtYXkgbm90IHN1cHBvcnQgdGhpcywgc28gbWF5XG4xMDYxOlx0XHRcdCAqIG5lZWQgdG8gb3ZlcnJpZGUgdGhpcy5cbjEwNjI6XHRcdFx0ICovXG4xMDYzOlx0XHRcdHJldHVybiBJTkJBTkRfQkFTRVg7XG4xMDY0Olx0XG4xMDY1Olx0XHRkZWZhdWx0OlxuMTA2NjpcdFx0XHRyZXR1cm4gSU5CQU5EX05PTkU7XG4xMDY3Olx0XHR9XG4xMDY4Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NjcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUaGlzIFRpbnkgQ2hhbmdlPyBUaGUgUXVlc3Rpb24gb2YgVmlydHVhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcHJldHR5IG1pbm9yIG1vZGlmaWNhdGlvbiBpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBJdCYjMzk7cyBhIHNpbXBsZSByZXR1cm4gdmFsdWUgY2hhbmdlIGZvciBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIGZyb20gYElOQkFORF9OT05FYCB0byBgSU5CQU5EX0NJU0NPX1NHTUlJYC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIHRoaXMgZXZlbiB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmc/IEl0JiMzOTtzIGEgc21hbGwgY2hhbmdlLCBidXQgZXZlbiBzbWFsbCBjaGFuZ2VzIGNhbiBoaWRlIHZ1bG5lcmFiaWxpdGllcywgb2YgY291cnNlLgoKVGhlIGZ1bmN0aW9uJiMzOTtzIGNhbGxlZCBpbiBgcGh5bGlua19wY3NfbmVnX21vZGVgIGFuZCBgcGh5bGlua19zZnBfY29uZmlnX29wdGljYWxgLCB3aGljaCBuYXJyb3dzIGRvd24gdGhlIGF0dGFjayBzdXJmYWNlIHRvIGEgZGVncmVlLiBUaGUgYmlnIHByb2JsZW0sIHRob3VnaCwgaXMgaG93IGFjY2Vzc2libGUgYHBoeWxpbmtgIGlzIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBDYW4gd2UgZXZlbiB0cmlnZ2VyIHRoaXMgY2hhbmdlIGluIGEgY29udHJvbGxlZCBzZXR0aW5nPwoKTGV0JiMzOTtzIHNlZS4gYHBoeWxpbmtgICppcyogcHJldHR5IHdpZGVseSB1c2VkIGluIG5ldHdvcmsgZHJpdmVycywgc28gdGhhdCYjMzk7cyBlbmNvdXJhZ2luZy4gQnV0IGNhbiB3ZSByZWFjaCBpdCB2aWEsIHNheSwgYSB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVyLCBvciB0aHJvdWdoIE5ldGxpbmsgb3IgZXRodG9vbD8gTXkgZXhwZXJpZW5jZSBzdWdnZXN0cyBgcGh5bGlua2AgaXMgdXN1YWxseSB0aGUgZG9tYWluIG9mIHJlYWwgaGFyZHdhcmUgTUFDcy4gQnV0IHRoYXQgZG9lc24mIzM5O3QgbWVhbiBpdCYjMzk7cyBpbXBvc3NpYmxlLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIGRyaXZlcnMgdXNpbmcgYHBoeWxpbmtgIGRpcmVjdGx5LiBMZXQgbWUgY2hlY2sgdGhlIHVzZXIgbGlzdCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgdG8gYmUgc3VyZS4gVGhhdCB3b3VsZCBtYWtlIHRoaXMgdnVsbmVyYWJpbGl0eSBmYXIgbW9yZSBhY2Nlc3NpYmxlIGFuZCB3b3J0aCB0aGUgZnV6emluZyBlZmZvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcdHByaXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cdFx0XHRcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZy1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVx0XHRcdFx0IGFnLVx1MDAzZXBoeV9pZl9tb2RlLCBcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcdGJwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZicC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVx0XHRcdFx0ICAgICBicC1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXHRtYWNfZGV2LVx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcdG1hY19kZXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hY19kZXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cdFx0XHRcdFx0ICBkZXZfZndub2RlKG1hY19kZXYtXHUwMDNlZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cdFx0XHRcdCBkcG1hY19ub2RlLCBtYWMtXHUwMDNlaWZfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTcxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05ODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkxLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Mi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkzOlx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTg6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5OS1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9ODQ3PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzI6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0MS1cdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjk0MjplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDMtXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMTI9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzE0OmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzE1LVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMzg6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM5LVx0XHRcdFx0IHBmLVx1MDAzZWlmX21vZGUsIG9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQ5OkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZmVwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZmc19lbmV0X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnVnZXRoLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFx1MDAyNmRldi1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cdFx0XHRcdCBwaHlfaW50ZXJmYWNlLCBcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jPTU0ODA9c3RhdGljIGludCBtdm5ldGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jOjU1OTk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHAtXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo3MTQ4Olx0XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVx0XHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcdFx0cGh5X2xpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxOC1cdFx0XHRcdFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODIzPXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njg6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY5LVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUobWFjLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NzQ2PXN0cnVjdCBuZXRfZGV2aWNlICpmYm5pY19uZXRkZXZfYWxsb2Moc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4MzU6XHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXHRcdGZyZWVfbmV0ZGV2KG5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaD0xMTE9aW50IGZibmljX3BoeWxpbmtfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTE0LXZvaWQgZmJuaWNfcGh5bGlua19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4OC0gKiBAbmV0ZGV2OiBOZXR3b3JrIERldmljZSBzdHJ1Y3QgdG8gYXR0YWNoIHBoeWxpbmsgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE5NzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmZibi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cdFx0XHRcdCBmYm5pY19waHlsaW5rX3NlbGVjdF9pbnRlcmZhY2UoZmJuLVx1MDAzZWF1aSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMxNDI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzQzeF9waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE1MDpzdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTkzOlx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZGFwdGVyLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTQtXHRcdFx0ICAgIGFkYXB0ZXItXHUwMDNlcGh5X2ludGVyZmFjZSwgXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjY0PXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcyNDpcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyNS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz03OTE9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlX3BvcnQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHUzMiBwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjg1NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVx0XHRcdFx0IHBvcnRucCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZzcHg1X3BvcnQtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUoY29uZmlnLVx1MDAzZW5vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE3NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgb2NlbG90X3BoeWxpbmtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxNzgwOnN0YXRpYyBpbnQgb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMi1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTg0Mz1pbnQgb2NlbG90X3Byb2JlX3BvcnQoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCwgc3RydWN0IHJlZ21hcCAqdGFyZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODgwOlx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzcwPXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ2MjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDYzLVx0XHRcdFx0IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTY0LVx0XHRcdFx0IFx1MDAyNnRuNDBfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU3PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0My1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnQtXHUwMDNlc2xhdmUucG9ydF9ucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jPTEzMD1zdGF0aWMgaW50IG5nYmVfcGh5bGlua19pbml0KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYzoxNTA6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXHUwMDI2bmdiZV9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNTEtXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NDgyPWludCB0eGdiZV9waHlsaW5rX2luaXRfYW1sKHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jOjUxMzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxNC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYz0yNjg9c3RhdGljIGludCB0eGdiZV9waHlsaW5rX2luaXQoc3RydWN0IHR4Z2JlICp0eGdiZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM6MjkzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXHUwMDI2dHhnYmVfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5NC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzk1PXN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzExODpcdGxwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZscC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTE5LVx0XHRcdFx0ICAgICBscC1cdTAwM2VwaHlfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjItXHRcdHJldCA9IFBUUl9FUlIobHAtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjM6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3BoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjQtXHRcdGdvdG8gY2xlYW51cF9tZGlvO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE2PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzEtXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMjpcdFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzMtXHRcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcxLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzMtICogQHBjczogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2OT1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTMtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NS0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMy0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzNDogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM1LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0OC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0OTpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NTAtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQwLSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjAtICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDY9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNi0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyOC0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYzLSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2NS0gKiBAZG46IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgyLSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4NC0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0Mi0gKiAgIGluc3RhbmNlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDQtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzM9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4Mi0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODQtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDE1PXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQyNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5MS0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5My0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUyMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNy0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU1MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTQtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTU1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTYtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTM9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAwLSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjAxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDItICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjUyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU1LSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY1NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjc3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4MC0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2ODE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4Mi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcyMD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIzLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcyNDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzI1LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjItICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODk9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwNC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkwNTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA2LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTc9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3OC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5Nzk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4MC0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTQ1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDgtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzMtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTc0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzUtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTg2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg5LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE5MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTkxLSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3Ni0gKiAgIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3OC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI5NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTgtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjk5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDAtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI0LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzI1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjYtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ5NT1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTMtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTE0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTUtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTItICogICBsaW5rIHBhcnRuZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5NC0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxMz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNy0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxOS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM3MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc0LSAqXHRcdFx0XHQgd2hpY2ggbG9zZXMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM3NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc2LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzkxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5NS0gKlx0XHRcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzOTY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5Ny0gKlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03OTk9c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjEtXHRcdFx0XHQgcGh5X2lmX21vZGUsIFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM4LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXHRcdFx0XHQgZGV2LVx1MDAzZWludGVyZmFjZSwgXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTk3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVVNCLXRvLUV0aGVybmV0IERldmljZSBFbXVsYXRpb24gd2l0aCBQU0dNSUkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB3ZSBjYW4gZW11bGF0ZSBVU0ItdG8tRXRoZXJuZXQgZGV2aWNlcywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBhc2l4X2RldmljZXMuY2AgYW5kIGBsYW43OHh4LmNgLiBCb3RoIG9mIHRoZXNlIHVzZSBgcGh5bGlua19jcmVhdGVgLCB3aGljaCBtYWtlcyBtZSB0aGluayB0aGV5JiMzOTtyZSBnb29kIGNhbmRpZGF0ZXMgZm9yIHRlc3Rpbmcgd2l0aCBkdW1teV9oY2Qgb3Igc29tZXRoaW5nIHNpbWlsYXIgd2l0aGluIHN5emthbGxlci4KCkJ1dCB3YWl0LCBJIHNlZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gdGhlIG1peCwgYW5kIHRoYXQmIzM5O3MgdGhyb3dpbmcgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBUaGlzIGlzIGEgKnNwZWNpZmljKiBtb2RlLiBDYW4gd2UgYWN0dWFsbHkgdHJpZ2dlciB0aGlzIHdpdGggdmlydHVhbCBkcml2ZXJzPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uCgpNeSBuZXh0IG1vdmUgaXMgdG8gZmlndXJlIG91dCBpZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgc29tZXRoaW5nIGNvbmZpZ3VyYWJsZSB2aWEgdXNlcnNwYWNlIHRvb2xzIGxpa2UgbmV0bGluayBvciBldGh0b29sLCBvciBpZiBpdCYjMzk7cyBzdHJpY3RseSB0aWVkIHRvIGRldmljZSB0cmVlIGJpbmRpbmdzIG9yIHVuZGVybHlpbmcgaGFyZHdhcmUgcHJvcGVydGllcy4gTXkgZXhwZXJpZW5jZSBzdWdnZXN0cyB0aGF0IGBwaHlfaW50ZXJmYWNlX3RgIGlzIHVzdWFsbHkgZGV0ZXJtaW5lZCBieSB0aGUgZHJpdmVyIGJhc2VkIG9uIGRldmljZSB0cmVlIGluZm9ybWF0aW9uIG9yIGhhcmR3YXJlIGNhcGFiaWxpdGllcywgc28gdGhpcyBmZWVscyBsaWtlIGEgbG9uZyBzaG90LiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4KClRoZXJlZm9yZSwgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyB1c2VkIHNvIEkgY2FuIHVuZGVyc3RhbmQgaG93IHRoaXMgbW9kZSBpcyBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDEtXHRcdHJldHVybiA0O1xuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MjAyOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMjAzLVx0XHRyZXR1cm4gNTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0yOTQ9dW5zaWduZWQgbG9uZyBwaHlfY2Fwc19mcm9tX2ludGVyZmFjZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTMxMC1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEyLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM4PXN0YXRpYyBpbnQgcGh5bGlua19pbnRlcmZhY2VfbWF4X3NwZWVkKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTktXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjEtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzQ9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA4LVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODA5Olx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgxMC1cdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0Mi1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQ0LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz00OTA9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX3Byb2JlX29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTQ5LVx0XHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUwOlx0XHRcdFx0cGh5X21vZGVzKFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkpKSlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XHRcdFx0cHJpdi1cdTAwM2VwYWNrYWdlX21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU1Mi1cdFx0ZWxzZSBpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODUtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU4NjpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODctXHRkZWZhdWx0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQ0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBSZWFjaCBvZiBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBwcmltYXJpbHkgYSBRdWFsY29tbS1zcGVjaWZpYyB0aGluZywgdXNlZCBpbiB0aGUgYHFjYTgwN3guY2AgZHJpdmVyIGFuZCwgb2YgY291cnNlLCB0aGUgY29yZSBQSFkvcGh5bGluayBjb2RlLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcywgY2FuIHdlIGFjdHVhbGx5ICpoaXQqIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAgd2l0aCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgd2hlbiB3ZSYjMzk7cmUgcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIHRoaXMuCgpJZiB3ZSBjYW4gc3BpbiB1cCBhIHZpcnR1YWwgbmV0ZGV2LCBjb25maWd1cmUgaXQgdG8gdXNlIGBwaHlsaW5rYCwgYW5kIHRoZW4gKmZvcmNlKiBpdHMgaW50ZXJmYWNlIG1vZGUgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRocm91Z2ggbmV0bGluayBvciBzeXNmcyDigJMgKnRoZW4qIHdlIGhhdmUgYSBzY2VuYXJpbyB0byBjb25zaWRlci4gVGhlIGNydWNpYWwgcXVlc3Rpb24gYmVjb21lcywgY2FuIGBwaHlfaW50ZXJmYWNlX3RgIGJlIGNvbnRyb2xsZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbms/IEkgbmVlZCB0byB2ZXJpZnkgaWYgdGhhdCBsZXZlbCBvZiBjb250cm9sIGlzIGV4cG9zZWQuCgpUaGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIGFjdHVhbGx5IGFjY2Vzc2libGUgYW5kIGNvbmZpZ3VyYWJsZSBmcm9tIHVzZXJzcGFjZS4gV2UgbmVlZCB0byBmaW5kIG91dCBpZiBpdCBpcyBwb3NzaWJsZSB0byBzZXQgdGhlIGludGVyZmFjZSBtb2RlIGZyb20gdXNlcnNwYWNlLCBhcyB0aGlzIGlzIHRoZSBkZWNpZGluZyBmYWN0b3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjkyMwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgSW50ZXJmYWNlIENvbmZpZ3VyYXRpb24qKgoKSG1tLCB0aGlzIHNvdW5kcyBsaWtlIHdlJiMzOTtyZSBkaWdnaW5nIGludG8gbmV0d29yayBpbnRlcmZhY2UgY29uZmlndXJhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyBub3QgcmVpbnZlbnQgdGhlIHdoZWVsIGhlcmUuIEJlZm9yZSBJIHN0YXJ0IGdvaW5nIGRvd24gYW55IHJhYmJpdCBob2xlcywgSSYjMzk7ZCBiZXR0ZXIgY29uc2lkZXIgdGhlIHN0YW5kYXJkIHRvb2xzLiAqZXRodG9vbCogc3ByaW5ncyB0byBtaW5kIOKAkyBpdCYjMzk7cyB0aGUgZ28tdG8gdXRpbGl0eSBmb3IgcXVlcnlpbmcgYW5kIGNvbmZpZ3VyaW5nIEV0aGVybmV0IGRldmljZXMgYXQgYSBsb3cgbGV2ZWwuIEFuZCB0aGVuIHRoZXJlJiMzOTtzICpydG5ldGxpbmsqIHdoaWNoIHByb3ZpZGVzIGEgbW9yZSB2ZXJzYXRpbGUgYW5kIG1vZGVybiBpbnRlcmZhY2UsIHNvIHRoYXQgaXMgYW5vdGhlciB0byBxdWlja2x5IGNoZWNrLgoKTm93LCBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoICpwaHlfaW50ZXJmYWNlX3QqLCB0aGF0JiMzOTtzIGdldHRpbmcgZG93biBpbnRvIHRoZSB3ZWVkcyBvZiB0aGUgcGh5c2ljYWwgbGF5ZXIgYWJzdHJhY3Rpb24uIFNvLCB0aGUga2V5IHF1ZXN0aW9uIGhlcmUgaXMsIHdoZXJlIGlzIHRoYXQgdmFsdWUgYWN0dWFsbHkgYmVpbmcgc2V0IG9yIG1vZGlmaWVkIGZyb20gdXNlcnNwYWNlPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHdoZXJlIHRoYXQgc3RydWN0dXJlIGlzIHVzZWQsIGFuZCBmaWd1cmUgb3V0IGhvdyBpdCYjMzk7cyBiZWluZyBwb3B1bGF0ZWQgZnJvbSB0aGUgYXBwbGljYXRpb24gc2lkZS4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvOiBnZXQgYSBoYW5kbGUgb24gd2hlcmUgdGhvc2UgdmFsdWVzIGFyZSBjb21pbmcgZnJvbSBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCB0aGUgcG9zc2libGUgc291cmNlcyBvZiBhbnkgaXNzdWUgd2UmIzM5O3JlIGZhY2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2ludGVyZmFjZV90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL29mX25ldC5jLTI2LSAqL1xubmV0L2NvcmUvb2ZfbmV0LmM6Mjc6aW50IG9mX2dldF9waHlfbW9kZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBwaHlfaW50ZXJmYWNlX3QgKmludGVyZmFjZSlcbm5ldC9jb3JlL29mX25ldC5jLTI4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTczMTEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIG9mIHRoZSBQSFkgSW50ZXJmYWNlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgYHBoeV9pbnRlcmZhY2VfdGAgaXMgYmVpbmcgY29uZmlndXJlZCwgYW5kIGl0IGFwcGVhcnMsIGJhc2VkIG9uIHdoYXQgSSYjMzk7dmUgc2VlbiwgdGhhdCBEZXZpY2UgVHJlZSAoYG9mX2dldF9waHlfbW9kZWApIHBsYXlzIGEgc2lnbmlmaWNhbnQgcm9sZSBoZXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgaXQgZ290IG1lIHdvbmRlcmluZzogY2FuIHdlIG1hbmlwdWxhdGUgdGhpcyB2YWx1ZSwgb3IgZXZlbiBzZXQgaXQgaW5pdGlhbGx5LCB2aWEgYSBuZXRsaW5rIGludGVyZmFjZT8gVGhhdCB3b3VsZCBiZSB1c2VmdWwgZm9yIGEgbW9yZSBkeW5hbWljIHN5c3RlbS4KCk15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBpbnRvIHRoZSBrZXJuZWwgaGVhZGVycywgc3BlY2lmaWNhbGx5IGBpbmNsdWRlL3VhcGkvbGludXgvZXRodG9vbC5oYCBhbmQgYGluY2x1ZGUvdWFwaS9saW51eC9pZl9saW5rLmhgLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzIHdoZW4geW91JiMzOTtyZSBkZWFsaW5nIHdpdGggbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbiBhbmQgbWFuYWdlbWVudCBmcm9tIHVzZXJzcGFjZS4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBldGh0b29sIGNvbW1hbmRzIG9yIGlmX2xpbmsgYXR0cmlidXRlcyB0aGF0IHJlbGF0ZSB0byBQSFkgaW50ZXJmYWNlIHNlbGVjdGlvbiBvciBtb2RpZmljYXRpb24uIEhvcGVmdWxseSwgdGhlcmUmIzM5O3Mgc29tZXRoaW5nIHRoZXJlIHRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgaW5zaWdodCBhbmQgY29uZmlybXMgb3IgZGVuaWVzIHRoZSBhYmlsaXR5IHRvIG1vZGlmeSB0aGUgUEhZIGludGVyZmFjZSB2aWEgbmV0bGluay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfaW50ZXJmYWNlX3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL3VhcGkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc2NDEKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgcGh5X2ludGVyZmFjZV90YCBDb2RlIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSYjMzk7dmUgaGl0IGEgc25hZy4gVGhpcyBgcGh5X2ludGVyZmFjZV90YCBpcyBhbiBpbnRlcm5hbCBrZXJuZWwgZW51bSDigJMgdGhhdCYjMzk7cyBhIGtleSBkZXRhaWwuIEl04oCZcyBnb3QgbWUgdGhpbmtpbmc6IGhvdyBjYW4gSSBhY3R1YWxseSAqdHJpZ2dlciogdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGggaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LCBlc3BlY2lhbGx5IHdpdGhpbiBzb21ldGhpbmcgbGlrZSBRRU1VPyBJJiMzOTttIHRyeWluZyB0byB0ZXN0IHRoaXMgdGhvcm91Z2hseSwgYW5kIGEgdmlydHVhbGl6ZWQgc2V0dXAgaXMgbXkgYmVzdCBiZXQgZm9yIHJlcGVhdGFiaWxpdHkuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcGxheSBhcm91bmQgd2l0aCBgZHVtbXlfaGNkYCBjb21iaW5lZCB3aXRoIGEgVVNCIG5ldHdvcmsgZHJpdmVyLiBTb21ldGhpbmcgbGlrZSBgbGFuNzh4eGAgb3IgYGFzaXhgIGNvbWVzIHRvIG1pbmQ7IHRoZXkgYm90aCB1dGlsaXplIGBwaHlsaW5rYC4gQnV0IGhlcmUmIzM5O3MgdGhlIHJ1YjogVGhlaXIgaW50ZXJmYWNlIG1vZGUgc2VlbXMgdG8gYmUgaGFyZGNvZGVkLCBvciByZWFkIGluIGZyb20gZWl0aGVyIHRoZSBFRVBST00gb3IgRFQuIEZvciBleGFtcGxlLCB3aGVuIGxvb2tpbmcgYXQgYGxhbjc4eHhgLi4uIEkgc3VzcGVjdCB0aGlzIGlzIHdoZXJlIEkmIzM5O2xsIGhpdCB0aGUgbGltaXRhdGlvbi4gVGhpcyB3aWxsIHJlcXVpcmUgZnVydGhlciBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXYtXHUwMDNlaW50ZXJmYWNlID0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjY0OT1zdGF0aWMgc3RydWN0IHBoeV9kZXZpY2UgKmxhbjc4eHhfZ2V0X3BoeShzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2NTktXHRcdFx0LyogRXh0ZXJuYWwgUkdNSUkgUEhZIGRldGVjdGVkICovXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI2NjA6XHRcdFx0ZGV2LVx1MDAzZWludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjY2MS1cdFx0XHRwaHlkZXYtXHUwMDNlaXNfaW50ZXJuYWwgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2NjktXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI2NzA6XHRcdGRldi1cdTAwM2VpbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2NzEtXHRcdC8qIE5vIFBIWSBmb3VuZCDigJMgZmFsbGJhY2sgdG8gZml4ZWQgUEhZIChlLmcuIEtTWiBzd2l0Y2ggYm9hcmQpICovXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjc5LVx0XHQvKiBUaGVzZSB1c2UgaW50ZXJuYWwgR01JSS1jb25uZWN0ZWQgUEhZICovXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI2ODA6XHRcdGRldi1cdTAwM2VpbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjY4MS1cdFx0cGh5ZGV2LVx1MDAzZWlzX2ludGVybmFsID0gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzMjIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqQ29uc2lkZXJpbmcgUEhZIEludGVyZmFjZSBNb2RlcyoqCgpBbHJpZ2h0LCBzbyB0aGUgc3lzdGVtJiMzOTtzIGNvbmZpZ3VyaW5nIHRoZSBQSFkgaW50ZXJmYWNlIG1vZGUsIHdoaWNoIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIGhvdyBpdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgcGh5c2ljYWwgbGF5ZXIuIEl0JiMzOTtzIGV4cGxpY2l0bHkgc2V0dGluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEYCwgYFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSWAsIG9yIGBQSFlfSU5URVJGQUNFX01PREVfR01JSWAuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgc3R1ZmYsIGNvdmVyaW5nIHRoZSBjb21tb24gZ2lnYWJpdCBpbnRlcmZhY2VzLiBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiB3aGF0IGFib3V0IGEgbW9yZSBvYnNjdXJlIFBIWSBpbnRlcmZhY2UgbGlrZSB0aGUgb25lIHVzZWQgYnkgYW4gYGFzaXhgIGNoaXA/IElzIHRoYXQgcHJvcGVybHkgYWRkcmVzc2VkIGhlcmU/IFRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZCwgYmVjYXVzZSBpdCBjb3VsZCByZXF1aXJlIGEgY29tcGxldGVseSBkaWZmZXJlbnQgYXBwcm9hY2ggdG8gaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGlzIGNvbmZpZ3VyYXRpb24gaGFuZGxlcyBpdCwgb3IgaWYgaXQgbmVlZHMgc2VwYXJhdGUgaGFuZGxpbmcuIEkgYW0gZGVmaW5pdGVseSBnb2luZyB0byBoYXZlIHRvIG1ha2Ugc3VyZSB0byBhY2NvdW50IGZvciB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfaWZfbW9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Nzk5PXN0YXRpYyBpbnQgYXg4ODc3Ml9waHlsaW5rX3NldHVwKHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAxLVx0c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYgPSBkZXYtXHUwMDNlZHJpdmVyX3ByaXY7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODAyOlx0cGh5X2ludGVyZmFjZV90IHBoeV9pZl9tb2RlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwMy1cdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTUtXHRpZiAocHJpdi1cdTAwM2VlbWJkX3BoeSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MTY6XHRcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxNy1cdGVsc2VcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MTg6XHRcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyMC1cdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIxOlx0XHRcdFx0IHBoeV9pZl9tb2RlLCBcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIyLVx0aWYgKElTX0VSUihwaHlsaW5rKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5ODEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgUFNHTUlJIEludGVyZmFjZSBpbiBVU0IgRHJpdmVycyoqCgpPa2F5LCBzbyB0aGUgVVNCIGRyaXZlcnMgSSYjMzk7bSBsb29raW5nIGF0IHNlZW0gdG8gYmUgc3RpY2tpbmcgd2l0aCBlaXRoZXIgYFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTGAgb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJYC4gVGhhdCBtZWFucywgcmlnaHQgb2ZmIHRoZSBiYXQsIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpc24mIzM5O3QgYmVpbmcgZGlyZWN0bHkgdXRpbGl6ZWQgaGVyZS4gVGhlIHF1ZXN0aW9uIG5vdyBiZWNvbWVzLCBpcyB0aGVyZSBhbnkgKm90aGVyKiB3YXkgdG8gdHJpZ2dlciB0aGUgdXNhZ2Ugb2YgdGhhdCBgUFNHTUlJYCBtb2RlIHdpdGhpbiB0aGlzIGNvbnRleHQ/CgpNeSBuZXh0IHRob3VnaHQgaXMgdG8gZGlnIGludG8gYGRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guY2AuIFRoaXMgaXMgYSBQSFkgZHJpdmVyLCB3aGljaCBpcyBwcm9taXNpbmcuIFRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gSSBpbnN0YW50aWF0ZSBhIFBIWSBkZXZpY2UgdXNpbmcgKnRoaXMqIGRyaXZlciB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBtZGlvYCBuZXRsaW5rIG9yIHN5c2ZzPyBJIHZhZ3VlbHkgcmVjYWxsIHRoYXQgdGhlcmUgaXNuJiMzOTt0IGEgZGVkaWNhdGVkIG5ldGxpbmsgaW50ZXJmYWNlIGZvciBpbnN0YW50aWF0aW5nIFBIWXMuIEl0IHdvdWxkIGxpa2VseSBoYXZlIHRvIGJlIGRvbmUgdGhyb3VnaCB0aGUgTURJTyBidXMgaXRzZWxmLCByaWdodD8KCkFoLCByaWdodCwgYHFjYTgwN3hgICppcyogYSBQSFkgZHJpdmVyLiBBbmQgUEhZIGRyaXZlcnMgYXJlLCBvZiBjb3Vyc2UsICpwcm9iZWQqIHdoZW4gYSBQSFkgZGV2aWNlIGlzIGRldGVjdGVkIG9uIGFuIE1ESU8gYnVzLiBTbywgY2FuIEkgY2xldmVybHkgY3JlYXRlIGEgdmlydHVhbCBNRElPIGJ1cyBhbmQgdGhlbiBzaW11bGF0ZSBhIHZpcnR1YWwgUEhZIGRldmljZT8gSSByZW1lbWJlciBzZWVpbmcgYG1kaW8tbW9ja3VwYCBvciBgbWRpby1iY20tdW5pbWFjYCBmbG9hdGluZyBhcm91bmQuLi4KCkJ1dCBob2xkIG9uISBFdmVuIGlmIEkgY2FuIGdldCBhIHZpcnR1YWwgTURJTyBidXMgYW5kIFBIWSBzZXQgdXAsIHRoZSBgcWNhODA3eGAgZHJpdmVyIHNwZWNpZmljYWxseSByZWFkcyBgcGFja2FnZV9tb2RlYCBmcm9tIHRoZSBkZXZpY2UgdHJlZTogYG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKG5vZGUsICYjMzQ7cWNvbSxwYWNrYWdlLW1vZGUmIzM0OywgJmFtcDtwYWNrYWdlX21vZGVfbmFtZSlgLiBTbywgaXQmIzM5O3MgZXhwZWN0aW5nIGEgZGV2aWNlIHRyZWUgbm9kZSB3aXRoIGEgYHFjb20scGFja2FnZS1tb2RlID0gJiMzNDtwc2dtaWkmIzM0O2AgcHJvcGVydHksIHNwZWNpZmljYWxseS4gV2VsbCwgaW4gYSBzdGFuZGFyZCB4ODYgUUVNVSBlbnZpcm9ubWVudCwgSSBjZXJ0YWlubHkgZG9uJiMzOTt0IGhhdmUgdGhhdCBub2RlIGluIHRoZSBkZXZpY2UgdHJlZS4uLgoKV2FpdCwgKndhaXQqLiBCZWZvcmUgSSBnbyBkb3duIHRoZSByYWJiaXQgaG9sZSBvZiB2aXJ0dWFsIE1ESU8gYnVzZXMsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBzZWUgaWYgdGhlcmUgYXJlICphbnkqIG90aGVyIGRyaXZlcnMgaW4gdGhlIHN5c3RlbSB0aGF0IGFjdHVhbGx5IHV0aWxpemUgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBNYXliZSBJJiMzOTttIGJhcmtpbmcgdXAgdGhlIHdyb25nIHRyZWUgZW50aXJlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9MTU5PWludCBwaHlfaW50ZXJmYWNlX251bV9wb3J0cyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cdFx0cmV0dXJuIDQ7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXHRcdHJldHVybiA1O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzozMTE6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNDM6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXHRcdGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XHRcdFx0XHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MTpcdFx0XHRwcml2LVx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVx0XHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NTYyPXN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9jb25maWdfaW5pdF9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2Olx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cdGRlZmF1bHQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzgxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBQSFkgTGluayBQYXJzZSBNb2RlKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIGp1c3QgcmV2aWV3aW5nIHRoZSBgcGh5bGlua19wYXJzZV9tb2RlYCBmdW5jdGlvbiBhbmQgaXQgbG9va3MgbGlrZSBpdCBzdXBwb3J0cyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgYXMgd2VsbC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgY29ycmVjdGx5IGhhbmRsZWQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgdGhlIGNvZGUgcmVsYXRlZCB0byBgcGh5bGlua19wYXJzZV9tb2RlYCBhbmQgY29uZmlybSB0aGF0IGl0JiMzOTtzIHRha2luZyBpbnRvIGFjY291bnQgdGhlIFBTR01JSSBtb2RlLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGxvZ2ljYWwgb3ZlcnNpZ2h0cyB0aGVyZS4gSXTigJlzIGFsd2F5cyBnb29kIHByYWN0aWNlIHRvIHJlLWV4YW1pbmUgdGhlIGNvZGUgd2hlbiBuZXcgZnVuY3Rpb25hbGl0aWVzIGFyZSBhZGRlZCB0byBlbnN1cmUgY29ycmVjdCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzc0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NzQ6XHRzdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4gNzc1Olx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcbiA3NzY6XHR7XG4gNzc3Olx0XHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZG47XG4gNzc4Olx0XHRjb25zdCBjaGFyICptYW5hZ2VkO1xuIDc3OTpcdFx0dW5zaWduZWQgbG9uZyBjYXBzO1xuIDc4MDpcdFxuIDc4MTpcdFx0aWYgKHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VkZWZhdWx0X2FuX2luYmFuZClcbiA3ODI6XHRcdFx0cGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9IE1MT19BTl9JTkJBTkQ7XG4gNzgzOlx0XG4gNzg0Olx0XHRkbiA9IGZ3bm9kZV9nZXRfbmFtZWRfY2hpbGRfbm9kZShmd25vZGUsIFwmIzM0O2ZpeGVkLWxpbmtcJiMzNDspO1xuIDc4NTpcdFx0aWYgKGRuIHx8IGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGZ3bm9kZSwgXCYjMzQ7Zml4ZWQtbGlua1wmIzM0OykpXG4gNzg2Olx0XHRcdHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPSBNTE9fQU5fRklYRUQ7XG4gNzg3Olx0XHRmd25vZGVfaGFuZGxlX3B1dChkbik7XG4gNzg4Olx0XG4gNzg5Olx0XHRpZiAoKGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3N0cmluZyhmd25vZGUsIFwmIzM0O21hbmFnZWRcJiMzNDssIFx1MDAyNm1hbmFnZWQpID09IDAgXHUwMDI2XHUwMDI2XG4gNzkwOlx0XHQgICAgIHN0cmNtcChtYW5hZ2VkLCBcJiMzNDtpbi1iYW5kLXN0YXR1c1wmIzM0OykgPT0gMCkpIHtcbiA3OTE6XHRcdFx0aWYgKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XG4gNzkyOlx0XHRcdFx0cGh5bGlua19lcnIocGwsXG4gNzkzOlx0XHRcdFx0XHQgICAgXCYjMzQ7Y2FuJiMzOTt0IHVzZSBib3RoIGZpeGVkLWxpbmsgYW5kIGluLWJhbmQtc3RhdHVzXFxuXCYjMzQ7KTtcbiA3OTQ6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA3OTU6XHRcdFx0fVxuIDc5NjpcdFxuIDc5NzpcdFx0XHRwbC1cdTAwM2VjZmdfbGlua19hbl9tb2RlID0gTUxPX0FOX0lOQkFORDtcbiA3OTg6XHRcdH1cbiA3OTk6XHRcbiA4MDA6XHRcdGlmIChwbC1cdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9JTkJBTkQpIHtcbiA4MDE6XHRcdFx0bGlua21vZGVfemVybyhwbC1cdTAwM2VzdXBwb3J0ZWQpO1xuIDgwMjpcdFx0XHRwaHlsaW5rX3NldChwbC1cdTAwM2VzdXBwb3J0ZWQsIE1JSSk7XG4gODAzOlx0XHRcdHBoeWxpbmtfc2V0KHBsLVx1MDAzZXN1cHBvcnRlZCwgQXV0b25lZyk7XG4gODA0Olx0XHRcdHBoeWxpbmtfc2V0KHBsLVx1MDAzZXN1cHBvcnRlZCwgQXN5bV9QYXVzZSk7XG4gODA1Olx0XHRcdHBoeWxpbmtfc2V0KHBsLVx1MDAzZXN1cHBvcnRlZCwgUGF1c2UpO1xuIDgwNjpcdFxuIDgwNzpcdFx0XHRzd2l0Y2ggKHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkge1xuIDgwODpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiA4MDk6XHRcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuIDgxMDpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gODExOlx0XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6XG4gODEyOlx0XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuIDgxMzpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDpcbiA4MTQ6XHRcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcbiA4MTU6XHRcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcbiA4MTY6XHRcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUlRCSTpcbiA4MTc6XHRcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYOlxuIDgxODpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XG4gODE5Olx0XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzVHQkFTRVI6XG4gODIwOlx0XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1R0JBU0VSOlxuIDgyMTpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxuIDgyMjpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdfUVhHTUlJOlxuIDgyMzpcdFx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdLUjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5MTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1NzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgQ29kZSBQYXRoIGZvciBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgc3BlY2lmaWNhbGx5LCB0aGUgYWRkaXRpb24gb2YgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRvIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAuIE15IGluaXRpYWwgdGhvdWdodCBpczogQ2FuIHRoaXMgY29kZSBwYXRoIGFjdHVhbGx5IGJlIHRyaWdnZXJlZD8gVG8gZ2V0IHRoZXJlLCBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIGEgYHBoeWxpbmtgIGluc3RhbmNlIHRoYXQgaGFzIGBpbnRlcmZhY2VgIHNldCB0byBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIFRoYXQgYGludGVyZmFjZWAgaXMgYXNzaWduZWQgZHVyaW5nIGVpdGhlciBgcGh5bGlua19jcmVhdGVgIG9yIHBvc3NpYmx5IHRocm91Z2ggYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYC4KCk15IG5leHQgbGluZSBvZiB0aGlua2luZyBpcywgZG9lcyBhbnkgZHJpdmVyICphY3R1YWxseSogc2V0IGBpbnRlcmZhY2VgIHRvIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYD8gVGhlIGNvZGUgc2VlbXMgdG8gaW5kaWNhdGUgdGhhdCBgcWNhODA3eC5jYCB1c2VzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYC4gSG93ZXZlciwgd2FpdCwgdGhhdCYjMzk7cyBhIFBIWSBkcml2ZXIhIEl0IHNldHMgYHByaXYtJmd0O3BhY2thZ2VfbW9kZWAgdG8gdGhhdCB2YWx1ZS4gU28sIGl0IGRvZXNuJiMzOTt0IGRpcmVjdGx5IGNvbmZpZ3VyZSB0aGUgYHBoeWxpbmtgJiMzOTtzIGBpbnRlcmZhY2VgLCB3aGljaCBpcyBnb29kIHNpbmNlIFBIWSBkcml2ZXJzIGFyZW4mIzM5O3QgcmVzcG9uc2libGUgZm9yIGBwaHlsaW5rYCBpbnN0YW5jZSBjcmVhdGlvbi4gVGhlIE1BQyBkcml2ZXIgaGFuZGxlcyB0aGUgYHBoeWxpbmtgIGluc3RhbmNlLgoKU28gdGhlIHF1ZXN0aW9uIHNoaWZ0czogaXMgdGhlcmUgYW55IE1BQyBkcml2ZXIgdGhhdCYjMzk7cyAqY29uZmlndXJlZCogdG8gdXNlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYD8gTXkgdXN1YWwgYXBwcm9hY2ggd291bGQgYmUgdG8gY2hlY2sgaWYgYW55IE1BQyBkcml2ZXIgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gdXNlIHRoaXMgaW50ZXJmYWNlIG1vZGUuIE9mdGVuLCBNQUMgZHJpdmVycyByZWFkIHRoZSBgcGh5LW1vZGVgIG9yIGBwaHktY29ubmVjdGlvbi10eXBlYCBmcm9tIHRoZSBkZXZpY2UgdHJlZS4gTG9va2luZyBhdCBgb2ZfZ2V0X3BoeV9tb2RlYCwgSSBzZWUgaXQgY29udmVydHMgYSBzdHJpbmcgbGlrZSBgJiMzNDtwc2dtaWkmIzM0O2AgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYHBoeV9pbnRlcmZhY2VfdGAuIFRoaXMgaXMgbXkga2V5LiBJZiBJIGNhbiBwcm92aWRlIGEgZGV2aWNlIHRyZWUgd2l0aCBgcGh5LW1vZGUgPSAmIzM0O3BzZ21paSYjMzQ7YCwgdGhlbiBhbnkgTUFDIGRyaXZlciB0aGF0IHVzZXMgYG9mX2dldF9waHlfbW9kZWAgYW5kIGNhbGxzIGBwaHlsaW5rX2NyZWF0ZWAgd2lsbCBwYXNzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB0byB0aGUgYHBoeWxpbmtgIGluc3RhbmNlLgoKVGhlIHJ1YiBpcyBJJiMzOTttIHRlc3RpbmcgaW4gc3l6a2FsbGVyLiBJJiMzOTttIHR5cGljYWxseSBvbiB4ODYgUUVNVSBvciBHQ0UgYW5kIEkgZG9uJiMzOTt0IGdldCB0byBzcGVjaWZ5IGEgY3VzdG9tIGRldmljZSB0cmVlLiBTbywgY2FuIEkgYnlwYXNzIHRoaXMgdGhyb3VnaCBzb21lIG90aGVyIG1lYW5zPwoKQ2FuIEkgZG8gdGhpcyB2aWEgbmV0bGluaz8gSSBqdXN0IHNjYW5uZWQgdGhlIGBuZXQvY29yZS9gIGFuZCBgaW5jbHVkZS91YXBpL2AgZGlyZWN0b3JpZXMsIGFuZCB0aGVyZSYjMzk7cyBub3RoaW5nIEkgY2FuIHNlZSByZWxhdGluZyB0byBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gZm9yIGBwaHlfaW50ZXJmYWNlX3RgLgoKT2ssIG5leHQgcG9zc2libGUgYXZlbnVlLCBsZXQmIzM5O3MgbG9vayBhdCBgZXRodG9vbGAgYW5kIGBldGh0b29sX2xpbmtfa3NldHRpbmdzYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNvbmZpZ3VyYXRpb24ga25vYnMgdGhlcmUgdG8gdHJpZ2dlciB0aGlzIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2ludGVyZmFjZV90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9ldGh0b29sLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzEyOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIFBoeWxpbmsgQ29uZmlndXJhdGlvbiBNYXplKioKCk9rYXksIHNvIEkmIzM5O20gaGl0dGluZyBhIHJvYWRibG9jay4gSSB3YXMgaG9waW5nIGBldGh0b29sYCB3b3VsZCBnaXZlIG1lIGRpcmVjdCBjb250cm9sIG92ZXIgdGhlIGBwaHlfaW50ZXJmYWNlX3RgIHNldHRpbmcsIGJ1dCBpdCYjMzk7cyBub3QgZXhwb3NpbmcgaXQgdGhlIHdheSBJJiMzOTtkIGV4cGVjdC4gTm93LCBob3cgZG8gSSBhY3R1YWxseSBzZXQgdGhlIGludGVyZmFjZSB3aXRoaW4gYHBoeWxpbmtgPyBJIG5lZWQgdG8gZmlndXJlIG91dCBhbiBhbHRlcm5hdGl2ZSBtZXRob2QsIGFuZCBxdWlja2x5LiBIbW1tLCBsZXQmIzM5O3MgcGl2b3QgYW5kIHNlZSBpZiBJIGNhbiBsZXZlcmFnZSBgcGh5bGlua19zZnBfY29uZmlnX29wdGljYWxgIHRvIGdldCB0aGlzIGRvbmUuIE1heWJlIHRoZXJlJiMzOTtzIGEgYmFjayBkb29yIHRoZXJlIHRoYXQgSSBjYW4gdXNlIHRvIGFjaGlldmUgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBzdGFydCBkaWdnaW5nIGluIHRoYXQgZGlyZWN0aW9uIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNzU2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM3NTY6XHRzdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsKHN0cnVjdCBwaHlsaW5rICpwbClcbjM3NTc6XHR7XG4zNzU4Olx0XHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyhzdXBwb3J0KTtcbjM3NTk6XHRcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgY29uZmlnO1xuMzc2MDpcdFx0ZW51bSBpbmJhbmRfdHlwZSBpbmJhbmRfdHlwZTtcbjM3NjE6XHRcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7XG4zNzYyOlx0XHRpbnQgcmV0O1xuMzc2MzpcdFxuMzc2NDpcdFx0cGh5bGlua19kYmcocGwsIFwmIzM0O29wdGljYWwgU0ZQOiBpbnRlcmZhY2VzPVttYWM9JSpwYmwsIHNmcD0lKnBibF1cXG5cJiMzNDssXG4zNzY1Olx0XHRcdCAgICAoaW50KVBIWV9JTlRFUkZBQ0VfTU9ERV9NQVgsXG4zNzY2Olx0XHRcdCAgICBwbC1cdTAwM2Vjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMsXG4zNzY3Olx0XHRcdCAgICAoaW50KVBIWV9JTlRFUkZBQ0VfTU9ERV9NQVgsXG4zNzY4Olx0XHRcdCAgICBwbC1cdTAwM2VzZnBfaW50ZXJmYWNlcyk7XG4zNzY5Olx0XG4zNzcwOlx0XHQvKiBGaW5kIHRoZSB1bmlvbiBvZiB0aGUgc3VwcG9ydGVkIGludGVyZmFjZXMgYnkgdGhlIFBDUy9NQUMgYW5kXG4zNzcxOlx0XHQgKiB0aGUgU0ZQIG1vZHVsZS5cbjM3NzI6XHRcdCAqL1xuMzc3MzpcdFx0cGh5X2ludGVyZmFjZV9hbmQocGwtXHUwMDNlc2ZwX2ludGVyZmFjZXMsIHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyxcbjM3NzQ6XHRcdFx0XHQgIHBsLVx1MDAzZXNmcF9pbnRlcmZhY2VzKTtcbjM3NzU6XHRcdGlmIChwaHlfaW50ZXJmYWNlX2VtcHR5KHBsLVx1MDAzZXNmcF9pbnRlcmZhY2VzKSkge1xuMzc3NjpcdFx0XHRwaHlsaW5rX2VycihwbCwgXCYjMzQ7dW5zdXBwb3J0ZWQgU0ZQIG1vZHVsZTogbm8gY29tbW9uIGludGVyZmFjZSBtb2Rlc1xcblwmIzM0Oyk7XG4zNzc3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzc3ODpcdFx0fVxuMzc3OTpcdFxuMzc4MDpcdFx0bWVtc2V0KFx1MDAyNmNvbmZpZywgMCwgc2l6ZW9mKGNvbmZpZykpO1xuMzc4MTpcdFx0bGlua21vZGVfY29weShzdXBwb3J0LCBwbC1cdTAwM2VzZnBfc3VwcG9ydCk7XG4zNzgyOlx0XHRsaW5rbW9kZV9jb3B5KGNvbmZpZy5hZHZlcnRpc2luZywgcGwtXHUwMDNlc2ZwX3N1cHBvcnQpO1xuMzc4MzpcdFx0Y29uZmlnLnNwZWVkID0gU1BFRURfVU5LTk9XTjtcbjM3ODQ6XHRcdGNvbmZpZy5kdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbjM3ODU6XHRcdGNvbmZpZy5wYXVzZSA9IE1MT19QQVVTRV9BTjtcbjM3ODY6XHRcbjM3ODc6XHRcdC8qIEZvciBhbGwgdGhlIGludGVyZmFjZXMgdGhhdCBhcmUgc3VwcG9ydGVkLCByZWR1Y2UgdGhlIHNmcF9zdXBwb3J0XG4zNzg4Olx0XHQgKiBtYXNrIHRvIG9ubHkgdGhvc2UgbGluayBtb2RlcyB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQuXG4zNzg5Olx0XHQgKi9cbjM3OTA6XHRcdHJldCA9IHBoeWxpbmtfdmFsaWRhdGVfbWFzayhwbCwgTlVMTCwgcGwtXHUwMDNlc2ZwX3N1cHBvcnQsIFx1MDAyNmNvbmZpZyxcbjM3OTE6XHRcdFx0XHRcdCAgICBwbC1cdTAwM2VzZnBfaW50ZXJmYWNlcyk7XG4zNzkyOlx0XHRpZiAocmV0KSB7XG4zNzkzOlx0XHRcdHBoeWxpbmtfZXJyKHBsLCBcJiMzNDt1bnN1cHBvcnRlZCBTRlAgbW9kdWxlOiB2YWxpZGF0aW9uIHdpdGggc3VwcG9ydCAlKnBiIGZhaWxlZFxcblwmIzM0OyxcbjM3OTQ6XHRcdFx0XHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBzdXBwb3J0KTtcbjM3OTU6XHRcdFx0cmV0dXJuIHJldDtcbjM3OTY6XHRcdH1cbjM3OTc6XHRcbjM3OTg6XHRcdGludGVyZmFjZSA9IHBoeWxpbmtfY2hvb3NlX3NmcF9pbnRlcmZhY2UocGwsIHBsLVx1MDAzZXNmcF9pbnRlcmZhY2VzKTtcbjM3OTk6XHRcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX05BKSB7XG4zODAwOlx0XHRcdHBoeWxpbmtfZXJyKHBsLCBcJiMzNDtmYWlsZWQgdG8gc2VsZWN0IFNGUCBpbnRlcmZhY2VcXG5cJiMzNDspO1xuMzgwMTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjM4MDI6XHRcdH1cbjM4MDM6XHRcbjM4MDQ6XHRcdHBoeWxpbmtfZGJnKHBsLCBcJiMzNDtvcHRpY2FsIFNGUDogY2hvc2VuICVzIGludGVyZmFjZVxcblwmIzM0OyxcbjM4MDU6XHRcdFx0ICAgIHBoeV9tb2RlcyhpbnRlcmZhY2UpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyMjIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIFNGUCBJbnRlcmZhY2UgQ29uZmlndXJhdGlvbioqCgpNeSB0aG91Z2h0IHByb2Nlc3Mgc3RhcnRzIHdpdGggYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYC4gTXkgdGFzayBpcyB0byBkZXRlcm1pbmUgd2hpY2ggaW50ZXJmYWNlIGZyb20gYHBsLSZndDtzZnBfaW50ZXJmYWNlc2Agc2hvdWxkIGJlIHNlbGVjdGVkLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gdGhlbiBhcmlzZXM6IGlzIHRoaXMgU0ZQIG1vZHVsZSBldmVuIGNhcGFibGUgb2Ygc3VwcG9ydGluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWA/IFRoaXMgaXMgdGhlIGZ1bmRhbWVudGFsIHBpZWNlIG9mIGluZm9ybWF0aW9uIEkgbmVlZCB0byBjb25maXJtLiBUbyBhbnN3ZXIgdGhpcywgSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBwb3B1bGF0aW9uIG9mIGBzZnBfaW50ZXJmYWNlc2AuIEluIGVzc2VuY2UsIEkgbmVlZCB0byBrbm93IGhvdyB0aGVzZSBpbnRlcmZhY2VzIGhhdmUgYmVlbiBjb25maWd1cmVkIGFuZCB3aGljaCBvcHRpb25zIGFyZSBhdmFpbGFibGUuIFRoaXMgc2hvdWxkIHJldmVhbCB3aGV0aGVyIFBTR01JSSBpcyBwcmVzZW50LCBhbmQgdGhlcmVmb3JlLCB2aWFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9zZnAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQ3NQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOgoKKipTRlAgTW9kdWxlIEludGVyZmFjZSBSZWFzb25pbmcqKgoKUmlnaHQsIGxldCYjMzk7cyB0aGluayB0aGlzIHRocm91Z2guIFRoZSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpc21pc3MgdGhlIGlkZWEgdGhhdCBTRlAgbW9kdWxlcyB1dGlsaXplIGBQU0dNSUlgLiBObywgdGhhdCBkb2VzbiYjMzk7dCBmZWVsIHJpZ2h0LiBUaGUgcHJvdG9jb2xzIGFuZCBwaHlzaWNhbCBpbnRlcmZhY2VzIGludm9sdmVkIGluIFNGUCBtb2R1bGVzIGFyZSB0eXBpY2FsbHkgbW9yZSBjb21wbGV4IGFuZCBvcGVyYXRlIGF0IGhpZ2hlciBzcGVlZHMgdGhhbiB3aGF0IGBQU0dNSUlgIHVzdWFsbHkgaGFuZGxlcy4gSXQganVzdCBkb2VzbiYjMzk7dCBhbGlnbiB3aXRoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlaXIgdHlwaWNhbCBjYXBhYmlsaXRpZXMuCgpPa2F5LCBzbyBpZiBub3QgYFBTR01JSWAsIHRoZW4gd2hhdCBpcyBpdD8gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIGZ1bmN0aW9uIG5hbWUgdGhhdCBJJiMzOTt2ZSBlbmNvdW50ZXJlZCBiZWZvcmUgd2hlbiBkZWFsaW5nIHdpdGggdGhlc2Ugc29ydHMgb2YgaGFyZHdhcmUgZGV0YWlscywgc29tZXRoaW5nIHRoYXQgaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgbG93LWxldmVsIGludGVyZmFjZSB0aGF0IGlzIHVzZWQgdG8gY29udHJvbCB0aGUgU0ZQIG1vZHVsZS4gSSBoYXZlIHRvIHRoaW5rIHRob3VnaC4gV2hhdCBhYm91dCBhIGZ1bmN0aW9uIGxpa2UgYHBoeWxpbmtfY2hvb3NlX3NmcF9pbnRlcmZhY2VgPyBUaGF0IGZlZWxzIHJpZ2h0LCBzaW5jZSBgcGh5bGlua2AgaXMgY29tbW9ubHkgcmVsYXRlZCB0byBoYW5kbGluZyBQSFkgaW50ZXJmYWNlcy4gSXQmIzM5O3MgcGxhdXNpYmxlIHRoYXQgdGhpcyBmdW5jdGlvbiBvciBvbmUgbGlrZSBpdCBpcyB3aGVyZSB0aGUgc3BlY2lmaWMgU0ZQIGludGVyZmFjZSBzZWxlY3Rpb24gbG9naWMgd291bGQgbGl2ZS4gSSBzaG91bGQgcHJvYmFibHkgcmVzZWFyY2ggdGhhdCBvbmUsIGFzIGEgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM4PXN0YXRpYyBpbnQgcGh5bGlua19pbnRlcmZhY2VfbWF4X3NwZWVkKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTktXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjEtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzQ9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA4LVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODA5Olx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgxMC1cdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0Mi1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQ0LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE2NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIFBhdGggSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoaXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIG1vZGUuIEkgc2VlIGl0IHBvcHMgdXAgaW4gYSBmZXcga2V5IHBsYWNlczogYHBoeWxpbmtfaW50ZXJmYWNlX21heF9zcGVlZGAsIGBwaHlsaW5rX3BhcnNlX21vZGVgLCBhbmQgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhpcyBpcyBnb2luZyB0byBiZSBpbmNyZWRpYmx5IGRpZmZpY3VsdCwgaWYgbm90IGltcG9zc2libGUsIHRvIGhpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKVGhlIGJpZyBxdWVzdGlvbiBpcywgY2FuIHdlIHNvbWVob3cgZ2V0IHRoYXQgYHBoeV9pbnRlcmZhY2VfdGAgdmFsdWUgc2V0IHRvIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYD8gVXNlcnNwYWNlIGlzIG91dCwgcmlnaHQ/IFdlIGNhbiYjMzk7dCBkaXJlY3RseSBzZXQgaXQuIFNvLCBhIHZpcnR1YWwgZHJpdmVyIHdvdWxkIG5lZWQgdG8gYmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhpcy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIGRldmljZSB0cmVlIG92ZXJsYXlzIG9yIHNvbWV0aGluZyBzaW1pbGFyIGNvdWxkIHBvc3NpYmx5IGluZmx1ZW5jZSBpdC4gTm9wZSwgbm90IHNlZWluZyBhbnl0aGluZyBwcm9taXNpbmcuCgpTeXprYWxsZXIgaXMgYSBwb3RlbnRpYWwgdG9vbCwgb2YgY291cnNlLCB3aXRoIGBzeXpfaW5pdF9uZXRfc29ja2V0YCBvciB0aGUgbGlrZSwgYnV0IGl0IGRvZXNuJiMzOTt0IHVzdWFsbHkgbG9hZCBkZXZpY2UgdHJlZSBvdmVybGF5cyB1bmxlc3Mgd2UgZXhwbGljaXRseSBjb25maWd1cmUgaXQgdG8gZG8gc28gKGFuZCB0aGF0JiMzOTtzIHByZXR0eSB1bnVzdWFsLCB1c3VhbGx5IHNwZWNpZmljIHRvIGNlcnRhaW4gaGFyZHdhcmUpLgoKTm93LCBsZXQmIzM5O3Mgc2VlLCB3aGF0IGVsc2Ugc2V0cyBgcGh5X2ludGVyZmFjZV90YD8gSSBuZWVkIHRvIGxvb2sgYXQgdGhlIHVzdWFsIHN1c3BlY3RzOiBgZHJpdmVycy9uZXQvdHVuLmNgLCBgZHJpdmVycy9uZXQvdmV0aC5jYCwgYGRyaXZlcnMvbmV0L21hY3ZsYW4uY2AsIGFuZCBgZHJpdmVycy9uZXQvZHVtbXkuY2AuIE5vcGUsIG5vbmUgb2YgdGhvc2UgdXNlIGBwaHlsaW5rYC4gV2hhdCBhYm91dCBgZHJpdmVycy9uZXQvdXNiL2A/IEkgYWxyZWFkeSBjaGVja2VkIGBsYW43OHh4YCBhbmQgYGFzaXhgLCB0aGV5IGhhcmRjb2RlIGl0LiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSBgZTEwMDBlYCBkcml2ZXIgdXNlcyBpdDsgbm9wZSwgbm90aGluZy4gV2hhdCBhYm91dCBgdmlydGlvX25ldC5jYD8gTm8gbHVjay4KCkJhc2ljYWxseSwgYHBoeWxpbmtgIGlzIGFsbW9zdCBleGNsdXNpdmVseSB1c2VkIGJ5IGRyaXZlcnMgZm9yICpyZWFsKiBoYXJkd2FyZSBNQUNzLCByaWdodD8KClNvLCBldmVuIGlmIHdlICpkaWQqIGhhdmUgYSByZWFsIGhhcmR3YXJlIE1BQyBwcmVzZW50ICh0aGluayBQQ0kgcGFzc3Rocm91Z2gpLCB3ZSYjMzk7ZCBuZWVkIHRoYXQgaGFyZHdhcmUgdG8gKnN1cHBvcnQqIGBQU0dNSUlgLCBhbmQgdGhlbiB0aGUgZGV2aWNlIHRyZWUsIEFDUEksIG9yIHRoZSBkcml2ZXIgaXRzZWxmIHdvdWxkIG5lZWQgdG8gYmUgY29uZmlndXJlZCBmb3IgaXQuIFNpbmNlIGBQU0dNSUlgIGlzIGEgdmVyeSBzcGVjaWFsaXplZCBpbnRlcmZhY2UgbW9kZSAoUGVudGEgU0dNSUkpLCB0aGF0JiMzOTtzIGFuIHVubGlrZWx5IGNvbWJpbmF0aW9uLiBBIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQgaXMgaGlnaGx5IGltcHJvYmFibGUgdG8gc3VwcG9ydCB0aGF0IHdpdGhvdXQgY3VzdG9tIGhhcmR3YXJlIGVtdWxhdGlvbi4KCk9rYXksIGxldCBtZSBicm9hZGVuIG15IHRoaW5raW5nLiBJcyB0aGVyZSBhIGRyaXZlciB0aGF0IGNvdWxkIGJlIGluc3RhbnRpYXRlZCB2aWEgYG5ldGRldnNpbWAgb3Igc29tZXRoaW5nIHNpbWlsYXIgdGhhdCBhY3R1YWxseSAqdXNlcyogYHBoeWxpbmtgPyBUaGF0IG1pZ2h0IGJlIGEgd2F5IGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MjMxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBgZmJuaWNgIFBoeWxpbmsgTGFuZHNjYXBlKioKCkhtbSwgbm8uIE5vdCBxdWl0ZSB3aGF0IEkgd2FzIHRoaW5raW5nLiBXYWl0Li4uIHdoYXQgYWJvdXQgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2AgZGlyZWN0b3J5PyBJIHNlZW0gdG8gcmVjYWxsIHRoYXQmIzM5O3Mgd2hlcmUgYHBoeWxpbmtgIGlzIHVzZWQuIFRoYXQgbWlnaHQgYmUgYSBiZXR0ZXIgcGxhY2UgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBJdCBzdWdnZXN0cyBhIGNlcnRhaW4gYXBwcm9hY2ggdG8gbmV0d29yayBpbnRlcmZhY2UgbWFuYWdlbWVudCB0aGF0IGNvdWxkIGJlIHBlcnRpbmVudCB0byBteSBjdXJyZW50IHByb2JsZW0sIGRlcGVuZGluZyBvbiB0aGUgc2NvcGUuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYW5kIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRlcmFjdGlvbnMgd2l0aGluIHRoYXQgYXJlYSBvZiB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjQ1MgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBFTkVUQyBEcml2ZXIgZm9yIEV0aGVybmV0IENvbm5lY3Rpdml0eSoqCgpSaWdodCwgc28sIGZpcnN0IHRoaW5ncyBmaXJzdCwgaXQmIzM5O3Mgbm90IGxldmVyYWdpbmcgYFBTR01JSWAsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0LCBidXQgYWxzbyBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZGlmZmVyZW50IHNldCBvZiBjb25zaWRlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGxheWVyIGludGVyZmFjZS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cgb2ZmIHRoZSBiYXQsIGFzIEkgd2FzIGV4cGVjdGluZyBhIGNlcnRhaW4gc2V0IG9mIGxvdy1sZXZlbCBjb25maWd1cmF0aW9ucywgYW5kIG5vdyBJIGNhbiBwcm9jZWVkIGZyb20gdGhlIGNvcnJlY3QgYXNzdW1wdGlvbnMuIEkgbmVlZCB0byBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhlIEVORVRDJiMzOTtzIGNvbmZpZ3VyYXRpb24uCgpUaGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgaW50byB3aGVyZSB0aGUgcmVsZXZhbnQgZHJpdmVyIGNvZGUgd291bGQgcmVzaWRlLiBNeSBmaXJzdCBndWVzcywgbG9naWNhbGx5LCBpcyBnb2luZyB0byBiZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgRnJlZXNjYWxlJiMzOTtzIChvciwgbW9yZSBhY2N1cmF0ZWx5LCBOWFAmIzM5O3MpIEV0aGVybmV0LXJlbGF0ZWQgZHJpdmVycyB0byBiZSBsb2NhdGVkLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBtYWtlZmlsZXMgYW5kIHNvdXJjZSBmaWxlcyB0aGVyZSBmb3IgaW5pdGlhbGl6YXRpb24sIE1BQyBhZGRyZXNzIGNvbmZpZ3VyYXRpb24sIGludGVycnVwdCBoYW5kbGluZywgYW5kIHRyYW5zbWl0L3JlY2VpdmUgcGF0aCBtYW5hZ2VtZW50LiBUaGF0JiMzOTtzIG15IHN0YXJ0aW5nIHBvaW50LiBGcm9tIHRoZXJlLCBJIGNhbiBmaWd1cmUgb3V0IHRoZSBzcGVjaWZpY3MgYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIEVORVRDLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3ODkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3Qgb24gU3l6a2FsbGVyIEZ1enppbmcqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgYW5kIGFzIGZhciBhcyBJIGNhbiB0ZWxsLCBpdCYjMzk7cyBvbmx5IHVzZWQgYnkgdGhlIGBxY2E4MDd4LmNgIFBIWSBkcml2ZXIgYW5kIHRoZSBjb3JlIGBwaHlsaW5rYCBpbmZyYXN0cnVjdHVyZS4gVGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gRWZmZWN0aXZlbHksIHRoaXMgcGF0Y2gganVzdCBleHRlbmRzIGBwaHlsaW5rYCB0byBoYW5kbGUgYSBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmZhY2UgbW9kZSwgYFBTR01JSWAuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gdGhpcyBjaGFuZ2UgYmUgcmVhY2hlZCBhbmQgZnV6emVkIGJ5IHN5emthbGxlciBpbiBhIHR5cGljYWwgc2V0dXA/IEkgZG9uJiMzOTt0IHRoaW5rIHNvLiBTaW5jZSB0aGlzIG1vZGUgaXNuJiMzOTt0IGV4cG9zZWQgYnkgYSB2aXJ0dWFsIGRyaXZlciwgYW5kIGNhbiYjMzk7dCBiZSBzZXQgdXAgZnJvbSB1c2Vyc3BhY2UsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGZ1enphYmxlIGZ1bmN0aW9uYWxpdHkuCgpCdXQsIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIExldCBtZSBxdWlja2x5IGNoZWNrOiBjYW4gYHBoeV9pbnRlcmZhY2VfdGAgZXZlbiBiZSBzZXQgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRocm91Z2ggb3RoZXIgbWVhbnM/IENvdWxkIEkgbWFuaXB1bGF0ZSBpdCB2aWEgYGV0aHRvb2xgPyBObywgdGhhdCBpbnRlcmZhY2UgZG9lc24mIzM5O3QgZXhwb3NlIGBwaHlfaW50ZXJmYWNlX3RgLiBXaGF0IGFib3V0IGBuZXRsaW5rYD8gTm9wZSwgdGhhdCYjMzk7cyBhbHNvIGEgZGVhZCBlbmQ7IGBwaHlfaW50ZXJmYWNlX3RgIGlzIGEga2VybmVsLWludGVybmFsIGVudW0uICBNYXliZSBgc3lzZnNgPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfaW50ZXJmYWNlX3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTIyNT1pbnQgcGh5X2Nvbm5lY3RfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyMjYtXHRcdCAgICAgICB2b2lkICgqaGFuZGxlcikoc3RydWN0IG5ldF9kZXZpY2UgKiksXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEyMjc6XHRcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjI4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEyNjE9c3RydWN0IHBoeV9kZXZpY2UgKnBoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmJ1c19pZCxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTI2Mi1cdFx0XHQgICAgICAgdm9pZCAoKmhhbmRsZXIpKHN0cnVjdCBuZXRfZGV2aWNlICopLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMjYzOlx0XHRcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjY0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE1NTE9c3RhdGljIGludCBwaHlfc2ZwX21vZHVsZV9pbnNlcnQodm9pZCAqdXBzdHJlYW0sIGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE1NTctXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE1NTg6XHRwaHlfaW50ZXJmYWNlX3QgaWZhY2U7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE1NTktXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzUyPWludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNzUzOlx0XHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE3NTQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzc3NAoJCQkJCQkJb3V0cHV0OiAxNDYKCQkJCQkJCXRob3VnaHRzOiAzMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBXb3J0aCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYHBoeV9pbnRlcmZhY2VfdGAgYXJndW1lbnQgaXMgdGhlIGtleSBoZXJlLiBJdCYjMzk7cyBwYXNzZWQgdG8gYHBoeV9jb25uZWN0YCBhbmQgYHBoeV9hdHRhY2hfZGlyZWN0YCwgYW5kIHRob3NlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGJ5IE1BQyBkcml2ZXJzLiBTbywgdGhlIE1BQyBkcml2ZXIgaXMgZnVuZGFtZW50YWxseSB0aGUgb25lIGRldGVybWluaW5nIHRoZSBgcGh5X2ludGVyZmFjZV90YCB2YWx1ZS4gQW5kIHNpbmNlIEkga25vdywgZnJvbSB0aGUgY29udGV4dCBhbmQgbXkgZXhwZXJpZW5jZSwgdGhhdCBubyB2aXJ0dWFsIE1BQyBkcml2ZXIgSSYjMzk7bSBmYW1pbGlhciB3aXRoIHVzZXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCBpdCYjMzk7cyBiYXNpY2FsbHkgaW1wb3NzaWJsZSB0byBldmVuIHJlYWNoIHRoZSBjb2RlIHBhdGggaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4KCkxldCBtZSBqdXN0IHF1aWNrbHkgcmUtZXhhbWluZSB0aGUgcGF0Y2ggaXRzZWxmLi4uIEFoLCBpdCYjMzk7cyBhIHNpbXBsZSBhZGRpdGlvbiB0byBhIHN3aXRjaCBzdGF0ZW1lbnQuIEl0JiMzOTtzIGp1c3QgYWRkaW5nIGEgY2FzZSBmb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdpdGhpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBUaGlzIGlzIGNsZWFybHkgYSBoYXJkd2FyZSBlbmFibGVtZW50IGNoYW5nZS4gSXQmIzM5O3MgZGVzaWduZWQgdG8gc3VwcG9ydCBhIHNwZWNpZmljIGhhcmR3YXJlIGludGVyZmFjZSBtb2RlLiBJdCYjMzk7cyBub3Qgc29tZXRoaW5nIHRoYXQgd291bGQgYmUgdG91Y2hlZCBvciBldmVuIHVzZWQgaW4gbXkgdmlydHVhbCBlbnZpcm9ubWVudHMuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSBhbmQgdGhlIGxhY2sgb2YgdmlydHVhbCBzdXBwb3J0LCBpdCYjMzk7cyBqdXN0IG5vdCB3b3J0aCBmdXp6aW5nLiBJIHdpbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSBoYXJkd2FyZSBpbnRlcmZhY2UgbW9kZSB0byB0aGUgcGh5bGluayBjb3JlLiBUaGlzIHNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZSBpcyBvbmx5IHVzZWQgYnkgcmVhbCBoYXJkd2FyZSBNQUMvUEhZIGRyaXZlcnMgKGUuZy4sIHFjYTgwN3gpIGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBvciBldGh0b29sLiBTaW5jZSBubyB2aXJ0dWFsaXplZCBuZXR3b3JrIGRyaXZlcnMgKGxpa2UgZHVtbXksIHZldGgsIG9yIFVTQiBnYWRnZXQgbmV0d29yayBkcml2ZXJzKSB1c2UgdGhpcyBpbnRlcmZhY2UgbW9kZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSBoYXJkd2FyZSBpbnRlcmZhY2UgbW9kZSB0byB0aGUgcGh5bGluayBjb3JlLiBUaGlzIHNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZSBpcyBvbmx5IHVzZWQgYnkgcmVhbCBoYXJkd2FyZSBNQUMvUEhZIGRyaXZlcnMgKGUuZy4sIHFjYTgwN3gpIGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBvciBldGh0b29sLiBTaW5jZSBubyB2aXJ0dWFsaXplZCBuZXR3b3JrIGRyaXZlcnMgKGxpa2UgZHVtbXksIHZldGgsIG9yIFVTQiBnYWRnZXQgbmV0d29yayBkcml2ZXJzKSB1c2UgdGhpcyBpbnRlcmZhY2UgbW9kZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNTo1NC4xNzYzODI2MzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Nzc0ODg1MDE5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSBoYXJkd2FyZSBpbnRlcmZhY2UgbW9kZSB0byB0aGUgcGh5bGluayBjb3JlLiBUaGlzIHNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZSBpcyBvbmx5IHVzZWQgYnkgcmVhbCBoYXJkd2FyZSBNQUMvUEhZIGRyaXZlcnMgKGUuZy4sIHFjYTgwN3gpIGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBvciBldGh0b29sLiBTaW5jZSBubyB2aXJ0dWFsaXplZCBuZXR3b3JrIGRyaXZlcnMgKGxpa2UgZHVtbXksIHZldGgsIG9yIFVTQiBnYWRnZXQgbmV0d29yayBkcml2ZXJzKSB1c2UgdGhpcyBpbnRlcmZhY2UgbW9kZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM1OjU0LjE3NjM5MTQzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE5MDY5OTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2E2NGE1N2U1MTYxMTg4NGZjNTYwMTMzNDUzZWNkZGVhYzk3NTI4Y1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyA4IDAyOjM1OjUzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuaW5kZXggMThkMmVhZDk3YWE1NC4uOTgzYTFhM2NlZTM3NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbkBAIC0xMDQwLDYgKzEwNDAsNyBAQCBzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbiB7XFxuIFxcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVVTR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzU6NTQuNTk2MTkwNTAxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTczMjkwMjkxNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSBoYXJkd2FyZSBpbnRlcmZhY2UgbW9kZSB0byB0aGUgcGh5bGluayBjb3JlLiBUaGlzIHNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZSBpcyBvbmx5IHVzZWQgYnkgcmVhbCBoYXJkd2FyZSBNQUMvUEhZIGRyaXZlcnMgKGUuZy4sIHFjYTgwN3gpIGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBvciBldGh0b29sLiBTaW5jZSBubyB2aXJ0dWFsaXplZCBuZXR3b3JrIGRyaXZlcnMgKGxpa2UgZHVtbXksIHZldGgsIG9yIFVTQiBnYWRnZXQgbmV0d29yayBkcml2ZXJzKSB1c2UgdGhpcyBpbnRlcmZhY2UgbW9kZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNhNjRhNTdlNTE2MTE4ODRmYzU2MDEzMzQ1M2VjZGRlYWM5NzUyOGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDAyOjM1OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDE4ZDJlYWQ5N2FhNTQuLjk4M2ExYTNjZWUzNzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMTA0MCw2ICsxMDQwLDcgQEAgc3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiB7XG4gXHRzd2l0Y2ggKGludGVyZmFjZSkge1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RVVNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM1OjU0LjU5NjE5MTY5MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDk5MTYzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkFuYWx5emluZyB0aGUgUGh5bGluayBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKClgLiBUaGF0IGZ1bmN0aW9uJ3MgYSBjcnVjaWFsIHBpZWNlLCBhcyBpdCBkZXRlcm1pbmVzIGhvdyB0aGUgUEhZIGludGVyYWN0cyB3aXRoIHRoZSBuZXR3b3JrIHN0YWNrLiBTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW50byB0aGUgYHN3aXRjaGAgc3RhdGVtZW50IHdpdGhpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUoKWAuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgbG9naWMuIEkgbmVlZCB0byBzZWUgaG93IGBQU0dNSUlgIGlzIGJlaW5nIGludGVncmF0ZWQgaW50byB0aGUgZXhpc3RpbmcgaW50ZXJmYWNlIHR5cGUgaGFuZGxpbmcuIFdoYXQgaW1wbGljYXRpb25zIGRvZXMgdGhpcyBoYXZlIG9uIHRoZSBQSFktdG8tTUFDIG5lZ290aWF0aW9uIHByb2Nlc3M/IElzIHRoZXJlIGFueSBhZGRlZCBlcnJvciBjaGVja2luZywgb3IgZG9lcyB0aGlzIHNpbXBseSBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIG1vZGU/IEknbGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIG1vZGVzLCBhbmQgYW55IG5ldyBkZXBlbmRlbmNpZXMgaXQgaW50cm9kdWNlcywgb3IgY2hhbmdlcyB0byB0aGUgYmVoYXZpb3Igb2YgZXhpc3RpbmcgbW9kZXMuIEFuZCBvZiBjb3Vyc2UsIEkgd2lsbCBuZWVkIHRvIGVuc3VyZSB0aGlzIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM1OjU4LjIwNjExMDY1NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTAwNjY3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2dldF9pbmJhbmRfdHlwZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzMz1lbnVtIGluYmFuZF90eXBlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAzOC1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMzk6c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDkwPXN0YXRpYyB2b2lkIHBoeWxpbmtfcGNzX25lZ19tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwOTgtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDk5OlxcdHR5cGUgPSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTEwMC1cXHRpZiAodHlwZSA9PSBJTkJBTkRfTk9ORSkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNzU2PXN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX29wdGljYWwoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODA2LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzgwNzpcXHRpbmJhbmRfdHlwZSA9IHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODA4LVxcdGlmIChpbmJhbmRfdHlwZSA9PSBJTkJBTkRfTk9ORSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNTo1OC4yNTExMjM1MDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODM5MjU3OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGhlcmUuXG5cbioqQW5hbHl6aW5nIFRoaXMgUEhZIEludGVyZmFjZSBQYXRjaCoqXG5cblNvLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGludG8gdGhlIHN3aXRjaCBzdGF0ZW1lbnQuIFRoYXQgbWVhbnMsIG5vdywgd2hlbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgIGlzIGNhbGxlZCwgaXQgc2hvdWxkIGNvcnJlY3RseSBpZGVudGlmeSBgSU5CQU5EX1NHTUlJYCBpbnN0ZWFkIG9mIGZhbGxpbmcgYmFjayB0byB0aGUgZGVmYXVsdCBvciBgSU5CQU5EX05PTkVgLiBXYWl0LCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAgaXRzZWxmIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjdHVhbGx5IGNvcnJlY3QsIGFuZCBpdCBpcyBiZWhhdmluZyBhcyBJIHdvdWxkIGV4cGVjdCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgUEhZIGxheWVyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGhhbmRsaW5nIG9mIGBJTkJBTkRfU0dNSUlgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzAwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MDEuMDkwMzgzNTE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAzOSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAzOTpcXHRzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbjEwNDA6XFx0e1xcbjEwNDE6XFx0XFx0c3dpdGNoIChpbnRlcmZhY2UpIHtcXG4xMDQyOlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbjEwNDM6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbjEwNDQ6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbjEwNDU6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVVTR01JSTpcXG4xMDQ2OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6XFxuMTA0NzpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdfUVhHTUlJOlxcbjEwNDg6XFx0XFx0XFx0LyogVGhlc2UgcHJvdG9jb2xzIGFyZSBkZXNpZ25lZCBmb3IgdXNlIHdpdGggYSBQSFkgd2hpY2hcXG4xMDQ5OlxcdFxcdFxcdCAqIGNvbW11bmljYXRlcyBpdHMgbmVnb3RpYXRpb24gcmVzdWx0IGJhY2sgdG8gdGhlIE1BQyB2aWFcXG4xMDUwOlxcdFxcdFxcdCAqIGluYmFuZCBjb21tdW5pY2F0aW9uLiBOb3RlOiB0aGVyZSBleGlzdCBQSFlzIHRoYXQgcnVuXFxuMTA1MTpcXHRcXHRcXHQgKiB3aXRoIFNHTUlJIGJ1dCBkbyBub3Qgc2VuZCB0aGUgaW5iYW5kIGRhdGEuXFxuMTA1MjpcXHRcXHRcXHQgKi9cXG4xMDUzOlxcdFxcdFxcdHJldHVybiBJTkJBTkRfQ0lTQ09fU0dNSUk7XFxuMTA1NDpcXHRcXG4xMDU1OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDpcXG4xMDU2OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDpcXG4xMDU3OlxcdFxcdFxcdC8qIDEwMDBiYXNlLVggaXMgZGVzaWduZWQgZm9yIHVzZSBtZWRpYS1zaWRlIGZvciBGaWJyZVxcbjEwNTg6XFx0XFx0XFx0ICogY29ubmVjdGlvbnMsIGFuZCB0aHVzIHRoZSBBdXRvbmVnIGJpdCBuZWVkcyB0byBiZVxcbjEwNTk6XFx0XFx0XFx0ICogdGFrZW4gaW50byBhY2NvdW50LiBXZSBhbHNvIGRvIHRoaXMgZm9yIDI1MDBiYXNlLVhcXG4xMDYwOlxcdFxcdFxcdCAqIGFzIHdlbGwsIGJ1dCBkcml2ZXJzIG1heSBub3Qgc3VwcG9ydCB0aGlzLCBzbyBtYXlcXG4xMDYxOlxcdFxcdFxcdCAqIG5lZWQgdG8gb3ZlcnJpZGUgdGhpcy5cXG4xMDYyOlxcdFxcdFxcdCAqL1xcbjEwNjM6XFx0XFx0XFx0cmV0dXJuIElOQkFORF9CQVNFWDtcXG4xMDY0OlxcdFxcbjEwNjU6XFx0XFx0ZGVmYXVsdDpcXG4xMDY2OlxcdFxcdFxcdHJldHVybiBJTkJBTkRfTk9ORTtcXG4xMDY3OlxcdFxcdH1cXG4xMDY4OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MDEuMDkwNTcyNjM3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE5MzQ0MTA2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRoaXMgVGlueSBDaGFuZ2U/IFRoZSBRdWVzdGlvbiBvZiBWaXJ0dWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcHJldHR5IG1pbm9yIG1vZGlmaWNhdGlvbiBpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBJdCdzIGEgc2ltcGxlIHJldHVybiB2YWx1ZSBjaGFuZ2UgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgZnJvbSBgSU5CQU5EX05PTkVgIHRvIGBJTkJBTkRfQ0lTQ09fU0dNSUlgLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgaXMgdGhpcyBldmVuIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8gSXQncyBhIHNtYWxsIGNoYW5nZSwgYnV0IGV2ZW4gc21hbGwgY2hhbmdlcyBjYW4gaGlkZSB2dWxuZXJhYmlsaXRpZXMsIG9mIGNvdXJzZS5cblxuVGhlIGZ1bmN0aW9uJ3MgY2FsbGVkIGluIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAgYW5kIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAsIHdoaWNoIG5hcnJvd3MgZG93biB0aGUgYXR0YWNrIHN1cmZhY2UgdG8gYSBkZWdyZWUuIFRoZSBiaWcgcHJvYmxlbSwgdGhvdWdoLCBpcyBob3cgYWNjZXNzaWJsZSBgcGh5bGlua2AgaXMgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENhbiB3ZSBldmVuIHRyaWdnZXIgdGhpcyBjaGFuZ2UgaW4gYSBjb250cm9sbGVkIHNldHRpbmc/XG5cbkxldCdzIHNlZS4gYHBoeWxpbmtgICppcyogcHJldHR5IHdpZGVseSB1c2VkIGluIG5ldHdvcmsgZHJpdmVycywgc28gdGhhdCdzIGVuY291cmFnaW5nLiBCdXQgY2FuIHdlIHJlYWNoIGl0IHZpYSwgc2F5LCBhIHZpcnR1YWwgbmV0d29yayBkcml2ZXIsIG9yIHRocm91Z2ggTmV0bGluayBvciBldGh0b29sPyBNeSBleHBlcmllbmNlIHN1Z2dlc3RzIGBwaHlsaW5rYCBpcyB1c3VhbGx5IHRoZSBkb21haW4gb2YgcmVhbCBoYXJkd2FyZSBNQUNzLiBCdXQgdGhhdCBkb2Vzbid0IG1lYW4gaXQncyBpbXBvc3NpYmxlLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IHZpcnR1YWwgZHJpdmVycyB1c2luZyBgcGh5bGlua2AgZGlyZWN0bHkuIExldCBtZSBjaGVjayB0aGUgdXNlciBsaXN0IGluIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCB0byBiZSBzdXJlLiBUaGF0IHdvdWxkIG1ha2UgdGhpcyB2dWxuZXJhYmlsaXR5IGZhciBtb3JlIGFjY2Vzc2libGUgYW5kIHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ2NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjA2LjI4NDAxNTY2N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzMwNTExNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMTI4PXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE0MTY6XFx0cHJpdi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cXHRcXHRcXHRcXHQgICAgICAgb2ZfZndub2RlX2hhbmRsZShwcml2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZW9mX25vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz0xMDc0PXN0YXRpYyBpbnQgYWc3MXh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGFnNzF4eCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMTA5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YWctXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBhZy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMTAtXFx0XFx0XFx0XFx0IGFnLVxcdTAwM2VwaHlfaWZfbW9kZSwgXFx1MDAyNmFnNzF4eF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwODY6XFx0YnAtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YnAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBicC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODctXFx0XFx0XFx0XFx0ICAgICBicC1cXHUwMDNlcGh5X2ludGVyZmFjZSwgXFx1MDAyNm1hY2JfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYz0yMDE9c3RhdGljIGludCBkcGFhX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXFx0bWFjX2Rldi1cXHUwMDNldXBkYXRlX3NwZWVkID0gZHBhYV9ldGhfY2dyX3NldF9zcGVlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcXHRtYWNfZGV2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hY19kZXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc2LVxcdFxcdFxcdFxcdFxcdCAgZGV2X2Z3bm9kZShtYWNfZGV2LVxcdTAwM2VkZXYpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTU2MD1pbnQgZHBhYTJfbWFjX2Nvbm5lY3Qoc3RydWN0IGRwYWEyX21hYyAqbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NjI1OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI2LVxcdFxcdFxcdFxcdCBkcG1hY19ub2RlLCBtYWMtXFx1MDAzZWlmX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTcxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkwOlxcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFxcdTAwMjZlbmV0Y19wbF9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkxLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkyLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGNyZWF0ZSBwaHlsaW5rXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkzOlxcdFxcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTk4OmVycl9waHlsaW5rX2NyZWF0ZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk5LVxcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz04NDc9c3RhdGljIGludCBlbmV0Y19wZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzA6XFx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXFx1MDAyNmVuZXRjX21hY19waHlsaW5rX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMxLVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMyOlxcdFxcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0MS1cXHRlbmV0Y19waHlsaW5rX2Rlc3Ryb3kocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTQyOmVycl9waHlsaW5rX2NyZWF0ZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDMtXFx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMTI9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMTQ6aW50IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzE1LVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMzg6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwZi1cXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzOS1cXHRcXHRcXHRcXHQgcGYtXFx1MDAzZWlmX21vZGUsIG9wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQ4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQ5OkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzUwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaDoxMzppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaC0xNC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jPTg1Mz1zdGF0aWMgaW50IGZzX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM6OTMzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZmVwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShmZXAtXFx1MDAzZWRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNmZzX2VuZXRfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jPTM0MTk9c3RhdGljIGludCB1Y2NfZ2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlKiBvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM6MzU3NDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnVnZXRoLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzUtXFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2UsIFxcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM9NTQ4MD1zdGF0aWMgaW50IG12bmV0YV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYy01NTk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM6NTU5OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU2MDAtXFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jPTY4NDA9c3RhdGljIGludCBtdnBwMl9wb3J0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jOjcxNDg6XFx0XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNzE0OS1cXHRcXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZtdnBwMl9waHlsaW5rX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcXHRcXHRwaHlfbGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlfY29uZmlnLCBmd25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE4LVxcdFxcdFxcdFxcdFxcdCAgUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODIzPXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njg6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk2OS1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShtYWMtXFx1MDAzZW9mX25vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz03NDY9c3RydWN0IG5ldF9kZXZpY2UgKmZibmljX25ldGRldl9hbGxvYyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTgzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jOjgzNTpcXHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM2LVxcdFxcdGZyZWVfbmV0ZGV2KG5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oPTExMT1pbnQgZmJuaWNfcGh5bGlua19nZXRfZmVjcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oOjExMzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaC0xMTQtdm9pZCBmYm5pY19waHlsaW5rX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYz0xNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZmJuaWNfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE4NzogKiBmYm5pY19waHlsaW5rX2NyZWF0ZSAtIFBoeWxpbmsgZGV2aWNlIGNyZWF0aW9uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg4LSAqIEBuZXRkZXY6IE5ldHdvcmsgRGV2aWNlIHN0cnVjdCB0byBhdHRhY2ggcGh5bGluayBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5Ni0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTk3OmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZmJuLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzMtXFx0XFx0XFx0XFx0IGZibmljX3BoeWxpbmtfc2VsZWN0X2ludGVyZmFjZShmYm4tXFx1MDAzZWF1aSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzE0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBsYW43NDN4X3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTUwOnN0YXRpYyBpbnQgbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTkzOlxcdHBsID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTk0LVxcdFxcdFxcdCAgICBhZGFwdGVyLVxcdTAwM2VwaHlfaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM2NjQ9c3RhdGljIGludCBsYW43NDN4X3BjaWRldl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzI0OlxcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjUtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jPTc5MT1zdGF0aWMgaW50IGxhbjk2NnhfcHJvYmVfcG9ydChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCwgdTMyIHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM6ODU2OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVxcdFxcdFxcdFxcdCBwb3J0bnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0zODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnNweDVfcG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM5MC1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShjb25maWctXFx1MDAzZW5vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTc3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBvY2Vsb3RfcGh5bGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xNzc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE3ODA6c3RhdGljIGludCBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpwb3J0bnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4MjE6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIyLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xODQzPWludCBvY2Vsb3RfcHJvYmVfcG9ydChzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LCBzdHJ1Y3QgcmVnbWFwICp0YXJnZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4ODA6XFx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4ODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTM3MD1zdGF0aWMgaW50IHN0bW1hY19waHlsaW5rX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE0NjI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZGV2X2Z3bm9kZShwcml2LVxcdTAwM2VkZXZpY2UpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2My1cXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgUEhZX0lOVEVSRkFDRV9NT0RFX1hBVUksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjQtXFx0XFx0XFx0XFx0IFxcdTAwMjZ0bjQwX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU3PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDMtXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydC1cXHUwMDNlc2xhdmUucG9ydF9ucCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM9MTMwPXN0YXRpYyBpbnQgbmdiZV9waHlsaW5rX2luaXQoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jOjE1MDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXFx1MDAyNm5nYmVfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE1MS1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYz00ODI9aW50IHR4Z2JlX3BoeWxpbmtfaW5pdF9hbWwoc3RydWN0IHR4Z2JlICp0eGdiZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM6NTEzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcXHUwMDI2dHhnYmVfbWFjX29wc19hbWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTE0LVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jPTI2OD1zdGF0aWMgaW50IHR4Z2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYzoyOTM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXFx1MDAyNnR4Z2JlX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmMtMjk0LVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTI3OTU9c3RhdGljIGludCBheGllbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTE4OlxcdGxwLVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmxwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMTktXFx0XFx0XFx0XFx0ICAgICBscC1cXHUwMDNlcGh5X21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjItXFx0XFx0cmV0ID0gUFRSX0VSUihscC1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTIzOlxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInBoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTI0LVxcdFxcdGdvdG8gY2xlYW51cF9tZGlvO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz01MTY9c3RhdGljIGludCBwaHlsaW5rX3ZhbGlkYXRlX21hY19hbmRfcGNzKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMxLVxcdGlmIChwY3MpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMjpcXHRcXHQvKiBUaGUgUENTLCBpZiBwcmVzZW50LCBtdXN0IGJlIHNldHVwIGJlZm9yZSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzMtXFx0XFx0ICogaGFzIGJlZW4gY2FsbGVkLiBJZiB0aGUgb3BzIGlzIG5vdCBpbml0aWFsaXNlZCwgcHJpbnQgYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcxLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA3MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzMtICogQHBjczogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3NcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2OT1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5My0gKiBwaHlsaW5rX3NldF9maXhlZF9saW5rKCkgLSBzZXQgdGhlIGZpeGVkIGxpbmtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzk1LSAqIEBzdGF0ZTogYSBwb2ludGVyIHRvIGEgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTgzMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9maXhlZF9saW5rKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMy0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MzQ6ICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzUtICogQGNvbmZpZzogYSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgXFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ4LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0OTpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODUwLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM2LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5Mzc6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk0MC0gKiBwaHlsaW5rX2Rlc3Ryb3koKSAtIGNsZWFudXAgYW5kIGRlc3Ryb3kgdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NDE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQyLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2MC0gKiBwaHlsaW5rX2V4cGVjdHNfcGh5KCkgLSBEZXRlcm1pbmUgaWYgcGh5bGluayBleHBlY3RzIGEgcGh5IHRvIGJlIGF0dGFjaGVkXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjA2PXN0YXRpYyBpbnQgcGh5bGlua19hdHRhY2hfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNi0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjI3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyOC0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeV9kZXZpY2UuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjMtICogcGh5bGlua19vZl9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgRFQgbW9kZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjY1LSAqIEBkbjogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI3OT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX29mX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4Mi0gKiBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgZndub2RlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODQtICogQGZ3bm9kZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBmd25vZGVfaGFuZGxlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzM4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0Mi0gKiAgIGluc3RhbmNlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM0MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM3Mz1zdGF0aWMgdm9pZCBwaHlsaW5rX2xpbmtfY2hhbmdlZChzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgdXAsIGNvbnN0IGNoYXIgKndoYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODItICogcGh5bGlua19tYWNfY2hhbmdlKCkgLSBub3RpZnkgcGh5bGluayBvZiBhIGNoYW5nZSBpbiBNQUMgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzg0LSAqIEB1cDogaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxpbmsgaXMgY3VycmVudGx5IHVwLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDE1PXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI1LSAqIHBoeWxpbmtfc3RhcnQoKSAtIHN0YXJ0IGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQyNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQ4OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0YXJ0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5MS0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDkyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5My0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTIyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RvcCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjUtICogcGh5bGlua19yeF9jbGtfc3RvcF9ibG9jaygpIC0gYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrIGluIExQSVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjUyNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU1MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU1NC0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2soKSAtIHVuYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTU1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU1Ni0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTkzPXN0YXRpYyBib29sIHBoeWxpbmtfcGh5X3BtX3NwZWVkX2N0cmwoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAwLSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwMTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDItICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2NTI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdXNwZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1NS0gKiBwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKCkgLSBwcmVwYXJlIHRvIHJlc3VtZSBhIG5ldHdvcmsgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjU2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1Ny0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjc3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjgwLSAqIHBoeWxpbmtfcmVzdW1lKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSByZXN1bWUgZXZlbnRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2ODE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjgyLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3MjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIzLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3MjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzI1LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyB0byBob2xkIHRoZSByZWFkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjAtICogcGh5bGlua19ldGh0b29sX3NldF93b2woKSAtIHNldCB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc2Mi0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjg4OT1zdGF0aWMgdm9pZCBwaHlsaW5rX2dldF9rc2V0dGluZ3MoY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5MDQtICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19nZXQoKSAtIGdldCB0aGUgY3VycmVudCBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTA1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwNi0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIHRvIGhvbGQgbGluayBzZXR0aW5nc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTU3PXN0YXRpYyBib29sIHBoeWxpbmtfdmFsaWRhdGVfcGNzX2luYmFuZF9hdXRvbmVnKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3OC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTc5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4MC0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIGZvciB0aGUgZGVzaXJlZCBtb2Rlc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTQ1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0OC0gKiBwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCgpIC0gcmVzdGFydCBuZWdvdGlhdGlvblxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNTAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE3MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzMtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE3NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzUtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTg2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODktICogcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKCkgLSBzZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE5MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxOTEtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjcyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNzYtICogICBjb3VudGVyXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjc3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNzgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI5NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI5OC0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSgpIC0gcmVhZCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjk5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMwMC0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMzIxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMyNC0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSgpIC0gc2V0IHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzMjU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI2LSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM0OTU9c3RhdGljIGludCBwaHlsaW5rX21paV93cml0ZShzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGludCBwaHlfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTMtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzUxNDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTUtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBpZnJlcSBmb3Igc29ja2V0IGlvY3Rsc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5Mi0gKiAgIGxpbmsgcGFydG5lcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTk0LSAqIEBzeW5jOiBwZXJmb3JtIGFjdGlvbiBzeW5jaHJvbm91c2x5XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM2MTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zcGVlZF9kb3duKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNy0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjE4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxOS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2M0NV9wY3NfZ2V0X3N0YXRlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM3NC0gKlxcdFxcdFxcdFxcdCB3aGljaCBsb3NlcyBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM3NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNzYtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM5MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5NS0gKlxcdFxcdFxcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzk2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5Ny0gKlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjA6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyMS1cXHRcXHRcXHRcXHQgcGh5X2lmX21vZGUsIFxcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4MzgtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShwYywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODQwLVxcdFxcdFxcdFxcdCBkZXYtXFx1MDAzZWludGVyZmFjZSwgXFx1MDAyNmxhbjc4eHhfcGh5bGlua19tYWNfb3BzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MDYuNDE3MDcxMDMzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY4MjQxNDM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFVTQi10by1FdGhlcm5ldCBEZXZpY2UgRW11bGF0aW9uIHdpdGggUFNHTUlJKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHdlIGNhbiBlbXVsYXRlIFVTQi10by1FdGhlcm5ldCBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYGFzaXhfZGV2aWNlcy5jYCBhbmQgYGxhbjc4eHguY2AuIEJvdGggb2YgdGhlc2UgdXNlIGBwaHlsaW5rX2NyZWF0ZWAsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIHRoZXkncmUgZ29vZCBjYW5kaWRhdGVzIGZvciB0ZXN0aW5nIHdpdGggZHVtbXlfaGNkIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdpdGhpbiBzeXprYWxsZXIuXG5cbkJ1dCB3YWl0LCBJIHNlZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gdGhlIG1peCwgYW5kIHRoYXQncyB0aHJvd2luZyBhIHdyZW5jaCBpbiB0aGUgd29ya3MuIFRoaXMgaXMgYSAqc3BlY2lmaWMqIG1vZGUuIENhbiB3ZSBhY3R1YWxseSB0cmlnZ2VyIHRoaXMgd2l0aCB2aXJ0dWFsIGRyaXZlcnM/IFRoYXQncyB0aGUga2V5IHF1ZXN0aW9uLlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gZmlndXJlIG91dCBpZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgc29tZXRoaW5nIGNvbmZpZ3VyYWJsZSB2aWEgdXNlcnNwYWNlIHRvb2xzIGxpa2UgbmV0bGluayBvciBldGh0b29sLCBvciBpZiBpdCdzIHN0cmljdGx5IHRpZWQgdG8gZGV2aWNlIHRyZWUgYmluZGluZ3Mgb3IgdW5kZXJseWluZyBoYXJkd2FyZSBwcm9wZXJ0aWVzLiBNeSBleHBlcmllbmNlIHN1Z2dlc3RzIHRoYXQgYHBoeV9pbnRlcmZhY2VfdGAgaXMgdXN1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSBkcml2ZXIgYmFzZWQgb24gZGV2aWNlIHRyZWUgaW5mb3JtYXRpb24gb3IgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLCBzbyB0aGlzIGZlZWxzIGxpa2UgYSBsb25nIHNob3QuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQuXG5cblRoZXJlZm9yZSwgSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIHVzZWQgc28gSSBjYW4gdW5kZXJzdGFuZCBob3cgdGhpcyBtb2RlIGlzIGNvbmZpZ3VyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTk3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjExLjA5OTQ4ODU4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NDIyMzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cXHRcXHRyZXR1cm4gNDtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cXHRcXHRyZXR1cm4gNTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cXHRcXHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcXHRcXHRcXHRcXHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVxcdFxcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVxcdGRlZmF1bHQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjExLjIzMzkxNzExM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzA1OTQzMDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFJlYWNoIG9mIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgcHJpbWFyaWx5IGEgUXVhbGNvbW0tc3BlY2lmaWMgdGhpbmcsIHVzZWQgaW4gdGhlIGBxY2E4MDd4LmNgIGRyaXZlciBhbmQsIG9mIGNvdXJzZSwgdGhlIGNvcmUgUEhZL3BoeWxpbmsgY29kZS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMsIGNhbiB3ZSBhY3R1YWxseSAqaGl0KiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgIHdpdGggYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdoZW4gd2UncmUgcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBUaGF0J3MgdGhlIGNydXggb2YgdGhpcy5cblxuSWYgd2UgY2FuIHNwaW4gdXAgYSB2aXJ0dWFsIG5ldGRldiwgY29uZmlndXJlIGl0IHRvIHVzZSBgcGh5bGlua2AsIGFuZCB0aGVuICpmb3JjZSogaXRzIGludGVyZmFjZSBtb2RlIHRvIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB0aHJvdWdoIG5ldGxpbmsgb3Igc3lzZnMg4oCTICp0aGVuKiB3ZSBoYXZlIGEgc2NlbmFyaW8gdG8gY29uc2lkZXIuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiBgcGh5X2ludGVyZmFjZV90YCBiZSBjb250cm9sbGVkIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rPyBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoYXQgbGV2ZWwgb2YgY29udHJvbCBpcyBleHBvc2VkLlxuXG5UaGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIGFjdHVhbGx5IGFjY2Vzc2libGUgYW5kIGNvbmZpZ3VyYWJsZSBmcm9tIHVzZXJzcGFjZS4gV2UgbmVlZCB0byBmaW5kIG91dCBpZiBpdCBpcyBwb3NzaWJsZSB0byBzZXQgdGhlIGludGVyZmFjZSBtb2RlIGZyb20gdXNlcnNwYWNlLCBhcyB0aGlzIGlzIHRoZSBkZWNpZGluZyBmYWN0b3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NDQ3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjE1LjkzOTg2Mjg2NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg5MDA4ODIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MTYuMDE4Nzc2NDE2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTYwNTU2MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBJbnRlcmZhY2UgQ29uZmlndXJhdGlvbioqXG5cbkhtbSwgdGhpcyBzb3VuZHMgbGlrZSB3ZSdyZSBkaWdnaW5nIGludG8gbmV0d29yayBpbnRlcmZhY2UgY29uZmlndXJhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIG5vdCByZWludmVudCB0aGUgd2hlZWwgaGVyZS4gQmVmb3JlIEkgc3RhcnQgZ29pbmcgZG93biBhbnkgcmFiYml0IGhvbGVzLCBJJ2QgYmV0dGVyIGNvbnNpZGVyIHRoZSBzdGFuZGFyZCB0b29scy4gKmV0aHRvb2wqIHNwcmluZ3MgdG8gbWluZCDigJMgaXQncyB0aGUgZ28tdG8gdXRpbGl0eSBmb3IgcXVlcnlpbmcgYW5kIGNvbmZpZ3VyaW5nIEV0aGVybmV0IGRldmljZXMgYXQgYSBsb3cgbGV2ZWwuIEFuZCB0aGVuIHRoZXJlJ3MgKnJ0bmV0bGluayogd2hpY2ggcHJvdmlkZXMgYSBtb3JlIHZlcnNhdGlsZSBhbmQgbW9kZXJuIGludGVyZmFjZSwgc28gdGhhdCBpcyBhbm90aGVyIHRvIHF1aWNrbHkgY2hlY2suXG5cbk5vdywgaWYgd2UncmUgZGVhbGluZyB3aXRoICpwaHlfaW50ZXJmYWNlX3QqLCB0aGF0J3MgZ2V0dGluZyBkb3duIGludG8gdGhlIHdlZWRzIG9mIHRoZSBwaHlzaWNhbCBsYXllciBhYnN0cmFjdGlvbi4gU28sIHRoZSBrZXkgcXVlc3Rpb24gaGVyZSBpcywgd2hlcmUgaXMgdGhhdCB2YWx1ZSBhY3R1YWxseSBiZWluZyBzZXQgb3IgbW9kaWZpZWQgZnJvbSB1c2Vyc3BhY2U/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gd2hlcmUgdGhhdCBzdHJ1Y3R1cmUgaXMgdXNlZCwgYW5kIGZpZ3VyZSBvdXQgaG93IGl0J3MgYmVpbmcgcG9wdWxhdGVkIGZyb20gdGhlIGFwcGxpY2F0aW9uIHNpZGUuIFRoYXQncyB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvOiBnZXQgYSBoYW5kbGUgb24gd2hlcmUgdGhvc2UgdmFsdWVzIGFyZSBjb21pbmcgZnJvbSBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCB0aGUgcG9zc2libGUgc291cmNlcyBvZiBhbnkgaXNzdWUgd2UncmUgZmFjaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjkyMywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjE5LjU3NDgzNDcyN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwNjA3MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2ludGVyZmFjZV90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9vZl9uZXQuYy0yNi0gKi9cXG5uZXQvY29yZS9vZl9uZXQuYzoyNzppbnQgb2ZfZ2V0X3BoeV9tb2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHBoeV9pbnRlcmZhY2VfdCAqaW50ZXJmYWNlKVxcbm5ldC9jb3JlL29mX25ldC5jLTI4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MTkuNjIyOTAxMzUxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODI0NDU1MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBvZiB0aGUgUEhZIEludGVyZmFjZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZSBgcGh5X2ludGVyZmFjZV90YCBpcyBiZWluZyBjb25maWd1cmVkLCBhbmQgaXQgYXBwZWFycywgYmFzZWQgb24gd2hhdCBJJ3ZlIHNlZW4sIHRoYXQgRGV2aWNlIFRyZWUgKGBvZl9nZXRfcGh5X21vZGVgKSBwbGF5cyBhIHNpZ25pZmljYW50IHJvbGUgaGVyZS4gVGhhdCBtYWtlcyBzZW5zZSwgYnV0IGl0IGdvdCBtZSB3b25kZXJpbmc6IGNhbiB3ZSBtYW5pcHVsYXRlIHRoaXMgdmFsdWUsIG9yIGV2ZW4gc2V0IGl0IGluaXRpYWxseSwgdmlhIGEgbmV0bGluayBpbnRlcmZhY2U/IFRoYXQgd291bGQgYmUgdXNlZnVsIGZvciBhIG1vcmUgZHluYW1pYyBzeXN0ZW0uXG5cbk15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBpbnRvIHRoZSBrZXJuZWwgaGVhZGVycywgc3BlY2lmaWNhbGx5IGBpbmNsdWRlL3VhcGkvbGludXgvZXRodG9vbC5oYCBhbmQgYGluY2x1ZGUvdWFwaS9saW51eC9pZl9saW5rLmhgLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzIHdoZW4geW91J3JlIGRlYWxpbmcgd2l0aCBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uIGFuZCBtYW5hZ2VtZW50IGZyb20gdXNlcnNwYWNlLiBJJ2xsIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZXRodG9vbCBjb21tYW5kcyBvciBpZl9saW5rIGF0dHJpYnV0ZXMgdGhhdCByZWxhdGUgdG8gUEhZIGludGVyZmFjZSBzZWxlY3Rpb24gb3IgbW9kaWZpY2F0aW9uLiBIb3BlZnVsbHksIHRoZXJlJ3Mgc29tZXRoaW5nIHRoZXJlIHRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgaW5zaWdodCBhbmQgY29uZmlybXMgb3IgZGVuaWVzIHRoZSBhYmlsaXR5IHRvIG1vZGlmeSB0aGUgUEhZIGludGVyZmFjZSB2aWEgbmV0bGluay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTczMTEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNjoyMy4yMDUzNTAwMzlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzUxNTE0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfaW50ZXJmYWNlX3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS91YXBpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MjMuMjYyNzExNTEzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTM4OTAzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYHBoeV9pbnRlcmZhY2VfdGAgQ29kZSBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJJ3ZlIGhpdCBhIHNuYWcuIFRoaXMgYHBoeV9pbnRlcmZhY2VfdGAgaXMgYW4gaW50ZXJuYWwga2VybmVsIGVudW0g4oCTIHRoYXQncyBhIGtleSBkZXRhaWwuIEl04oCZcyBnb3QgbWUgdGhpbmtpbmc6IGhvdyBjYW4gSSBhY3R1YWxseSAqdHJpZ2dlciogdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGggaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LCBlc3BlY2lhbGx5IHdpdGhpbiBzb21ldGhpbmcgbGlrZSBRRU1VPyBJJ20gdHJ5aW5nIHRvIHRlc3QgdGhpcyB0aG9yb3VnaGx5LCBhbmQgYSB2aXJ0dWFsaXplZCBzZXR1cCBpcyBteSBiZXN0IGJldCBmb3IgcmVwZWF0YWJpbGl0eS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHBsYXkgYXJvdW5kIHdpdGggYGR1bW15X2hjZGAgY29tYmluZWQgd2l0aCBhIFVTQiBuZXR3b3JrIGRyaXZlci4gU29tZXRoaW5nIGxpa2UgYGxhbjc4eHhgIG9yIGBhc2l4YCBjb21lcyB0byBtaW5kOyB0aGV5IGJvdGggdXRpbGl6ZSBgcGh5bGlua2AuIEJ1dCBoZXJlJ3MgdGhlIHJ1YjogVGhlaXIgaW50ZXJmYWNlIG1vZGUgc2VlbXMgdG8gYmUgaGFyZGNvZGVkLCBvciByZWFkIGluIGZyb20gZWl0aGVyIHRoZSBFRVBST00gb3IgRFQuIEZvciBleGFtcGxlLCB3aGVuIGxvb2tpbmcgYXQgYGxhbjc4eHhgLi4uIEkgc3VzcGVjdCB0aGlzIGlzIHdoZXJlIEknbGwgaGl0IHRoZSBsaW1pdGF0aW9uLiBUaGlzIHdpbGwgcmVxdWlyZSBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NjQxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MjYuOTc2NjA2ODU3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTI0NTk5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXYtXFx1MDAzZWludGVyZmFjZSA9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yNjQ5PXN0YXRpYyBzdHJ1Y3QgcGh5X2RldmljZSAqbGFuNzh4eF9nZXRfcGh5KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjU5LVxcdFxcdFxcdC8qIEV4dGVybmFsIFJHTUlJIFBIWSBkZXRlY3RlZCAqL1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjY2MDpcXHRcXHRcXHRkZXYtXFx1MDAzZWludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2NjEtXFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19pbnRlcm5hbCA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjY5LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjY3MDpcXHRcXHRkZXYtXFx1MDAzZWludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI2NzEtXFx0XFx0LyogTm8gUEhZIGZvdW5kIOKAkyBmYWxsYmFjayB0byBmaXhlZCBQSFkgKGUuZy4gS1NaIHN3aXRjaCBib2FyZCkgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjY3OS1cXHRcXHQvKiBUaGVzZSB1c2UgaW50ZXJuYWwgR01JSS1jb25uZWN0ZWQgUEhZICovXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyNjgwOlxcdFxcdGRldi1cXHUwMDNlaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yNjgxLVxcdFxcdHBoeWRldi1cXHUwMDNlaXNfaW50ZXJuYWwgPSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNjoyNy4wMjE4NjIxMTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM5MTMzNTMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqQ29uc2lkZXJpbmcgUEhZIEludGVyZmFjZSBNb2RlcyoqXG5cbkFscmlnaHQsIHNvIHRoZSBzeXN0ZW0ncyBjb25maWd1cmluZyB0aGUgUEhZIGludGVyZmFjZSBtb2RlLCB3aGljaCBpcyBjcnVjaWFsIGZvciBkZXRlcm1pbmluZyBob3cgaXQgY29tbXVuaWNhdGVzIHdpdGggdGhlIHBoeXNpY2FsIGxheWVyLiBJdCdzIGV4cGxpY2l0bHkgc2V0dGluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEYCwgYFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSWAsIG9yIGBQSFlfSU5URVJGQUNFX01PREVfR01JSWAuIFRoYXQncyBzdGFuZGFyZCBzdHVmZiwgY292ZXJpbmcgdGhlIGNvbW1vbiBnaWdhYml0IGludGVyZmFjZXMuIEJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIHdoYXQgYWJvdXQgYSBtb3JlIG9ic2N1cmUgUEhZIGludGVyZmFjZSBsaWtlIHRoZSBvbmUgdXNlZCBieSBhbiBgYXNpeGAgY2hpcD8gSXMgdGhhdCBwcm9wZXJseSBhZGRyZXNzZWQgaGVyZT8gVGhhdCBuZWVkcyB0byBiZSBjb25zaWRlcmVkLCBiZWNhdXNlIGl0IGNvdWxkIHJlcXVpcmUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBhcHByb2FjaCB0byBpbnRlcmZhY2UgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoaXMgY29uZmlndXJhdGlvbiBoYW5kbGVzIGl0LCBvciBpZiBpdCBuZWVkcyBzZXBhcmF0ZSBoYW5kbGluZy4gSSBhbSBkZWZpbml0ZWx5IGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBzdXJlIHRvIGFjY291bnQgZm9yIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzIyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MzIuNDEzMjAwMjAzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzc4ODMyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfaWZfbW9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAxLVxcdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2ID0gZGV2LVxcdTAwM2Vkcml2ZXJfcHJpdjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODAyOlxcdHBoeV9pbnRlcmZhY2VfdCBwaHlfaWZfbW9kZTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAzLVxcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxNS1cXHRpZiAocHJpdi1cXHUwMDNlZW1iZF9waHkpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxNjpcXHRcXHRwaHlfaWZfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE3LVxcdGVsc2VcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODE4OlxcdFxcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIwLVxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjE6XFx0XFx0XFx0XFx0IHBoeV9pZl9tb2RlLCBcXHUwMDI2YXg4ODc3Ml9waHlsaW5rX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjItXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6MzIuNDU2OTkzNDk4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjA4MDE0MTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFBTR01JSSBJbnRlcmZhY2UgaW4gVVNCIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyB0aGUgVVNCIGRyaXZlcnMgSSdtIGxvb2tpbmcgYXQgc2VlbSB0byBiZSBzdGlja2luZyB3aXRoIGVpdGhlciBgUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMYCBvciBgUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUlgLiBUaGF0IG1lYW5zLCByaWdodCBvZmYgdGhlIGJhdCwgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzbid0IGJlaW5nIGRpcmVjdGx5IHV0aWxpemVkIGhlcmUuIFRoZSBxdWVzdGlvbiBub3cgYmVjb21lcywgaXMgdGhlcmUgYW55ICpvdGhlciogd2F5IHRvIHRyaWdnZXIgdGhlIHVzYWdlIG9mIHRoYXQgYFBTR01JSWAgbW9kZSB3aXRoaW4gdGhpcyBjb250ZXh0P1xuXG5NeSBuZXh0IHRob3VnaHQgaXMgdG8gZGlnIGludG8gYGRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guY2AuIFRoaXMgaXMgYSBQSFkgZHJpdmVyLCB3aGljaCBpcyBwcm9taXNpbmcuIFRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gSSBpbnN0YW50aWF0ZSBhIFBIWSBkZXZpY2UgdXNpbmcgKnRoaXMqIGRyaXZlciB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBtZGlvYCBuZXRsaW5rIG9yIHN5c2ZzPyBJIHZhZ3VlbHkgcmVjYWxsIHRoYXQgdGhlcmUgaXNuJ3QgYSBkZWRpY2F0ZWQgbmV0bGluayBpbnRlcmZhY2UgZm9yIGluc3RhbnRpYXRpbmcgUEhZcy4gSXQgd291bGQgbGlrZWx5IGhhdmUgdG8gYmUgZG9uZSB0aHJvdWdoIHRoZSBNRElPIGJ1cyBpdHNlbGYsIHJpZ2h0P1xuXG5BaCwgcmlnaHQsIGBxY2E4MDd4YCAqaXMqIGEgUEhZIGRyaXZlci4gQW5kIFBIWSBkcml2ZXJzIGFyZSwgb2YgY291cnNlLCAqcHJvYmVkKiB3aGVuIGEgUEhZIGRldmljZSBpcyBkZXRlY3RlZCBvbiBhbiBNRElPIGJ1cy4gU28sIGNhbiBJIGNsZXZlcmx5IGNyZWF0ZSBhIHZpcnR1YWwgTURJTyBidXMgYW5kIHRoZW4gc2ltdWxhdGUgYSB2aXJ0dWFsIFBIWSBkZXZpY2U/IEkgcmVtZW1iZXIgc2VlaW5nIGBtZGlvLW1vY2t1cGAgb3IgYG1kaW8tYmNtLXVuaW1hY2AgZmxvYXRpbmcgYXJvdW5kLi4uXG5cbkJ1dCBob2xkIG9uISBFdmVuIGlmIEkgY2FuIGdldCBhIHZpcnR1YWwgTURJTyBidXMgYW5kIFBIWSBzZXQgdXAsIHRoZSBgcWNhODA3eGAgZHJpdmVyIHNwZWNpZmljYWxseSByZWFkcyBgcGFja2FnZV9tb2RlYCBmcm9tIHRoZSBkZXZpY2UgdHJlZTogYG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKG5vZGUsIFwicWNvbSxwYWNrYWdlLW1vZGVcIiwgXHUwMDI2cGFja2FnZV9tb2RlX25hbWUpYC4gU28sIGl0J3MgZXhwZWN0aW5nIGEgZGV2aWNlIHRyZWUgbm9kZSB3aXRoIGEgYHFjb20scGFja2FnZS1tb2RlID0gXCJwc2dtaWlcImAgcHJvcGVydHksIHNwZWNpZmljYWxseS4gV2VsbCwgaW4gYSBzdGFuZGFyZCB4ODYgUUVNVSBlbnZpcm9ubWVudCwgSSBjZXJ0YWlubHkgZG9uJ3QgaGF2ZSB0aGF0IG5vZGUgaW4gdGhlIGRldmljZSB0cmVlLi4uXG5cbldhaXQsICp3YWl0Ki4gQmVmb3JlIEkgZ28gZG93biB0aGUgcmFiYml0IGhvbGUgb2YgdmlydHVhbCBNRElPIGJ1c2VzLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgc2VlIGlmIHRoZXJlIGFyZSAqYW55KiBvdGhlciBkcml2ZXJzIGluIHRoZSBzeXN0ZW0gdGhhdCBhY3R1YWxseSB1dGlsaXplIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYC4gTWF5YmUgSSdtIGJhcmtpbmcgdXAgdGhlIHdyb25nIHRyZWUgZW50aXJlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTgxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjQyLjY2NTAwOTU5OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMTM1ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cXHRcXHRyZXR1cm4gNDtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cXHRcXHRyZXR1cm4gNTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cXHRcXHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcXHRcXHRcXHRcXHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVxcdFxcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVxcdGRlZmF1bHQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjQyLjgxNzE1NDQ1M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTM3MzQ2MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgUEhZIExpbmsgUGFyc2UgTW9kZSoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIGp1c3QgcmV2aWV3aW5nIHRoZSBgcGh5bGlua19wYXJzZV9tb2RlYCBmdW5jdGlvbiBhbmQgaXQgbG9va3MgbGlrZSBpdCBzdXBwb3J0cyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgYXMgd2VsbC4gVGhhdCdzIGludGVyZXN0aW5nLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBjb3JyZWN0bHkgaGFuZGxlZC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IHRoZSBjb2RlIHJlbGF0ZWQgdG8gYHBoeWxpbmtfcGFyc2VfbW9kZWAgYW5kIGNvbmZpcm0gdGhhdCBpdCdzIHRha2luZyBpbnRvIGFjY291bnQgdGhlIFBTR01JSSBtb2RlLiBMZXQncyBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBsb2dpY2FsIG92ZXJzaWdodHMgdGhlcmUuIEl04oCZcyBhbHdheXMgZ29vZCBwcmFjdGljZSB0byByZS1leGFtaW5lIHRoZSBjb2RlIHdoZW4gbmV3IGZ1bmN0aW9uYWxpdGllcyBhcmUgYWRkZWQgdG8gZW5zdXJlIGNvcnJlY3QgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzgxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6NDUuNzU0NTAzNDU1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5Nzk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc3NCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc3NDpcXHRzdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuIDc3NTpcXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKVxcbiA3NzY6XFx0e1xcbiA3Nzc6XFx0XFx0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmRuO1xcbiA3Nzg6XFx0XFx0Y29uc3QgY2hhciAqbWFuYWdlZDtcXG4gNzc5OlxcdFxcdHVuc2lnbmVkIGxvbmcgY2FwcztcXG4gNzgwOlxcdFxcbiA3ODE6XFx0XFx0aWYgKHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZWRlZmF1bHRfYW5faW5iYW5kKVxcbiA3ODI6XFx0XFx0XFx0cGwtXFx1MDAzZWNmZ19saW5rX2FuX21vZGUgPSBNTE9fQU5fSU5CQU5EO1xcbiA3ODM6XFx0XFxuIDc4NDpcXHRcXHRkbiA9IGZ3bm9kZV9nZXRfbmFtZWRfY2hpbGRfbm9kZShmd25vZGUsIFxcXCJmaXhlZC1saW5rXFxcIik7XFxuIDc4NTpcXHRcXHRpZiAoZG4gfHwgZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoZndub2RlLCBcXFwiZml4ZWQtbGlua1xcXCIpKVxcbiA3ODY6XFx0XFx0XFx0cGwtXFx1MDAzZWNmZ19saW5rX2FuX21vZGUgPSBNTE9fQU5fRklYRUQ7XFxuIDc4NzpcXHRcXHRmd25vZGVfaGFuZGxlX3B1dChkbik7XFxuIDc4ODpcXHRcXG4gNzg5OlxcdFxcdGlmICgoZndub2RlX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGZ3bm9kZSwgXFxcIm1hbmFnZWRcXFwiLCBcXHUwMDI2bWFuYWdlZCkgPT0gMCBcXHUwMDI2XFx1MDAyNlxcbiA3OTA6XFx0XFx0ICAgICBzdHJjbXAobWFuYWdlZCwgXFxcImluLWJhbmQtc3RhdHVzXFxcIikgPT0gMCkpIHtcXG4gNzkxOlxcdFxcdFxcdGlmIChwbC1cXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpIHtcXG4gNzkyOlxcdFxcdFxcdFxcdHBoeWxpbmtfZXJyKHBsLFxcbiA3OTM6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJjYW4ndCB1c2UgYm90aCBmaXhlZC1saW5rIGFuZCBpbi1iYW5kLXN0YXR1c1xcXFxuXFxcIik7XFxuIDc5NDpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNzk1OlxcdFxcdFxcdH1cXG4gNzk2OlxcdFxcbiA3OTc6XFx0XFx0XFx0cGwtXFx1MDAzZWNmZ19saW5rX2FuX21vZGUgPSBNTE9fQU5fSU5CQU5EO1xcbiA3OTg6XFx0XFx0fVxcbiA3OTk6XFx0XFxuIDgwMDpcXHRcXHRpZiAocGwtXFx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0lOQkFORCkge1xcbiA4MDE6XFx0XFx0XFx0bGlua21vZGVfemVybyhwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG4gODAyOlxcdFxcdFxcdHBoeWxpbmtfc2V0KHBsLVxcdTAwM2VzdXBwb3J0ZWQsIE1JSSk7XFxuIDgwMzpcXHRcXHRcXHRwaHlsaW5rX3NldChwbC1cXHUwMDNlc3VwcG9ydGVkLCBBdXRvbmVnKTtcXG4gODA0OlxcdFxcdFxcdHBoeWxpbmtfc2V0KHBsLVxcdTAwM2VzdXBwb3J0ZWQsIEFzeW1fUGF1c2UpO1xcbiA4MDU6XFx0XFx0XFx0cGh5bGlua19zZXQocGwtXFx1MDAzZXN1cHBvcnRlZCwgUGF1c2UpO1xcbiA4MDY6XFx0XFxuIDgwNzpcXHRcXHRcXHRzd2l0Y2ggKHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UpIHtcXG4gODA4OlxcdFxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbiA4MDk6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbiA4MTA6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbiA4MTE6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVVTR01JSTpcXG4gODEyOlxcdFxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbiA4MTM6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XFxuIDgxNDpcXHRcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxcbiA4MTU6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcXG4gODE2OlxcdFxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JUQkk6XFxuIDgxNzpcXHRcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6XFxuIDgxODpcXHRcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XFxuIDgxOTpcXHRcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV81R0JBU0VSOlxcbiA4MjA6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVI6XFxuIDgyMTpcXHRcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxcbiA4MjI6XFx0XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSTpcXG4gODIzOlxcdFxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0tSOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNjo0NS43NTQ3MDMwMTVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQ5NDgzNTQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBDb2RlIFBhdGggZm9yIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgc3BlY2lmaWNhbGx5LCB0aGUgYWRkaXRpb24gb2YgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRvIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAuIE15IGluaXRpYWwgdGhvdWdodCBpczogQ2FuIHRoaXMgY29kZSBwYXRoIGFjdHVhbGx5IGJlIHRyaWdnZXJlZD8gVG8gZ2V0IHRoZXJlLCBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIGEgYHBoeWxpbmtgIGluc3RhbmNlIHRoYXQgaGFzIGBpbnRlcmZhY2VgIHNldCB0byBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIFRoYXQgYGludGVyZmFjZWAgaXMgYXNzaWduZWQgZHVyaW5nIGVpdGhlciBgcGh5bGlua19jcmVhdGVgIG9yIHBvc3NpYmx5IHRocm91Z2ggYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYC5cblxuTXkgbmV4dCBsaW5lIG9mIHRoaW5raW5nIGlzLCBkb2VzIGFueSBkcml2ZXIgKmFjdHVhbGx5KiBzZXQgYGludGVyZmFjZWAgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgPyBUaGUgY29kZSBzZWVtcyB0byBpbmRpY2F0ZSB0aGF0IGBxY2E4MDd4LmNgIHVzZXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBIb3dldmVyLCB3YWl0LCB0aGF0J3MgYSBQSFkgZHJpdmVyISBJdCBzZXRzIGBwcml2LVx1MDAzZXBhY2thZ2VfbW9kZWAgdG8gdGhhdCB2YWx1ZS4gU28sIGl0IGRvZXNuJ3QgZGlyZWN0bHkgY29uZmlndXJlIHRoZSBgcGh5bGlua2AncyBgaW50ZXJmYWNlYCwgd2hpY2ggaXMgZ29vZCBzaW5jZSBQSFkgZHJpdmVycyBhcmVuJ3QgcmVzcG9uc2libGUgZm9yIGBwaHlsaW5rYCBpbnN0YW5jZSBjcmVhdGlvbi4gVGhlIE1BQyBkcml2ZXIgaGFuZGxlcyB0aGUgYHBoeWxpbmtgIGluc3RhbmNlLlxuXG5TbyB0aGUgcXVlc3Rpb24gc2hpZnRzOiBpcyB0aGVyZSBhbnkgTUFDIGRyaXZlciB0aGF0J3MgKmNvbmZpZ3VyZWQqIHRvIHVzZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWA/IE15IHVzdWFsIGFwcHJvYWNoIHdvdWxkIGJlIHRvIGNoZWNrIGlmIGFueSBNQUMgZHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIHRvIHVzZSB0aGlzIGludGVyZmFjZSBtb2RlLiBPZnRlbiwgTUFDIGRyaXZlcnMgcmVhZCB0aGUgYHBoeS1tb2RlYCBvciBgcGh5LWNvbm5lY3Rpb24tdHlwZWAgZnJvbSB0aGUgZGV2aWNlIHRyZWUuIExvb2tpbmcgYXQgYG9mX2dldF9waHlfbW9kZWAsIEkgc2VlIGl0IGNvbnZlcnRzIGEgc3RyaW5nIGxpa2UgYFwicHNnbWlpXCJgIHRvIHRoZSBjb3JyZXNwb25kaW5nIGBwaHlfaW50ZXJmYWNlX3RgLiBUaGlzIGlzIG15IGtleS4gSWYgSSBjYW4gcHJvdmlkZSBhIGRldmljZSB0cmVlIHdpdGggYHBoeS1tb2RlID0gXCJwc2dtaWlcImAsIHRoZW4gYW55IE1BQyBkcml2ZXIgdGhhdCB1c2VzIGBvZl9nZXRfcGh5X21vZGVgIGFuZCBjYWxscyBgcGh5bGlua19jcmVhdGVgIHdpbGwgcGFzcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgdG8gdGhlIGBwaHlsaW5rYCBpbnN0YW5jZS5cblxuVGhlIHJ1YiBpcyBJJ20gdGVzdGluZyBpbiBzeXprYWxsZXIuIEknbSB0eXBpY2FsbHkgb24geDg2IFFFTVUgb3IgR0NFIGFuZCBJIGRvbid0IGdldCB0byBzcGVjaWZ5IGEgY3VzdG9tIGRldmljZSB0cmVlLiBTbywgY2FuIEkgYnlwYXNzIHRoaXMgdGhyb3VnaCBzb21lIG90aGVyIG1lYW5zP1xuXG5DYW4gSSBkbyB0aGlzIHZpYSBuZXRsaW5rPyBJIGp1c3Qgc2Nhbm5lZCB0aGUgYG5ldC9jb3JlL2AgYW5kIGBpbmNsdWRlL3VhcGkvYCBkaXJlY3RvcmllcywgYW5kIHRoZXJlJ3Mgbm90aGluZyBJIGNhbiBzZWUgcmVsYXRpbmcgdG8gbmV0bGluayBjb25maWd1cmF0aW9uIGZvciBgcGh5X2ludGVyZmFjZV90YC5cblxuT2ssIG5leHQgcG9zc2libGUgYXZlbnVlLCBsZXQncyBsb29rIGF0IGBldGh0b29sYCBhbmQgYGV0aHRvb2xfbGlua19rc2V0dGluZ3NgIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjb25maWd1cmF0aW9uIGtub2JzIHRoZXJlIHRvIHRyaWdnZXIgdGhpcyBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTkxMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjU0LjI0OTU0MTQ2MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcwNjcxMTIxLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfaW50ZXJmYWNlX3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9ldGh0b29sLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjU0LjYyMDIyMTA0MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDgwMDMyOTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIFBoeWxpbmsgQ29uZmlndXJhdGlvbiBNYXplKipcblxuT2theSwgc28gSSdtIGhpdHRpbmcgYSByb2FkYmxvY2suIEkgd2FzIGhvcGluZyBgZXRodG9vbGAgd291bGQgZ2l2ZSBtZSBkaXJlY3QgY29udHJvbCBvdmVyIHRoZSBgcGh5X2ludGVyZmFjZV90YCBzZXR0aW5nLCBidXQgaXQncyBub3QgZXhwb3NpbmcgaXQgdGhlIHdheSBJJ2QgZXhwZWN0LiBOb3csIGhvdyBkbyBJIGFjdHVhbGx5IHNldCB0aGUgaW50ZXJmYWNlIHdpdGhpbiBgcGh5bGlua2A/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGFuIGFsdGVybmF0aXZlIG1ldGhvZCwgYW5kIHF1aWNrbHkuIEhtbW0sIGxldCdzIHBpdm90IGFuZCBzZWUgaWYgSSBjYW4gbGV2ZXJhZ2UgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYCB0byBnZXQgdGhpcyBkb25lLiBNYXliZSB0aGVyZSdzIGEgYmFjayBkb29yIHRoZXJlIHRoYXQgSSBjYW4gdXNlIHRvIGFjaGlldmUgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uLiBJJ2xsIHN0YXJ0IGRpZ2dpbmcgaW4gdGhhdCBkaXJlY3Rpb24gYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTI5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6MzY6NTguMTAwMjU2MTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzc1NixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzc1NjpcXHRzdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsKHN0cnVjdCBwaHlsaW5rICpwbClcXG4zNzU3OlxcdHtcXG4zNzU4OlxcdFxcdF9fRVRIVE9PTF9ERUNMQVJFX0xJTktfTU9ERV9NQVNLKHN1cHBvcnQpO1xcbjM3NTk6XFx0XFx0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBjb25maWc7XFxuMzc2MDpcXHRcXHRlbnVtIGluYmFuZF90eXBlIGluYmFuZF90eXBlO1xcbjM3NjE6XFx0XFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZTtcXG4zNzYyOlxcdFxcdGludCByZXQ7XFxuMzc2MzpcXHRcXG4zNzY0OlxcdFxcdHBoeWxpbmtfZGJnKHBsLCBcXFwib3B0aWNhbCBTRlA6IGludGVyZmFjZXM9W21hYz0lKnBibCwgc2ZwPSUqcGJsXVxcXFxuXFxcIixcXG4zNzY1OlxcdFxcdFxcdCAgICAoaW50KVBIWV9JTlRFUkZBQ0VfTU9ERV9NQVgsXFxuMzc2NjpcXHRcXHRcXHQgICAgcGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMsXFxuMzc2NzpcXHRcXHRcXHQgICAgKGludClQSFlfSU5URVJGQUNFX01PREVfTUFYLFxcbjM3Njg6XFx0XFx0XFx0ICAgIHBsLVxcdTAwM2VzZnBfaW50ZXJmYWNlcyk7XFxuMzc2OTpcXHRcXG4zNzcwOlxcdFxcdC8qIEZpbmQgdGhlIHVuaW9uIG9mIHRoZSBzdXBwb3J0ZWQgaW50ZXJmYWNlcyBieSB0aGUgUENTL01BQyBhbmRcXG4zNzcxOlxcdFxcdCAqIHRoZSBTRlAgbW9kdWxlLlxcbjM3NzI6XFx0XFx0ICovXFxuMzc3MzpcXHRcXHRwaHlfaW50ZXJmYWNlX2FuZChwbC1cXHUwMDNlc2ZwX2ludGVyZmFjZXMsIHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzLFxcbjM3NzQ6XFx0XFx0XFx0XFx0ICBwbC1cXHUwMDNlc2ZwX2ludGVyZmFjZXMpO1xcbjM3NzU6XFx0XFx0aWYgKHBoeV9pbnRlcmZhY2VfZW1wdHkocGwtXFx1MDAzZXNmcF9pbnRlcmZhY2VzKSkge1xcbjM3NzY6XFx0XFx0XFx0cGh5bGlua19lcnIocGwsIFxcXCJ1bnN1cHBvcnRlZCBTRlAgbW9kdWxlOiBubyBjb21tb24gaW50ZXJmYWNlIG1vZGVzXFxcXG5cXFwiKTtcXG4zNzc3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjM3Nzg6XFx0XFx0fVxcbjM3Nzk6XFx0XFxuMzc4MDpcXHRcXHRtZW1zZXQoXFx1MDAyNmNvbmZpZywgMCwgc2l6ZW9mKGNvbmZpZykpO1xcbjM3ODE6XFx0XFx0bGlua21vZGVfY29weShzdXBwb3J0LCBwbC1cXHUwMDNlc2ZwX3N1cHBvcnQpO1xcbjM3ODI6XFx0XFx0bGlua21vZGVfY29weShjb25maWcuYWR2ZXJ0aXNpbmcsIHBsLVxcdTAwM2VzZnBfc3VwcG9ydCk7XFxuMzc4MzpcXHRcXHRjb25maWcuc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xcbjM3ODQ6XFx0XFx0Y29uZmlnLmR1cGxleCA9IERVUExFWF9VTktOT1dOO1xcbjM3ODU6XFx0XFx0Y29uZmlnLnBhdXNlID0gTUxPX1BBVVNFX0FOO1xcbjM3ODY6XFx0XFxuMzc4NzpcXHRcXHQvKiBGb3IgYWxsIHRoZSBpbnRlcmZhY2VzIHRoYXQgYXJlIHN1cHBvcnRlZCwgcmVkdWNlIHRoZSBzZnBfc3VwcG9ydFxcbjM3ODg6XFx0XFx0ICogbWFzayB0byBvbmx5IHRob3NlIGxpbmsgbW9kZXMgdGhhdCBjYW4gYmUgc3VwcG9ydGVkLlxcbjM3ODk6XFx0XFx0ICovXFxuMzc5MDpcXHRcXHRyZXQgPSBwaHlsaW5rX3ZhbGlkYXRlX21hc2socGwsIE5VTEwsIHBsLVxcdTAwM2VzZnBfc3VwcG9ydCwgXFx1MDAyNmNvbmZpZyxcXG4zNzkxOlxcdFxcdFxcdFxcdFxcdCAgICBwbC1cXHUwMDNlc2ZwX2ludGVyZmFjZXMpO1xcbjM3OTI6XFx0XFx0aWYgKHJldCkge1xcbjM3OTM6XFx0XFx0XFx0cGh5bGlua19lcnIocGwsIFxcXCJ1bnN1cHBvcnRlZCBTRlAgbW9kdWxlOiB2YWxpZGF0aW9uIHdpdGggc3VwcG9ydCAlKnBiIGZhaWxlZFxcXFxuXFxcIixcXG4zNzk0OlxcdFxcdFxcdFxcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHN1cHBvcnQpO1xcbjM3OTU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zNzk2OlxcdFxcdH1cXG4zNzk3OlxcdFxcbjM3OTg6XFx0XFx0aW50ZXJmYWNlID0gcGh5bGlua19jaG9vc2Vfc2ZwX2ludGVyZmFjZShwbCwgcGwtXFx1MDAzZXNmcF9pbnRlcmZhY2VzKTtcXG4zNzk5OlxcdFxcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX05BKSB7XFxuMzgwMDpcXHRcXHRcXHRwaHlsaW5rX2VycihwbCwgXFxcImZhaWxlZCB0byBzZWxlY3QgU0ZQIGludGVyZmFjZVxcXFxuXFxcIik7XFxuMzgwMTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zODAyOlxcdFxcdH1cXG4zODAzOlxcdFxcbjM4MDQ6XFx0XFx0cGh5bGlua19kYmcocGwsIFxcXCJvcHRpY2FsIFNGUDogY2hvc2VuICVzIGludGVyZmFjZVxcXFxuXFxcIixcXG4zODA1OlxcdFxcdFxcdCAgICBwaHlfbW9kZXMoaW50ZXJmYWNlKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM2OjU4LjEwMDQ0MzQ1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjAyNTg0MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgU0ZQIEludGVyZmFjZSBDb25maWd1cmF0aW9uKipcblxuTXkgdGhvdWdodCBwcm9jZXNzIHN0YXJ0cyB3aXRoIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAuIE15IHRhc2sgaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGludGVyZmFjZSBmcm9tIGBwbC1cdTAwM2VzZnBfaW50ZXJmYWNlc2Agc2hvdWxkIGJlIHNlbGVjdGVkLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gdGhlbiBhcmlzZXM6IGlzIHRoaXMgU0ZQIG1vZHVsZSBldmVuIGNhcGFibGUgb2Ygc3VwcG9ydGluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWA/IFRoaXMgaXMgdGhlIGZ1bmRhbWVudGFsIHBpZWNlIG9mIGluZm9ybWF0aW9uIEkgbmVlZCB0byBjb25maXJtLiBUbyBhbnN3ZXIgdGhpcywgSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIHBvcHVsYXRpb24gb2YgYHNmcF9pbnRlcmZhY2VzYC4gSW4gZXNzZW5jZSwgSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGludGVyZmFjZXMgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgYW5kIHdoaWNoIG9wdGlvbnMgYXJlIGF2YWlsYWJsZS4gVGhpcyBzaG91bGQgcmV2ZWFsIHdoZXRoZXIgUFNHTUlJIGlzIHByZXNlbnQsIGFuZCB0aGVyZWZvcmUsIHZpYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyMjIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM3OjAxLjMyMDcwNDc4N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3MDIzMjQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3NmcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzc6MDEuMzcxNDE2MTYxWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzQ3ODMxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzpcblxuKipTRlAgTW9kdWxlIEludGVyZmFjZSBSZWFzb25pbmcqKlxuXG5SaWdodCwgbGV0J3MgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGUgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaXNtaXNzIHRoZSBpZGVhIHRoYXQgU0ZQIG1vZHVsZXMgdXRpbGl6ZSBgUFNHTUlJYC4gTm8sIHRoYXQgZG9lc24ndCBmZWVsIHJpZ2h0LiBUaGUgcHJvdG9jb2xzIGFuZCBwaHlzaWNhbCBpbnRlcmZhY2VzIGludm9sdmVkIGluIFNGUCBtb2R1bGVzIGFyZSB0eXBpY2FsbHkgbW9yZSBjb21wbGV4IGFuZCBvcGVyYXRlIGF0IGhpZ2hlciBzcGVlZHMgdGhhbiB3aGF0IGBQU0dNSUlgIHVzdWFsbHkgaGFuZGxlcy4gSXQganVzdCBkb2Vzbid0IGFsaWduIHdpdGggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGVpciB0eXBpY2FsIGNhcGFiaWxpdGllcy5cblxuT2theSwgc28gaWYgbm90IGBQU0dNSUlgLCB0aGVuIHdoYXQgaXMgaXQ/IE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBmdW5jdGlvbiBuYW1lIHRoYXQgSSd2ZSBlbmNvdW50ZXJlZCBiZWZvcmUgd2hlbiBkZWFsaW5nIHdpdGggdGhlc2Ugc29ydHMgb2YgaGFyZHdhcmUgZGV0YWlscywgc29tZXRoaW5nIHRoYXQgaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgbG93LWxldmVsIGludGVyZmFjZSB0aGF0IGlzIHVzZWQgdG8gY29udHJvbCB0aGUgU0ZQIG1vZHVsZS4gSSBoYXZlIHRvIHRoaW5rIHRob3VnaC4gV2hhdCBhYm91dCBhIGZ1bmN0aW9uIGxpa2UgYHBoeWxpbmtfY2hvb3NlX3NmcF9pbnRlcmZhY2VgPyBUaGF0IGZlZWxzIHJpZ2h0LCBzaW5jZSBgcGh5bGlua2AgaXMgY29tbW9ubHkgcmVsYXRlZCB0byBoYW5kbGluZyBQSFkgaW50ZXJmYWNlcy4gSXQncyBwbGF1c2libGUgdGhhdCB0aGlzIGZ1bmN0aW9uIG9yIG9uZSBsaWtlIGl0IGlzIHdoZXJlIHRoZSBzcGVjaWZpYyBTRlAgaW50ZXJmYWNlIHNlbGVjdGlvbiBsb2dpYyB3b3VsZCBsaXZlLiBJIHNob3VsZCBwcm9iYWJseSByZXNlYXJjaCB0aGF0IG9uZSwgYXMgYSBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ0NzUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzowNC43MDYyMDE3MDdaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzQ0ODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzOD1zdGF0aWMgaW50IHBoeWxpbmtfaW50ZXJmYWNlX21heF9zcGVlZChwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTktXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYxLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Nzc0PXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA4LVxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODA5OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgxMC1cXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzk9c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0Mi1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNDM6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0NC1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM3OjA0Ljc1MTk1MjkyMloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MjIyNTg5OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgUGF0aCBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIHRoaXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIG1vZGUuIEkgc2VlIGl0IHBvcHMgdXAgaW4gYSBmZXcga2V5IHBsYWNlczogYHBoeWxpbmtfaW50ZXJmYWNlX21heF9zcGVlZGAsIGBwaHlsaW5rX3BhcnNlX21vZGVgLCBhbmQgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhpcyBpcyBnb2luZyB0byBiZSBpbmNyZWRpYmx5IGRpZmZpY3VsdCwgaWYgbm90IGltcG9zc2libGUsIHRvIGhpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5UaGUgYmlnIHF1ZXN0aW9uIGlzLCBjYW4gd2Ugc29tZWhvdyBnZXQgdGhhdCBgcGh5X2ludGVyZmFjZV90YCB2YWx1ZSBzZXQgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgPyBVc2Vyc3BhY2UgaXMgb3V0LCByaWdodD8gV2UgY2FuJ3QgZGlyZWN0bHkgc2V0IGl0LiBTbywgYSB2aXJ0dWFsIGRyaXZlciB3b3VsZCBuZWVkIHRvIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoaXMuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiBkZXZpY2UgdHJlZSBvdmVybGF5cyBvciBzb21ldGhpbmcgc2ltaWxhciBjb3VsZCBwb3NzaWJseSBpbmZsdWVuY2UgaXQuIE5vcGUsIG5vdCBzZWVpbmcgYW55dGhpbmcgcHJvbWlzaW5nLlxuXG5TeXprYWxsZXIgaXMgYSBwb3RlbnRpYWwgdG9vbCwgb2YgY291cnNlLCB3aXRoIGBzeXpfaW5pdF9uZXRfc29ja2V0YCBvciB0aGUgbGlrZSwgYnV0IGl0IGRvZXNuJ3QgdXN1YWxseSBsb2FkIGRldmljZSB0cmVlIG92ZXJsYXlzIHVubGVzcyB3ZSBleHBsaWNpdGx5IGNvbmZpZ3VyZSBpdCB0byBkbyBzbyAoYW5kIHRoYXQncyBwcmV0dHkgdW51c3VhbCwgdXN1YWxseSBzcGVjaWZpYyB0byBjZXJ0YWluIGhhcmR3YXJlKS5cblxuTm93LCBsZXQncyBzZWUsIHdoYXQgZWxzZSBzZXRzIGBwaHlfaW50ZXJmYWNlX3RgPyBJIG5lZWQgdG8gbG9vayBhdCB0aGUgdXN1YWwgc3VzcGVjdHM6IGBkcml2ZXJzL25ldC90dW4uY2AsIGBkcml2ZXJzL25ldC92ZXRoLmNgLCBgZHJpdmVycy9uZXQvbWFjdmxhbi5jYCwgYW5kIGBkcml2ZXJzL25ldC9kdW1teS5jYC4gTm9wZSwgbm9uZSBvZiB0aG9zZSB1c2UgYHBoeWxpbmtgLiBXaGF0IGFib3V0IGBkcml2ZXJzL25ldC91c2IvYD8gSSBhbHJlYWR5IGNoZWNrZWQgYGxhbjc4eHhgIGFuZCBgYXNpeGAsIHRoZXkgaGFyZGNvZGUgaXQuIExldCdzIHNlZSBpZiB0aGUgYGUxMDAwZWAgZHJpdmVyIHVzZXMgaXQ7IG5vcGUsIG5vdGhpbmcuIFdoYXQgYWJvdXQgYHZpcnRpb19uZXQuY2A/IE5vIGx1Y2suXG5cbkJhc2ljYWxseSwgYHBoeWxpbmtgIGlzIGFsbW9zdCBleGNsdXNpdmVseSB1c2VkIGJ5IGRyaXZlcnMgZm9yICpyZWFsKiBoYXJkd2FyZSBNQUNzLCByaWdodD9cblxuU28sIGV2ZW4gaWYgd2UgKmRpZCogaGF2ZSBhIHJlYWwgaGFyZHdhcmUgTUFDIHByZXNlbnQgKHRoaW5rIFBDSSBwYXNzdGhyb3VnaCksIHdlJ2QgbmVlZCB0aGF0IGhhcmR3YXJlIHRvICpzdXBwb3J0KiBgUFNHTUlJYCwgYW5kIHRoZW4gdGhlIGRldmljZSB0cmVlLCBBQ1BJLCBvciB0aGUgZHJpdmVyIGl0c2VsZiB3b3VsZCBuZWVkIHRvIGJlIGNvbmZpZ3VyZWQgZm9yIGl0LiBTaW5jZSBgUFNHTUlJYCBpcyBhIHZlcnkgc3BlY2lhbGl6ZWQgaW50ZXJmYWNlIG1vZGUgKFBlbnRhIFNHTUlJKSwgdGhhdCdzIGFuIHVubGlrZWx5IGNvbWJpbmF0aW9uLiBBIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQgaXMgaGlnaGx5IGltcHJvYmFibGUgdG8gc3VwcG9ydCB0aGF0IHdpdGhvdXQgY3VzdG9tIGhhcmR3YXJlIGVtdWxhdGlvbi5cblxuT2theSwgbGV0IG1lIGJyb2FkZW4gbXkgdGhpbmtpbmcuIElzIHRoZXJlIGEgZHJpdmVyIHRoYXQgY291bGQgYmUgaW5zdGFudGlhdGVkIHZpYSBgbmV0ZGV2c2ltYCBvciBzb21ldGhpbmcgc2ltaWxhciB0aGF0IGFjdHVhbGx5ICp1c2VzKiBgcGh5bGlua2A/IFRoYXQgbWlnaHQgYmUgYSB3YXkgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTY2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM3OjEzLjk3NDU0NDc5NFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE5OTk0NDQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM3OjE0LjAyNjU1NTgwOFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjQ1MzQ1Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIGBmYm5pY2AgUGh5bGluayBMYW5kc2NhcGUqKlxuXG5IbW0sIG5vLiBOb3QgcXVpdGUgd2hhdCBJIHdhcyB0aGlua2luZy4gV2FpdC4uLiB3aGF0IGFib3V0IHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9gIGRpcmVjdG9yeT8gSSBzZWVtIHRvIHJlY2FsbCB0aGF0J3Mgd2hlcmUgYHBoeWxpbmtgIGlzIHVzZWQuIFRoYXQgbWlnaHQgYmUgYSBiZXR0ZXIgcGxhY2UgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBJdCBzdWdnZXN0cyBhIGNlcnRhaW4gYXBwcm9hY2ggdG8gbmV0d29yayBpbnRlcmZhY2UgbWFuYWdlbWVudCB0aGF0IGNvdWxkIGJlIHBlcnRpbmVudCB0byBteSBjdXJyZW50IHByb2JsZW0sIGRlcGVuZGluZyBvbiB0aGUgc2NvcGUuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYW5kIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRlcmFjdGlvbnMgd2l0aGluIHRoYXQgYXJlYSBvZiB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYyMzEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzoxNy4yNzE5MDM3OTNaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzODg5MjY0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzoxNy4zMjU4MDAxNzdaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MDk0OTY4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRU5FVEMgRHJpdmVyIGZvciBFdGhlcm5ldCBDb25uZWN0aXZpdHkqKlxuXG5SaWdodCwgc28sIGZpcnN0IHRoaW5ncyBmaXJzdCwgaXQncyBub3QgbGV2ZXJhZ2luZyBgUFNHTUlJYCwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MgYSBiaXQsIGJ1dCBhbHNvIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGRpZmZlcmVudCBzZXQgb2YgY29uc2lkZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UuIFRoYXQncyBnb29kIHRvIGtub3cgb2ZmIHRoZSBiYXQsIGFzIEkgd2FzIGV4cGVjdGluZyBhIGNlcnRhaW4gc2V0IG9mIGxvdy1sZXZlbCBjb25maWd1cmF0aW9ucywgYW5kIG5vdyBJIGNhbiBwcm9jZWVkIGZyb20gdGhlIGNvcnJlY3QgYXNzdW1wdGlvbnMuIEkgbmVlZCB0byBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhlIEVORVRDJ3MgY29uZmlndXJhdGlvbi5cblxuVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGludG8gd2hlcmUgdGhlIHJlbGV2YW50IGRyaXZlciBjb2RlIHdvdWxkIHJlc2lkZS4gTXkgZmlyc3QgZ3Vlc3MsIGxvZ2ljYWxseSwgaXMgZ29pbmcgdG8gYmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9gLiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCBGcmVlc2NhbGUncyAob3IsIG1vcmUgYWNjdXJhdGVseSwgTlhQJ3MpIEV0aGVybmV0LXJlbGF0ZWQgZHJpdmVycyB0byBiZSBsb2NhdGVkLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IG1ha2VmaWxlcyBhbmQgc291cmNlIGZpbGVzIHRoZXJlIGZvciBpbml0aWFsaXphdGlvbiwgTUFDIGFkZHJlc3MgY29uZmlndXJhdGlvbiwgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgdHJhbnNtaXQvcmVjZWl2ZSBwYXRoIG1hbmFnZW1lbnQuIFRoYXQncyBteSBzdGFydGluZyBwb2ludC4gRnJvbSB0aGVyZSwgSSBjYW4gZmlndXJlIG91dCB0aGUgc3BlY2lmaWNzIGFuZCBjb25maWd1cmF0aW9uIG9mIHRoZSBFTkVUQy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY0NTIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzoyMC43ODY3NTI1MTFaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzUzODk1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM3OjIwLjgzNzUxMzM0NVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDA0NTkyNTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3Qgb24gU3l6a2FsbGVyIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCBhbmQgYXMgZmFyIGFzIEkgY2FuIHRlbGwsIGl0J3Mgb25seSB1c2VkIGJ5IHRoZSBgcWNhODA3eC5jYCBQSFkgZHJpdmVyIGFuZCB0aGUgY29yZSBgcGh5bGlua2AgaW5mcmFzdHJ1Y3R1cmUuIFRoYXQgbmFycm93cyB0aGluZ3MgZG93biBjb25zaWRlcmFibHkuIEVmZmVjdGl2ZWx5LCB0aGlzIHBhdGNoIGp1c3QgZXh0ZW5kcyBgcGh5bGlua2AgdG8gaGFuZGxlIGEgc3BlY2lmaWMgaGFyZHdhcmUgaW50ZXJmYWNlIG1vZGUsIGBQU0dNSUlgLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gdGhpcyBjaGFuZ2UgYmUgcmVhY2hlZCBhbmQgZnV6emVkIGJ5IHN5emthbGxlciBpbiBhIHR5cGljYWwgc2V0dXA/IEkgZG9uJ3QgdGhpbmsgc28uIFNpbmNlIHRoaXMgbW9kZSBpc24ndCBleHBvc2VkIGJ5IGEgdmlydHVhbCBkcml2ZXIsIGFuZCBjYW4ndCBiZSBzZXQgdXAgZnJvbSB1c2Vyc3BhY2UsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgZnV6emFibGUgZnVuY3Rpb25hbGl0eS5cblxuQnV0LCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBMZXQgbWUgcXVpY2tseSBjaGVjazogY2FuIGBwaHlfaW50ZXJmYWNlX3RgIGV2ZW4gYmUgc2V0IHRvIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB0aHJvdWdoIG90aGVyIG1lYW5zPyBDb3VsZCBJIG1hbmlwdWxhdGUgaXQgdmlhIGBldGh0b29sYD8gTm8sIHRoYXQgaW50ZXJmYWNlIGRvZXNuJ3QgZXhwb3NlIGBwaHlfaW50ZXJmYWNlX3RgLiBXaGF0IGFib3V0IGBuZXRsaW5rYD8gTm9wZSwgdGhhdCdzIGFsc28gYSBkZWFkIGVuZDsgYHBoeV9pbnRlcmZhY2VfdGAgaXMgYSBrZXJuZWwtaW50ZXJuYWwgZW51bS4gIE1heWJlIGBzeXNmc2A/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Nzg5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM3OjI1Ljg0MjEwOTY2OVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxNDAzNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2ludGVyZmFjZV90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMjI1PWludCBwaHlfY29ubmVjdF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyMjYtXFx0XFx0ICAgICAgIHZvaWQgKCpoYW5kbGVyKShzdHJ1Y3QgbmV0X2RldmljZSAqKSxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEyMjc6XFx0XFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTI2MT1zdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgY2hhciAqYnVzX2lkLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTI2Mi1cXHRcXHRcXHQgICAgICAgdm9pZCAoKmhhbmRsZXIpKHN0cnVjdCBuZXRfZGV2aWNlICopLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTI2MzpcXHRcXHRcXHQgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNTUxPXN0YXRpYyBpbnQgcGh5X3NmcF9tb2R1bGVfaW5zZXJ0KHZvaWQgKnVwc3RyZWFtLCBjb25zdCBzdHJ1Y3Qgc2ZwX2VlcHJvbV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE1NTctXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNTU4OlxcdHBoeV9pbnRlcmZhY2VfdCBpZmFjZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE1NTktXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE3NTI9aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNzUzOlxcdFxcdCAgICAgIHUzMiBmbGFncywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE3NTQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzoyNS44OTAyNTY0NDRaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAzNDkzNzExNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEZ1enppbmcgV29ydGgqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBgcGh5X2ludGVyZmFjZV90YCBhcmd1bWVudCBpcyB0aGUga2V5IGhlcmUuIEl0J3MgcGFzc2VkIHRvIGBwaHlfY29ubmVjdGAgYW5kIGBwaHlfYXR0YWNoX2RpcmVjdGAsIGFuZCB0aG9zZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBieSBNQUMgZHJpdmVycy4gU28sIHRoZSBNQUMgZHJpdmVyIGlzIGZ1bmRhbWVudGFsbHkgdGhlIG9uZSBkZXRlcm1pbmluZyB0aGUgYHBoeV9pbnRlcmZhY2VfdGAgdmFsdWUuIEFuZCBzaW5jZSBJIGtub3csIGZyb20gdGhlIGNvbnRleHQgYW5kIG15IGV4cGVyaWVuY2UsIHRoYXQgbm8gdmlydHVhbCBNQUMgZHJpdmVyIEknbSBmYW1pbGlhciB3aXRoIHVzZXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCBpdCdzIGJhc2ljYWxseSBpbXBvc3NpYmxlIHRvIGV2ZW4gcmVhY2ggdGhlIGNvZGUgcGF0aCBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHJlLWV4YW1pbmUgdGhlIHBhdGNoIGl0c2VsZi4uLiBBaCwgaXQncyBhIHNpbXBsZSBhZGRpdGlvbiB0byBhIHN3aXRjaCBzdGF0ZW1lbnQuIEl0J3MganVzdCBhZGRpbmcgYSBjYXNlIGZvciBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgd2l0aGluIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAuIFRoaXMgaXMgY2xlYXJseSBhIGhhcmR3YXJlIGVuYWJsZW1lbnQgY2hhbmdlLiBJdCdzIGRlc2lnbmVkIHRvIHN1cHBvcnQgYSBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmZhY2UgbW9kZS4gSXQncyBub3Qgc29tZXRoaW5nIHRoYXQgd291bGQgYmUgdG91Y2hlZCBvciBldmVuIHVzZWQgaW4gbXkgdmlydHVhbCBlbnZpcm9ubWVudHMuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSBhbmQgdGhlIGxhY2sgb2YgdmlydHVhbCBzdXBwb3J0LCBpdCdzIGp1c3Qgbm90IHdvcnRoIGZ1enppbmcuIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3Nzc0LCJPdXRwdXRUb2tlbnMiOjE0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzozMS45MjUxOTU3NjlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIChQZW50YSBTR01JSSkgaGFyZHdhcmUgaW50ZXJmYWNlIG1vZGUgdG8gdGhlIHBoeWxpbmsgY29yZS4gVGhpcyBzcGVjaWZpYyBQSFkgaW50ZXJmYWNlIG1vZGUgaXMgb25seSB1c2VkIGJ5IHJlYWwgaGFyZHdhcmUgTUFDL1BIWSBkcml2ZXJzIChlLmcuLCBxY2E4MDd4KSBhbmQgY2Fubm90IGJlIGNvbmZpZ3VyZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgb3IgZXRodG9vbC4gU2luY2Ugbm8gdmlydHVhbGl6ZWQgbmV0d29yayBkcml2ZXJzIChsaWtlIGR1bW15LCB2ZXRoLCBvciBVU0IgZ2FkZ2V0IG5ldHdvcmsgZHJpdmVycykgdXNlIHRoaXMgaW50ZXJmYWNlIG1vZGUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIChQZW50YSBTR01JSSkgaGFyZHdhcmUgaW50ZXJmYWNlIG1vZGUgdG8gdGhlIHBoeWxpbmsgY29yZS4gVGhpcyBzcGVjaWZpYyBQSFkgaW50ZXJmYWNlIG1vZGUgaXMgb25seSB1c2VkIGJ5IHJlYWwgaGFyZHdhcmUgTUFDL1BIWSBkcml2ZXJzIChlLmcuLCBxY2E4MDd4KSBhbmQgY2Fubm90IGJlIGNvbmZpZ3VyZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgb3IgZXRodG9vbC4gU2luY2Ugbm8gdmlydHVhbGl6ZWQgbmV0d29yayBkcml2ZXJzIChsaWtlIGR1bW15LCB2ZXRoLCBvciBVU0IgZ2FkZ2V0IG5ldHdvcmsgZHJpdmVycykgdXNlIHRoaXMgaW50ZXJmYWNlIG1vZGUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozNzozMS45MjUyMjE1MTlaIiwiU2VxIjo0MywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowxr592[1] Phase: Running StartedAt: 2026-08-08 02:37:42 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxr592[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-08 02:37:42 +0000 UTC FinishedAt: 2026-08-08 02:37:47 +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,}