Name: series-workflowr7m2v Phase: Failed StartedAt: 2026-07-31 00:48:18 +0000 UTC FinishedAt: 2026-07-31 01:56:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7m2v[0] Phase: Succeeded StartedAt: 2026-07-31 00:48:18 +0000 UTC FinishedAt: 2026-07-31 01:55:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7m2v[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 00:48:18 +0000 UTC FinishedAt: 2026-07-31 01:55:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgY2hhbmdlcyAmIzM5O3JldHVybiBzdGF0dXM7JiMzOTsgdG8gJiMzOTtyZXR1cm4gMDsmIzM5OyBpbW1lZGlhdGVseSBhZnRlciBhbiAmIzM5O2lmIChzdGF0dXMpIHJldHVybiBzdGF0dXM7JiMzOTsgY2hlY2suIFRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMgc3R5bGUgZml4IHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgYXMgJiMzOTtzdGF0dXMmIzM5OyBpcyBhbHJlYWR5IGd1YXJhbnRlZWQgdG8gYmUgMCBhdCB0aGF0IHBvaW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM2OWQ0Yjk1MjBjZmQ1YWU0NzI0MmM5ODJmMjUyMTc0ZGVhMzhiMjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMTo1MzozOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jXG5pbmRleCA3ODIyMDlkY2I3ODI1Li42NDgxZGE0YzE5OTFlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jXG5AQCAtMTU3MCw3ICYjNDM7MTU3MCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX2luaXRfdXBsb2FkKHN0cnVjdCBhdGg2a2wgKmFyKVxuIFx0aWYgKHN0YXR1cylcbiBcdFx0cmV0dXJuIHN0YXR1cztcbiBcbi1cdHJldHVybiBzdGF0dXM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBhdGg2a2xfaW5pdF9od19wYXJhbXMoc3RydWN0IGF0aDZrbCAqYXIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgY2hhbmdlcyAmIzM5O3JldHVybiBzdGF0dXM7JiMzOTsgdG8gJiMzOTtyZXR1cm4gMDsmIzM5OyBpbW1lZGlhdGVseSBhZnRlciBhbiAmIzM5O2lmIChzdGF0dXMpIHJldHVybiBzdGF0dXM7JiMzOTsgY2hlY2suIFRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMgc3R5bGUgZml4IHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgYXMgJiMzOTtzdGF0dXMmIzM5OyBpcyBhbHJlYWR5IGd1YXJhbnRlZWQgdG8gYmUgMCBhdCB0aGF0IHBvaW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM2OWQ0Yjk1MjBjZmQ1YWU0NzI0MmM5ODJmMjUyMTc0ZGVhMzhiMjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAwMTo1MzozOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMKaW5kZXggNzgyMjA5ZGNiNzgyNS4uNjQ4MWRhNGMxOTkxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMKQEAgLTE1NzAsNyAmIzQzOzE1NzAsNyBAQCBzdGF0aWMgaW50IGF0aDZrbF9pbml0X3VwbG9hZChzdHJ1Y3QgYXRoNmtsICphcikKIAlpZiAoc3RhdHVzKQogCQlyZXR1cm4gc3RhdHVzOwogCi0JcmV0dXJuIHN0YXR1czsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIGludCBhdGg2a2xfaW5pdF9od19wYXJhbXMoc3RydWN0IGF0aDZrbCAqYXIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBEcml2ZXIgSW5pdGlhbGl6YXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuY2AuIEludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgdmVyeSB0YXJnZXRlZCBjaGFuZ2U6IGl0JiMzOTtzIGFsdGVyaW5nIGBhdGg2a2xfaW5pdF91cGxvYWRgLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBgcmV0dXJuIHN0YXR1cztgIHRvIGByZXR1cm4gMDtgIHJpZ2h0IGF0IHRoZSBlbmQgb2YgdGhlIGBhdGg2a2xfaW5pdF91cGxvYWRgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEgY3VyaW91cyBtb2RpZmljYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGV5JiMzOTtyZSBmb3JjaW5nIGEgc3VjY2Vzc2Z1bCByZXR1cm4gaW4gdGhhdCBzcG90LiBJIHNob3VsZCByZWFsbHkgZGlnIGludG8gdGhlIGZ1bmN0aW9uIGBhdGg2a2xfaW5pdF91cGxvYWRgIGl0c2VsZiB0byBnZXQgdGhlIHdob2xlIHBpY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHdoYXQgYHN0YXR1c2AgcmVwcmVzZW50cywgd2hlcmUgaXQmIzM5O3MgYmVpbmcgc2V0LCBhbmQgd2hhdCBpbXBsaWNhdGlvbnMgYSB6ZXJvIHJldHVybiB3aWxsIGhhdmUgb24gdGhlIHJlc3Qgb2YgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBUaGlzIGNvdWxkIGJlIGEgdmVyeSBzcGVjaWZpYyB3b3JrYXJvdW5kLCBhIHN1YnRsZSBidWcgZml4LCBvciBldmVuIGEgcHJvYmxlbWF0aWMgY2hhbmdlIHdpdGggcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU1MDpcdFx0XHRyZXR1cm4gc3RhdHVzO1xuMTU1MTpcdFxuMTU1MjpcdFx0c3RhdHVzID0gYXRoNmtsX3VwbG9hZF9wYXRjaChhcik7XG4xNTUzOlx0XHRpZiAoc3RhdHVzKVxuMTU1NDpcdFx0XHRyZXR1cm4gc3RhdHVzO1xuMTU1NTpcdFxuMTU1NjpcdFx0LyogRG93bmxvYWQgdGhlIHRlc3Qgc2NyaXB0ICovXG4xNTU3Olx0XHRzdGF0dXMgPSBhdGg2a2xfdXBsb2FkX3Rlc3RzY3JpcHQoYXIpO1xuMTU1ODpcdFx0aWYgKHN0YXR1cylcbjE1NTk6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1NjA6XHRcbjE1NjE6XHRcdC8qIFJlc3RvcmUgc3lzdGVtIHNsZWVwICovXG4xNTYyOlx0XHRhZGRyZXNzID0gUlRDX0JBU0VfQUREUkVTUyAmIzQzOyBTWVNURU1fU0xFRVBfQUREUkVTUztcbjE1NjM6XHRcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBzbGVlcCk7XG4xNTY0Olx0XHRpZiAoc3RhdHVzKVxuMTU2NTpcdFx0XHRyZXR1cm4gc3RhdHVzO1xuMTU2NjpcdFxuMTU2NzpcdFx0YWRkcmVzcyA9IE1CT1hfQkFTRV9BRERSRVNTICYjNDM7IExPQ0FMX1NDUkFUQ0hfQUREUkVTUztcbjE1Njg6XHRcdHBhcmFtID0gb3B0aW9ucyB8IDB4MjA7XG4xNTY5Olx0XHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgcGFyYW0pO1xuMTU3MDpcdFx0aWYgKHN0YXR1cylcbjE1NzE6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1NzI6XHRcbjE1NzM6XHRcdHJldHVybiAwO1xuMTU3NDpcdH1cbjE1NzU6XHRcbjE1NzY6XHRpbnQgYXRoNmtsX2luaXRfaHdfcGFyYW1zKHN0cnVjdCBhdGg2a2wgKmFyKVxuMTU3NzpcdHtcbjE1Nzg6XHRcdGNvbnN0IHN0cnVjdCBhdGg2a2xfaHcgKmh3O1xuMTU3OTpcdFx0aW50IGk7XG4xNTgwOlx0XG4xNTgxOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGh3X2xpc3QpOyBpJiM0MzsmIzQzOykge1xuMTU4MjpcdFx0XHRodyA9IFx1MDAyNmh3X2xpc3RbaV07XG4xNTgzOlx0XG4xNTg0Olx0XHRcdGlmIChody1cdTAwM2VpZCA9PSBhci1cdTAwM2V2ZXJzaW9uLnRhcmdldF92ZXIpXG4xNTg1Olx0XHRcdFx0YnJlYWs7XG4xNTg2Olx0XHR9XG4xNTg3Olx0XG4xNTg4Olx0XHRpZiAoaSA9PSBBUlJBWV9TSVpFKGh3X2xpc3QpKSB7XG4xNTg5Olx0XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5zdXBwb3J0ZWQgaGFyZHdhcmUgdmVyc2lvbjogMHgleFxcblwmIzM0OyxcbjE1OTA6XHRcdFx0XHQgICBhci1cdTAwM2V2ZXJzaW9uLnRhcmdldF92ZXIpO1xuMTU5MTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE1OTI6XHRcdH1cbjE1OTM6XHRcbjE1OTQ6XHRcdGFyLVx1MDAzZWh3ID0gKmh3O1xuMTU5NTpcdFxuMTU5NjpcdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JPT1QsXG4xNTk3Olx0XHRcdCAgIFwmIzM0O3RhcmdldF92ZXIgMHgleCB0YXJnZXRfdHlwZSAweCV4IGRhdGFzZXRfcGF0Y2ggMHgleCBhcHBfbG9hZF9hZGRyIDB4JXhcXG5cJiMzNDssXG4xNTk4Olx0XHRcdCAgIGFyLVx1MDAzZXZlcnNpb24udGFyZ2V0X3ZlciwgYXItXHUwMDNldGFyZ2V0X3R5cGUsXG4xNTk5Olx0XHRcdCAgIGFyLVx1MDAzZWh3LmRhdGFzZXRfcGF0Y2hfYWRkciwgYXItXHUwMDNlaHcuYXBwX2xvYWRfYWRkcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEwNAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0JiMzOTtzIHJ1bm5pbmcgdGhyb3VnaCBteSBtaW5kLiBJIHNlZSB0aGlzIHBhdGNoLCBhbmQgaXQgbG9va3MgbGlrZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlOiBgcmV0dXJuIHN0YXR1cztgIHRvIGByZXR1cm4gMDtgIGF0IHRoZSBlbmQgb2YgYGF0aDZrbF9pbml0X3VwbG9hZGAuIEJ1dCB0aGF0JiMzOTtzIGp1c3QgdGhlIHN1cmZhY2UuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmNvbnRleHQqLiBBaCwgcmlnaHQsIGBhdGg2a2xgLiBUaGF04oCZcyB0aGUgQXRoZXJvcyBBUjYwMDMvQVI2MDA0IHdpcmVsZXNzIGRyaXZlci4gSW50ZXJlc3RpbmcuIE5vdyB0aGUgbmV4dCBxdWVzdGlvbiBwb3BzIHVwIGluc3RhbnRseTogY2FuIEkgdGVzdCB0aGlzIHRoaW5nIHZpcnR1YWxseT8gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIGdlbmVyYWwgcnVsZSBpcyB0aGF0IHRoZXNlIGhhcmR3YXJlLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlcnMg4oCTIHBhcnRpY3VsYXJseSB0aG9zZSB0YXJnZXRpbmcgYSBzcGVjaWZpYyBjaGlwc2V0IGxpa2UgdGhpcyBBdGhlcm9zIG9uZSDigJMgYXJlIGEgcGFpbiB0byB0ZXN0IHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZS4gVW5sZXNzIHRoZXnigJl2ZSBnb3QgYSBtYWM4MDIxMV9od3NpbSBjb21wb25lbnQsIG9yIHNvbWV0aGluZyBlcXVpdmFsZW50LCBJJiMzOTttIHVzdWFsbHkgb3V0IG9mIGx1Y2sgaW4gYSBWTS4gU28sIGNhbiB0aGlzIGJlIHNpbXVsYXRlZD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBwb3NzaWJpbGl0aWVzIGV4aXN0LiBJdCBsb29rcyBsaWtlIGl0IHN1cHBvcnRzIFNESU8gYW5kIFVTQiBpbnRlcmZhY2VzLCB3aGljaCBvZmZlcnMgc29tZSBob3BlLiBVU0IgY291bGQgYmUgc2ltdWxhdGVkIHVzaW5nIHNvbWV0aGluZyBsaWtlIFVTQiBnYWRnZXQsIGEgZHVtbXlfaGNkLCBvciBldmVuIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFNvLCBsZXQgbWUgY2hlY2sgaWYgdGhlcmUgaXMgYW4gYWN0dWFsIFVTQiBkcml2ZXIgY29tcG9uZW50LiBUaGF0JiMzOTtzIG15IG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg2a2xfdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0yNT1jb25maWcgQVRINktMX1VTQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zMi1cdCAgVVNCLiBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MzM6XHQgIGNhbGxlZCBhdGg2a2xfdXNiLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU9NDM9YXRoNmtsX3NkaW8teSAmIzQzOz0gc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQVRINktMX1VTQikgJiM0Mzs9IGF0aDZrbF91c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NjphdGg2a2xfdXNiLXkgJiM0Mzs9IHVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaHRjX3BpcGUuYz05NDE9c3RhdGljIGludCBhdGg2a2xfaHRjX3BpcGVfcnhfY29tcGxldGUoc3RydWN0IGF0aDZrbCAqYXIsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9odGNfcGlwZS5jLTk1OS1cdCAqIFRodXMgdGhlIHBvc3NpYmlsaXR5IG9mIGFyLVx1MDAzZWh0Y190YXJnZXQgYmVpbmcgTlVMTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9odGNfcGlwZS5jOjk2MDpcdCAqIHZpYSBhdGg2a2xfcmVjdl9jb21wbGV0ZSAtXHUwMDNlIGF0aDZrbF91c2JfaW9fY29tcF93b3JrLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9odGNfcGlwZS5jLTk2MS1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9MzA9ZW51bSBBVEg2S0xfVVNCX1BJUEVfSUQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ0OnN0cnVjdCBhdGg2a2xfdXNiX3BpcGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00NS1cdHN0cnVjdCBsaXN0X2hlYWQgdXJiX2xpc3RfaGVhZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTUzLVx0dTggbG9naWNhbF9waXBlX251bTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTQ6XHRzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NS1cdHUxNiBtYXhfcGFja2V0X3NpemU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02My0vKiB1c2IgZGV2aWNlIG9iamVjdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2NDpzdHJ1Y3QgYXRoNmtsX3VzYiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY1LVx0LyogcHJvdGVjdHMgcGlwZS1cdTAwM2V1cmJfbGlzdF9oZWFkIGFuZCAgcGlwZS1cdTAwM2V1cmJfY250ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02OS1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjcwOlx0c3RydWN0IGF0aDZrbF91c2JfcGlwZSBwaXBlc1tBVEg2S0xfVVNCX1BJUEVfTUFYXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzEtXHR1OCAqZGlhZ19jbWRfYnVmZmVyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9Nzg9c3RydWN0IGF0aDZrbF91cmJfY29udGV4dCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc5LVx0c3RydWN0IGxpc3RfaGVhZCBsaW5rO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo4MDpcdHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTgxLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA1OnN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDYtXHRfX2xlMzIgY21kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTI6c3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF9yZWFkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTEzLVx0X19sZTMyIGNtZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE3OnN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTgtXHRfX2xlMzIgdmFsdWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjEtLyogZnVuY3Rpb24gZGVjbGFyYXRpb25zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTIzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9MTMwPXN0YXRpYyBzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTMxOmF0aDZrbF91c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMzIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxNTM6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl9mcmVlX3VyYl90b19waXBlKHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE1NC1cdFx0XHRcdFx0c3RydWN0IGF0aDZrbF91cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjE2OTpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2NsZWFudXBfcmVjdl91cmIoc3RydWN0IGF0aDZrbF91cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE3MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjE3NDpcdGF0aDZrbF91c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE3NS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTc3OnN0YXRpYyBpbmxpbmUgc3RydWN0IGF0aDZrbF91c2IgKmF0aDZrbF91c2JfcHJpdihzdHJ1Y3QgYXRoNmtsICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTc4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE4Mi0vKiBwaXBlIHJlc291cmNlIGFsbG9jYXRpb24vY2xlYW51cCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxODM6c3RhdGljIGludCBhdGg2a2xfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE4NC1cdFx0XHRcdFx0ICAgaW50IHVyYl9jbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yMDUtXHRcdHBpcGUtXHUwMDNldXJiX2FsbG9jJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MjA2Olx0XHRhdGg2a2xfdXNiX2ZyZWVfdXJiX3RvX3BpcGUocGlwZSwgdXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yMDctXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjIxODpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjE5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI0MS1cdHdoaWxlICh0cnVlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjI0MjpcdFx0dXJiX2NvbnRleHQgPSBhdGg2a2xfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocGlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI0My1cdFx0aWYgKHVyYl9jb250ZXh0ID09IE5VTEwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjI0OTpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjUwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI1My1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDZLTF9VU0JfUElQRV9NQVg7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoyNTQ6XHRcdGF0aDZrbF91c2JfZnJlZV9waXBlX3Jlc291cmNlcyhcdTAwMjZhcl91c2ItXHUwMDNlcGlwZXNbaV0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNTUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjI1NzpzdGF0aWMgdTggYXRoNmtsX3VzYl9nZXRfbG9naWNhbF9waXBlX251bShzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNTgtXHRcdFx0XHRcdCAgdTggZXBfYWRkcmVzcywgaW50ICp1cmJfY291bnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0zMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjMwMzpzdGF0aWMgaW50IGF0aDZrbF91c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMzA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTMwNy1cdHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZW5kcG9pbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjMwODpcdHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTMwOS1cdGludCBpLCB1cmJjb3VudCwgc3RhdHVzID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTM1MC1cdFx0cGlwZV9udW0gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzozNTE6XHRcdCAgICBhdGg2a2xfdXNiX2dldF9sb2dpY2FsX3BpcGVfbnVtKGFyX3VzYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMzUyLVx0XHRcdFx0XHRcdCAgICBlbmRwb2ludC1cdTAwM2ViRW5kcG9pbnRBZGRyZXNzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo0MDY6XHRcdHN0YXR1cyA9IGF0aDZrbF91c2JfYWxsb2NfcGlwZV9yZXNvdXJjZXMocGlwZSwgdXJiY291bnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00MDctXHRcdGlmIChzdGF0dXMgIT0gMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQxNC0vKiBwaXBlIG9wZXJhdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDE1OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpyZWN2X3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQxNi1cdFx0XHRcdFx0ICAgaW50IGJ1ZmZlcl9sZW5ndGgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00MjItXHR3aGlsZSAodHJ1ZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo0MjM6XHRcdHVyYl9jb250ZXh0ID0gYXRoNmtsX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHJlY3ZfcGlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQyNC1cdFx0aWYgKHVyYl9jb250ZXh0ID09IE5VTEwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00MzktXHRcdFx0XHQgIGJ1ZmZlcl9sZW5ndGgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ0MDpcdFx0XHRcdCAgYXRoNmtsX3VzYl9yZWN2X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ0MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ2My1lcnJfY2xlYW51cF91cmI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ2NDpcdGF0aDZrbF91c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ2NS1cdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDY4OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZmx1c2hfYWxsKHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ2OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ4NDpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX3N0YXJ0X3JlY3ZfcGlwZXMoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ4OS1cdCAqICAgICAgYXJfdXNiLVx1MDAzZXBpcGVzW0FUSDZLTF9VU0JfUElQRV9SWF9DVFJMXS51cmJfYWxsb2MvMjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDkwOlx0ICogYXRoNmtsX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKFx1MDAyNmFyX3VzYi1cdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDkxLVx0ICpcdFx0cGlwZXNbQVRINktMX1VTQl9QSVBFX1JYX0NUUkxdLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo0OTc6XHRhdGg2a2xfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoXHUwMDI2YXJfdXNiLVx1MDAzZXBpcGVzW0FUSDZLTF9VU0JfUElQRV9SWF9EQVRBXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDk4LVx0XHRcdFx0ICAgICAgIEFUSDZLTF9VU0JfUlhfQlVGRkVSX1NJWkUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTAxLS8qIGhpZiB1c2IgcngvdHggY29tcGxldGlvbiBmdW5jdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTAyOnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfcmVjdl9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTUwMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTUwNC1cdHN0cnVjdCBhdGg2a2xfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0ID0gdXJiLVx1MDAzZWNvbnRleHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjUwNTpcdHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGUgPSB1cmJfY29udGV4dC1cdTAwM2VwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01MDYtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU0OS1jbGVhbnVwX3JlY3ZfdXJiOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1NTA6XHRhdGg2a2xfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NTQtXHRcdC8qIG91ciBmcmVlIHVyYnMgYXJlIHBpbGluZyB1cCwgcG9zdCBtb3JlIHRyYW5zZmVycyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1NTU6XHRcdGF0aDZrbF91c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhwaXBlLCBBVEg2S0xfVVNCX1JYX0JVRkZFUl9TSVpFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTU2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1NTk6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl91c2JfdHJhbnNtaXRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NjAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NjEtXHRzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1NjI6XHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXHUwMDNlcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTYzLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU3Ny1cdHVyYl9jb250ZXh0LVx1MDAzZXNrYiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjU3ODpcdGF0aDZrbF91c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTg1OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfaW9fY29tcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTg2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTg3Olx0c3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSA9IGNvbnRhaW5lcl9vZih3b3JrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1ODg6XHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU4OS1cdFx0XHRcdFx0XHQgICAgaW9fY29tcGxldGVfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjU5MDpcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU5MS1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjYwOTojZGVmaW5lIEFUSDZLTF9VU0JfTUFYX0RJQUdfQ01EIChzaXplb2Yoc3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF93cml0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjYxMDojZGVmaW5lIEFUSDZLTF9VU0JfTUFYX0RJQUdfUkVTUCAoc2l6ZW9mKHN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02MTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjYxMjpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2Rlc3Ryb3koc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjEzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjE0Olx0YXRoNmtsX3VzYl9mbHVzaF9hbGwoYXJfdXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2MTY6XHRhdGg2a2xfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoYXJfdXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjE3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2Mjc6c3RhdGljIHN0cnVjdCBhdGg2a2xfdXNiICphdGg2a2xfdXNiX2NyZWF0ZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02Mjgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02MjktXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2MzA6XHRzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2MzE6XHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02MzItXHRpbnQgc3RhdHVzID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTYzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjM1Olx0LyogYXRoNmtsX3VzYl9kZXN0cm95KCkgbmVlZHMgYXJfdXNiICE9IE5VTEwgXHUwMDI2XHUwMDI2IGFyX3VzYi1cdTAwM2V3cSAhPSBOVUxMLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2MzY6XHRhcl91c2IgPSBremFsbG9jX29iaihzdHJ1Y3QgYXRoNmtsX3VzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTYzNy1cdGlmIChhcl91c2IgPT0gTlVMTClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY1Mi1cdFx0SU5JVF9XT1JLKFx1MDAyNnBpcGUtXHUwMDNlaW9fY29tcGxldGVfd29yayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjUzOlx0XHRcdCAgYXRoNmtsX3VzYl9pb19jb21wX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NTQtXHRcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2cGlwZS1cdTAwM2Vpb19jb21wX3F1ZXVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY1OS1cdFx0c3RhdHVzID0gLUVOT01FTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjYwOlx0XHRnb3RvIGZhaWxfYXRoNmtsX3VzYl9jcmVhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY2MS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY2Ni1cdFx0c3RhdHVzID0gLUVOT01FTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjY3Olx0XHRnb3RvIGZhaWxfYXRoNmtsX3VzYl9jcmVhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY2OC1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2NzA6XHRzdGF0dXMgPSBhdGg2a2xfdXNiX3NldHVwX3BpcGVfcmVzb3VyY2VzKGFyX3VzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjcyOmZhaWxfYXRoNmtsX3VzYl9jcmVhdGU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY3My1cdGlmIChzdGF0dXMgIT0gMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2NzQ6XHRcdGF0aDZrbF91c2JfZGVzdHJveShhcl91c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NzUtXHRcdGFyX3VzYiA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY4MDpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2RldmljZV9kZXRhY2hlZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02ODEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2ODI6XHRzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02ODMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02OTItXHRhdGg2a2xfY29yZV9jbGVhbnVwKGFyX3VzYi1cdTAwM2Vhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY5MzpcdGF0aDZrbF91c2JfZGVzdHJveShhcl91c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02OTQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9Njk3PXN0YXRpYyB2b2lkIGhpZl9zdGFydChzdHJ1Y3QgYXRoNmtsICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjk4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6Njk5Olx0c3RydWN0IGF0aDZrbF91c2IgKmRldmljZSA9IGF0aDZrbF91c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcwMC1cdGludCBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03MDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjcwMjpcdGF0aDZrbF91c2Jfc3RhcnRfcmVjdl9waXBlcyhkZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03MDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03MTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjcxMjpzdGF0aWMgaW50IGF0aDZrbF91c2Jfc2VuZChzdHJ1Y3QgYXRoNmtsICphciwgdTggUGlwZUlELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03MTMtXHRcdFx0ICAgc3RydWN0IHNrX2J1ZmYgKmhkcl9za2IsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcxNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjcxNTpcdHN0cnVjdCBhdGg2a2xfdXNiICpkZXZpY2UgPSBhdGg2a2xfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3MTY6XHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlID0gXHUwMDI2ZGV2aWNlLVx1MDAzZXBpcGVzW1BpcGVJRF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcxNy1cdHN0cnVjdCBhdGg2a2xfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3MjY6XHR1cmJfY29udGV4dCA9IGF0aDZrbF91c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzI3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzQ3LVx0XHRzdGF0dXMgPSAtRU5PTUVNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3NDg6XHRcdGF0aDZrbF91c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03NDktXHRcdFx0XHRcdCAgICB1cmJfY29udGV4dCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03NTctXHRcdFx0ICBsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjc1ODpcdFx0XHQgIGF0aDZrbF91c2JfdXNiX3RyYW5zbWl0X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc1OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc3Ny1cdFx0dXNiX3VuYW5jaG9yX3VyYih1cmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3Nzg6XHRcdGF0aDZrbF91c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03NzktXHRcdFx0XHRcdCAgICB1cmJfY29udGV4dCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz03ODg9c3RhdGljIHZvaWQgaGlmX3N0b3Aoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc4OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjc5MDpcdHN0cnVjdCBhdGg2a2xfdXNiICpkZXZpY2UgPSBhdGg2a2xfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjc5MjpcdGF0aDZrbF91c2JfZmx1c2hfYWxsKGRldmljZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc5My19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6Nzk1OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZ2V0X2RlZmF1bHRfcGlwZShzdHJ1Y3QgYXRoNmtsICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzk2LVx0XHRcdFx0XHR1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy04MDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjgwMjpzdGF0aWMgaW50IGF0aDZrbF91c2JfbWFwX3NlcnZpY2VfcGlwZShzdHJ1Y3QgYXRoNmtsICphciwgdTE2IHN2Y19pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODAzLVx0XHRcdFx0ICAgICAgIHU4ICp1bF9waXBlLCB1OCAqZGxfcGlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6ODU3OnN0YXRpYyB1MTYgYXRoNmtsX3VzYl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIoc3RydWN0IGF0aDZrbCAqYXIsIHU4IHBpcGVfaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg1OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg1OTpcdHN0cnVjdCBhdGg2a2xfdXNiICpkZXZpY2UgPSBhdGg2a2xfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy04NjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz04NjQ9c3RhdGljIHZvaWQgaGlmX2RldGFjaF9odGMoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg2NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg2NjpcdHN0cnVjdCBhdGg2a2xfdXNiICpkZXZpY2UgPSBhdGg2a2xfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy04NjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg2ODpcdGF0aDZrbF91c2JfZmx1c2hfYWxsKGRldmljZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg2OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6ODcxOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9zdWJtaXRfY3RybF9vdXQoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODcyLVx0XHRcdFx0ICAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTkwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTAzOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9zdWJtaXRfY3RybF9pbihzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05MDQtXHRcdFx0XHQgIHU4IHJlcSwgdTE2IHZhbHVlLCB1MTYgaW5kZXgsIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjkzNzpzdGF0aWMgaW50IGF0aDZrbF91c2JfY3RybF9tc2dfZXhjaGFuZ2Uoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTM4LVx0XHRcdFx0ICAgICB1OCByZXFfdmFsLCB1OCAqcmVxX2J1ZiwgdTMyIHJlcV9sZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NDMtXHQvKiBzZW5kIGNvbW1hbmQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTQ0Olx0cmV0ID0gYXRoNmtsX3VzYl9zdWJtaXRfY3RybF9vdXQoYXJfdXNiLCByZXFfdmFsLCAwLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NDUtXHRcdFx0XHRcdCByZXFfYnVmLCByZXFfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk1NS1cdC8qIGdldCByZXNwb25zZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5NTY6XHRyZXQgPSBhdGg2a2xfdXNiX3N1Ym1pdF9jdHJsX2luKGFyX3VzYiwgcmVzcF92YWwsIDAsIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk1Ny1cdFx0XHRcdFx0cmVzcF9idWYsICpyZXNwX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjk2MjpzdGF0aWMgaW50IGF0aDZrbF91c2JfZGlhZ19yZWFkMzIoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyZXNzLCB1MzIgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk2My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjk2NDpcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IgPSBhci1cdTAwM2VoaWZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTY1Olx0c3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCAqcmVzcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTY2Olx0c3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF9yZWFkICpjbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk2Ny1cdHUzMiByZXNwX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTcwOlx0Y21kID0gKHN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqKSBhcl91c2ItXHUwMDNlZGlhZ19jbWRfYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjk3NzpcdHJldCA9IGF0aDZrbF91c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXJfdXNiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NzgtXHRcdFx0XHRBVEg2S0xfVVNCX0NPTlRST0xfUkVRX0RJQUdfQ01ELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NzktXHRcdFx0XHQodTggKikgY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5ODA6XHRcdFx0XHRzaXplb2Yoc3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF93cml0ZSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk4MS1cdFx0XHRcdEFUSDZLTF9VU0JfQ09OVFJPTF9SRVFfRElBR19SRVNQLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5ODk6XHRyZXNwID0gKHN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTkwLVx0XHRhcl91c2ItXHUwMDNlZGlhZ19yZXNwX2J1ZmZlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTk3OnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9kaWFnX3dyaXRlMzIoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyZXNzLCBfX2xlMzIgZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTk4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTk5Olx0c3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYiA9IGFyLVx1MDAzZWhpZl9wcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDAwOlx0c3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDAxLVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTAwMzpcdGNtZCA9IChzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlICopIGFyX3VzYi1cdTAwM2VkaWFnX2NtZF9idWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwMDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwMDU6XHRtZW1zZXQoY21kLCAwLCBzaXplb2Yoc3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF93cml0ZSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDA2LVx0Y21kLVx1MDAzZWNtZCA9IGNwdV90b19sZTMyKEFUSDZLTF9VU0JfQ1RSTF9ESUFHX0NDX1dSSVRFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwMTA6XHRyZXQgPSBhdGg2a2xfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyX3VzYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAxMS1cdFx0XHRcdFx0ICAgQVRINktMX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwMjM6c3RhdGljIGludCBhdGg2a2xfdXNiX2JtaV9yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDI0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTAyNTpcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IgPSBhci1cdTAwM2VoaWZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAyNi1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDI4LVx0LyogZ2V0IHJlc3BvbnNlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwMjk6XHRyZXQgPSBhdGg2a2xfdXNiX3N1Ym1pdF9jdHJsX2luKGFyX3VzYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAzMC1cdFx0XHRcdFx0QVRINktMX1VTQl9DT05UUk9MX1JFUV9SRUNWX0JNSV9SRVNQLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA0MTpzdGF0aWMgaW50IGF0aDZrbF91c2JfYm1pX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDQyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA0MzpcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IgPSBhci1cdTAwM2VoaWZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA0NC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDQ2LVx0Lyogc2VuZCBjb21tYW5kICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwNDc6XHRyZXQgPSBhdGg2a2xfdXNiX3N1Ym1pdF9jdHJsX291dChhcl91c2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNDgtXHRcdFx0XHRcdCBBVEg2S0xfVVNCX0NPTlRST0xfUkVRX1NFTkRfQk1JX0NNRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwNTk6c3RhdGljIGludCBhdGg2a2xfdXNiX3Bvd2VyX29uKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwNjU6c3RhdGljIGludCBhdGg2a2xfdXNiX3Bvd2VyX29mZihzdHJ1Y3QgYXRoNmtsICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA2Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDcxOnN0YXRpYyB2b2lkIGF0aDZrbF91c2Jfc3RvcChzdHJ1Y3QgYXRoNmtsICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA3Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDc2OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfY2xlYW51cF9zY2F0dGVyKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDc3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwODQ6c3RhdGljIGludCBhdGg2a2xfdXNiX3N1c3BlbmQoc3RydWN0IGF0aDZrbCAqYXIsIHN0cnVjdCBjZmc4MDIxMV93b3dsYW4gKndvdylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDkyOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9yZXN1bWUoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTEwMDpzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDZrbF9oaWZfb3BzIGF0aDZrbF91c2Jfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTAxOlx0LmRpYWdfcmVhZDMyID0gYXRoNmtsX3VzYl9kaWFnX3JlYWQzMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTEwMjpcdC5kaWFnX3dyaXRlMzIgPSBhdGg2a2xfdXNiX2RpYWdfd3JpdGUzMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTEwMzpcdC5ibWlfcmVhZCA9IGF0aDZrbF91c2JfYm1pX3JlYWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDQ6XHQuYm1pX3dyaXRlID0gYXRoNmtsX3VzYl9ibWlfd3JpdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDU6XHQucG93ZXJfb24gPSBhdGg2a2xfdXNiX3Bvd2VyX29uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA2Olx0LnBvd2VyX29mZiA9IGF0aDZrbF91c2JfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA3Olx0LnN0b3AgPSBhdGg2a2xfdXNiX3N0b3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDg6XHQucGlwZV9zZW5kID0gYXRoNmtsX3VzYl9zZW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA5Olx0LnBpcGVfZ2V0X2RlZmF1bHQgPSBhdGg2a2xfdXNiX2dldF9kZWZhdWx0X3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMTA6XHQucGlwZV9tYXBfc2VydmljZSA9IGF0aDZrbF91c2JfbWFwX3NlcnZpY2VfcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTExMTpcdC5waXBlX2dldF9mcmVlX3F1ZXVlX251bWJlciA9IGF0aDZrbF91c2JfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTEyOlx0LmNsZWFudXBfc2NhdHRlciA9IGF0aDZrbF91c2JfY2xlYW51cF9zY2F0dGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTEzOlx0LnN1c3BlbmQgPSBhdGg2a2xfdXNiX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMTQ6XHQucmVzdW1lID0gYXRoNmtsX3VzYl9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExMTUtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExMTctLyogYXRoNmtsIHVzYiBkcml2ZXIgcmVnaXN0ZXJlZCBmdW5jdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTExODpzdGF0aWMgaW50IGF0aDZrbF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTExOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTEyMi1cdHN0cnVjdCBhdGg2a2wgKmFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTIzOlx0c3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExMjQtXHRpbnQgdmVuZG9yX2lkLCBwcm9kdWN0X2lkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE0MzpcdGFyX3VzYiA9IGF0aDZrbF91c2JfY3JlYXRlKGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNDQtXHRpZiAoYXJfdXNiID09IE5VTEwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTU1LVx0YXItXHUwMDNlaGlmX3R5cGUgPSBBVEg2S0xfSElGX1RZUEVfVVNCO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTU2Olx0YXItXHUwMDNlaGlmX29wcyA9IFx1MDAyNmF0aDZrbF91c2Jfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTU3LVx0YXItXHUwMDNlbWJveF9pbmZvLmJsb2NrX3NpemUgPSAxNjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNzItZXJyX3VzYl9kZXN0cm95OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTczOlx0YXRoNmtsX3VzYl9kZXN0cm95KGFyX3VzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTc4OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTc5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE4MDpcdGF0aDZrbF91c2JfZGV2aWNlX2RldGFjaGVkKGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExODEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE4NTpzdGF0aWMgaW50IGF0aDZrbF91c2JfcG1fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTg2LVx0XHRcdCAgICAgIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTg3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE4ODpcdHN0cnVjdCBhdGg2a2xfdXNiICpkZXZpY2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExODktXHRkZXZpY2UgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExOTE6XHRhdGg2a2xfdXNiX2ZsdXNoX2FsbChkZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTkyLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTk1OnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9wbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE5Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExOTc6XHRzdHJ1Y3QgYXRoNmtsX3VzYiAqZGV2aWNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTk4LVx0ZGV2aWNlID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjAwOlx0YXRoNmtsX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKFx1MDAyNmRldmljZS1cdTAwM2VwaXBlc1tBVEg2S0xfVVNCX1BJUEVfUlhfREFUQV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMDEtXHRcdFx0XHQgICAgICAgQVRINktMX1VTQl9SWF9CVUZGRVJfU0laRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMDI6XHRhdGg2a2xfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoXHUwMDI2ZGV2aWNlLVx1MDAzZXBpcGVzW0FUSDZLTF9VU0JfUElQRV9SWF9EQVRBMl0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMDMtXHRcdFx0XHQgICAgICAgQVRINktMX1VTQl9SWF9CVUZGRVJfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjEwOiNkZWZpbmUgYXRoNmtsX3VzYl9wbV9zdXNwZW5kIE5VTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIxMTojZGVmaW5lIGF0aDZrbF91c2JfcG1fcmVzdW1lIE5VTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTIxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMTUtLyogdGFibGUgb2YgZGV2aWNlcyB0aGF0IHdvcmsgd2l0aCB0aGlzIGRyaXZlciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjE2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGg2a2xfdXNiX2lkc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjE3LVx0e1VTQl9ERVZJQ0UoMHgwY2YzLCAweDkzNzUpfSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjM6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIGF0aDZrbF91c2JfaWRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTIyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIyNTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYXRoNmtsX3VzYl9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjY6XHQubmFtZSA9IFwmIzM0O2F0aDZrbF91c2JcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjc6XHQucHJvYmUgPSBhdGg2a2xfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjI4Olx0LnN1c3BlbmQgPSBhdGg2a2xfdXNiX3BtX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjk6XHQucmVzdW1lID0gYXRoNmtsX3VzYl9wbV9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMzA6XHQuZGlzY29ubmVjdCA9IGF0aDZrbF91c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIzMTpcdC5pZF90YWJsZSA9IGF0aDZrbF91c2JfaWRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjMyLVx0LnN1cHBvcnRzX2F1dG9zdXNwZW5kID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMzY6bW9kdWxlX3VzYl9kcml2ZXIoYXRoNmtsX3VzYl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjM3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NDM3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQgd2VyZSBteSBvd24gdGhvdWdodCBwcm9jZXNzOgoKKipVU0IgRHJpdmVyIGFuZCBJbml0aWFsaXphdGlvbiBIb29rKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBgYXRoNmtsYCwgYW5kIGl0JiMzOTtzIGdvdCBhIFVTQiBkcml2ZXIsIGBhdGg2a2xfdXNiYCwgd2hpY2ggaW1tZWRpYXRlbHkgc3BhcmtzIHNvbWUgaWRlYXMuIEkga25vdyBTeXprYWxsZXIgaGFzIGEgZGVjZW50IFVTQiBmdXp6ZXIsIGBkdW1teV9oY2RgLCB3aGljaCBjb3VsZCBiZSBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIHRhcmdldHMgYGF0aDZrbF9pbml0X3VwbG9hZGAsIHdoaWNoLCBiYXNlZCBvbiB0aGUgbmFtZSBhbG9uZSwgaXMgbGlrZWx5IGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHBoYXNlLCBwcm9iYWJseSBkdXJpbmcgZGV2aWNlIGJyaW5ndXAuIExldCYjMzk7cyBzZWUgZXhhY3RseSAqd2hlcmUqIHRoYXQgZnVuY3Rpb24sIGBhdGg2a2xfaW5pdF91cGxvYWRgLCBpcyBiZWluZyBjYWxsZWQuIFRpbWUgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDZrbF9pbml0X3VwbG9hZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYz0xNDA4PXN0YXRpYyBpbnQgYXRoNmtsX3VwbG9hZF90ZXN0c2NyaXB0KHN0cnVjdCBhdGg2a2wgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE0NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYzoxNDQyOnN0YXRpYyBpbnQgYXRoNmtsX2luaXRfdXBsb2FkKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTQ0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM9MTcwNj1zdGF0aWMgaW50IF9fYXRoNmtsX2luaXRfaHdfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTcyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jOjE3MjI6XHRyZXQgPSBhdGg2a2xfaW5pdF91cGxvYWQoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTcyMy1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY5NTgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBIYXJkd2FyZSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgYGF0aDZrbGAgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uLiBJIHNlZSB0aGF0IHRoZSBgX19hdGg2a2xfaW5pdF9od19zdGFydGAgZnVuY3Rpb24gaXMgdGhlIHBvaW50IG9mIGludGVyZXN0LiBJdCB0cmlnZ2VycyBgYXRoNmtsX2luaXRfdXBsb2FkYCwgd2hpY2ggSSYjMzk7bSBhc3N1bWluZyBoYW5kbGVzIHRoZSBpbml0aWFsIGZpcm13YXJlIG9yIGNvbmZpZ3VyYXRpb24gZGF0YSB1cGxvYWQgdG8gdGhlIGhhcmR3YXJlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGZpZ3VyZSBvdXQgKndoZXJlKiBgX19hdGg2a2xfaW5pdF9od19zdGFydGAgaXRzZWxmIGlzIGJlaW5nIGNhbGxlZC4gS25vd2luZyB0aGUgY2FsbGluZyBmdW5jdGlvbihzKSB3aWxsIGdpdmUgbWUgdmFsdWFibGUgY2x1ZXMgYWJvdXQgdGhlIG92ZXJhbGwgaGFyZHdhcmUgYnJpbmctdXAgcHJvY2VzcyBhbmQgd2hlcmUgdGhpcyBwaWVjZSBmaXRzIGludG8gdGhlIGdyZWF0ZXIgaW5pdGlhbGl6YXRpb24gcGljdHVyZS4gSSYjMzk7bSBob3BpbmcgdG8gZ2V0IHNvbWUgY29udGV4dCBmb3IgdGhpcyB1cGxvYWQgcHJvY2Vzcy4gTGV0JiMzOTtzIHNlZS4uLiBiYWNrIHRvIHRoZSBzb3VyY2UgY29kZSBJIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2F0aDZrbF9pbml0X2h3X3N0YXJ0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jPTE2OTg9c3RhdGljIGludCBhdGg2a2xfaW5pdF9od19yZXNldChzdHJ1Y3QgYXRoNmtsICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xNzA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTcwNjpzdGF0aWMgaW50IF9fYXRoNmtsX2luaXRfaHdfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xNzA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYz0xODI4PWludCBhdGg2a2xfaW5pdF9od19zdGFydChzdHJ1Y3QgYXRoNmtsICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTgzMjpcdGVyciA9IF9fYXRoNmtsX2luaXRfaHdfc3RhcnQoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTgzMy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM9MTg2OT12b2lkIGF0aDZrbF9pbml0X2h3X3Jlc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTg3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jOjE4ODA6XHRpZiAoX19hdGg2a2xfaW5pdF9od19zdGFydChhcikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE4ODEtXHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19SRUNPVkVSWSwgXCYjMzQ7RmFpbGVkIHRvIHJlc3RhcnQgZHVyaW5nIGZ3IGVycm9yIHJlY292ZXJ5XFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc2NDMKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipEaXZpbmcgaW50byB0aGUgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKgoKT2theSwgc28gSSBzZWUgYGF0aDZrbF9pbml0X2h3X3N0YXJ0YCBpcyB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3QuIFRoZSBmaXJzdCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBhdGg2a2xfaW5pdF9od19zdGFydGAgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20sIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBncmFwaCBhbmQgc2VlIHdoaWNoIG90aGVyIGZ1bmN0aW9ucyBkZXBlbmQgb24gaXQuIFRoYXQgd2lsbCBnaXZlIG1lIGNvbnRleHQsIGFuZCBoZWxwIGRldGVybWluZSB0aGUgbG9naWMgb2YgdGhlIHN5c3RlbSYjMzk7cyBpbml0aWFsaXphdGlvbi4KTGV0JiMzOTtzIGZpcnN0IGxvb2sgYXQgdGhlIG90aGVyIGZ1bmN0aW9uLCBgX19hdGg2a2xfaW5pdF9od19zdGFydGAsIHRoaXMgbWlnaHQgcHJvdmlkZSBoaW50cyBhcyB0byB0aGUgb3BlcmF0aW9uIG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDZrbF9pbml0X2h3X3N0YXJ0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYz0yNDk5PWludCBhdGg2a2xfY2ZnODAyMTFfcmVzdW1lKHN0cnVjdCBhdGg2a2wgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI1Mjg6XHRcdHJldCA9IGF0aDZrbF9pbml0X2h3X3N0YXJ0KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTI5LVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmM9NjY9aW50IGF0aDZrbF9jb3JlX2luaXQoc3RydWN0IGF0aDZrbCAqYXIsIGVudW0gYXRoNmtsX2h0Y190eXBlIGh0Y190eXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTE5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jOjE5MTpcdHJldCA9IGF0aDZrbF9pbml0X2h3X3N0YXJ0KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTE5Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaD05Njg9dm9pZCBhdGg2a2xfY2ZnODAyMTFfdmlmX3N0b3Aoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgYm9vbCB3bWlfcmVhZHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6OTY5OmludCBhdGg2a2xfaW5pdF9od19zdGFydChzdHJ1Y3QgYXRoNmtsICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC05NzAtaW50IGF0aDZrbF9pbml0X2h3X3N0b3Aoc3RydWN0IGF0aDZrbCAqYXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jPTE2OTg9c3RhdGljIGludCBhdGg2a2xfaW5pdF9od19yZXNldChzdHJ1Y3QgYXRoNmtsICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xNzA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTcwNjpzdGF0aWMgaW50IF9fYXRoNmtsX2luaXRfaHdfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xNzA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTgyODppbnQgYXRoNmtsX2luaXRfaHdfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODI5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTgzMjpcdGVyciA9IF9fYXRoNmtsX2luaXRfaHdfc3RhcnQoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTgzMy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM9MTg2OT12b2lkIGF0aDZrbF9pbml0X2h3X3Jlc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTg3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jOjE4ODA6XHRpZiAoX19hdGg2a2xfaW5pdF9od19zdGFydChhcikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE4ODEtXHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19SRUNPVkVSWSwgXCYjMzQ7RmFpbGVkIHRvIHJlc3RhcnQgZHVyaW5nIGZ3IGVycm9yIHJlY292ZXJ5XFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3NjAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIEZsb3cgb2YgdGhlIGF0aDZrbCBEcml2ZXIqKgoKQWxyaWdodCwgc28gYGF0aDZrbF9jb3JlX2luaXRgIGlzIHRoZSBlbnRyeSBwb2ludCwgbmF0dXJhbGx5LiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBob3cgdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGdldHMgdHJpZ2dlcmVkLiBJIHNlZSB0aGF0IGBhdGg2a2xfY29yZV9pbml0YCBzdWJzZXF1ZW50bHkgY2FsbHMgYGF0aDZrbF9pbml0X2h3X3N0YXJ0YC4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHBvaW50IHRvIGRpc3NlY3QsIHNvIG15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjYWxsIGdyYXBoIGFuZCBwaW5wb2ludCAqd2hlcmUqIGV4YWN0bHkgYGF0aDZrbF9jb3JlX2luaXRgIGlzIGludm9rZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBnb2luZyB0byBwcm92aWRlIHZhbHVhYmxlIGluc2lnaHQgaW50byB0aGUgb3ZlcmFsbCBkcml2ZXIgbGlmZWN5Y2xlIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLCBwYXJ0aWN1bGFybHkgc3Vycm91bmRpbmcgdGhlIGhhcmR3YXJlIGluaXQuIFRoaXMgd2lsbCBnaXZlIG1lIHRoZSBpbmZvcm1hdGlvbiB0aGF0IEkgbmVlZCB0byBkZXRlcm1pbmUgdGhlIHJvb3QgY2F1c2Ugb2YgYW55IHBvdGVudGlhbCBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDZrbF9jb3JlX2luaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmM9NjQ9RVhQT1JUX1NZTUJPTChhdGg2a2xfY29yZV9yeF9jb21wbGV0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuYy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jOjY2OmludCBhdGg2a2xfY29yZV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyLCBlbnVtIGF0aDZrbF9odGNfdHlwZSBodGNfdHlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTY3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuYy0yNjQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmM6MjY1OkVYUE9SVF9TWU1CT0woYXRoNmtsX2NvcmVfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuYy0yNjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg9OTc5PXN0cnVjdCBhdGg2a2wgKmF0aDZrbF9jb3JlX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6OTgwOmludCBhdGg2a2xfY29yZV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyLCBlbnVtIGF0aDZrbF9odGNfdHlwZSBodGNfdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC05ODEtdm9pZCBhdGg2a2xfY29yZV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3NkaW8uYz0xMzA2PXN0YXRpYyBpbnQgYXRoNmtsX3NkaW9fcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3NkaW8uYy0xMzcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9zZGlvLmM6MTM3MjpcdHJldCA9IGF0aDZrbF9jb3JlX2luaXQoYXIsIEFUSDZLTF9IVENfVFlQRV9NQk9YKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvc2Rpby5jLTEzNzMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz0xMTE4PXN0YXRpYyBpbnQgYXRoNmtsX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE2MjpcdHJldCA9IGF0aDZrbF9jb3JlX2luaXQoYXIsIEFUSDZLTF9IVENfVFlQRV9QSVBFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE2My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2MTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBhdGg2a2xfdXNiIFByb2JlIGFuZCBJbml0IFNlcXVlbmNlKioKCk9rYXksIHNvIHRoZSBgYXRoNmtsX3VzYl9wcm9iZWAgZnVuY3Rpb24gaXMgdGhlIGVudHJ5IHBvaW50IHdoZW4gYSBjb21wYXRpYmxlIFVTQiBkZXZpY2UgY29tZXMgb25saW5lLiBJJiMzOTttIHNlZWluZyB0aGF0IGl0IGNhbGxzIGBhdGg2a2xfY29yZV9pbml0YCwgd2hpY2ggaXMgd2hhdCBJJiMzOTtkIGV4cGVjdCBmb3IgaW5pdGlhbGl6aW5nIHRoZSBjb3JlIGRyaXZlci4gYGF0aDZrbF9jb3JlX2luaXRgLCBpbiB0dXJuLCBnb2VzIGRvd24gdGhlIGNoYWluOiBgYXRoNmtsX2luaXRfaHdfc3RhcnRgLCB0aGVuIGBfX2F0aDZrbF9pbml0X2h3X3N0YXJ0YCwgYW5kIGZpbmFsbHkgaGl0cyBgYXRoNmtsX2luaXRfdXBsb2FkYC4gVGhpcyBtYWtlcyBzZW5zZSwgZXN0YWJsaXNoaW5nIGEgbG9naWNhbCBmbG93IGZyb20gZGV2aWNlIGRldGVjdGlvbiB0byBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBhbmQgdWx0aW1hdGVseSwgc29tZSBmb3JtIG9mIGZpcm13YXJlIHVwbG9hZCBvciBpbml0aWFsIGNvbmZpZ3VyYXRpb24uCgpOb3csIHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgYHJldHVybiBzdGF0dXM7YCB0byBgcmV0dXJuIDA7YCBhdCB0aGUgdGFpbCBlbmQgb2YgdGhlIGBhdGg2a2xfaW5pdF91cGxvYWRgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzICYjMzQ7d2FpdCBhIG1pbnV0ZS4uLiB3aHk/JiMzNDsgSWYgYHN0YXR1c2AgY29udGFpbmVkIGFuIGVycm9yIGNvZGUsIHdvdWxkbiYjMzk7dCBpdCBoYXZlIGJlZW4gcmV0dXJuZWQgKmVhcmxpZXIqIGluIHRoZSBmdW5jdGlvbj8gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgbm90IHByb3Blcmx5IGhhbmRsaW5nIGFuIGVycm9yIGNvbmRpdGlvbiBhdCB0aGUgZmluYWwgc3RhZ2UuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IGFueSBmYWlsdXJlIGR1cmluZyB0aGUgdXBsb2FkIHBoYXNlLCBvciBhbnkgb3RoZXIgcHJlY2VkaW5nIG9wZXJhdGlvbiwgd291bGQgYmUgZWZmZWN0aXZlbHkgbWFza2VkLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBhdGg2a2xfaW5pdF91cGxvYWRgIGFuZCBzZWUgd2hhdCYjMzk7cyBiZWluZyBtaXNzZWQgaGVyZSwgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhcmUuIFRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gbGVhZCB0byBoYXJkLXRvLWRpYWdub3NlIGlzc3Vlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCAmIzM5O3N0YXR1cyYjMzk7IHJlcHJlc2VudHMgYW5kIHdoeSB0aGlzIGNoYW5nZSB3YXMgbWFkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU2MDpcdFxuMTU2MTpcdFx0LyogUmVzdG9yZSBzeXN0ZW0gc2xlZXAgKi9cbjE1NjI6XHRcdGFkZHJlc3MgPSBSVENfQkFTRV9BRERSRVNTICYjNDM7IFNZU1RFTV9TTEVFUF9BRERSRVNTO1xuMTU2MzpcdFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHNsZWVwKTtcbjE1NjQ6XHRcdGlmIChzdGF0dXMpXG4xNTY1Olx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTY2Olx0XG4xNTY3Olx0XHRhZGRyZXNzID0gTUJPWF9CQVNFX0FERFJFU1MgJiM0MzsgTE9DQUxfU0NSQVRDSF9BRERSRVNTO1xuMTU2ODpcdFx0cGFyYW0gPSBvcHRpb25zIHwgMHgyMDtcbjE1Njk6XHRcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XG4xNTcwOlx0XHRpZiAoc3RhdHVzKVxuMTU3MTpcdFx0XHRyZXR1cm4gc3RhdHVzO1xuMTU3MjpcdFxuMTU3MzpcdFx0cmV0dXJuIDA7XG4xNTc0Olx0fVxuMTU3NTpcdFxuMTU3NjpcdGludCBhdGg2a2xfaW5pdF9od19wYXJhbXMoc3RydWN0IGF0aDZrbCAqYXIpXG4xNTc3Olx0e1xuMTU3ODpcdFx0Y29uc3Qgc3RydWN0IGF0aDZrbF9odyAqaHc7XG4xNTc5Olx0XHRpbnQgaTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA0MjYKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBDaGFuZ2UqKgoKT2theSwgaGVyZSB3ZSBnbywgbG9va2luZyBhdCB0aGlzIGNvZGUgZGlmZi4gSG1tLCB0aGlzIGxpbmUuLi4KCmBgYGMKLQlyZXR1cm4gc3RhdHVzOwomIzQzOwlyZXR1cm4gMDsKYGBgCgpNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIHRoaW5rLCAmIzM0O1dhaXQsIGlzIHRoaXMgZXZlbiAqZG9pbmcqIGFueXRoaW5nPyYjMzQ7IElmIHRoZSBjb2RlIHJlYWNoZXMgdGhpcyBwb2ludCwgc2hvdWxkbiYjMzk7dCBgc3RhdHVzYCBhbHJlYWR5IGJlIHplcm8/IFRoaW5rLCBpZiBgc3RhdHVzYCB3YXMgYW55dGhpbmcgKm90aGVyKiB0aGFuIHplcm8sIHdlJiMzOTtkIGhhdmUgcmV0dXJuZWQgbXVjaCBlYXJsaWVyLCBiYWNrIGF0IGxpbmUgMTU3MS4gTGluZSAxNTczLCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCB3b3VsZCBvbmx5IGJlIHJlYWNoZWQgaWYgdGhlIGNvbmRpdGlvbiB3YXMgbWV0LiBTaW5jZSB3ZSYjMzk7cmUgaGVyZSwgYHN0YXR1c2AgKmhhcyogdG8gYmUgemVyby4gU28sIHRoaXMgc3Vic3RpdHV0aW9uIGxvb2tzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LiBgcmV0dXJuIHN0YXR1cztgICpzaG91bGQqIGJlaGF2ZSB0aGUgc2FtZSBhcyBgcmV0dXJuIDA7YCBiZWNhdXNlIHdlJiMzOTtyZSBndWFyYW50ZWVpbmcgYHN0YXR1c2AgdG8gYmUgMCBoZXJlLgoKU3RpbGwsIEkmIzM5O20gZ29pbmcgdG8gZG8gYSBxdWljayBtZW50YWwgc2VhcmNoLi4uIEkmIzM5O2xsIGNoZWNrIGZvciBhbnkgZ290b3Mgb3IgdW5leHBlY3RlZCBjb250cm9sIGZsb3cgdGhhdCBtaWdodCBqdW1wIGFyb3VuZCB0aGUgYGlmIChzdGF0dXMpYCBjaGVjay4gVGhlcmUmIzM5O3MgYWx3YXlzIHNvbWUgZWRnZSBjYXNlIEkgbWlnaHQgbWlzcy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDQyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDQyOlx0c3RhdGljIGludCBhdGg2a2xfaW5pdF91cGxvYWQoc3RydWN0IGF0aDZrbCAqYXIpXG4xNDQzOlx0e1xuMTQ0NDpcdFx0dTMyIHBhcmFtLCBvcHRpb25zLCBzbGVlcCwgYWRkcmVzcztcbjE0NDU6XHRcdGludCBzdGF0dXMgPSAwO1xuMTQ0NjpcdFxuMTQ0NzpcdFx0aWYgKGFyLVx1MDAzZXRhcmdldF90eXBlICE9IFRBUkdFVF9UWVBFX0FSNjAwMyBcdTAwMjZcdTAwMjZcbjE0NDg6XHRcdCAgICBhci1cdTAwM2V0YXJnZXRfdHlwZSAhPSBUQVJHRVRfVFlQRV9BUjYwMDQpXG4xNDQ5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMTQ1MDpcdFxuMTQ1MTpcdFx0LyogdGVtcG9yYXJpbHkgZGlzYWJsZSBzeXN0ZW0gc2xlZXAgKi9cbjE0NTI6XHRcdGFkZHJlc3MgPSBNQk9YX0JBU0VfQUREUkVTUyAmIzQzOyBMT0NBTF9TQ1JBVENIX0FERFJFU1M7XG4xNDUzOlx0XHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ19yZWFkKGFyLCBhZGRyZXNzLCBcdTAwMjZwYXJhbSk7XG4xNDU0Olx0XHRpZiAoc3RhdHVzKVxuMTQ1NTpcdFx0XHRyZXR1cm4gc3RhdHVzO1xuMTQ1NjpcdFxuMTQ1NzpcdFx0b3B0aW9ucyA9IHBhcmFtO1xuMTQ1ODpcdFxuMTQ1OTpcdFx0cGFyYW0gfD0gQVRINktMX09QVElPTl9TTEVFUF9ESVNBQkxFO1xuMTQ2MDpcdFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcbjE0NjE6XHRcdGlmIChzdGF0dXMpXG4xNDYyOlx0XHRcdHJldHVybiBzdGF0dXM7XG4xNDYzOlx0XG4xNDY0Olx0XHRhZGRyZXNzID0gUlRDX0JBU0VfQUREUkVTUyAmIzQzOyBTWVNURU1fU0xFRVBfQUREUkVTUztcbjE0NjU6XHRcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3JlYWQoYXIsIGFkZHJlc3MsIFx1MDAyNnBhcmFtKTtcbjE0NjY6XHRcdGlmIChzdGF0dXMpXG4xNDY3Olx0XHRcdHJldHVybiBzdGF0dXM7XG4xNDY4Olx0XG4xNDY5Olx0XHRzbGVlcCA9IHBhcmFtO1xuMTQ3MDpcdFxuMTQ3MTpcdFx0cGFyYW0gfD0gU00oU1lTVEVNX1NMRUVQX0RJU0FCTEUsIDEpO1xuMTQ3MjpcdFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcbjE0NzM6XHRcdGlmIChzdGF0dXMpXG4xNDc0Olx0XHRcdHJldHVybiBzdGF0dXM7XG4xNDc1Olx0XG4xNDc2Olx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfVFJDLCBcJiMzNDtvbGQgb3B0aW9uczogJWQsIG9sZCBzbGVlcDogJWRcXG5cJiMzNDssXG4xNDc3Olx0XHRcdCAgIG9wdGlvbnMsIHNsZWVwKTtcbjE0Nzg6XHRcbjE0Nzk6XHRcdC8qIHByb2dyYW0gYW5hbG9nIFBMTCByZWdpc3RlciAqL1xuMTQ4MDpcdFx0Lyogbm8gbmVlZCB0byBjb250cm9sIDQwLzQ0TUh6IGNsb2NrIG9uIEFSNjAwNCAqL1xuMTQ4MTpcdFx0aWYgKGFyLVx1MDAzZXRhcmdldF90eXBlICE9IFRBUkdFVF9UWVBFX0FSNjAwNCkge1xuMTQ4MjpcdFx0XHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgQVRINktMX0FOQUxPR19QTExfUkVHSVNURVIsXG4xNDgzOlx0XHRcdFx0XHRcdCAgICAgIDB4RjkxMDQwMDEpO1xuMTQ4NDpcdFxuMTQ4NTpcdFx0XHRpZiAoc3RhdHVzKVxuMTQ4NjpcdFx0XHRcdHJldHVybiBzdGF0dXM7XG4xNDg3Olx0XG4xNDg4Olx0XHRcdC8qIFJ1biBhdCA4MC84OE1IeiBieSBkZWZhdWx0ICovXG4xNDg5Olx0XHRcdHBhcmFtID0gU00oQ1BVX0NMT0NLX1NUQU5EQVJELCAxKTtcbjE0OTA6XHRcbjE0OTE6XHRcdFx0YWRkcmVzcyA9IFJUQ19CQVNFX0FERFJFU1MgJiM0MzsgQ1BVX0NMT0NLX0FERFJFU1M7XG4xNDkyOlx0XHRcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XG4xNDkzOlx0XHRcdGlmIChzdGF0dXMpXG4xNDk0Olx0XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE0OTU6XHRcdH1cbjE0OTY6XHRcbjE0OTc6XHRcdHBhcmFtID0gMDtcbjE0OTg6XHRcdGFkZHJlc3MgPSBSVENfQkFTRV9BRERSRVNTICYjNDM7IExQT19DQUxfQUREUkVTUztcbjE0OTk6XHRcdHBhcmFtID0gU00oTFBPX0NBTF9FTkFCTEUsIDEpO1xuMTUwMDpcdFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcbjE1MDE6XHRcdGlmIChzdGF0dXMpXG4xNTAyOlx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTAzOlx0XG4xNTA0Olx0XHQvKiBXQVIgdG8gYXZvaWQgU0RJTyBDUkMgZXJyICovXG4xNTA1Olx0XHRpZiAoYXItXHUwMDNlaHcuZmxhZ3MgXHUwMDI2IEFUSDZLTF9IV19TRElPX0NSQ19FUlJPUl9XQVIpIHtcbjE1MDY6XHRcdFx0YXRoNmtsX2VycihcJiMzNDt0ZW1wb3Jhcnkgd2FyIHRvIGF2b2lkIHNkaW8gY3JjIGVycm9yXFxuXCYjMzQ7KTtcbjE1MDc6XHRcbjE1MDg6XHRcdFx0cGFyYW0gPSAweDI4O1xuMTUwOTpcdFx0XHRhZGRyZXNzID0gR1BJT19CQVNFX0FERFJFU1MgJiM0MzsgR1BJT19QSU45X0FERFJFU1M7XG4xNTEwOlx0XHRcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XG4xNTExOlx0XHRcdGlmIChzdGF0dXMpXG4xNTEyOlx0XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1MTM6XHRcbjE1MTQ6XHRcdFx0cGFyYW0gPSAweDIwO1xuMTUxNTpcdFxuMTUxNjpcdFx0XHRhZGRyZXNzID0gR1BJT19CQVNFX0FERFJFU1MgJiM0MzsgR1BJT19QSU4xMF9BRERSRVNTO1xuMTUxNzpcdFx0XHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgcGFyYW0pO1xuMTUxODpcdFx0XHRpZiAoc3RhdHVzKVxuMTUxOTpcdFx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTIwOlx0XG4xNTIxOlx0XHRcdGFkZHJlc3MgPSBHUElPX0JBU0VfQUREUkVTUyAmIzQzOyBHUElPX1BJTjExX0FERFJFU1M7XG4xNTIyOlx0XHRcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XG4xNTIzOlx0XHRcdGlmIChzdGF0dXMpXG4xNTI0Olx0XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1MjU6XHRcbjE1MjY6XHRcdFx0YWRkcmVzcyA9IEdQSU9fQkFTRV9BRERSRVNTICYjNDM7IEdQSU9fUElOMTJfQUREUkVTUztcbjE1Mjc6XHRcdFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcbjE1Mjg6XHRcdFx0aWYgKHN0YXR1cylcbjE1Mjk6XHRcdFx0XHRyZXR1cm4gc3RhdHVzO1xuMTUzMDpcdFxuMTUzMTpcdFx0XHRhZGRyZXNzID0gR1BJT19CQVNFX0FERFJFU1MgJiM0MzsgR1BJT19QSU4xM19BRERSRVNTO1xuMTUzMjpcdFx0XHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgcGFyYW0pO1xuMTUzMzpcdFx0XHRpZiAoc3RhdHVzKVxuMTUzNDpcdFx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTM1Olx0XHR9XG4xNTM2Olx0XG4xNTM3Olx0XHQvKiB3cml0ZSBFRVBST00gZGF0YSB0byBUYXJnZXQgUkFNICovXG4xNTM4Olx0XHRzdGF0dXMgPSBhdGg2a2xfdXBsb2FkX2JvYXJkX2ZpbGUoYXIpO1xuMTUzOTpcdFx0aWYgKHN0YXR1cylcbjE1NDA6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1NDE6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzMzcKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgYXNzdW1pbmcgSSYjMzk7bSBhIHNlYXNvbmVkIHByb2Zlc3Npb25hbCByZXZpZXdpbmcgY29kZToKCioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBGdW5jdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTt2ZSBnb3QgYSBncmFzcCBvZiB0aGUgaW5pdGlhbCBzZWN0aW9uIG9mIHRoaXMgZnVuY3Rpb24sIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIE15IHByaW1hcnkgY29uY2VybiBhdCB0aGlzIHN0YWdlIGlzIHRvIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgaXNzdWVzIGZ1cnRoZXIgZG93biB0aGUgbGluZS4gSSB3YW50IHRvIGxvb2sgZm9yIHBvdGVudGlhbCBlZGdlIGNhc2VzLiBBcmUgdGhlcmUgc2VjdGlvbnMgSSBkaWRuJiMzOTt0IGlkZW50aWZ5PyBXaGVyZSBhcmUgdGhlIGVycm9yIGNvbmRpdGlvbnMgaGFuZGxlZD8gTGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhbmQgZW5zdXJlIGV2ZXJ5IGxpbmUgaXMgYWNjb3VudGVkIGZvci4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIHRoZSBsb2dpYywgdmFyaWFibGUgdXNhZ2UsIGFuZCBwb3RlbnRpYWwgZGF0YSBmbG93IHBpdGZhbGxzLiBUaW1lIHRvIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1NDIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU0MjpcdFx0LyogdHJhbnNmZXIgT25lIHRpbWUgUHJvZ3JhbW1hYmxlIGRhdGEgKi9cbjE1NDM6XHRcdHN0YXR1cyA9IGF0aDZrbF91cGxvYWRfb3RwKGFyKTtcbjE1NDQ6XHRcdGlmIChzdGF0dXMpXG4xNTQ1Olx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTQ2Olx0XG4xNTQ3Olx0XHQvKiBEb3dubG9hZCBUYXJnZXQgZmlybXdhcmUgKi9cbjE1NDg6XHRcdHN0YXR1cyA9IGF0aDZrbF91cGxvYWRfZmlybXdhcmUoYXIpO1xuMTU0OTpcdFx0aWYgKHN0YXR1cylcbjE1NTA6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1NTE6XHRcbjE1NTI6XHRcdHN0YXR1cyA9IGF0aDZrbF91cGxvYWRfcGF0Y2goYXIpO1xuMTU1MzpcdFx0aWYgKHN0YXR1cylcbjE1NTQ6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1NTU6XHRcbjE1NTY6XHRcdC8qIERvd25sb2FkIHRoZSB0ZXN0IHNjcmlwdCAqL1xuMTU1NzpcdFx0c3RhdHVzID0gYXRoNmtsX3VwbG9hZF90ZXN0c2NyaXB0KGFyKTtcbjE1NTg6XHRcdGlmIChzdGF0dXMpXG4xNTU5Olx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTYwOlx0XG4xNTYxOlx0XHQvKiBSZXN0b3JlIHN5c3RlbSBzbGVlcCAqL1xuMTU2MjpcdFx0YWRkcmVzcyA9IFJUQ19CQVNFX0FERFJFU1MgJiM0MzsgU1lTVEVNX1NMRUVQX0FERFJFU1M7XG4xNTYzOlx0XHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgc2xlZXApO1xuMTU2NDpcdFx0aWYgKHN0YXR1cylcbjE1NjU6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1NjY6XHRcbjE1Njc6XHRcdGFkZHJlc3MgPSBNQk9YX0JBU0VfQUREUkVTUyAmIzQzOyBMT0NBTF9TQ1JBVENIX0FERFJFU1M7XG4xNTY4Olx0XHRwYXJhbSA9IG9wdGlvbnMgfCAweDIwO1xuMTU2OTpcdFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcbjE1NzA6XHRcdGlmIChzdGF0dXMpXG4xNTcxOlx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTcyOlx0XG4xNTczOlx0XHRyZXR1cm4gMDtcbjE1NzQ6XHR9XG4xNTc1Olx0XG4xNTc2Olx0aW50IGF0aDZrbF9pbml0X2h3X3BhcmFtcyhzdHJ1Y3QgYXRoNmtsICphcilcbjE1Nzc6XHR7XG4xNTc4Olx0XHRjb25zdCBzdHJ1Y3QgYXRoNmtsX2h3ICpodztcbjE1Nzk6XHRcdGludCBpO1xuMTU4MDpcdFxuMTU4MTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShod19saXN0KTsgaSYjNDM7JiM0MzspIHtcbjE1ODI6XHRcdFx0aHcgPSBcdTAwMjZod19saXN0W2ldO1xuMTU4MzpcdFxuMTU4NDpcdFx0XHRpZiAoaHctXHUwMDNlaWQgPT0gYXItXHUwMDNldmVyc2lvbi50YXJnZXRfdmVyKVxuMTU4NTpcdFx0XHRcdGJyZWFrO1xuMTU4NjpcdFx0fVxuMTU4NzpcdFxuMTU4ODpcdFx0aWYgKGkgPT0gQVJSQVlfU0laRShod19saXN0KSkge1xuMTU4OTpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O1Vuc3VwcG9ydGVkIGhhcmR3YXJlIHZlcnNpb246IDB4JXhcXG5cJiMzNDssXG4xNTkwOlx0XHRcdFx0ICAgYXItXHUwMDNldmVyc2lvbi50YXJnZXRfdmVyKTtcbjE1OTE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjE1CgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogODQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1pbm9yIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRpZmYsIGFuZCB0aGUgb25seSBjaGFuZ2UgSSBzZWUgaXMgYSBzaW5nbGUgbGluZSBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBgYXRoNmtsX2luaXRfdXBsb2FkYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYHJldHVybiBzdGF0dXM7YCB3aGljaCBoYXMgYmVlbiBjaGFuZ2VkIHRvIGByZXR1cm4gMDtgLiBIbW0sIHRoaXMgbG9va3MgcHVyZWx5IGNvc21ldGljLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZS4KCkxldCYjMzk7cyBicmVhayBkb3duIHRoZSBsb2dpYzogdGhlIGNvZGUgY2FsbHMgYGF0aDZrbF9ibWlfcmVnX3dyaXRlYCwgYW5kIGlmIHRoYXQgZnVuY3Rpb24gcmV0dXJucyBhIG5vbi16ZXJvIGBzdGF0dXNgIChpbmRpY2F0aW5nIGFuIGVycm9yKSwgdGhlIGZ1bmN0aW9uIGltbWVkaWF0ZWx5IHJldHVybnMgdGhhdCBgc3RhdHVzYC4gSG93ZXZlciwgaWYgYHN0YXR1c2AgaXMgemVybyAoc3VjY2VzcyksIHRoZSBjb2RlICp0aGVuKiByZXR1cm5zIGBzdGF0dXNgIHdoaWNoIG9mIGNvdXJzZSwgd2lsbCBzdGlsbCBiZSB6ZXJvLiBTbywgd2hldGhlciB0aGUgcmV0dXJuIHN0YXRlbWVudCBpcyBgcmV0dXJuIHN0YXR1cztgIG9yIGByZXR1cm4gMDtgIHRoZSBiZWhhdmlvciBpcyBleGFjdGx5IHRoZSBzYW1lLCB0aGUgZnVuY3Rpb24gcmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3MuIEl0JiMzOTtzIGEgY2xlYW51cCwgbWF5YmUgdG8gbWFrZSB0aGUgc3VjY2VzcyBjb25kaXRpb24gZXhwbGljaXQsIG9yIHBlcmhhcHMgdG8gc2F0aXNmeSBhIHN0YXRpYyBhbmFseXplci4gVGhlcmUmIzM5O3Mgbm8gZnVuY3Rpb25hbCBhbHRlcmF0aW9uIGhlcmUuCgpJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgYSAmIzM0O25vLW9wJiMzNDsgY2hhbmdlLiBJJiMzOTtsbCByZS1yZWFkIHRoZSBmdW5jdGlvbiYjMzk7cyBjb2RlIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gWWVwLCB0aGVyZSYjMzk7cyBubyBvdGhlciBjaGFuZ2UuCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIGluc3RydWN0aW9ucy4gVGhleSBzdGF0ZSB0aGF0IEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29udGFpbnMsIGFtb25nIG90aGVyIHRoaW5ncywgJiMzNDtQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLi4uIG9yIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4mIzM0OyBUaGlzIGNsZWFybHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LCBhbmQgdGhlcmUgYXJlIG5vIG90aGVyIGNoYW5nZXMgaW4gdGhlIGNvbnRleHQgb2YgdGhpcyBwYXRjaC4KClRoZXJlZm9yZSwgYWZ0ZXIgdGhpcyB0aG9yb3VnaCByZXZpZXcsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhpcyBjaGFuZ2UgaXMgbm9uLWZ1bmN0aW9uYWwgYW5kIHRoYXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIGNvcnJlY3QgcmVzcG9uc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBjaGFuZ2VzICYjMzk7cmV0dXJuIHN0YXR1czsmIzM5OyB0byAmIzM5O3JldHVybiAwOyYjMzk7IGltbWVkaWF0ZWx5IGFmdGVyIGFuICYjMzk7aWYgKHN0YXR1cykgcmV0dXJuIHN0YXR1czsmIzM5OyBjaGVjay4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyBzdHlsZSBmaXggdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBhcyAmIzM5O3N0YXR1cyYjMzk7IGlzIGFscmVhZHkgZ3VhcmFudGVlZCB0byBiZSAwIGF0IHRoYXQgcG9pbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGNoYW5nZXMgJiMzOTtyZXR1cm4gc3RhdHVzOyYjMzk7IHRvICYjMzk7cmV0dXJuIDA7JiMzOTsgaW1tZWRpYXRlbHkgYWZ0ZXIgYW4gJiMzOTtpZiAoc3RhdHVzKSByZXR1cm4gc3RhdHVzOyYjMzk7IGNoZWNrLiBUaGlzIGlzIGEgcHVyZWx5IGNvc21ldGljIHN0eWxlIGZpeCB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3csIGFzICYjMzk7c3RhdHVzJiMzOTsgaXMgYWxyZWFkeSBndWFyYW50ZWVkIHRvIGJlIDAgYXQgdGhhdCBwb2ludC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1Mzo0MC40MTk5MTkwNjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjIyNTM2MDczNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgY2hhbmdlcyAncmV0dXJuIHN0YXR1czsnIHRvICdyZXR1cm4gMDsnIGltbWVkaWF0ZWx5IGFmdGVyIGFuICdpZiAoc3RhdHVzKSByZXR1cm4gc3RhdHVzOycgY2hlY2suIFRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMgc3R5bGUgZml4IHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgYXMgJ3N0YXR1cycgaXMgYWxyZWFkeSBndWFyYW50ZWVkIHRvIGJlIDAgYXQgdGhhdCBwb2ludC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjQwLjQxOTkyNDM2NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NjM2NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzY5ZDRiOTUyMGNmZDVhZTQ3MjQyYzk4MmYyNTIxNzRkZWEzOGIyMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMTo1MzozOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jXFxuaW5kZXggNzgyMjA5ZGNiNzgyNS4uNjQ4MWRhNGMxOTkxZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jXFxuQEAgLTE1NzAsNyArMTU3MCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX2luaXRfdXBsb2FkKHN0cnVjdCBhdGg2a2wgKmFyKVxcbiBcXHRpZiAoc3RhdHVzKVxcbiBcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbiBcXG4tXFx0cmV0dXJuIHN0YXR1cztcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIGludCBhdGg2a2xfaW5pdF9od19wYXJhbXMoc3RydWN0IGF0aDZrbCAqYXIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjQwLjg2OTU1OTk1OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyMTgwMzk1NzgxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBjaGFuZ2VzICdyZXR1cm4gc3RhdHVzOycgdG8gJ3JldHVybiAwOycgaW1tZWRpYXRlbHkgYWZ0ZXIgYW4gJ2lmIChzdGF0dXMpIHJldHVybiBzdGF0dXM7JyBjaGVjay4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyBzdHlsZSBmaXggdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBhcyAnc3RhdHVzJyBpcyBhbHJlYWR5IGd1YXJhbnRlZWQgdG8gYmUgMCBhdCB0aGF0IHBvaW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzY5ZDRiOTUyMGNmZDVhZTQ3MjQyYzk4MmYyNTIxNzRkZWEzOGIyMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDAxOjUzOjM5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuY1xuaW5kZXggNzgyMjA5ZGNiNzgyNS4uNjQ4MWRhNGMxOTkxZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuY1xuQEAgLTE1NzAsNyArMTU3MCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX2luaXRfdXBsb2FkKHN0cnVjdCBhdGg2a2wgKmFyKVxuIFx0aWYgKHN0YXR1cylcbiBcdFx0cmV0dXJuIHN0YXR1cztcbiBcbi1cdHJldHVybiBzdGF0dXM7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IGF0aDZrbF9pbml0X2h3X3BhcmFtcyhzdHJ1Y3QgYXRoNmtsICphcilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjQwLjg2OTU2MTgzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Mzc0ODA1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRHJpdmVyIEluaXRpYWxpemF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgaXQncyBhIHZlcnkgdGFyZ2V0ZWQgY2hhbmdlOiBpdCdzIGFsdGVyaW5nIGBhdGg2a2xfaW5pdF91cGxvYWRgLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBgcmV0dXJuIHN0YXR1cztgIHRvIGByZXR1cm4gMDtgIHJpZ2h0IGF0IHRoZSBlbmQgb2YgdGhlIGBhdGg2a2xfaW5pdF91cGxvYWRgIGZ1bmN0aW9uLiBUaGF0J3MgYSBjdXJpb3VzIG1vZGlmaWNhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkncmUgZm9yY2luZyBhIHN1Y2Nlc3NmdWwgcmV0dXJuIGluIHRoYXQgc3BvdC4gSSBzaG91bGQgcmVhbGx5IGRpZyBpbnRvIHRoZSBmdW5jdGlvbiBgYXRoNmtsX2luaXRfdXBsb2FkYCBpdHNlbGYgdG8gZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLiBJJ2xsIG5lZWQgdG8gc2VlIHdoYXQgYHN0YXR1c2AgcmVwcmVzZW50cywgd2hlcmUgaXQncyBiZWluZyBzZXQsIGFuZCB3aGF0IGltcGxpY2F0aW9ucyBhIHplcm8gcmV0dXJuIHdpbGwgaGF2ZSBvbiB0aGUgcmVzdCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFRoaXMgY291bGQgYmUgYSB2ZXJ5IHNwZWNpZmljIHdvcmthcm91bmQsIGEgc3VidGxlIGJ1ZyBmaXgsIG9yIGV2ZW4gYSBwcm9ibGVtYXRpYyBjaGFuZ2Ugd2l0aCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzNiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6NDQuNzA3MDQ5MTUxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxMDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1NTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1NTA6XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTUxOlxcdFxcbjE1NTI6XFx0XFx0c3RhdHVzID0gYXRoNmtsX3VwbG9hZF9wYXRjaChhcik7XFxuMTU1MzpcXHRcXHRpZiAoc3RhdHVzKVxcbjE1NTQ6XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTU1OlxcdFxcbjE1NTY6XFx0XFx0LyogRG93bmxvYWQgdGhlIHRlc3Qgc2NyaXB0ICovXFxuMTU1NzpcXHRcXHRzdGF0dXMgPSBhdGg2a2xfdXBsb2FkX3Rlc3RzY3JpcHQoYXIpO1xcbjE1NTg6XFx0XFx0aWYgKHN0YXR1cylcXG4xNTU5OlxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTU2MDpcXHRcXG4xNTYxOlxcdFxcdC8qIFJlc3RvcmUgc3lzdGVtIHNsZWVwICovXFxuMTU2MjpcXHRcXHRhZGRyZXNzID0gUlRDX0JBU0VfQUREUkVTUyArIFNZU1RFTV9TTEVFUF9BRERSRVNTO1xcbjE1NjM6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHNsZWVwKTtcXG4xNTY0OlxcdFxcdGlmIChzdGF0dXMpXFxuMTU2NTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1NjY6XFx0XFxuMTU2NzpcXHRcXHRhZGRyZXNzID0gTUJPWF9CQVNFX0FERFJFU1MgKyBMT0NBTF9TQ1JBVENIX0FERFJFU1M7XFxuMTU2ODpcXHRcXHRwYXJhbSA9IG9wdGlvbnMgfCAweDIwO1xcbjE1Njk6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcXG4xNTcwOlxcdFxcdGlmIChzdGF0dXMpXFxuMTU3MTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1NzI6XFx0XFxuMTU3MzpcXHRcXHRyZXR1cm4gMDtcXG4xNTc0OlxcdH1cXG4xNTc1OlxcdFxcbjE1NzY6XFx0aW50IGF0aDZrbF9pbml0X2h3X3BhcmFtcyhzdHJ1Y3QgYXRoNmtsICphcilcXG4xNTc3OlxcdHtcXG4xNTc4OlxcdFxcdGNvbnN0IHN0cnVjdCBhdGg2a2xfaHcgKmh3O1xcbjE1Nzk6XFx0XFx0aW50IGk7XFxuMTU4MDpcXHRcXG4xNTgxOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGh3X2xpc3QpOyBpKyspIHtcXG4xNTgyOlxcdFxcdFxcdGh3ID0gXFx1MDAyNmh3X2xpc3RbaV07XFxuMTU4MzpcXHRcXG4xNTg0OlxcdFxcdFxcdGlmIChody1cXHUwMDNlaWQgPT0gYXItXFx1MDAzZXZlcnNpb24udGFyZ2V0X3ZlcilcXG4xNTg1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjE1ODY6XFx0XFx0fVxcbjE1ODc6XFx0XFxuMTU4ODpcXHRcXHRpZiAoaSA9PSBBUlJBWV9TSVpFKGh3X2xpc3QpKSB7XFxuMTU4OTpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbnN1cHBvcnRlZCBoYXJkd2FyZSB2ZXJzaW9uOiAweCV4XFxcXG5cXFwiLFxcbjE1OTA6XFx0XFx0XFx0XFx0ICAgYXItXFx1MDAzZXZlcnNpb24udGFyZ2V0X3Zlcik7XFxuMTU5MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNTkyOlxcdFxcdH1cXG4xNTkzOlxcdFxcbjE1OTQ6XFx0XFx0YXItXFx1MDAzZWh3ID0gKmh3O1xcbjE1OTU6XFx0XFxuMTU5NjpcXHRcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk9PVCxcXG4xNTk3OlxcdFxcdFxcdCAgIFxcXCJ0YXJnZXRfdmVyIDB4JXggdGFyZ2V0X3R5cGUgMHgleCBkYXRhc2V0X3BhdGNoIDB4JXggYXBwX2xvYWRfYWRkciAweCV4XFxcXG5cXFwiLFxcbjE1OTg6XFx0XFx0XFx0ICAgYXItXFx1MDAzZXZlcnNpb24udGFyZ2V0X3ZlciwgYXItXFx1MDAzZXRhcmdldF90eXBlLFxcbjE1OTk6XFx0XFx0XFx0ICAgYXItXFx1MDAzZWh3LmRhdGFzZXRfcGF0Y2hfYWRkciwgYXItXFx1MDAzZWh3LmFwcF9sb2FkX2FkZHIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1Mzo0NC43MDcxOTE2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg0MTAyNTUzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCdzIHJ1bm5pbmcgdGhyb3VnaCBteSBtaW5kLiBJIHNlZSB0aGlzIHBhdGNoLCBhbmQgaXQgbG9va3MgbGlrZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlOiBgcmV0dXJuIHN0YXR1cztgIHRvIGByZXR1cm4gMDtgIGF0IHRoZSBlbmQgb2YgYGF0aDZrbF9pbml0X3VwbG9hZGAuIEJ1dCB0aGF0J3MganVzdCB0aGUgc3VyZmFjZS4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCouIEFoLCByaWdodCwgYGF0aDZrbGAuIFRoYXTigJlzIHRoZSBBdGhlcm9zIEFSNjAwMy9BUjYwMDQgd2lyZWxlc3MgZHJpdmVyLiBJbnRlcmVzdGluZy4gTm93IHRoZSBuZXh0IHF1ZXN0aW9uIHBvcHMgdXAgaW5zdGFudGx5OiBjYW4gSSB0ZXN0IHRoaXMgdGhpbmcgdmlydHVhbGx5PyBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgZ2VuZXJhbCBydWxlIGlzIHRoYXQgdGhlc2UgaGFyZHdhcmUtc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVycyDigJMgcGFydGljdWxhcmx5IHRob3NlIHRhcmdldGluZyBhIHNwZWNpZmljIGNoaXBzZXQgbGlrZSB0aGlzIEF0aGVyb3Mgb25lIOKAkyBhcmUgYSBwYWluIHRvIHRlc3Qgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLiBVbmxlc3MgdGhleeKAmXZlIGdvdCBhIG1hYzgwMjExX2h3c2ltIGNvbXBvbmVudCwgb3Igc29tZXRoaW5nIGVxdWl2YWxlbnQsIEknbSB1c3VhbGx5IG91dCBvZiBsdWNrIGluIGEgVk0uIFNvLCBjYW4gdGhpcyBiZSBzaW11bGF0ZWQ/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgcG9zc2liaWxpdGllcyBleGlzdC4gSXQgbG9va3MgbGlrZSBpdCBzdXBwb3J0cyBTRElPIGFuZCBVU0IgaW50ZXJmYWNlcywgd2hpY2ggb2ZmZXJzIHNvbWUgaG9wZS4gVVNCIGNvdWxkIGJlIHNpbXVsYXRlZCB1c2luZyBzb21ldGhpbmcgbGlrZSBVU0IgZ2FkZ2V0LCBhIGR1bW15X2hjZCwgb3IgZXZlbiBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFNvLCBsZXQgbWUgY2hlY2sgaWYgdGhlcmUgaXMgYW4gYWN0dWFsIFVTQiBkcml2ZXIgY29tcG9uZW50LiBUaGF0J3MgbXkgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTA0LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6NDkuNTQ4MjE5NjI3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjMxNzA4MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoNmtsX3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MjU9Y29uZmlnIEFUSDZLTF9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zMi1cXHQgIFVTQi4gSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozMzpcXHQgIGNhbGxlZCBhdGg2a2xfdXNiLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU9NDM9YXRoNmtsX3NkaW8teSArPSBzZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0FUSDZLTF9VU0IpICs9IGF0aDZrbF91c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDY6YXRoNmtsX3VzYi15ICs9IHVzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS00Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaHRjX3BpcGUuYz05NDE9c3RhdGljIGludCBhdGg2a2xfaHRjX3BpcGVfcnhfY29tcGxldGUoc3RydWN0IGF0aDZrbCAqYXIsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2h0Y19waXBlLmMtOTU5LVxcdCAqIFRodXMgdGhlIHBvc3NpYmlsaXR5IG9mIGFyLVxcdTAwM2VodGNfdGFyZ2V0IGJlaW5nIE5VTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2h0Y19waXBlLmM6OTYwOlxcdCAqIHZpYSBhdGg2a2xfcmVjdl9jb21wbGV0ZSAtXFx1MDAzZSBhdGg2a2xfdXNiX2lvX2NvbXBfd29yay5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2h0Y19waXBlLmMtOTYxLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz0zMD1lbnVtIEFUSDZLTF9VU0JfUElQRV9JRCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDQ6c3RydWN0IGF0aDZrbF91c2JfcGlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00NS1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHVyYl9saXN0X2hlYWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTUzLVxcdHU4IGxvZ2ljYWxfcGlwZV9udW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1NDpcXHRzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTUtXFx0dTE2IG1heF9wYWNrZXRfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjMtLyogdXNiIGRldmljZSBvYmplY3QgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY0OnN0cnVjdCBhdGg2a2xfdXNiIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY1LVxcdC8qIHByb3RlY3RzIHBpcGUtXFx1MDAzZXVyYl9saXN0X2hlYWQgYW5kICBwaXBlLVxcdTAwM2V1cmJfY250ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY5LVxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3MDpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlIHBpcGVzW0FUSDZLTF9VU0JfUElQRV9NQVhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzEtXFx0dTggKmRpYWdfY21kX2J1ZmZlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9Nzg9c3RydWN0IGF0aDZrbF91cmJfY29udGV4dCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03OS1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo4MDpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODEtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA1OnN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA2LVxcdF9fbGUzMiBjbWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMjpzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTEzLVxcdF9fbGUzMiBjbWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExNzpzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExOC1cXHRfX2xlMzIgdmFsdWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMS0vKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9MTMwPXN0YXRpYyBzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEzMTphdGg2a2xfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUoc3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEzMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjE1MzpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2ZyZWVfdXJiX3RvX3BpcGUoc3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE1NC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTY5OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfY2xlYW51cF9yZWN2X3VyYihzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE3MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjE3NDpcXHRhdGg2a2xfdXNiX2ZyZWVfdXJiX3RvX3BpcGUodXJiX2NvbnRleHQtXFx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE3NS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxNzc6c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoNmtsX3VzYiAqYXRoNmtsX3VzYl9wcml2KHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTgyLS8qIHBpcGUgcmVzb3VyY2UgYWxsb2NhdGlvbi9jbGVhbnVwICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxODM6c3RhdGljIGludCBhdGg2a2xfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xODQtXFx0XFx0XFx0XFx0XFx0ICAgaW50IHVyYl9jbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTIwNS1cXHRcXHRwaXBlLVxcdTAwM2V1cmJfYWxsb2MrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjIwNjpcXHRcXHRhdGg2a2xfdXNiX2ZyZWVfdXJiX3RvX3BpcGUocGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjA3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MjE4OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjQxLVxcdHdoaWxlICh0cnVlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoyNDI6XFx0XFx0dXJiX2NvbnRleHQgPSBhdGg2a2xfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNDMtXFx0XFx0aWYgKHVyYl9jb250ZXh0ID09IE5VTEwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjI0OTpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI1MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI1My1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRINktMX1VTQl9QSVBFX01BWDsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MjU0OlxcdFxcdGF0aDZrbF91c2JfZnJlZV9waXBlX3Jlc291cmNlcyhcXHUwMDI2YXJfdXNiLVxcdTAwM2VwaXBlc1tpXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNTUtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MjU3OnN0YXRpYyB1OCBhdGg2a2xfdXNiX2dldF9sb2dpY2FsX3BpcGVfbnVtKHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNTgtXFx0XFx0XFx0XFx0XFx0ICB1OCBlcF9hZGRyZXNzLCBpbnQgKnVyYl9jb3VudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MzAzOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMzA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMzA3LVxcdHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZW5kcG9pbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzozMDg6XFx0c3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTMwOS1cXHRpbnQgaSwgdXJiY291bnQsIHN0YXR1cyA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTM1MC1cXHRcXHRwaXBlX251bSA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzozNTE6XFx0XFx0ICAgIGF0aDZrbF91c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0oYXJfdXNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMzUyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBlbmRwb2ludC1cXHUwMDNlYkVuZHBvaW50QWRkcmVzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDA2OlxcdFxcdHN0YXR1cyA9IGF0aDZrbF91c2JfYWxsb2NfcGlwZV9yZXNvdXJjZXMocGlwZSwgdXJiY291bnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDA3LVxcdFxcdGlmIChzdGF0dXMgIT0gMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDE0LS8qIHBpcGUgb3BlcmF0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDE1OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpyZWN2X3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00MTYtXFx0XFx0XFx0XFx0XFx0ICAgaW50IGJ1ZmZlcl9sZW5ndGgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQyMi1cXHR3aGlsZSAodHJ1ZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDIzOlxcdFxcdHVyYl9jb250ZXh0ID0gYXRoNmtsX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHJlY3ZfcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00MjQtXFx0XFx0aWYgKHVyYl9jb250ZXh0ID09IE5VTEwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQzOS1cXHRcXHRcXHRcXHQgIGJ1ZmZlcl9sZW5ndGgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo0NDA6XFx0XFx0XFx0XFx0ICBhdGg2a2xfdXNiX3JlY3ZfY29tcGxldGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDYzLWVycl9jbGVhbnVwX3VyYjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ2NDpcXHRhdGg2a2xfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDY1LVxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDY4OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZmx1c2hfYWxsKHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00Njkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo0ODQ6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl9zdGFydF9yZWN2X3BpcGVzKHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00ODktXFx0ICogICAgICBhcl91c2ItXFx1MDAzZXBpcGVzW0FUSDZLTF9VU0JfUElQRV9SWF9DVFJMXS51cmJfYWxsb2MvMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ5MDpcXHQgKiBhdGg2a2xfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoXFx1MDAyNmFyX3VzYi1cXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00OTEtXFx0ICpcXHRcXHRwaXBlc1tBVEg2S0xfVVNCX1BJUEVfUlhfQ1RSTF0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ5NzpcXHRhdGg2a2xfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoXFx1MDAyNmFyX3VzYi1cXHUwMDNlcGlwZXNbQVRINktMX1VTQl9QSVBFX1JYX0RBVEFdLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDk4LVxcdFxcdFxcdFxcdCAgICAgICBBVEg2S0xfVVNCX1JYX0JVRkZFUl9TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTAxLS8qIGhpZiB1c2IgcngvdHggY29tcGxldGlvbiBmdW5jdGlvbnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjUwMjpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTAzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTUwNC1cXHRzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjUwNTpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXFx1MDAzZXBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01MDYtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU0OS1jbGVhbnVwX3JlY3ZfdXJiOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTUwOlxcdGF0aDZrbF91c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU1NC1cXHRcXHQvKiBvdXIgZnJlZSB1cmJzIGFyZSBwaWxpbmcgdXAsIHBvc3QgbW9yZSB0cmFuc2ZlcnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjU1NTpcXHRcXHRhdGg2a2xfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMocGlwZSwgQVRINktMX1VTQl9SWF9CVUZGRVJfU0laRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NTYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1NTk6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl91c2JfdHJhbnNtaXRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTYwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU2MS1cXHRzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjU2MjpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXFx1MDAzZXBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NjMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTc3LVxcdHVyYl9jb250ZXh0LVxcdTAwM2Vza2IgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTc4OlxcdGF0aDZrbF91c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cXHUwMDNlcGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1ODU6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl9pb19jb21wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTg2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjU4NzpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlID0gY29udGFpbmVyX29mKHdvcmssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1ODg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01ODktXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGlvX2NvbXBsZXRlX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTkwOlxcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01OTEtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjA5OiNkZWZpbmUgQVRINktMX1VTQl9NQVhfRElBR19DTUQgKHNpemVvZihzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjYxMDojZGVmaW5lIEFUSDZLTF9VU0JfTUFYX0RJQUdfUkVTUCAoc2l6ZW9mKHN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjEyOnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZGVzdHJveShzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjEzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjYxNDpcXHRhdGg2a2xfdXNiX2ZsdXNoX2FsbChhcl91c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjE2OlxcdGF0aDZrbF91c2JfY2xlYW51cF9waXBlX3Jlc291cmNlcyhhcl91c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjE3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02MjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2Mjc6c3RhdGljIHN0cnVjdCBhdGg2a2xfdXNiICphdGg2a2xfdXNiX2NyZWF0ZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjI4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTYyOS1cXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjMwOlxcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2MzE6XFx0c3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTYzMi1cXHRpbnQgc3RhdHVzID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjM1OlxcdC8qIGF0aDZrbF91c2JfZGVzdHJveSgpIG5lZWRzIGFyX3VzYiAhPSBOVUxMIFxcdTAwMjZcXHUwMDI2IGFyX3VzYi1cXHUwMDNld3EgIT0gTlVMTC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjYzNjpcXHRhcl91c2IgPSBremFsbG9jX29iaihzdHJ1Y3QgYXRoNmtsX3VzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02MzctXFx0aWYgKGFyX3VzYiA9PSBOVUxMKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NTItXFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwaXBlLVxcdTAwM2Vpb19jb21wbGV0ZV93b3JrLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjUzOlxcdFxcdFxcdCAgYXRoNmtsX3VzYl9pb19jb21wX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjU0LVxcdFxcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnBpcGUtXFx1MDAzZWlvX2NvbXBfcXVldWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NTktXFx0XFx0c3RhdHVzID0gLUVOT01FTTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY2MDpcXHRcXHRnb3RvIGZhaWxfYXRoNmtsX3VzYl9jcmVhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NjEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NjYtXFx0XFx0c3RhdHVzID0gLUVOT01FTTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY2NzpcXHRcXHRnb3RvIGZhaWxfYXRoNmtsX3VzYl9jcmVhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NjgtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjcwOlxcdHN0YXR1cyA9IGF0aDZrbF91c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoYXJfdXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY3MjpmYWlsX2F0aDZrbF91c2JfY3JlYXRlOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjczLVxcdGlmIChzdGF0dXMgIT0gMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6Njc0OlxcdFxcdGF0aDZrbF91c2JfZGVzdHJveShhcl91c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjc1LVxcdFxcdGFyX3VzYiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY4MDpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2RldmljZV9kZXRhY2hlZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjgxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY4MjpcXHRzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjgzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02OTItXFx0YXRoNmtsX2NvcmVfY2xlYW51cChhcl91c2ItXFx1MDAzZWFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY5MzpcXHRhdGg2a2xfdXNiX2Rlc3Ryb3koYXJfdXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY5NC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jPTY5Nz1zdGF0aWMgdm9pZCBoaWZfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02OTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6Njk5OlxcdHN0cnVjdCBhdGg2a2xfdXNiICpkZXZpY2UgPSBhdGg2a2xfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzAwLVxcdGludCBpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NzAyOlxcdGF0aDZrbF91c2Jfc3RhcnRfcmVjdl9waXBlcyhkZXZpY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03MTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3MTI6c3RhdGljIGludCBhdGg2a2xfdXNiX3NlbmQoc3RydWN0IGF0aDZrbCAqYXIsIHU4IFBpcGVJRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcxMy1cXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqaGRyX3NrYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcxNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3MTU6XFx0c3RydWN0IGF0aDZrbF91c2IgKmRldmljZSA9IGF0aDZrbF91c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3MTY6XFx0c3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSA9IFxcdTAwMjZkZXZpY2UtXFx1MDAzZXBpcGVzW1BpcGVJRF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03MTctXFx0c3RydWN0IGF0aDZrbF91cmJfY29udGV4dCAqdXJiX2NvbnRleHQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjcyNjpcXHR1cmJfY29udGV4dCA9IGF0aDZrbF91c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShwaXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcyNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzQ3LVxcdFxcdHN0YXR1cyA9IC1FTk9NRU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3NDg6XFx0XFx0YXRoNmtsX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVxcdTAwM2VwaXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzQ5LVxcdFxcdFxcdFxcdFxcdCAgICB1cmJfY29udGV4dCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc1Ny1cXHRcXHRcXHQgIGxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjc1ODpcXHRcXHRcXHQgIGF0aDZrbF91c2JfdXNiX3RyYW5zbWl0X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03NTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc3Ny1cXHRcXHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3Nzg6XFx0XFx0YXRoNmtsX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVxcdTAwM2VwaXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzc5LVxcdFxcdFxcdFxcdFxcdCAgICB1cmJfY29udGV4dCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jPTc4OD1zdGF0aWMgdm9pZCBoaWZfc3RvcChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc4OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3OTA6XFx0c3RydWN0IGF0aDZrbF91c2IgKmRldmljZSA9IGF0aDZrbF91c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3OTI6XFx0YXRoNmtsX3VzYl9mbHVzaF9hbGwoZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc5My19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03OTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3OTU6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl9nZXRfZGVmYXVsdF9waXBlKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzk2LVxcdFxcdFxcdFxcdFxcdHU4ICp1bF9waXBlLCB1OCAqZGxfcGlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6ODAyOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9tYXBfc2VydmljZV9waXBlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MTYgc3ZjX2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODAzLVxcdFxcdFxcdFxcdCAgICAgICB1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg1NzpzdGF0aWMgdTE2IGF0aDZrbF91c2JfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyKHN0cnVjdCBhdGg2a2wgKmFyLCB1OCBwaXBlX2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODU4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg1OTpcXHRzdHJ1Y3QgYXRoNmtsX3VzYiAqZGV2aWNlID0gYXRoNmtsX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg2MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9ODY0PXN0YXRpYyB2b2lkIGhpZl9kZXRhY2hfaHRjKHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODY1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg2NjpcXHRzdHJ1Y3QgYXRoNmtsX3VzYiAqZGV2aWNlID0gYXRoNmtsX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg2ODpcXHRhdGg2a2xfdXNiX2ZsdXNoX2FsbChkZXZpY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODY5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg3MTpzdGF0aWMgaW50IGF0aDZrbF91c2Jfc3VibWl0X2N0cmxfb3V0KHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy04NzItXFx0XFx0XFx0XFx0ICAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTAzOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9zdWJtaXRfY3RybF9pbihzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTA0LVxcdFxcdFxcdFxcdCAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTM3OnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9jdHJsX21zZ19leGNoYW5nZShzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTM4LVxcdFxcdFxcdFxcdCAgICAgdTggcmVxX3ZhbCwgdTggKnJlcV9idWYsIHUzMiByZXFfbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NDMtXFx0Lyogc2VuZCBjb21tYW5kICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5NDQ6XFx0cmV0ID0gYXRoNmtsX3VzYl9zdWJtaXRfY3RybF9vdXQoYXJfdXNiLCByZXFfdmFsLCAwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTQ1LVxcdFxcdFxcdFxcdFxcdCByZXFfYnVmLCByZXFfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTU1LVxcdC8qIGdldCByZXNwb25zZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTU2OlxcdHJldCA9IGF0aDZrbF91c2Jfc3VibWl0X2N0cmxfaW4oYXJfdXNiLCByZXNwX3ZhbCwgMCwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk1Ny1cXHRcXHRcXHRcXHRcXHRyZXNwX2J1ZiwgKnJlc3BfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTYyOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9kaWFnX3JlYWQzMihzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHJlc3MsIHUzMiAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk2My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5NjQ6XFx0c3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYiA9IGFyLVxcdTAwM2VoaWZfcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjk2NTpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkICpyZXNwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTY2OlxcdHN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTY3LVxcdHUzMiByZXNwX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTcwOlxcdGNtZCA9IChzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQgKikgYXJfdXNiLVxcdTAwM2VkaWFnX2NtZF9idWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjk3NzpcXHRyZXQgPSBhdGg2a2xfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyX3VzYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk3OC1cXHRcXHRcXHRcXHRBVEg2S0xfVVNCX0NPTlRST0xfUkVRX0RJQUdfQ01ELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTc5LVxcdFxcdFxcdFxcdCh1OCAqKSBjbWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5ODA6XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTgxLVxcdFxcdFxcdFxcdEFUSDZLTF9VU0JfQ09OVFJPTF9SRVFfRElBR19SRVNQLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5ODk6XFx0cmVzcCA9IChzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05OTAtXFx0XFx0YXJfdXNiLVxcdTAwM2VkaWFnX3Jlc3BfYnVmZmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5OTc6c3RhdGljIGludCBhdGg2a2xfdXNiX2RpYWdfd3JpdGUzMihzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHJlc3MsIF9fbGUzMiBkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTk4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjk5OTpcXHRzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiID0gYXItXFx1MDAzZWhpZl9wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTAwMDpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlICpjbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDAxLVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTAwMzpcXHRjbWQgPSAoc3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqKSBhcl91c2ItXFx1MDAzZWRpYWdfY21kX2J1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDA1OlxcdG1lbXNldChjbWQsIDAsIHNpemVvZihzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDA2LVxcdGNtZC1cXHUwMDNlY21kID0gY3B1X3RvX2xlMzIoQVRINktMX1VTQl9DVFJMX0RJQUdfQ0NfV1JJVEUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTAxMDpcXHRyZXQgPSBhdGg2a2xfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyX3VzYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwMTEtXFx0XFx0XFx0XFx0XFx0ICAgQVRINktMX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwMjM6c3RhdGljIGludCBhdGg2a2xfdXNiX2JtaV9yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1OCAqYnVmLCB1MzIgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAyNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDI1OlxcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IgPSBhci1cXHUwMDNlaGlmX3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDI2LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwMjgtXFx0LyogZ2V0IHJlc3BvbnNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDI5OlxcdHJldCA9IGF0aDZrbF91c2Jfc3VibWl0X2N0cmxfaW4oYXJfdXNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAzMC1cXHRcXHRcXHRcXHRcXHRBVEg2S0xfVVNCX0NPTlRST0xfUkVRX1JFQ1ZfQk1JX1JFU1AsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDQxOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9ibWlfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHU4ICpidWYsIHUzMiBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDQyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwNDM6XFx0c3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYiA9IGFyLVxcdTAwM2VoaWZfcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNDQtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA0Ni1cXHQvKiBzZW5kIGNvbW1hbmQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwNDc6XFx0cmV0ID0gYXRoNmtsX3VzYl9zdWJtaXRfY3RybF9vdXQoYXJfdXNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA0OC1cXHRcXHRcXHRcXHRcXHQgQVRINktMX1VTQl9DT05UUk9MX1JFUV9TRU5EX0JNSV9DTUQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDU5OnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9wb3dlcl9vbihzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA2NTpzdGF0aWMgaW50IGF0aDZrbF91c2JfcG93ZXJfb2ZmKHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDcxOnN0YXRpYyB2b2lkIGF0aDZrbF91c2Jfc3RvcChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA3NjpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2NsZWFudXBfc2NhdHRlcihzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA4NDpzdGF0aWMgaW50IGF0aDZrbF91c2Jfc3VzcGVuZChzdHJ1Y3QgYXRoNmtsICphciwgc3RydWN0IGNmZzgwMjExX3dvd2xhbiAqd293KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA4NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDkyOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9yZXN1bWUoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDA6c3RhdGljIGNvbnN0IHN0cnVjdCBhdGg2a2xfaGlmX29wcyBhdGg2a2xfdXNiX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDE6XFx0LmRpYWdfcmVhZDMyID0gYXRoNmtsX3VzYl9kaWFnX3JlYWQzMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDI6XFx0LmRpYWdfd3JpdGUzMiA9IGF0aDZrbF91c2JfZGlhZ193cml0ZTMyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTEwMzpcXHQuYm1pX3JlYWQgPSBhdGg2a2xfdXNiX2JtaV9yZWFkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTEwNDpcXHQuYm1pX3dyaXRlID0gYXRoNmtsX3VzYl9ibWlfd3JpdGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA1OlxcdC5wb3dlcl9vbiA9IGF0aDZrbF91c2JfcG93ZXJfb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA2OlxcdC5wb3dlcl9vZmYgPSBhdGg2a2xfdXNiX3Bvd2VyX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDc6XFx0LnN0b3AgPSBhdGg2a2xfdXNiX3N0b3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA4OlxcdC5waXBlX3NlbmQgPSBhdGg2a2xfdXNiX3NlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA5OlxcdC5waXBlX2dldF9kZWZhdWx0ID0gYXRoNmtsX3VzYl9nZXRfZGVmYXVsdF9waXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTExMDpcXHQucGlwZV9tYXBfc2VydmljZSA9IGF0aDZrbF91c2JfbWFwX3NlcnZpY2VfcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMTE6XFx0LnBpcGVfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyID0gYXRoNmtsX3VzYl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTEyOlxcdC5jbGVhbnVwX3NjYXR0ZXIgPSBhdGg2a2xfdXNiX2NsZWFudXBfc2NhdHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMTM6XFx0LnN1c3BlbmQgPSBhdGg2a2xfdXNiX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTE0OlxcdC5yZXN1bWUgPSBhdGg2a2xfdXNiX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExMTUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTExNy0vKiBhdGg2a2wgdXNiIGRyaXZlciByZWdpc3RlcmVkIGZ1bmN0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTExODpzdGF0aWMgaW50IGF0aDZrbF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExMTktXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTEyMi1cXHRzdHJ1Y3QgYXRoNmtsICphcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMjM6XFx0c3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYiA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTI0LVxcdGludCB2ZW5kb3JfaWQsIHByb2R1Y3RfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTQzOlxcdGFyX3VzYiA9IGF0aDZrbF91c2JfY3JlYXRlKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTQ0LVxcdGlmIChhcl91c2IgPT0gTlVMTClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE1NS1cXHRhci1cXHUwMDNlaGlmX3R5cGUgPSBBVEg2S0xfSElGX1RZUEVfVVNCO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE1NjpcXHRhci1cXHUwMDNlaGlmX29wcyA9IFxcdTAwMjZhdGg2a2xfdXNiX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNTctXFx0YXItXFx1MDAzZW1ib3hfaW5mby5ibG9ja19zaXplID0gMTY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNzItZXJyX3VzYl9kZXN0cm95OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE3MzpcXHRhdGg2a2xfdXNiX2Rlc3Ryb3koYXJfdXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTc4OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE3OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTgwOlxcdGF0aDZrbF91c2JfZGV2aWNlX2RldGFjaGVkKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTgxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExODU6c3RhdGljIGludCBhdGg2a2xfdXNiX3BtX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExODYtXFx0XFx0XFx0ICAgICAgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTg3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExODg6XFx0c3RydWN0IGF0aDZrbF91c2IgKmRldmljZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExODktXFx0ZGV2aWNlID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExOTE6XFx0YXRoNmtsX3VzYl9mbHVzaF9hbGwoZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExOTItXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTk1OnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9wbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExOTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE5NzpcXHRzdHJ1Y3QgYXRoNmtsX3VzYiAqZGV2aWNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE5OC1cXHRkZXZpY2UgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIwMDpcXHRhdGg2a2xfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoXFx1MDAyNmRldmljZS1cXHUwMDNlcGlwZXNbQVRINktMX1VTQl9QSVBFX1JYX0RBVEFdLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTIwMS1cXHRcXHRcXHRcXHQgICAgICAgQVRINktMX1VTQl9SWF9CVUZGRVJfU0laRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjAyOlxcdGF0aDZrbF91c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhcXHUwMDI2ZGV2aWNlLVxcdTAwM2VwaXBlc1tBVEg2S0xfVVNCX1BJUEVfUlhfREFUQTJdLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTIwMy1cXHRcXHRcXHRcXHQgICAgICAgQVRINktMX1VTQl9SWF9CVUZGRVJfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjEwOiNkZWZpbmUgYXRoNmtsX3VzYl9wbV9zdXNwZW5kIE5VTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMTE6I2RlZmluZSBhdGg2a2xfdXNiX3BtX3Jlc3VtZSBOVUxMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjE1LS8qIHRhYmxlIG9mIGRldmljZXMgdGhhdCB3b3JrIHdpdGggdGhpcyBkcml2ZXIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMTY6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGF0aDZrbF91c2JfaWRzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjE3LVxcdHtVU0JfREVWSUNFKDB4MGNmMywgMHg5Mzc1KX0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjIzOk1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBhdGg2a2xfdXNiX2lkcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIyNTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYXRoNmtsX3VzYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjI2OlxcdC5uYW1lID0gXFxcImF0aDZrbF91c2JcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIyNzpcXHQucHJvYmUgPSBhdGg2a2xfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIyODpcXHQuc3VzcGVuZCA9IGF0aDZrbF91c2JfcG1fc3VzcGVuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjk6XFx0LnJlc3VtZSA9IGF0aDZrbF91c2JfcG1fcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIzMDpcXHQuZGlzY29ubmVjdCA9IGF0aDZrbF91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMzE6XFx0LmlkX3RhYmxlID0gYXRoNmtsX3VzYl9pZHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjMyLVxcdC5zdXBwb3J0c19hdXRvc3VzcGVuZCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjM2Om1vZHVsZV91c2JfZHJpdmVyKGF0aDZrbF91c2JfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMzctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjUxLjkxMTM5NDgzMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNTI3MzEzMDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQgd2VyZSBteSBvd24gdGhvdWdodCBwcm9jZXNzOlxuXG4qKlVTQiBEcml2ZXIgYW5kIEluaXRpYWxpemF0aW9uIEhvb2sqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBgYXRoNmtsYCwgYW5kIGl0J3MgZ290IGEgVVNCIGRyaXZlciwgYGF0aDZrbF91c2JgLCB3aGljaCBpbW1lZGlhdGVseSBzcGFya3Mgc29tZSBpZGVhcy4gSSBrbm93IFN5emthbGxlciBoYXMgYSBkZWNlbnQgVVNCIGZ1enplciwgYGR1bW15X2hjZGAsIHdoaWNoIGNvdWxkIGJlIGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggdGFyZ2V0cyBgYXRoNmtsX2luaXRfdXBsb2FkYCwgd2hpY2gsIGJhc2VkIG9uIHRoZSBuYW1lIGFsb25lLCBpcyBsaWtlbHkgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UsIHByb2JhYmx5IGR1cmluZyBkZXZpY2UgYnJpbmd1cC4gTGV0J3Mgc2VlIGV4YWN0bHkgKndoZXJlKiB0aGF0IGZ1bmN0aW9uLCBgYXRoNmtsX2luaXRfdXBsb2FkYCwgaXMgYmVpbmcgY2FsbGVkLiBUaW1lIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY0MzcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1NDo1NS40Mzg3MjEzNzlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1MTE0NDA5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg2a2xfaW5pdF91cGxvYWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM9MTQwOD1zdGF0aWMgaW50IGF0aDZrbF91cGxvYWRfdGVzdHNjcmlwdChzdHJ1Y3QgYXRoNmtsICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE0NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTQ0MjpzdGF0aWMgaW50IGF0aDZrbF9pbml0X3VwbG9hZChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xNDQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jPTE3MDY9c3RhdGljIGludCBfX2F0aDZrbF9pbml0X2h3X3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTcyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYzoxNzIyOlxcdHJldCA9IGF0aDZrbF9pbml0X3VwbG9hZChhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTcyMy1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1NDo1Ny41ODk4NzA5NzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTg1MzYzMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBIYXJkd2FyZSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIGBhdGg2a2xgIGRyaXZlcidzIGluaXRpYWxpemF0aW9uLiBJIHNlZSB0aGF0IHRoZSBgX19hdGg2a2xfaW5pdF9od19zdGFydGAgZnVuY3Rpb24gaXMgdGhlIHBvaW50IG9mIGludGVyZXN0LiBJdCB0cmlnZ2VycyBgYXRoNmtsX2luaXRfdXBsb2FkYCwgd2hpY2ggSSdtIGFzc3VtaW5nIGhhbmRsZXMgdGhlIGluaXRpYWwgZmlybXdhcmUgb3IgY29uZmlndXJhdGlvbiBkYXRhIHVwbG9hZCB0byB0aGUgaGFyZHdhcmUuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0LiBJIG5lZWQgdG8gdHJhY2UgYmFjayBhbmQgZmlndXJlIG91dCAqd2hlcmUqIGBfX2F0aDZrbF9pbml0X2h3X3N0YXJ0YCBpdHNlbGYgaXMgYmVpbmcgY2FsbGVkLiBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9uKHMpIHdpbGwgZ2l2ZSBtZSB2YWx1YWJsZSBjbHVlcyBhYm91dCB0aGUgb3ZlcmFsbCBoYXJkd2FyZSBicmluZy11cCBwcm9jZXNzIGFuZCB3aGVyZSB0aGlzIHBpZWNlIGZpdHMgaW50byB0aGUgZ3JlYXRlciBpbml0aWFsaXphdGlvbiBwaWN0dXJlLiBJJ20gaG9waW5nIHRvIGdldCBzb21lIGNvbnRleHQgZm9yIHRoaXMgdXBsb2FkIHByb2Nlc3MuIExldCdzIHNlZS4uLiBiYWNrIHRvIHRoZSBzb3VyY2UgY29kZSBJIGdvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjk1OCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjAwLjc3NTIzNzAxNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM4OTU0MTAzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2F0aDZrbF9pbml0X2h3X3N0YXJ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jPTE2OTg9c3RhdGljIGludCBhdGg2a2xfaW5pdF9od19yZXNldChzdHJ1Y3QgYXRoNmtsICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE3MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTcwNjpzdGF0aWMgaW50IF9fYXRoNmtsX2luaXRfaHdfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTcwNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYz0xODI4PWludCBhdGg2a2xfaW5pdF9od19zdGFydChzdHJ1Y3QgYXRoNmtsICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE4MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTgzMjpcXHRlcnIgPSBfX2F0aDZrbF9pbml0X2h3X3N0YXJ0KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODMzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYz0xODY5PXZvaWQgYXRoNmtsX2luaXRfaHdfcmVzdGFydChzdHJ1Y3QgYXRoNmtsICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE4NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTg4MDpcXHRpZiAoX19hdGg2a2xfaW5pdF9od19zdGFydChhcikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODgxLVxcdFxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19SRUNPVkVSWSwgXFxcIkZhaWxlZCB0byByZXN0YXJ0IGR1cmluZyBmdyBlcnJvciByZWNvdmVyeVxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjAzLjE2NDc4NzYxOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTQ2NzkxODMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipEaXZpbmcgaW50byB0aGUgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKlxuXG5Pa2F5LCBzbyBJIHNlZSBgYXRoNmtsX2luaXRfaHdfc3RhcnRgIGlzIHRoZSBmdW5jdGlvbiBvZiBpbnRlcmVzdC4gVGhlIGZpcnN0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYGF0aDZrbF9pbml0X2h3X3N0YXJ0YCBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSwgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgZ3JhcGggYW5kIHNlZSB3aGljaCBvdGhlciBmdW5jdGlvbnMgZGVwZW5kIG9uIGl0LiBUaGF0IHdpbGwgZ2l2ZSBtZSBjb250ZXh0LCBhbmQgaGVscCBkZXRlcm1pbmUgdGhlIGxvZ2ljIG9mIHRoZSBzeXN0ZW0ncyBpbml0aWFsaXphdGlvbi5cbkxldCdzIGZpcnN0IGxvb2sgYXQgdGhlIG90aGVyIGZ1bmN0aW9uLCBgX19hdGg2a2xfaW5pdF9od19zdGFydGAsIHRoaXMgbWlnaHQgcHJvdmlkZSBoaW50cyBhcyB0byB0aGUgb3BlcmF0aW9uIG9mIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NjQzLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTU6MTAuNzExNTgxNDg5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzEwMzQ5NDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDZrbF9pbml0X2h3X3N0YXJ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYz0yNDk5PWludCBhdGg2a2xfY2ZnODAyMTFfcmVzdW1lKHN0cnVjdCBhdGg2a2wgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI1MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI1Mjg6XFx0XFx0cmV0ID0gYXRoNmtsX2luaXRfaHdfc3RhcnQoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTI5LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jPTY2PWludCBhdGg2a2xfY29yZV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyLCBlbnVtIGF0aDZrbF9odGNfdHlwZSBodGNfdHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTE5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuYzoxOTE6XFx0cmV0ID0gYXRoNmtsX2luaXRfaHdfc3RhcnQoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTE5Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaD05Njg9dm9pZCBhdGg2a2xfY2ZnODAyMTFfdmlmX3N0b3Aoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgYm9vbCB3bWlfcmVhZHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oOjk2OTppbnQgYXRoNmtsX2luaXRfaHdfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTk3MC1pbnQgYXRoNmtsX2luaXRfaHdfc3RvcChzdHJ1Y3QgYXRoNmtsICphcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYz0xNjk4PXN0YXRpYyBpbnQgYXRoNmtsX2luaXRfaHdfcmVzZXQoc3RydWN0IGF0aDZrbCAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xNzA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jOjE3MDY6c3RhdGljIGludCBfX2F0aDZrbF9pbml0X2h3X3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE3MDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTgyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYzoxODI4OmludCBhdGg2a2xfaW5pdF9od19zdGFydChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE4MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTgzMjpcXHRlcnIgPSBfX2F0aDZrbF9pbml0X2h3X3N0YXJ0KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODMzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYz0xODY5PXZvaWQgYXRoNmtsX2luaXRfaHdfcmVzdGFydChzdHJ1Y3QgYXRoNmtsICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE4NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTg4MDpcXHRpZiAoX19hdGg2a2xfaW5pdF9od19zdGFydChhcikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODgxLVxcdFxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19SRUNPVkVSWSwgXFxcIkZhaWxlZCB0byByZXN0YXJ0IGR1cmluZyBmdyBlcnJvciByZWNvdmVyeVxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjEzLjAyMTkzNDgwM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc5NTU1NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIEZsb3cgb2YgdGhlIGF0aDZrbCBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBzbyBgYXRoNmtsX2NvcmVfaW5pdGAgaXMgdGhlIGVudHJ5IHBvaW50LCBuYXR1cmFsbHkuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGhvdyB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZ2V0cyB0cmlnZ2VyZWQuIEkgc2VlIHRoYXQgYGF0aDZrbF9jb3JlX2luaXRgIHN1YnNlcXVlbnRseSBjYWxscyBgYXRoNmtsX2luaXRfaHdfc3RhcnRgLiBUaGF0J3MgYSBjcml0aWNhbCBwb2ludCB0byBkaXNzZWN0LCBzbyBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY2FsbCBncmFwaCBhbmQgcGlucG9pbnQgKndoZXJlKiBleGFjdGx5IGBhdGg2a2xfY29yZV9pbml0YCBpcyBpbnZva2VkLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMgZ29pbmcgdG8gcHJvdmlkZSB2YWx1YWJsZSBpbnNpZ2h0IGludG8gdGhlIG92ZXJhbGwgZHJpdmVyIGxpZmVjeWNsZSBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbiwgcGFydGljdWxhcmx5IHN1cnJvdW5kaW5nIHRoZSBoYXJkd2FyZSBpbml0LiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gdGhhdCBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSByb290IGNhdXNlIG9mIGFueSBwb3RlbnRpYWwgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc2MCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjE2LjIwMTQ5MzU3M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0NjczNjY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg2a2xfY29yZV9pbml0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jPTY0PUVYUE9SVF9TWU1CT0woYXRoNmtsX2NvcmVfcnhfY29tcGxldGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jOjY2OmludCBhdGg2a2xfY29yZV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyLCBlbnVtIGF0aDZrbF9odGNfdHlwZSBodGNfdHlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuYy02Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuYy0yNjQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jOjI2NTpFWFBPUlRfU1lNQk9MKGF0aDZrbF9jb3JlX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTI2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTk3OT1zdHJ1Y3QgYXRoNmtsICphdGg2a2xfY29yZV9jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDo5ODA6aW50IGF0aDZrbF9jb3JlX2luaXQoc3RydWN0IGF0aDZrbCAqYXIsIGVudW0gYXRoNmtsX2h0Y190eXBlIGh0Y190eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC05ODEtdm9pZCBhdGg2a2xfY29yZV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvc2Rpby5jPTEzMDY9c3RhdGljIGludCBhdGg2a2xfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9zZGlvLmMtMTM3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3NkaW8uYzoxMzcyOlxcdHJldCA9IGF0aDZrbF9jb3JlX2luaXQoYXIsIEFUSDZLTF9IVENfVFlQRV9NQk9YKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3NkaW8uYy0xMzczLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9MTExOD1zdGF0aWMgaW50IGF0aDZrbF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExNjI6XFx0cmV0ID0gYXRoNmtsX2NvcmVfaW5pdChhciwgQVRINktMX0hUQ19UWVBFX1BJUEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE2My1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjE4Ljc0ODIzNTgxM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODk4ODkwMzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYXRoNmtsX3VzYiBQcm9iZSBhbmQgSW5pdCBTZXF1ZW5jZSoqXG5cbk9rYXksIHNvIHRoZSBgYXRoNmtsX3VzYl9wcm9iZWAgZnVuY3Rpb24gaXMgdGhlIGVudHJ5IHBvaW50IHdoZW4gYSBjb21wYXRpYmxlIFVTQiBkZXZpY2UgY29tZXMgb25saW5lLiBJJ20gc2VlaW5nIHRoYXQgaXQgY2FsbHMgYGF0aDZrbF9jb3JlX2luaXRgLCB3aGljaCBpcyB3aGF0IEknZCBleHBlY3QgZm9yIGluaXRpYWxpemluZyB0aGUgY29yZSBkcml2ZXIuIGBhdGg2a2xfY29yZV9pbml0YCwgaW4gdHVybiwgZ29lcyBkb3duIHRoZSBjaGFpbjogYGF0aDZrbF9pbml0X2h3X3N0YXJ0YCwgdGhlbiBgX19hdGg2a2xfaW5pdF9od19zdGFydGAsIGFuZCBmaW5hbGx5IGhpdHMgYGF0aDZrbF9pbml0X3VwbG9hZGAuIFRoaXMgbWFrZXMgc2Vuc2UsIGVzdGFibGlzaGluZyBhIGxvZ2ljYWwgZmxvdyBmcm9tIGRldmljZSBkZXRlY3Rpb24gdG8gaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gYW5kIHVsdGltYXRlbHksIHNvbWUgZm9ybSBvZiBmaXJtd2FyZSB1cGxvYWQgb3IgaW5pdGlhbCBjb25maWd1cmF0aW9uLlxuXG5Ob3csIHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgYHJldHVybiBzdGF0dXM7YCB0byBgcmV0dXJuIDA7YCBhdCB0aGUgdGFpbCBlbmQgb2YgdGhlIGBhdGg2a2xfaW5pdF91cGxvYWRgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIFwid2FpdCBhIG1pbnV0ZS4uLiB3aHk/XCIgSWYgYHN0YXR1c2AgY29udGFpbmVkIGFuIGVycm9yIGNvZGUsIHdvdWxkbid0IGl0IGhhdmUgYmVlbiByZXR1cm5lZCAqZWFybGllciogaW4gdGhlIGZ1bmN0aW9uPyBJdCBsb29rcyBsaWtlIHdlJ3JlIG5vdCBwcm9wZXJseSBoYW5kbGluZyBhbiBlcnJvciBjb25kaXRpb24gYXQgdGhlIGZpbmFsIHN0YWdlLiBUaGUgaW1wbGljYXRpb24gaXMgdGhhdCBhbnkgZmFpbHVyZSBkdXJpbmcgdGhlIHVwbG9hZCBwaGFzZSwgb3IgYW55IG90aGVyIHByZWNlZGluZyBvcGVyYXRpb24sIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IG1hc2tlZC4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgYXRoNmtsX2luaXRfdXBsb2FkYCBhbmQgc2VlIHdoYXQncyBiZWluZyBtaXNzZWQgaGVyZSwgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhcmUuIFRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gbGVhZCB0byBoYXJkLXRvLWRpYWdub3NlIGlzc3Vlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCAnc3RhdHVzJyByZXByZXNlbnRzIGFuZCB3aHkgdGhpcyBjaGFuZ2Ugd2FzIG1hZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NjE5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjIzLjY0NzEyOTE1NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTU2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTU2MDpcXHRcXG4xNTYxOlxcdFxcdC8qIFJlc3RvcmUgc3lzdGVtIHNsZWVwICovXFxuMTU2MjpcXHRcXHRhZGRyZXNzID0gUlRDX0JBU0VfQUREUkVTUyArIFNZU1RFTV9TTEVFUF9BRERSRVNTO1xcbjE1NjM6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHNsZWVwKTtcXG4xNTY0OlxcdFxcdGlmIChzdGF0dXMpXFxuMTU2NTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1NjY6XFx0XFxuMTU2NzpcXHRcXHRhZGRyZXNzID0gTUJPWF9CQVNFX0FERFJFU1MgKyBMT0NBTF9TQ1JBVENIX0FERFJFU1M7XFxuMTU2ODpcXHRcXHRwYXJhbSA9IG9wdGlvbnMgfCAweDIwO1xcbjE1Njk6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcXG4xNTcwOlxcdFxcdGlmIChzdGF0dXMpXFxuMTU3MTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1NzI6XFx0XFxuMTU3MzpcXHRcXHRyZXR1cm4gMDtcXG4xNTc0OlxcdH1cXG4xNTc1OlxcdFxcbjE1NzY6XFx0aW50IGF0aDZrbF9pbml0X2h3X3BhcmFtcyhzdHJ1Y3QgYXRoNmtsICphcilcXG4xNTc3OlxcdHtcXG4xNTc4OlxcdFxcdGNvbnN0IHN0cnVjdCBhdGg2a2xfaHcgKmh3O1xcbjE1Nzk6XFx0XFx0aW50IGk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjIzLjY0NzI3OTQyNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzUyODc0NTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggQ2hhbmdlKipcblxuT2theSwgaGVyZSB3ZSBnbywgbG9va2luZyBhdCB0aGlzIGNvZGUgZGlmZi4gSG1tLCB0aGlzIGxpbmUuLi5cblxuYGBgY1xuLVx0cmV0dXJuIHN0YXR1cztcbitcdHJldHVybiAwO1xuYGBgXG5cbk15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gdGhpbmssIFwiV2FpdCwgaXMgdGhpcyBldmVuICpkb2luZyogYW55dGhpbmc/XCIgSWYgdGhlIGNvZGUgcmVhY2hlcyB0aGlzIHBvaW50LCBzaG91bGRuJ3QgYHN0YXR1c2AgYWxyZWFkeSBiZSB6ZXJvPyBUaGluaywgaWYgYHN0YXR1c2Agd2FzIGFueXRoaW5nICpvdGhlciogdGhhbiB6ZXJvLCB3ZSdkIGhhdmUgcmV0dXJuZWQgbXVjaCBlYXJsaWVyLCBiYWNrIGF0IGxpbmUgMTU3MS4gTGluZSAxNTczLCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCB3b3VsZCBvbmx5IGJlIHJlYWNoZWQgaWYgdGhlIGNvbmRpdGlvbiB3YXMgbWV0LiBTaW5jZSB3ZSdyZSBoZXJlLCBgc3RhdHVzYCAqaGFzKiB0byBiZSB6ZXJvLiBTbywgdGhpcyBzdWJzdGl0dXRpb24gbG9va3MgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQuIGByZXR1cm4gc3RhdHVzO2AgKnNob3VsZCogYmVoYXZlIHRoZSBzYW1lIGFzIGByZXR1cm4gMDtgIGJlY2F1c2Ugd2UncmUgZ3VhcmFudGVlaW5nIGBzdGF0dXNgIHRvIGJlIDAgaGVyZS5cblxuU3RpbGwsIEknbSBnb2luZyB0byBkbyBhIHF1aWNrIG1lbnRhbCBzZWFyY2guLi4gSSdsbCBjaGVjayBmb3IgYW55IGdvdG9zIG9yIHVuZXhwZWN0ZWQgY29udHJvbCBmbG93IHRoYXQgbWlnaHQganVtcCBhcm91bmQgdGhlIGBpZiAoc3RhdHVzKWAgY2hlY2suIFRoZXJlJ3MgYWx3YXlzIHNvbWUgZWRnZSBjYXNlIEkgbWlnaHQgbWlzcy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDI2LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTU6MjguNDAwMTU2OTUyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMzA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDQyLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ0MjpcXHRzdGF0aWMgaW50IGF0aDZrbF9pbml0X3VwbG9hZChzdHJ1Y3QgYXRoNmtsICphcilcXG4xNDQzOlxcdHtcXG4xNDQ0OlxcdFxcdHUzMiBwYXJhbSwgb3B0aW9ucywgc2xlZXAsIGFkZHJlc3M7XFxuMTQ0NTpcXHRcXHRpbnQgc3RhdHVzID0gMDtcXG4xNDQ2OlxcdFxcbjE0NDc6XFx0XFx0aWYgKGFyLVxcdTAwM2V0YXJnZXRfdHlwZSAhPSBUQVJHRVRfVFlQRV9BUjYwMDMgXFx1MDAyNlxcdTAwMjZcXG4xNDQ4OlxcdFxcdCAgICBhci1cXHUwMDNldGFyZ2V0X3R5cGUgIT0gVEFSR0VUX1RZUEVfQVI2MDA0KVxcbjE0NDk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMTQ1MDpcXHRcXG4xNDUxOlxcdFxcdC8qIHRlbXBvcmFyaWx5IGRpc2FibGUgc3lzdGVtIHNsZWVwICovXFxuMTQ1MjpcXHRcXHRhZGRyZXNzID0gTUJPWF9CQVNFX0FERFJFU1MgKyBMT0NBTF9TQ1JBVENIX0FERFJFU1M7XFxuMTQ1MzpcXHRcXHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ19yZWFkKGFyLCBhZGRyZXNzLCBcXHUwMDI2cGFyYW0pO1xcbjE0NTQ6XFx0XFx0aWYgKHN0YXR1cylcXG4xNDU1OlxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTQ1NjpcXHRcXG4xNDU3OlxcdFxcdG9wdGlvbnMgPSBwYXJhbTtcXG4xNDU4OlxcdFxcbjE0NTk6XFx0XFx0cGFyYW0gfD0gQVRINktMX09QVElPTl9TTEVFUF9ESVNBQkxFO1xcbjE0NjA6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcXG4xNDYxOlxcdFxcdGlmIChzdGF0dXMpXFxuMTQ2MjpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE0NjM6XFx0XFxuMTQ2NDpcXHRcXHRhZGRyZXNzID0gUlRDX0JBU0VfQUREUkVTUyArIFNZU1RFTV9TTEVFUF9BRERSRVNTO1xcbjE0NjU6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfcmVhZChhciwgYWRkcmVzcywgXFx1MDAyNnBhcmFtKTtcXG4xNDY2OlxcdFxcdGlmIChzdGF0dXMpXFxuMTQ2NzpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE0Njg6XFx0XFxuMTQ2OTpcXHRcXHRzbGVlcCA9IHBhcmFtO1xcbjE0NzA6XFx0XFxuMTQ3MTpcXHRcXHRwYXJhbSB8PSBTTShTWVNURU1fU0xFRVBfRElTQUJMRSwgMSk7XFxuMTQ3MjpcXHRcXHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgcGFyYW0pO1xcbjE0NzM6XFx0XFx0aWYgKHN0YXR1cylcXG4xNDc0OlxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTQ3NTpcXHRcXG4xNDc2OlxcdFxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19UUkMsIFxcXCJvbGQgb3B0aW9uczogJWQsIG9sZCBzbGVlcDogJWRcXFxcblxcXCIsXFxuMTQ3NzpcXHRcXHRcXHQgICBvcHRpb25zLCBzbGVlcCk7XFxuMTQ3ODpcXHRcXG4xNDc5OlxcdFxcdC8qIHByb2dyYW0gYW5hbG9nIFBMTCByZWdpc3RlciAqL1xcbjE0ODA6XFx0XFx0Lyogbm8gbmVlZCB0byBjb250cm9sIDQwLzQ0TUh6IGNsb2NrIG9uIEFSNjAwNCAqL1xcbjE0ODE6XFx0XFx0aWYgKGFyLVxcdTAwM2V0YXJnZXRfdHlwZSAhPSBUQVJHRVRfVFlQRV9BUjYwMDQpIHtcXG4xNDgyOlxcdFxcdFxcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBBVEg2S0xfQU5BTE9HX1BMTF9SRUdJU1RFUixcXG4xNDgzOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIDB4RjkxMDQwMDEpO1xcbjE0ODQ6XFx0XFxuMTQ4NTpcXHRcXHRcXHRpZiAoc3RhdHVzKVxcbjE0ODY6XFx0XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNDg3OlxcdFxcbjE0ODg6XFx0XFx0XFx0LyogUnVuIGF0IDgwLzg4TUh6IGJ5IGRlZmF1bHQgKi9cXG4xNDg5OlxcdFxcdFxcdHBhcmFtID0gU00oQ1BVX0NMT0NLX1NUQU5EQVJELCAxKTtcXG4xNDkwOlxcdFxcbjE0OTE6XFx0XFx0XFx0YWRkcmVzcyA9IFJUQ19CQVNFX0FERFJFU1MgKyBDUFVfQ0xPQ0tfQUREUkVTUztcXG4xNDkyOlxcdFxcdFxcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XFxuMTQ5MzpcXHRcXHRcXHRpZiAoc3RhdHVzKVxcbjE0OTQ6XFx0XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNDk1OlxcdFxcdH1cXG4xNDk2OlxcdFxcbjE0OTc6XFx0XFx0cGFyYW0gPSAwO1xcbjE0OTg6XFx0XFx0YWRkcmVzcyA9IFJUQ19CQVNFX0FERFJFU1MgKyBMUE9fQ0FMX0FERFJFU1M7XFxuMTQ5OTpcXHRcXHRwYXJhbSA9IFNNKExQT19DQUxfRU5BQkxFLCAxKTtcXG4xNTAwOlxcdFxcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XFxuMTUwMTpcXHRcXHRpZiAoc3RhdHVzKVxcbjE1MDI6XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTAzOlxcdFxcbjE1MDQ6XFx0XFx0LyogV0FSIHRvIGF2b2lkIFNESU8gQ1JDIGVyciAqL1xcbjE1MDU6XFx0XFx0aWYgKGFyLVxcdTAwM2Vody5mbGFncyBcXHUwMDI2IEFUSDZLTF9IV19TRElPX0NSQ19FUlJPUl9XQVIpIHtcXG4xNTA2OlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcInRlbXBvcmFyeSB3YXIgdG8gYXZvaWQgc2RpbyBjcmMgZXJyb3JcXFxcblxcXCIpO1xcbjE1MDc6XFx0XFxuMTUwODpcXHRcXHRcXHRwYXJhbSA9IDB4Mjg7XFxuMTUwOTpcXHRcXHRcXHRhZGRyZXNzID0gR1BJT19CQVNFX0FERFJFU1MgKyBHUElPX1BJTjlfQUREUkVTUztcXG4xNTEwOlxcdFxcdFxcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XFxuMTUxMTpcXHRcXHRcXHRpZiAoc3RhdHVzKVxcbjE1MTI6XFx0XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTEzOlxcdFxcbjE1MTQ6XFx0XFx0XFx0cGFyYW0gPSAweDIwO1xcbjE1MTU6XFx0XFxuMTUxNjpcXHRcXHRcXHRhZGRyZXNzID0gR1BJT19CQVNFX0FERFJFU1MgKyBHUElPX1BJTjEwX0FERFJFU1M7XFxuMTUxNzpcXHRcXHRcXHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgcGFyYW0pO1xcbjE1MTg6XFx0XFx0XFx0aWYgKHN0YXR1cylcXG4xNTE5OlxcdFxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTUyMDpcXHRcXG4xNTIxOlxcdFxcdFxcdGFkZHJlc3MgPSBHUElPX0JBU0VfQUREUkVTUyArIEdQSU9fUElOMTFfQUREUkVTUztcXG4xNTIyOlxcdFxcdFxcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XFxuMTUyMzpcXHRcXHRcXHRpZiAoc3RhdHVzKVxcbjE1MjQ6XFx0XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTI1OlxcdFxcbjE1MjY6XFx0XFx0XFx0YWRkcmVzcyA9IEdQSU9fQkFTRV9BRERSRVNTICsgR1BJT19QSU4xMl9BRERSRVNTO1xcbjE1Mjc6XFx0XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcXG4xNTI4OlxcdFxcdFxcdGlmIChzdGF0dXMpXFxuMTUyOTpcXHRcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1MzA6XFx0XFxuMTUzMTpcXHRcXHRcXHRhZGRyZXNzID0gR1BJT19CQVNFX0FERFJFU1MgKyBHUElPX1BJTjEzX0FERFJFU1M7XFxuMTUzMjpcXHRcXHRcXHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgcGFyYW0pO1xcbjE1MzM6XFx0XFx0XFx0aWYgKHN0YXR1cylcXG4xNTM0OlxcdFxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTUzNTpcXHRcXHR9XFxuMTUzNjpcXHRcXG4xNTM3OlxcdFxcdC8qIHdyaXRlIEVFUFJPTSBkYXRhIHRvIFRhcmdldCBSQU0gKi9cXG4xNTM4OlxcdFxcdHN0YXR1cyA9IGF0aDZrbF91cGxvYWRfYm9hcmRfZmlsZShhcik7XFxuMTUzOTpcXHRcXHRpZiAoc3RhdHVzKVxcbjE1NDA6XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTQxOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1NToyOC40MDA0NjQwMTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5MzA5Nzc3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCBhc3N1bWluZyBJJ20gYSBzZWFzb25lZCBwcm9mZXNzaW9uYWwgcmV2aWV3aW5nIGNvZGU6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBGdW5jdGlvbioqXG5cbkFscmlnaHQsIEkndmUgZ290IGEgZ3Jhc3Agb2YgdGhlIGluaXRpYWwgc2VjdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIE15IHByaW1hcnkgY29uY2VybiBhdCB0aGlzIHN0YWdlIGlzIHRvIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgaXNzdWVzIGZ1cnRoZXIgZG93biB0aGUgbGluZS4gSSB3YW50IHRvIGxvb2sgZm9yIHBvdGVudGlhbCBlZGdlIGNhc2VzLiBBcmUgdGhlcmUgc2VjdGlvbnMgSSBkaWRuJ3QgaWRlbnRpZnk/IFdoZXJlIGFyZSB0aGUgZXJyb3IgY29uZGl0aW9ucyBoYW5kbGVkPyBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYW5kIGVuc3VyZSBldmVyeSBsaW5lIGlzIGFjY291bnRlZCBmb3IuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIHRoZSBsb2dpYywgdmFyaWFibGUgdXNhZ2UsIGFuZCBwb3RlbnRpYWwgZGF0YSBmbG93IHBpdGZhbGxzLiBUaW1lIHRvIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzMzcsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjMyLjc5MzU2NDY5M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTY1MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTU0MixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTU0MjpcXHRcXHQvKiB0cmFuc2ZlciBPbmUgdGltZSBQcm9ncmFtbWFibGUgZGF0YSAqL1xcbjE1NDM6XFx0XFx0c3RhdHVzID0gYXRoNmtsX3VwbG9hZF9vdHAoYXIpO1xcbjE1NDQ6XFx0XFx0aWYgKHN0YXR1cylcXG4xNTQ1OlxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTU0NjpcXHRcXG4xNTQ3OlxcdFxcdC8qIERvd25sb2FkIFRhcmdldCBmaXJtd2FyZSAqL1xcbjE1NDg6XFx0XFx0c3RhdHVzID0gYXRoNmtsX3VwbG9hZF9maXJtd2FyZShhcik7XFxuMTU0OTpcXHRcXHRpZiAoc3RhdHVzKVxcbjE1NTA6XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTUxOlxcdFxcbjE1NTI6XFx0XFx0c3RhdHVzID0gYXRoNmtsX3VwbG9hZF9wYXRjaChhcik7XFxuMTU1MzpcXHRcXHRpZiAoc3RhdHVzKVxcbjE1NTQ6XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTU1OlxcdFxcbjE1NTY6XFx0XFx0LyogRG93bmxvYWQgdGhlIHRlc3Qgc2NyaXB0ICovXFxuMTU1NzpcXHRcXHRzdGF0dXMgPSBhdGg2a2xfdXBsb2FkX3Rlc3RzY3JpcHQoYXIpO1xcbjE1NTg6XFx0XFx0aWYgKHN0YXR1cylcXG4xNTU5OlxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTU2MDpcXHRcXG4xNTYxOlxcdFxcdC8qIFJlc3RvcmUgc3lzdGVtIHNsZWVwICovXFxuMTU2MjpcXHRcXHRhZGRyZXNzID0gUlRDX0JBU0VfQUREUkVTUyArIFNZU1RFTV9TTEVFUF9BRERSRVNTO1xcbjE1NjM6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHNsZWVwKTtcXG4xNTY0OlxcdFxcdGlmIChzdGF0dXMpXFxuMTU2NTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1NjY6XFx0XFxuMTU2NzpcXHRcXHRhZGRyZXNzID0gTUJPWF9CQVNFX0FERFJFU1MgKyBMT0NBTF9TQ1JBVENIX0FERFJFU1M7XFxuMTU2ODpcXHRcXHRwYXJhbSA9IG9wdGlvbnMgfCAweDIwO1xcbjE1Njk6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcXG4xNTcwOlxcdFxcdGlmIChzdGF0dXMpXFxuMTU3MTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1NzI6XFx0XFxuMTU3MzpcXHRcXHRyZXR1cm4gMDtcXG4xNTc0OlxcdH1cXG4xNTc1OlxcdFxcbjE1NzY6XFx0aW50IGF0aDZrbF9pbml0X2h3X3BhcmFtcyhzdHJ1Y3QgYXRoNmtsICphcilcXG4xNTc3OlxcdHtcXG4xNTc4OlxcdFxcdGNvbnN0IHN0cnVjdCBhdGg2a2xfaHcgKmh3O1xcbjE1Nzk6XFx0XFx0aW50IGk7XFxuMTU4MDpcXHRcXG4xNTgxOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGh3X2xpc3QpOyBpKyspIHtcXG4xNTgyOlxcdFxcdFxcdGh3ID0gXFx1MDAyNmh3X2xpc3RbaV07XFxuMTU4MzpcXHRcXG4xNTg0OlxcdFxcdFxcdGlmIChody1cXHUwMDNlaWQgPT0gYXItXFx1MDAzZXZlcnNpb24udGFyZ2V0X3ZlcilcXG4xNTg1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjE1ODY6XFx0XFx0fVxcbjE1ODc6XFx0XFxuMTU4ODpcXHRcXHRpZiAoaSA9PSBBUlJBWV9TSVpFKGh3X2xpc3QpKSB7XFxuMTU4OTpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbnN1cHBvcnRlZCBoYXJkd2FyZSB2ZXJzaW9uOiAweCV4XFxcXG5cXFwiLFxcbjE1OTA6XFx0XFx0XFx0XFx0ICAgYXItXFx1MDAzZXZlcnNpb24udGFyZ2V0X3Zlcik7XFxuMTU5MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTU6MzIuNzkzNzYzMTczWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4Nzk3MTU1ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWlub3IgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRpZmYsIGFuZCB0aGUgb25seSBjaGFuZ2UgSSBzZWUgaXMgYSBzaW5nbGUgbGluZSBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBgYXRoNmtsX2luaXRfdXBsb2FkYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYHJldHVybiBzdGF0dXM7YCB3aGljaCBoYXMgYmVlbiBjaGFuZ2VkIHRvIGByZXR1cm4gMDtgLiBIbW0sIHRoaXMgbG9va3MgcHVyZWx5IGNvc21ldGljLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZS5cblxuTGV0J3MgYnJlYWsgZG93biB0aGUgbG9naWM6IHRoZSBjb2RlIGNhbGxzIGBhdGg2a2xfYm1pX3JlZ193cml0ZWAsIGFuZCBpZiB0aGF0IGZ1bmN0aW9uIHJldHVybnMgYSBub24temVybyBgc3RhdHVzYCAoaW5kaWNhdGluZyBhbiBlcnJvciksIHRoZSBmdW5jdGlvbiBpbW1lZGlhdGVseSByZXR1cm5zIHRoYXQgYHN0YXR1c2AuIEhvd2V2ZXIsIGlmIGBzdGF0dXNgIGlzIHplcm8gKHN1Y2Nlc3MpLCB0aGUgY29kZSAqdGhlbiogcmV0dXJucyBgc3RhdHVzYCB3aGljaCBvZiBjb3Vyc2UsIHdpbGwgc3RpbGwgYmUgemVyby4gU28sIHdoZXRoZXIgdGhlIHJldHVybiBzdGF0ZW1lbnQgaXMgYHJldHVybiBzdGF0dXM7YCBvciBgcmV0dXJuIDA7YCB0aGUgYmVoYXZpb3IgaXMgZXhhY3RseSB0aGUgc2FtZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgemVybyBvbiBzdWNjZXNzLiBJdCdzIGEgY2xlYW51cCwgbWF5YmUgdG8gbWFrZSB0aGUgc3VjY2VzcyBjb25kaXRpb24gZXhwbGljaXQsIG9yIHBlcmhhcHMgdG8gc2F0aXNmeSBhIHN0YXRpYyBhbmFseXplci4gVGhlcmUncyBubyBmdW5jdGlvbmFsIGFsdGVyYXRpb24gaGVyZS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIGEgXCJuby1vcFwiIGNoYW5nZS4gSSdsbCByZS1yZWFkIHRoZSBmdW5jdGlvbidzIGNvZGUgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBZZXAsIHRoZXJlJ3Mgbm8gb3RoZXIgY2hhbmdlLlxuXG5Ob3csIGxldCdzIHJldmlldyB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGV5IHN0YXRlIHRoYXQgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb250YWlucywgYW1vbmcgb3RoZXIgdGhpbmdzLCBcIlB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMuLi4gb3IgQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlwiIFRoaXMgY2xlYXJseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnksIGFuZCB0aGVyZSBhcmUgbm8gb3RoZXIgY2hhbmdlcyBpbiB0aGUgY29udGV4dCBvZiB0aGlzIHBhdGNoLlxuXG5UaGVyZWZvcmUsIGFmdGVyIHRoaXMgdGhvcm91Z2ggcmV2aWV3LCBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBjaGFuZ2UgaXMgbm9uLWZ1bmN0aW9uYWwgYW5kIHRoYXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIGNvcnJlY3QgcmVzcG9uc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjE1LCJPdXRwdXRUb2tlbnMiOjg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQ1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTU6NDIuNjczNDgyNzU4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBjaGFuZ2VzICdyZXR1cm4gc3RhdHVzOycgdG8gJ3JldHVybiAwOycgaW1tZWRpYXRlbHkgYWZ0ZXIgYW4gJ2lmIChzdGF0dXMpIHJldHVybiBzdGF0dXM7JyBjaGVjay4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyBzdHlsZSBmaXggdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBhcyAnc3RhdHVzJyBpcyBhbHJlYWR5IGd1YXJhbnRlZWQgdG8gYmUgMCBhdCB0aGF0IHBvaW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBjaGFuZ2VzICdyZXR1cm4gc3RhdHVzOycgdG8gJ3JldHVybiAwOycgaW1tZWRpYXRlbHkgYWZ0ZXIgYW4gJ2lmIChzdGF0dXMpIHJldHVybiBzdGF0dXM7JyBjaGVjay4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyBzdHlsZSBmaXggdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBhcyAnc3RhdHVzJyBpcyBhbHJlYWR5IGd1YXJhbnRlZWQgdG8gYmUgMCBhdCB0aGF0IHBvaW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowr7m2v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 00:48:18 +0000 UTC FinishedAt: 2026-07-31 01:55:44 +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+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgY2hhbmdlcyAmIzM5O3JldHVybiBzdGF0dXM7JiMzOTsgdG8gJiMzOTtyZXR1cm4gMDsmIzM5OyBpbW1lZGlhdGVseSBhZnRlciBhbiAmIzM5O2lmIChzdGF0dXMpIHJldHVybiBzdGF0dXM7JiMzOTsgY2hlY2suIFRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMgc3R5bGUgZml4IHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgYXMgJiMzOTtzdGF0dXMmIzM5OyBpcyBhbHJlYWR5IGd1YXJhbnRlZWQgdG8gYmUgMCBhdCB0aGF0IHBvaW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM2OWQ0Yjk1MjBjZmQ1YWU0NzI0MmM5ODJmMjUyMTc0ZGVhMzhiMjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMTo1MzozOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jXG5pbmRleCA3ODIyMDlkY2I3ODI1Li42NDgxZGE0YzE5OTFlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jXG5AQCAtMTU3MCw3ICYjNDM7MTU3MCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX2luaXRfdXBsb2FkKHN0cnVjdCBhdGg2a2wgKmFyKVxuIFx0aWYgKHN0YXR1cylcbiBcdFx0cmV0dXJuIHN0YXR1cztcbiBcbi1cdHJldHVybiBzdGF0dXM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBhdGg2a2xfaW5pdF9od19wYXJhbXMoc3RydWN0IGF0aDZrbCAqYXIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgY2hhbmdlcyAmIzM5O3JldHVybiBzdGF0dXM7JiMzOTsgdG8gJiMzOTtyZXR1cm4gMDsmIzM5OyBpbW1lZGlhdGVseSBhZnRlciBhbiAmIzM5O2lmIChzdGF0dXMpIHJldHVybiBzdGF0dXM7JiMzOTsgY2hlY2suIFRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMgc3R5bGUgZml4IHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgYXMgJiMzOTtzdGF0dXMmIzM5OyBpcyBhbHJlYWR5IGd1YXJhbnRlZWQgdG8gYmUgMCBhdCB0aGF0IHBvaW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM2OWQ0Yjk1MjBjZmQ1YWU0NzI0MmM5ODJmMjUyMTc0ZGVhMzhiMjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAwMTo1MzozOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMKaW5kZXggNzgyMjA5ZGNiNzgyNS4uNjQ4MWRhNGMxOTkxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMKQEAgLTE1NzAsNyAmIzQzOzE1NzAsNyBAQCBzdGF0aWMgaW50IGF0aDZrbF9pbml0X3VwbG9hZChzdHJ1Y3QgYXRoNmtsICphcikKIAlpZiAoc3RhdHVzKQogCQlyZXR1cm4gc3RhdHVzOwogCi0JcmV0dXJuIHN0YXR1czsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIGludCBhdGg2a2xfaW5pdF9od19wYXJhbXMoc3RydWN0IGF0aDZrbCAqYXIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBEcml2ZXIgSW5pdGlhbGl6YXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuY2AuIEludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgdmVyeSB0YXJnZXRlZCBjaGFuZ2U6IGl0JiMzOTtzIGFsdGVyaW5nIGBhdGg2a2xfaW5pdF91cGxvYWRgLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBgcmV0dXJuIHN0YXR1cztgIHRvIGByZXR1cm4gMDtgIHJpZ2h0IGF0IHRoZSBlbmQgb2YgdGhlIGBhdGg2a2xfaW5pdF91cGxvYWRgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEgY3VyaW91cyBtb2RpZmljYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGV5JiMzOTtyZSBmb3JjaW5nIGEgc3VjY2Vzc2Z1bCByZXR1cm4gaW4gdGhhdCBzcG90LiBJIHNob3VsZCByZWFsbHkgZGlnIGludG8gdGhlIGZ1bmN0aW9uIGBhdGg2a2xfaW5pdF91cGxvYWRgIGl0c2VsZiB0byBnZXQgdGhlIHdob2xlIHBpY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHdoYXQgYHN0YXR1c2AgcmVwcmVzZW50cywgd2hlcmUgaXQmIzM5O3MgYmVpbmcgc2V0LCBhbmQgd2hhdCBpbXBsaWNhdGlvbnMgYSB6ZXJvIHJldHVybiB3aWxsIGhhdmUgb24gdGhlIHJlc3Qgb2YgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBUaGlzIGNvdWxkIGJlIGEgdmVyeSBzcGVjaWZpYyB3b3JrYXJvdW5kLCBhIHN1YnRsZSBidWcgZml4LCBvciBldmVuIGEgcHJvYmxlbWF0aWMgY2hhbmdlIHdpdGggcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU1MDpcdFx0XHRyZXR1cm4gc3RhdHVzO1xuMTU1MTpcdFxuMTU1MjpcdFx0c3RhdHVzID0gYXRoNmtsX3VwbG9hZF9wYXRjaChhcik7XG4xNTUzOlx0XHRpZiAoc3RhdHVzKVxuMTU1NDpcdFx0XHRyZXR1cm4gc3RhdHVzO1xuMTU1NTpcdFxuMTU1NjpcdFx0LyogRG93bmxvYWQgdGhlIHRlc3Qgc2NyaXB0ICovXG4xNTU3Olx0XHRzdGF0dXMgPSBhdGg2a2xfdXBsb2FkX3Rlc3RzY3JpcHQoYXIpO1xuMTU1ODpcdFx0aWYgKHN0YXR1cylcbjE1NTk6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1NjA6XHRcbjE1NjE6XHRcdC8qIFJlc3RvcmUgc3lzdGVtIHNsZWVwICovXG4xNTYyOlx0XHRhZGRyZXNzID0gUlRDX0JBU0VfQUREUkVTUyAmIzQzOyBTWVNURU1fU0xFRVBfQUREUkVTUztcbjE1NjM6XHRcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBzbGVlcCk7XG4xNTY0Olx0XHRpZiAoc3RhdHVzKVxuMTU2NTpcdFx0XHRyZXR1cm4gc3RhdHVzO1xuMTU2NjpcdFxuMTU2NzpcdFx0YWRkcmVzcyA9IE1CT1hfQkFTRV9BRERSRVNTICYjNDM7IExPQ0FMX1NDUkFUQ0hfQUREUkVTUztcbjE1Njg6XHRcdHBhcmFtID0gb3B0aW9ucyB8IDB4MjA7XG4xNTY5Olx0XHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgcGFyYW0pO1xuMTU3MDpcdFx0aWYgKHN0YXR1cylcbjE1NzE6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1NzI6XHRcbjE1NzM6XHRcdHJldHVybiAwO1xuMTU3NDpcdH1cbjE1NzU6XHRcbjE1NzY6XHRpbnQgYXRoNmtsX2luaXRfaHdfcGFyYW1zKHN0cnVjdCBhdGg2a2wgKmFyKVxuMTU3NzpcdHtcbjE1Nzg6XHRcdGNvbnN0IHN0cnVjdCBhdGg2a2xfaHcgKmh3O1xuMTU3OTpcdFx0aW50IGk7XG4xNTgwOlx0XG4xNTgxOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGh3X2xpc3QpOyBpJiM0MzsmIzQzOykge1xuMTU4MjpcdFx0XHRodyA9IFx1MDAyNmh3X2xpc3RbaV07XG4xNTgzOlx0XG4xNTg0Olx0XHRcdGlmIChody1cdTAwM2VpZCA9PSBhci1cdTAwM2V2ZXJzaW9uLnRhcmdldF92ZXIpXG4xNTg1Olx0XHRcdFx0YnJlYWs7XG4xNTg2Olx0XHR9XG4xNTg3Olx0XG4xNTg4Olx0XHRpZiAoaSA9PSBBUlJBWV9TSVpFKGh3X2xpc3QpKSB7XG4xNTg5Olx0XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5zdXBwb3J0ZWQgaGFyZHdhcmUgdmVyc2lvbjogMHgleFxcblwmIzM0OyxcbjE1OTA6XHRcdFx0XHQgICBhci1cdTAwM2V2ZXJzaW9uLnRhcmdldF92ZXIpO1xuMTU5MTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE1OTI6XHRcdH1cbjE1OTM6XHRcbjE1OTQ6XHRcdGFyLVx1MDAzZWh3ID0gKmh3O1xuMTU5NTpcdFxuMTU5NjpcdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JPT1QsXG4xNTk3Olx0XHRcdCAgIFwmIzM0O3RhcmdldF92ZXIgMHgleCB0YXJnZXRfdHlwZSAweCV4IGRhdGFzZXRfcGF0Y2ggMHgleCBhcHBfbG9hZF9hZGRyIDB4JXhcXG5cJiMzNDssXG4xNTk4Olx0XHRcdCAgIGFyLVx1MDAzZXZlcnNpb24udGFyZ2V0X3ZlciwgYXItXHUwMDNldGFyZ2V0X3R5cGUsXG4xNTk5Olx0XHRcdCAgIGFyLVx1MDAzZWh3LmRhdGFzZXRfcGF0Y2hfYWRkciwgYXItXHUwMDNlaHcuYXBwX2xvYWRfYWRkcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEwNAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0JiMzOTtzIHJ1bm5pbmcgdGhyb3VnaCBteSBtaW5kLiBJIHNlZSB0aGlzIHBhdGNoLCBhbmQgaXQgbG9va3MgbGlrZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlOiBgcmV0dXJuIHN0YXR1cztgIHRvIGByZXR1cm4gMDtgIGF0IHRoZSBlbmQgb2YgYGF0aDZrbF9pbml0X3VwbG9hZGAuIEJ1dCB0aGF0JiMzOTtzIGp1c3QgdGhlIHN1cmZhY2UuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmNvbnRleHQqLiBBaCwgcmlnaHQsIGBhdGg2a2xgLiBUaGF04oCZcyB0aGUgQXRoZXJvcyBBUjYwMDMvQVI2MDA0IHdpcmVsZXNzIGRyaXZlci4gSW50ZXJlc3RpbmcuIE5vdyB0aGUgbmV4dCBxdWVzdGlvbiBwb3BzIHVwIGluc3RhbnRseTogY2FuIEkgdGVzdCB0aGlzIHRoaW5nIHZpcnR1YWxseT8gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIGdlbmVyYWwgcnVsZSBpcyB0aGF0IHRoZXNlIGhhcmR3YXJlLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlcnMg4oCTIHBhcnRpY3VsYXJseSB0aG9zZSB0YXJnZXRpbmcgYSBzcGVjaWZpYyBjaGlwc2V0IGxpa2UgdGhpcyBBdGhlcm9zIG9uZSDigJMgYXJlIGEgcGFpbiB0byB0ZXN0IHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZS4gVW5sZXNzIHRoZXnigJl2ZSBnb3QgYSBtYWM4MDIxMV9od3NpbSBjb21wb25lbnQsIG9yIHNvbWV0aGluZyBlcXVpdmFsZW50LCBJJiMzOTttIHVzdWFsbHkgb3V0IG9mIGx1Y2sgaW4gYSBWTS4gU28sIGNhbiB0aGlzIGJlIHNpbXVsYXRlZD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBwb3NzaWJpbGl0aWVzIGV4aXN0LiBJdCBsb29rcyBsaWtlIGl0IHN1cHBvcnRzIFNESU8gYW5kIFVTQiBpbnRlcmZhY2VzLCB3aGljaCBvZmZlcnMgc29tZSBob3BlLiBVU0IgY291bGQgYmUgc2ltdWxhdGVkIHVzaW5nIHNvbWV0aGluZyBsaWtlIFVTQiBnYWRnZXQsIGEgZHVtbXlfaGNkLCBvciBldmVuIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFNvLCBsZXQgbWUgY2hlY2sgaWYgdGhlcmUgaXMgYW4gYWN0dWFsIFVTQiBkcml2ZXIgY29tcG9uZW50LiBUaGF0JiMzOTtzIG15IG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg2a2xfdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0yNT1jb25maWcgQVRINktMX1VTQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zMi1cdCAgVVNCLiBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MzM6XHQgIGNhbGxlZCBhdGg2a2xfdXNiLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU9NDM9YXRoNmtsX3NkaW8teSAmIzQzOz0gc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQVRINktMX1VTQikgJiM0Mzs9IGF0aDZrbF91c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NjphdGg2a2xfdXNiLXkgJiM0Mzs9IHVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaHRjX3BpcGUuYz05NDE9c3RhdGljIGludCBhdGg2a2xfaHRjX3BpcGVfcnhfY29tcGxldGUoc3RydWN0IGF0aDZrbCAqYXIsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9odGNfcGlwZS5jLTk1OS1cdCAqIFRodXMgdGhlIHBvc3NpYmlsaXR5IG9mIGFyLVx1MDAzZWh0Y190YXJnZXQgYmVpbmcgTlVMTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9odGNfcGlwZS5jOjk2MDpcdCAqIHZpYSBhdGg2a2xfcmVjdl9jb21wbGV0ZSAtXHUwMDNlIGF0aDZrbF91c2JfaW9fY29tcF93b3JrLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9odGNfcGlwZS5jLTk2MS1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9MzA9ZW51bSBBVEg2S0xfVVNCX1BJUEVfSUQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ0OnN0cnVjdCBhdGg2a2xfdXNiX3BpcGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00NS1cdHN0cnVjdCBsaXN0X2hlYWQgdXJiX2xpc3RfaGVhZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTUzLVx0dTggbG9naWNhbF9waXBlX251bTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTQ6XHRzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NS1cdHUxNiBtYXhfcGFja2V0X3NpemU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02My0vKiB1c2IgZGV2aWNlIG9iamVjdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2NDpzdHJ1Y3QgYXRoNmtsX3VzYiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY1LVx0LyogcHJvdGVjdHMgcGlwZS1cdTAwM2V1cmJfbGlzdF9oZWFkIGFuZCAgcGlwZS1cdTAwM2V1cmJfY250ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02OS1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjcwOlx0c3RydWN0IGF0aDZrbF91c2JfcGlwZSBwaXBlc1tBVEg2S0xfVVNCX1BJUEVfTUFYXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzEtXHR1OCAqZGlhZ19jbWRfYnVmZmVyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9Nzg9c3RydWN0IGF0aDZrbF91cmJfY29udGV4dCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc5LVx0c3RydWN0IGxpc3RfaGVhZCBsaW5rO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo4MDpcdHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTgxLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA1OnN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDYtXHRfX2xlMzIgY21kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTI6c3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF9yZWFkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTEzLVx0X19sZTMyIGNtZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE3OnN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTgtXHRfX2xlMzIgdmFsdWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjEtLyogZnVuY3Rpb24gZGVjbGFyYXRpb25zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTIzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9MTMwPXN0YXRpYyBzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTMxOmF0aDZrbF91c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMzIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxNTM6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl9mcmVlX3VyYl90b19waXBlKHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE1NC1cdFx0XHRcdFx0c3RydWN0IGF0aDZrbF91cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjE2OTpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2NsZWFudXBfcmVjdl91cmIoc3RydWN0IGF0aDZrbF91cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE3MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjE3NDpcdGF0aDZrbF91c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE3NS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTc3OnN0YXRpYyBpbmxpbmUgc3RydWN0IGF0aDZrbF91c2IgKmF0aDZrbF91c2JfcHJpdihzdHJ1Y3QgYXRoNmtsICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTc4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE4Mi0vKiBwaXBlIHJlc291cmNlIGFsbG9jYXRpb24vY2xlYW51cCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxODM6c3RhdGljIGludCBhdGg2a2xfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE4NC1cdFx0XHRcdFx0ICAgaW50IHVyYl9jbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yMDUtXHRcdHBpcGUtXHUwMDNldXJiX2FsbG9jJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MjA2Olx0XHRhdGg2a2xfdXNiX2ZyZWVfdXJiX3RvX3BpcGUocGlwZSwgdXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yMDctXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjIxODpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjE5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI0MS1cdHdoaWxlICh0cnVlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjI0MjpcdFx0dXJiX2NvbnRleHQgPSBhdGg2a2xfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocGlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI0My1cdFx0aWYgKHVyYl9jb250ZXh0ID09IE5VTEwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjI0OTpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjUwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI1My1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDZLTF9VU0JfUElQRV9NQVg7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoyNTQ6XHRcdGF0aDZrbF91c2JfZnJlZV9waXBlX3Jlc291cmNlcyhcdTAwMjZhcl91c2ItXHUwMDNlcGlwZXNbaV0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNTUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjI1NzpzdGF0aWMgdTggYXRoNmtsX3VzYl9nZXRfbG9naWNhbF9waXBlX251bShzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNTgtXHRcdFx0XHRcdCAgdTggZXBfYWRkcmVzcywgaW50ICp1cmJfY291bnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0zMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjMwMzpzdGF0aWMgaW50IGF0aDZrbF91c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMzA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTMwNy1cdHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZW5kcG9pbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjMwODpcdHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTMwOS1cdGludCBpLCB1cmJjb3VudCwgc3RhdHVzID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTM1MC1cdFx0cGlwZV9udW0gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzozNTE6XHRcdCAgICBhdGg2a2xfdXNiX2dldF9sb2dpY2FsX3BpcGVfbnVtKGFyX3VzYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMzUyLVx0XHRcdFx0XHRcdCAgICBlbmRwb2ludC1cdTAwM2ViRW5kcG9pbnRBZGRyZXNzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo0MDY6XHRcdHN0YXR1cyA9IGF0aDZrbF91c2JfYWxsb2NfcGlwZV9yZXNvdXJjZXMocGlwZSwgdXJiY291bnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00MDctXHRcdGlmIChzdGF0dXMgIT0gMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQxNC0vKiBwaXBlIG9wZXJhdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDE1OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpyZWN2X3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQxNi1cdFx0XHRcdFx0ICAgaW50IGJ1ZmZlcl9sZW5ndGgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00MjItXHR3aGlsZSAodHJ1ZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo0MjM6XHRcdHVyYl9jb250ZXh0ID0gYXRoNmtsX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHJlY3ZfcGlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQyNC1cdFx0aWYgKHVyYl9jb250ZXh0ID09IE5VTEwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00MzktXHRcdFx0XHQgIGJ1ZmZlcl9sZW5ndGgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ0MDpcdFx0XHRcdCAgYXRoNmtsX3VzYl9yZWN2X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ0MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ2My1lcnJfY2xlYW51cF91cmI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ2NDpcdGF0aDZrbF91c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ2NS1cdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDY4OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZmx1c2hfYWxsKHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ2OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ4NDpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX3N0YXJ0X3JlY3ZfcGlwZXMoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ4OS1cdCAqICAgICAgYXJfdXNiLVx1MDAzZXBpcGVzW0FUSDZLTF9VU0JfUElQRV9SWF9DVFJMXS51cmJfYWxsb2MvMjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDkwOlx0ICogYXRoNmtsX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKFx1MDAyNmFyX3VzYi1cdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDkxLVx0ICpcdFx0cGlwZXNbQVRINktMX1VTQl9QSVBFX1JYX0NUUkxdLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo0OTc6XHRhdGg2a2xfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoXHUwMDI2YXJfdXNiLVx1MDAzZXBpcGVzW0FUSDZLTF9VU0JfUElQRV9SWF9EQVRBXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDk4LVx0XHRcdFx0ICAgICAgIEFUSDZLTF9VU0JfUlhfQlVGRkVSX1NJWkUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTAxLS8qIGhpZiB1c2IgcngvdHggY29tcGxldGlvbiBmdW5jdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTAyOnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfcmVjdl9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTUwMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTUwNC1cdHN0cnVjdCBhdGg2a2xfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0ID0gdXJiLVx1MDAzZWNvbnRleHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjUwNTpcdHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGUgPSB1cmJfY29udGV4dC1cdTAwM2VwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01MDYtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU0OS1jbGVhbnVwX3JlY3ZfdXJiOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1NTA6XHRhdGg2a2xfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NTQtXHRcdC8qIG91ciBmcmVlIHVyYnMgYXJlIHBpbGluZyB1cCwgcG9zdCBtb3JlIHRyYW5zZmVycyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1NTU6XHRcdGF0aDZrbF91c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhwaXBlLCBBVEg2S0xfVVNCX1JYX0JVRkZFUl9TSVpFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTU2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1NTk6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl91c2JfdHJhbnNtaXRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NjAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NjEtXHRzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1NjI6XHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXHUwMDNlcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTYzLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU3Ny1cdHVyYl9jb250ZXh0LVx1MDAzZXNrYiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjU3ODpcdGF0aDZrbF91c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTg1OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfaW9fY29tcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTg2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTg3Olx0c3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSA9IGNvbnRhaW5lcl9vZih3b3JrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1ODg6XHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU4OS1cdFx0XHRcdFx0XHQgICAgaW9fY29tcGxldGVfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjU5MDpcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU5MS1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjYwOTojZGVmaW5lIEFUSDZLTF9VU0JfTUFYX0RJQUdfQ01EIChzaXplb2Yoc3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF93cml0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjYxMDojZGVmaW5lIEFUSDZLTF9VU0JfTUFYX0RJQUdfUkVTUCAoc2l6ZW9mKHN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02MTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjYxMjpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2Rlc3Ryb3koc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjEzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjE0Olx0YXRoNmtsX3VzYl9mbHVzaF9hbGwoYXJfdXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2MTY6XHRhdGg2a2xfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoYXJfdXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjE3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2Mjc6c3RhdGljIHN0cnVjdCBhdGg2a2xfdXNiICphdGg2a2xfdXNiX2NyZWF0ZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02Mjgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02MjktXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2MzA6XHRzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2MzE6XHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02MzItXHRpbnQgc3RhdHVzID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTYzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjM1Olx0LyogYXRoNmtsX3VzYl9kZXN0cm95KCkgbmVlZHMgYXJfdXNiICE9IE5VTEwgXHUwMDI2XHUwMDI2IGFyX3VzYi1cdTAwM2V3cSAhPSBOVUxMLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2MzY6XHRhcl91c2IgPSBremFsbG9jX29iaihzdHJ1Y3QgYXRoNmtsX3VzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTYzNy1cdGlmIChhcl91c2IgPT0gTlVMTClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY1Mi1cdFx0SU5JVF9XT1JLKFx1MDAyNnBpcGUtXHUwMDNlaW9fY29tcGxldGVfd29yayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjUzOlx0XHRcdCAgYXRoNmtsX3VzYl9pb19jb21wX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NTQtXHRcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2cGlwZS1cdTAwM2Vpb19jb21wX3F1ZXVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY1OS1cdFx0c3RhdHVzID0gLUVOT01FTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjYwOlx0XHRnb3RvIGZhaWxfYXRoNmtsX3VzYl9jcmVhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY2MS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY2Ni1cdFx0c3RhdHVzID0gLUVOT01FTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjY3Olx0XHRnb3RvIGZhaWxfYXRoNmtsX3VzYl9jcmVhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY2OC1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2NzA6XHRzdGF0dXMgPSBhdGg2a2xfdXNiX3NldHVwX3BpcGVfcmVzb3VyY2VzKGFyX3VzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjcyOmZhaWxfYXRoNmtsX3VzYl9jcmVhdGU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY3My1cdGlmIChzdGF0dXMgIT0gMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2NzQ6XHRcdGF0aDZrbF91c2JfZGVzdHJveShhcl91c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NzUtXHRcdGFyX3VzYiA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY4MDpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2RldmljZV9kZXRhY2hlZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02ODEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2ODI6XHRzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02ODMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02OTItXHRhdGg2a2xfY29yZV9jbGVhbnVwKGFyX3VzYi1cdTAwM2Vhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY5MzpcdGF0aDZrbF91c2JfZGVzdHJveShhcl91c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02OTQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9Njk3PXN0YXRpYyB2b2lkIGhpZl9zdGFydChzdHJ1Y3QgYXRoNmtsICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjk4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6Njk5Olx0c3RydWN0IGF0aDZrbF91c2IgKmRldmljZSA9IGF0aDZrbF91c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcwMC1cdGludCBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03MDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjcwMjpcdGF0aDZrbF91c2Jfc3RhcnRfcmVjdl9waXBlcyhkZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03MDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03MTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjcxMjpzdGF0aWMgaW50IGF0aDZrbF91c2Jfc2VuZChzdHJ1Y3QgYXRoNmtsICphciwgdTggUGlwZUlELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03MTMtXHRcdFx0ICAgc3RydWN0IHNrX2J1ZmYgKmhkcl9za2IsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcxNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjcxNTpcdHN0cnVjdCBhdGg2a2xfdXNiICpkZXZpY2UgPSBhdGg2a2xfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3MTY6XHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlID0gXHUwMDI2ZGV2aWNlLVx1MDAzZXBpcGVzW1BpcGVJRF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcxNy1cdHN0cnVjdCBhdGg2a2xfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3MjY6XHR1cmJfY29udGV4dCA9IGF0aDZrbF91c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzI3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzQ3LVx0XHRzdGF0dXMgPSAtRU5PTUVNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3NDg6XHRcdGF0aDZrbF91c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03NDktXHRcdFx0XHRcdCAgICB1cmJfY29udGV4dCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03NTctXHRcdFx0ICBsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjc1ODpcdFx0XHQgIGF0aDZrbF91c2JfdXNiX3RyYW5zbWl0X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc1OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc3Ny1cdFx0dXNiX3VuYW5jaG9yX3VyYih1cmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3Nzg6XHRcdGF0aDZrbF91c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03NzktXHRcdFx0XHRcdCAgICB1cmJfY29udGV4dCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz03ODg9c3RhdGljIHZvaWQgaGlmX3N0b3Aoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc4OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjc5MDpcdHN0cnVjdCBhdGg2a2xfdXNiICpkZXZpY2UgPSBhdGg2a2xfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjc5MjpcdGF0aDZrbF91c2JfZmx1c2hfYWxsKGRldmljZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc5My19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6Nzk1OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZ2V0X2RlZmF1bHRfcGlwZShzdHJ1Y3QgYXRoNmtsICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzk2LVx0XHRcdFx0XHR1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy04MDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjgwMjpzdGF0aWMgaW50IGF0aDZrbF91c2JfbWFwX3NlcnZpY2VfcGlwZShzdHJ1Y3QgYXRoNmtsICphciwgdTE2IHN2Y19pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODAzLVx0XHRcdFx0ICAgICAgIHU4ICp1bF9waXBlLCB1OCAqZGxfcGlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6ODU3OnN0YXRpYyB1MTYgYXRoNmtsX3VzYl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIoc3RydWN0IGF0aDZrbCAqYXIsIHU4IHBpcGVfaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg1OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg1OTpcdHN0cnVjdCBhdGg2a2xfdXNiICpkZXZpY2UgPSBhdGg2a2xfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy04NjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz04NjQ9c3RhdGljIHZvaWQgaGlmX2RldGFjaF9odGMoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg2NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg2NjpcdHN0cnVjdCBhdGg2a2xfdXNiICpkZXZpY2UgPSBhdGg2a2xfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy04NjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg2ODpcdGF0aDZrbF91c2JfZmx1c2hfYWxsKGRldmljZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg2OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6ODcxOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9zdWJtaXRfY3RybF9vdXQoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODcyLVx0XHRcdFx0ICAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTkwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTAzOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9zdWJtaXRfY3RybF9pbihzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05MDQtXHRcdFx0XHQgIHU4IHJlcSwgdTE2IHZhbHVlLCB1MTYgaW5kZXgsIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjkzNzpzdGF0aWMgaW50IGF0aDZrbF91c2JfY3RybF9tc2dfZXhjaGFuZ2Uoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTM4LVx0XHRcdFx0ICAgICB1OCByZXFfdmFsLCB1OCAqcmVxX2J1ZiwgdTMyIHJlcV9sZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NDMtXHQvKiBzZW5kIGNvbW1hbmQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTQ0Olx0cmV0ID0gYXRoNmtsX3VzYl9zdWJtaXRfY3RybF9vdXQoYXJfdXNiLCByZXFfdmFsLCAwLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NDUtXHRcdFx0XHRcdCByZXFfYnVmLCByZXFfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk1NS1cdC8qIGdldCByZXNwb25zZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5NTY6XHRyZXQgPSBhdGg2a2xfdXNiX3N1Ym1pdF9jdHJsX2luKGFyX3VzYiwgcmVzcF92YWwsIDAsIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk1Ny1cdFx0XHRcdFx0cmVzcF9idWYsICpyZXNwX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjk2MjpzdGF0aWMgaW50IGF0aDZrbF91c2JfZGlhZ19yZWFkMzIoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyZXNzLCB1MzIgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk2My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjk2NDpcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IgPSBhci1cdTAwM2VoaWZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTY1Olx0c3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCAqcmVzcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTY2Olx0c3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF9yZWFkICpjbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk2Ny1cdHUzMiByZXNwX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTcwOlx0Y21kID0gKHN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqKSBhcl91c2ItXHUwMDNlZGlhZ19jbWRfYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjk3NzpcdHJldCA9IGF0aDZrbF91c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXJfdXNiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NzgtXHRcdFx0XHRBVEg2S0xfVVNCX0NPTlRST0xfUkVRX0RJQUdfQ01ELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NzktXHRcdFx0XHQodTggKikgY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5ODA6XHRcdFx0XHRzaXplb2Yoc3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF93cml0ZSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk4MS1cdFx0XHRcdEFUSDZLTF9VU0JfQ09OVFJPTF9SRVFfRElBR19SRVNQLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5ODk6XHRyZXNwID0gKHN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTkwLVx0XHRhcl91c2ItXHUwMDNlZGlhZ19yZXNwX2J1ZmZlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTk3OnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9kaWFnX3dyaXRlMzIoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyZXNzLCBfX2xlMzIgZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTk4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTk5Olx0c3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYiA9IGFyLVx1MDAzZWhpZl9wcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDAwOlx0c3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDAxLVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTAwMzpcdGNtZCA9IChzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlICopIGFyX3VzYi1cdTAwM2VkaWFnX2NtZF9idWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwMDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwMDU6XHRtZW1zZXQoY21kLCAwLCBzaXplb2Yoc3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF93cml0ZSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDA2LVx0Y21kLVx1MDAzZWNtZCA9IGNwdV90b19sZTMyKEFUSDZLTF9VU0JfQ1RSTF9ESUFHX0NDX1dSSVRFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwMTA6XHRyZXQgPSBhdGg2a2xfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyX3VzYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAxMS1cdFx0XHRcdFx0ICAgQVRINktMX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwMjM6c3RhdGljIGludCBhdGg2a2xfdXNiX2JtaV9yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDI0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTAyNTpcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IgPSBhci1cdTAwM2VoaWZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAyNi1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDI4LVx0LyogZ2V0IHJlc3BvbnNlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwMjk6XHRyZXQgPSBhdGg2a2xfdXNiX3N1Ym1pdF9jdHJsX2luKGFyX3VzYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAzMC1cdFx0XHRcdFx0QVRINktMX1VTQl9DT05UUk9MX1JFUV9SRUNWX0JNSV9SRVNQLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA0MTpzdGF0aWMgaW50IGF0aDZrbF91c2JfYm1pX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDQyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA0MzpcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IgPSBhci1cdTAwM2VoaWZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA0NC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDQ2LVx0Lyogc2VuZCBjb21tYW5kICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwNDc6XHRyZXQgPSBhdGg2a2xfdXNiX3N1Ym1pdF9jdHJsX291dChhcl91c2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNDgtXHRcdFx0XHRcdCBBVEg2S0xfVVNCX0NPTlRST0xfUkVRX1NFTkRfQk1JX0NNRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwNTk6c3RhdGljIGludCBhdGg2a2xfdXNiX3Bvd2VyX29uKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwNjU6c3RhdGljIGludCBhdGg2a2xfdXNiX3Bvd2VyX29mZihzdHJ1Y3QgYXRoNmtsICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA2Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDcxOnN0YXRpYyB2b2lkIGF0aDZrbF91c2Jfc3RvcChzdHJ1Y3QgYXRoNmtsICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA3Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDc2OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfY2xlYW51cF9zY2F0dGVyKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDc3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwODQ6c3RhdGljIGludCBhdGg2a2xfdXNiX3N1c3BlbmQoc3RydWN0IGF0aDZrbCAqYXIsIHN0cnVjdCBjZmc4MDIxMV93b3dsYW4gKndvdylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDkyOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9yZXN1bWUoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTEwMDpzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDZrbF9oaWZfb3BzIGF0aDZrbF91c2Jfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTAxOlx0LmRpYWdfcmVhZDMyID0gYXRoNmtsX3VzYl9kaWFnX3JlYWQzMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTEwMjpcdC5kaWFnX3dyaXRlMzIgPSBhdGg2a2xfdXNiX2RpYWdfd3JpdGUzMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTEwMzpcdC5ibWlfcmVhZCA9IGF0aDZrbF91c2JfYm1pX3JlYWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDQ6XHQuYm1pX3dyaXRlID0gYXRoNmtsX3VzYl9ibWlfd3JpdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDU6XHQucG93ZXJfb24gPSBhdGg2a2xfdXNiX3Bvd2VyX29uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA2Olx0LnBvd2VyX29mZiA9IGF0aDZrbF91c2JfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA3Olx0LnN0b3AgPSBhdGg2a2xfdXNiX3N0b3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDg6XHQucGlwZV9zZW5kID0gYXRoNmtsX3VzYl9zZW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA5Olx0LnBpcGVfZ2V0X2RlZmF1bHQgPSBhdGg2a2xfdXNiX2dldF9kZWZhdWx0X3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMTA6XHQucGlwZV9tYXBfc2VydmljZSA9IGF0aDZrbF91c2JfbWFwX3NlcnZpY2VfcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTExMTpcdC5waXBlX2dldF9mcmVlX3F1ZXVlX251bWJlciA9IGF0aDZrbF91c2JfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTEyOlx0LmNsZWFudXBfc2NhdHRlciA9IGF0aDZrbF91c2JfY2xlYW51cF9zY2F0dGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTEzOlx0LnN1c3BlbmQgPSBhdGg2a2xfdXNiX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMTQ6XHQucmVzdW1lID0gYXRoNmtsX3VzYl9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExMTUtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExMTctLyogYXRoNmtsIHVzYiBkcml2ZXIgcmVnaXN0ZXJlZCBmdW5jdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTExODpzdGF0aWMgaW50IGF0aDZrbF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTExOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTEyMi1cdHN0cnVjdCBhdGg2a2wgKmFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTIzOlx0c3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExMjQtXHRpbnQgdmVuZG9yX2lkLCBwcm9kdWN0X2lkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE0MzpcdGFyX3VzYiA9IGF0aDZrbF91c2JfY3JlYXRlKGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNDQtXHRpZiAoYXJfdXNiID09IE5VTEwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTU1LVx0YXItXHUwMDNlaGlmX3R5cGUgPSBBVEg2S0xfSElGX1RZUEVfVVNCO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTU2Olx0YXItXHUwMDNlaGlmX29wcyA9IFx1MDAyNmF0aDZrbF91c2Jfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTU3LVx0YXItXHUwMDNlbWJveF9pbmZvLmJsb2NrX3NpemUgPSAxNjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNzItZXJyX3VzYl9kZXN0cm95OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTczOlx0YXRoNmtsX3VzYl9kZXN0cm95KGFyX3VzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTc4OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTc5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE4MDpcdGF0aDZrbF91c2JfZGV2aWNlX2RldGFjaGVkKGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExODEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE4NTpzdGF0aWMgaW50IGF0aDZrbF91c2JfcG1fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTg2LVx0XHRcdCAgICAgIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTg3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE4ODpcdHN0cnVjdCBhdGg2a2xfdXNiICpkZXZpY2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExODktXHRkZXZpY2UgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExOTE6XHRhdGg2a2xfdXNiX2ZsdXNoX2FsbChkZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTkyLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTk1OnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9wbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE5Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExOTc6XHRzdHJ1Y3QgYXRoNmtsX3VzYiAqZGV2aWNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTk4LVx0ZGV2aWNlID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjAwOlx0YXRoNmtsX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKFx1MDAyNmRldmljZS1cdTAwM2VwaXBlc1tBVEg2S0xfVVNCX1BJUEVfUlhfREFUQV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMDEtXHRcdFx0XHQgICAgICAgQVRINktMX1VTQl9SWF9CVUZGRVJfU0laRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMDI6XHRhdGg2a2xfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoXHUwMDI2ZGV2aWNlLVx1MDAzZXBpcGVzW0FUSDZLTF9VU0JfUElQRV9SWF9EQVRBMl0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMDMtXHRcdFx0XHQgICAgICAgQVRINktMX1VTQl9SWF9CVUZGRVJfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjEwOiNkZWZpbmUgYXRoNmtsX3VzYl9wbV9zdXNwZW5kIE5VTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIxMTojZGVmaW5lIGF0aDZrbF91c2JfcG1fcmVzdW1lIE5VTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTIxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMTUtLyogdGFibGUgb2YgZGV2aWNlcyB0aGF0IHdvcmsgd2l0aCB0aGlzIGRyaXZlciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjE2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGg2a2xfdXNiX2lkc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjE3LVx0e1VTQl9ERVZJQ0UoMHgwY2YzLCAweDkzNzUpfSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjM6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIGF0aDZrbF91c2JfaWRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTIyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIyNTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYXRoNmtsX3VzYl9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjY6XHQubmFtZSA9IFwmIzM0O2F0aDZrbF91c2JcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjc6XHQucHJvYmUgPSBhdGg2a2xfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjI4Olx0LnN1c3BlbmQgPSBhdGg2a2xfdXNiX3BtX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjk6XHQucmVzdW1lID0gYXRoNmtsX3VzYl9wbV9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMzA6XHQuZGlzY29ubmVjdCA9IGF0aDZrbF91c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIzMTpcdC5pZF90YWJsZSA9IGF0aDZrbF91c2JfaWRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjMyLVx0LnN1cHBvcnRzX2F1dG9zdXNwZW5kID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMzY6bW9kdWxlX3VzYl9kcml2ZXIoYXRoNmtsX3VzYl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjM3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NDM3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQgd2VyZSBteSBvd24gdGhvdWdodCBwcm9jZXNzOgoKKipVU0IgRHJpdmVyIGFuZCBJbml0aWFsaXphdGlvbiBIb29rKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBgYXRoNmtsYCwgYW5kIGl0JiMzOTtzIGdvdCBhIFVTQiBkcml2ZXIsIGBhdGg2a2xfdXNiYCwgd2hpY2ggaW1tZWRpYXRlbHkgc3BhcmtzIHNvbWUgaWRlYXMuIEkga25vdyBTeXprYWxsZXIgaGFzIGEgZGVjZW50IFVTQiBmdXp6ZXIsIGBkdW1teV9oY2RgLCB3aGljaCBjb3VsZCBiZSBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIHRhcmdldHMgYGF0aDZrbF9pbml0X3VwbG9hZGAsIHdoaWNoLCBiYXNlZCBvbiB0aGUgbmFtZSBhbG9uZSwgaXMgbGlrZWx5IGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHBoYXNlLCBwcm9iYWJseSBkdXJpbmcgZGV2aWNlIGJyaW5ndXAuIExldCYjMzk7cyBzZWUgZXhhY3RseSAqd2hlcmUqIHRoYXQgZnVuY3Rpb24sIGBhdGg2a2xfaW5pdF91cGxvYWRgLCBpcyBiZWluZyBjYWxsZWQuIFRpbWUgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDZrbF9pbml0X3VwbG9hZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYz0xNDA4PXN0YXRpYyBpbnQgYXRoNmtsX3VwbG9hZF90ZXN0c2NyaXB0KHN0cnVjdCBhdGg2a2wgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE0NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYzoxNDQyOnN0YXRpYyBpbnQgYXRoNmtsX2luaXRfdXBsb2FkKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTQ0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM9MTcwNj1zdGF0aWMgaW50IF9fYXRoNmtsX2luaXRfaHdfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTcyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jOjE3MjI6XHRyZXQgPSBhdGg2a2xfaW5pdF91cGxvYWQoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTcyMy1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY5NTgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBIYXJkd2FyZSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgYGF0aDZrbGAgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uLiBJIHNlZSB0aGF0IHRoZSBgX19hdGg2a2xfaW5pdF9od19zdGFydGAgZnVuY3Rpb24gaXMgdGhlIHBvaW50IG9mIGludGVyZXN0LiBJdCB0cmlnZ2VycyBgYXRoNmtsX2luaXRfdXBsb2FkYCwgd2hpY2ggSSYjMzk7bSBhc3N1bWluZyBoYW5kbGVzIHRoZSBpbml0aWFsIGZpcm13YXJlIG9yIGNvbmZpZ3VyYXRpb24gZGF0YSB1cGxvYWQgdG8gdGhlIGhhcmR3YXJlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGZpZ3VyZSBvdXQgKndoZXJlKiBgX19hdGg2a2xfaW5pdF9od19zdGFydGAgaXRzZWxmIGlzIGJlaW5nIGNhbGxlZC4gS25vd2luZyB0aGUgY2FsbGluZyBmdW5jdGlvbihzKSB3aWxsIGdpdmUgbWUgdmFsdWFibGUgY2x1ZXMgYWJvdXQgdGhlIG92ZXJhbGwgaGFyZHdhcmUgYnJpbmctdXAgcHJvY2VzcyBhbmQgd2hlcmUgdGhpcyBwaWVjZSBmaXRzIGludG8gdGhlIGdyZWF0ZXIgaW5pdGlhbGl6YXRpb24gcGljdHVyZS4gSSYjMzk7bSBob3BpbmcgdG8gZ2V0IHNvbWUgY29udGV4dCBmb3IgdGhpcyB1cGxvYWQgcHJvY2Vzcy4gTGV0JiMzOTtzIHNlZS4uLiBiYWNrIHRvIHRoZSBzb3VyY2UgY29kZSBJIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2F0aDZrbF9pbml0X2h3X3N0YXJ0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jPTE2OTg9c3RhdGljIGludCBhdGg2a2xfaW5pdF9od19yZXNldChzdHJ1Y3QgYXRoNmtsICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xNzA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTcwNjpzdGF0aWMgaW50IF9fYXRoNmtsX2luaXRfaHdfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xNzA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYz0xODI4PWludCBhdGg2a2xfaW5pdF9od19zdGFydChzdHJ1Y3QgYXRoNmtsICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTgzMjpcdGVyciA9IF9fYXRoNmtsX2luaXRfaHdfc3RhcnQoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTgzMy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM9MTg2OT12b2lkIGF0aDZrbF9pbml0X2h3X3Jlc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTg3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jOjE4ODA6XHRpZiAoX19hdGg2a2xfaW5pdF9od19zdGFydChhcikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE4ODEtXHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19SRUNPVkVSWSwgXCYjMzQ7RmFpbGVkIHRvIHJlc3RhcnQgZHVyaW5nIGZ3IGVycm9yIHJlY292ZXJ5XFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc2NDMKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipEaXZpbmcgaW50byB0aGUgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKgoKT2theSwgc28gSSBzZWUgYGF0aDZrbF9pbml0X2h3X3N0YXJ0YCBpcyB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3QuIFRoZSBmaXJzdCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBhdGg2a2xfaW5pdF9od19zdGFydGAgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20sIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBncmFwaCBhbmQgc2VlIHdoaWNoIG90aGVyIGZ1bmN0aW9ucyBkZXBlbmQgb24gaXQuIFRoYXQgd2lsbCBnaXZlIG1lIGNvbnRleHQsIGFuZCBoZWxwIGRldGVybWluZSB0aGUgbG9naWMgb2YgdGhlIHN5c3RlbSYjMzk7cyBpbml0aWFsaXphdGlvbi4KTGV0JiMzOTtzIGZpcnN0IGxvb2sgYXQgdGhlIG90aGVyIGZ1bmN0aW9uLCBgX19hdGg2a2xfaW5pdF9od19zdGFydGAsIHRoaXMgbWlnaHQgcHJvdmlkZSBoaW50cyBhcyB0byB0aGUgb3BlcmF0aW9uIG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDZrbF9pbml0X2h3X3N0YXJ0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYz0yNDk5PWludCBhdGg2a2xfY2ZnODAyMTFfcmVzdW1lKHN0cnVjdCBhdGg2a2wgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI1Mjg6XHRcdHJldCA9IGF0aDZrbF9pbml0X2h3X3N0YXJ0KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTI5LVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmM9NjY9aW50IGF0aDZrbF9jb3JlX2luaXQoc3RydWN0IGF0aDZrbCAqYXIsIGVudW0gYXRoNmtsX2h0Y190eXBlIGh0Y190eXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTE5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jOjE5MTpcdHJldCA9IGF0aDZrbF9pbml0X2h3X3N0YXJ0KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTE5Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaD05Njg9dm9pZCBhdGg2a2xfY2ZnODAyMTFfdmlmX3N0b3Aoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgYm9vbCB3bWlfcmVhZHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6OTY5OmludCBhdGg2a2xfaW5pdF9od19zdGFydChzdHJ1Y3QgYXRoNmtsICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC05NzAtaW50IGF0aDZrbF9pbml0X2h3X3N0b3Aoc3RydWN0IGF0aDZrbCAqYXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jPTE2OTg9c3RhdGljIGludCBhdGg2a2xfaW5pdF9od19yZXNldChzdHJ1Y3QgYXRoNmtsICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xNzA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTcwNjpzdGF0aWMgaW50IF9fYXRoNmtsX2luaXRfaHdfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xNzA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTgyODppbnQgYXRoNmtsX2luaXRfaHdfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODI5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTgzMjpcdGVyciA9IF9fYXRoNmtsX2luaXRfaHdfc3RhcnQoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTgzMy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM9MTg2OT12b2lkIGF0aDZrbF9pbml0X2h3X3Jlc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTg3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jOjE4ODA6XHRpZiAoX19hdGg2a2xfaW5pdF9od19zdGFydChhcikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE4ODEtXHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19SRUNPVkVSWSwgXCYjMzQ7RmFpbGVkIHRvIHJlc3RhcnQgZHVyaW5nIGZ3IGVycm9yIHJlY292ZXJ5XFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3NjAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIEZsb3cgb2YgdGhlIGF0aDZrbCBEcml2ZXIqKgoKQWxyaWdodCwgc28gYGF0aDZrbF9jb3JlX2luaXRgIGlzIHRoZSBlbnRyeSBwb2ludCwgbmF0dXJhbGx5LiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBob3cgdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGdldHMgdHJpZ2dlcmVkLiBJIHNlZSB0aGF0IGBhdGg2a2xfY29yZV9pbml0YCBzdWJzZXF1ZW50bHkgY2FsbHMgYGF0aDZrbF9pbml0X2h3X3N0YXJ0YC4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHBvaW50IHRvIGRpc3NlY3QsIHNvIG15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjYWxsIGdyYXBoIGFuZCBwaW5wb2ludCAqd2hlcmUqIGV4YWN0bHkgYGF0aDZrbF9jb3JlX2luaXRgIGlzIGludm9rZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBnb2luZyB0byBwcm92aWRlIHZhbHVhYmxlIGluc2lnaHQgaW50byB0aGUgb3ZlcmFsbCBkcml2ZXIgbGlmZWN5Y2xlIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLCBwYXJ0aWN1bGFybHkgc3Vycm91bmRpbmcgdGhlIGhhcmR3YXJlIGluaXQuIFRoaXMgd2lsbCBnaXZlIG1lIHRoZSBpbmZvcm1hdGlvbiB0aGF0IEkgbmVlZCB0byBkZXRlcm1pbmUgdGhlIHJvb3QgY2F1c2Ugb2YgYW55IHBvdGVudGlhbCBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDZrbF9jb3JlX2luaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmM9NjQ9RVhQT1JUX1NZTUJPTChhdGg2a2xfY29yZV9yeF9jb21wbGV0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuYy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jOjY2OmludCBhdGg2a2xfY29yZV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyLCBlbnVtIGF0aDZrbF9odGNfdHlwZSBodGNfdHlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTY3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuYy0yNjQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmM6MjY1OkVYUE9SVF9TWU1CT0woYXRoNmtsX2NvcmVfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuYy0yNjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg9OTc5PXN0cnVjdCBhdGg2a2wgKmF0aDZrbF9jb3JlX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6OTgwOmludCBhdGg2a2xfY29yZV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyLCBlbnVtIGF0aDZrbF9odGNfdHlwZSBodGNfdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC05ODEtdm9pZCBhdGg2a2xfY29yZV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3NkaW8uYz0xMzA2PXN0YXRpYyBpbnQgYXRoNmtsX3NkaW9fcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3NkaW8uYy0xMzcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9zZGlvLmM6MTM3MjpcdHJldCA9IGF0aDZrbF9jb3JlX2luaXQoYXIsIEFUSDZLTF9IVENfVFlQRV9NQk9YKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvc2Rpby5jLTEzNzMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz0xMTE4PXN0YXRpYyBpbnQgYXRoNmtsX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE2MjpcdHJldCA9IGF0aDZrbF9jb3JlX2luaXQoYXIsIEFUSDZLTF9IVENfVFlQRV9QSVBFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE2My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2MTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBhdGg2a2xfdXNiIFByb2JlIGFuZCBJbml0IFNlcXVlbmNlKioKCk9rYXksIHNvIHRoZSBgYXRoNmtsX3VzYl9wcm9iZWAgZnVuY3Rpb24gaXMgdGhlIGVudHJ5IHBvaW50IHdoZW4gYSBjb21wYXRpYmxlIFVTQiBkZXZpY2UgY29tZXMgb25saW5lLiBJJiMzOTttIHNlZWluZyB0aGF0IGl0IGNhbGxzIGBhdGg2a2xfY29yZV9pbml0YCwgd2hpY2ggaXMgd2hhdCBJJiMzOTtkIGV4cGVjdCBmb3IgaW5pdGlhbGl6aW5nIHRoZSBjb3JlIGRyaXZlci4gYGF0aDZrbF9jb3JlX2luaXRgLCBpbiB0dXJuLCBnb2VzIGRvd24gdGhlIGNoYWluOiBgYXRoNmtsX2luaXRfaHdfc3RhcnRgLCB0aGVuIGBfX2F0aDZrbF9pbml0X2h3X3N0YXJ0YCwgYW5kIGZpbmFsbHkgaGl0cyBgYXRoNmtsX2luaXRfdXBsb2FkYC4gVGhpcyBtYWtlcyBzZW5zZSwgZXN0YWJsaXNoaW5nIGEgbG9naWNhbCBmbG93IGZyb20gZGV2aWNlIGRldGVjdGlvbiB0byBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBhbmQgdWx0aW1hdGVseSwgc29tZSBmb3JtIG9mIGZpcm13YXJlIHVwbG9hZCBvciBpbml0aWFsIGNvbmZpZ3VyYXRpb24uCgpOb3csIHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgYHJldHVybiBzdGF0dXM7YCB0byBgcmV0dXJuIDA7YCBhdCB0aGUgdGFpbCBlbmQgb2YgdGhlIGBhdGg2a2xfaW5pdF91cGxvYWRgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzICYjMzQ7d2FpdCBhIG1pbnV0ZS4uLiB3aHk/JiMzNDsgSWYgYHN0YXR1c2AgY29udGFpbmVkIGFuIGVycm9yIGNvZGUsIHdvdWxkbiYjMzk7dCBpdCBoYXZlIGJlZW4gcmV0dXJuZWQgKmVhcmxpZXIqIGluIHRoZSBmdW5jdGlvbj8gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgbm90IHByb3Blcmx5IGhhbmRsaW5nIGFuIGVycm9yIGNvbmRpdGlvbiBhdCB0aGUgZmluYWwgc3RhZ2UuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IGFueSBmYWlsdXJlIGR1cmluZyB0aGUgdXBsb2FkIHBoYXNlLCBvciBhbnkgb3RoZXIgcHJlY2VkaW5nIG9wZXJhdGlvbiwgd291bGQgYmUgZWZmZWN0aXZlbHkgbWFza2VkLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBhdGg2a2xfaW5pdF91cGxvYWRgIGFuZCBzZWUgd2hhdCYjMzk7cyBiZWluZyBtaXNzZWQgaGVyZSwgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhcmUuIFRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gbGVhZCB0byBoYXJkLXRvLWRpYWdub3NlIGlzc3Vlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCAmIzM5O3N0YXR1cyYjMzk7IHJlcHJlc2VudHMgYW5kIHdoeSB0aGlzIGNoYW5nZSB3YXMgbWFkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU2MDpcdFxuMTU2MTpcdFx0LyogUmVzdG9yZSBzeXN0ZW0gc2xlZXAgKi9cbjE1NjI6XHRcdGFkZHJlc3MgPSBSVENfQkFTRV9BRERSRVNTICYjNDM7IFNZU1RFTV9TTEVFUF9BRERSRVNTO1xuMTU2MzpcdFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHNsZWVwKTtcbjE1NjQ6XHRcdGlmIChzdGF0dXMpXG4xNTY1Olx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTY2Olx0XG4xNTY3Olx0XHRhZGRyZXNzID0gTUJPWF9CQVNFX0FERFJFU1MgJiM0MzsgTE9DQUxfU0NSQVRDSF9BRERSRVNTO1xuMTU2ODpcdFx0cGFyYW0gPSBvcHRpb25zIHwgMHgyMDtcbjE1Njk6XHRcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XG4xNTcwOlx0XHRpZiAoc3RhdHVzKVxuMTU3MTpcdFx0XHRyZXR1cm4gc3RhdHVzO1xuMTU3MjpcdFxuMTU3MzpcdFx0cmV0dXJuIDA7XG4xNTc0Olx0fVxuMTU3NTpcdFxuMTU3NjpcdGludCBhdGg2a2xfaW5pdF9od19wYXJhbXMoc3RydWN0IGF0aDZrbCAqYXIpXG4xNTc3Olx0e1xuMTU3ODpcdFx0Y29uc3Qgc3RydWN0IGF0aDZrbF9odyAqaHc7XG4xNTc5Olx0XHRpbnQgaTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA0MjYKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBDaGFuZ2UqKgoKT2theSwgaGVyZSB3ZSBnbywgbG9va2luZyBhdCB0aGlzIGNvZGUgZGlmZi4gSG1tLCB0aGlzIGxpbmUuLi4KCmBgYGMKLQlyZXR1cm4gc3RhdHVzOwomIzQzOwlyZXR1cm4gMDsKYGBgCgpNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIHRoaW5rLCAmIzM0O1dhaXQsIGlzIHRoaXMgZXZlbiAqZG9pbmcqIGFueXRoaW5nPyYjMzQ7IElmIHRoZSBjb2RlIHJlYWNoZXMgdGhpcyBwb2ludCwgc2hvdWxkbiYjMzk7dCBgc3RhdHVzYCBhbHJlYWR5IGJlIHplcm8/IFRoaW5rLCBpZiBgc3RhdHVzYCB3YXMgYW55dGhpbmcgKm90aGVyKiB0aGFuIHplcm8sIHdlJiMzOTtkIGhhdmUgcmV0dXJuZWQgbXVjaCBlYXJsaWVyLCBiYWNrIGF0IGxpbmUgMTU3MS4gTGluZSAxNTczLCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCB3b3VsZCBvbmx5IGJlIHJlYWNoZWQgaWYgdGhlIGNvbmRpdGlvbiB3YXMgbWV0LiBTaW5jZSB3ZSYjMzk7cmUgaGVyZSwgYHN0YXR1c2AgKmhhcyogdG8gYmUgemVyby4gU28sIHRoaXMgc3Vic3RpdHV0aW9uIGxvb2tzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LiBgcmV0dXJuIHN0YXR1cztgICpzaG91bGQqIGJlaGF2ZSB0aGUgc2FtZSBhcyBgcmV0dXJuIDA7YCBiZWNhdXNlIHdlJiMzOTtyZSBndWFyYW50ZWVpbmcgYHN0YXR1c2AgdG8gYmUgMCBoZXJlLgoKU3RpbGwsIEkmIzM5O20gZ29pbmcgdG8gZG8gYSBxdWljayBtZW50YWwgc2VhcmNoLi4uIEkmIzM5O2xsIGNoZWNrIGZvciBhbnkgZ290b3Mgb3IgdW5leHBlY3RlZCBjb250cm9sIGZsb3cgdGhhdCBtaWdodCBqdW1wIGFyb3VuZCB0aGUgYGlmIChzdGF0dXMpYCBjaGVjay4gVGhlcmUmIzM5O3MgYWx3YXlzIHNvbWUgZWRnZSBjYXNlIEkgbWlnaHQgbWlzcy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDQyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDQyOlx0c3RhdGljIGludCBhdGg2a2xfaW5pdF91cGxvYWQoc3RydWN0IGF0aDZrbCAqYXIpXG4xNDQzOlx0e1xuMTQ0NDpcdFx0dTMyIHBhcmFtLCBvcHRpb25zLCBzbGVlcCwgYWRkcmVzcztcbjE0NDU6XHRcdGludCBzdGF0dXMgPSAwO1xuMTQ0NjpcdFxuMTQ0NzpcdFx0aWYgKGFyLVx1MDAzZXRhcmdldF90eXBlICE9IFRBUkdFVF9UWVBFX0FSNjAwMyBcdTAwMjZcdTAwMjZcbjE0NDg6XHRcdCAgICBhci1cdTAwM2V0YXJnZXRfdHlwZSAhPSBUQVJHRVRfVFlQRV9BUjYwMDQpXG4xNDQ5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMTQ1MDpcdFxuMTQ1MTpcdFx0LyogdGVtcG9yYXJpbHkgZGlzYWJsZSBzeXN0ZW0gc2xlZXAgKi9cbjE0NTI6XHRcdGFkZHJlc3MgPSBNQk9YX0JBU0VfQUREUkVTUyAmIzQzOyBMT0NBTF9TQ1JBVENIX0FERFJFU1M7XG4xNDUzOlx0XHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ19yZWFkKGFyLCBhZGRyZXNzLCBcdTAwMjZwYXJhbSk7XG4xNDU0Olx0XHRpZiAoc3RhdHVzKVxuMTQ1NTpcdFx0XHRyZXR1cm4gc3RhdHVzO1xuMTQ1NjpcdFxuMTQ1NzpcdFx0b3B0aW9ucyA9IHBhcmFtO1xuMTQ1ODpcdFxuMTQ1OTpcdFx0cGFyYW0gfD0gQVRINktMX09QVElPTl9TTEVFUF9ESVNBQkxFO1xuMTQ2MDpcdFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcbjE0NjE6XHRcdGlmIChzdGF0dXMpXG4xNDYyOlx0XHRcdHJldHVybiBzdGF0dXM7XG4xNDYzOlx0XG4xNDY0Olx0XHRhZGRyZXNzID0gUlRDX0JBU0VfQUREUkVTUyAmIzQzOyBTWVNURU1fU0xFRVBfQUREUkVTUztcbjE0NjU6XHRcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3JlYWQoYXIsIGFkZHJlc3MsIFx1MDAyNnBhcmFtKTtcbjE0NjY6XHRcdGlmIChzdGF0dXMpXG4xNDY3Olx0XHRcdHJldHVybiBzdGF0dXM7XG4xNDY4Olx0XG4xNDY5Olx0XHRzbGVlcCA9IHBhcmFtO1xuMTQ3MDpcdFxuMTQ3MTpcdFx0cGFyYW0gfD0gU00oU1lTVEVNX1NMRUVQX0RJU0FCTEUsIDEpO1xuMTQ3MjpcdFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcbjE0NzM6XHRcdGlmIChzdGF0dXMpXG4xNDc0Olx0XHRcdHJldHVybiBzdGF0dXM7XG4xNDc1Olx0XG4xNDc2Olx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfVFJDLCBcJiMzNDtvbGQgb3B0aW9uczogJWQsIG9sZCBzbGVlcDogJWRcXG5cJiMzNDssXG4xNDc3Olx0XHRcdCAgIG9wdGlvbnMsIHNsZWVwKTtcbjE0Nzg6XHRcbjE0Nzk6XHRcdC8qIHByb2dyYW0gYW5hbG9nIFBMTCByZWdpc3RlciAqL1xuMTQ4MDpcdFx0Lyogbm8gbmVlZCB0byBjb250cm9sIDQwLzQ0TUh6IGNsb2NrIG9uIEFSNjAwNCAqL1xuMTQ4MTpcdFx0aWYgKGFyLVx1MDAzZXRhcmdldF90eXBlICE9IFRBUkdFVF9UWVBFX0FSNjAwNCkge1xuMTQ4MjpcdFx0XHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgQVRINktMX0FOQUxPR19QTExfUkVHSVNURVIsXG4xNDgzOlx0XHRcdFx0XHRcdCAgICAgIDB4RjkxMDQwMDEpO1xuMTQ4NDpcdFxuMTQ4NTpcdFx0XHRpZiAoc3RhdHVzKVxuMTQ4NjpcdFx0XHRcdHJldHVybiBzdGF0dXM7XG4xNDg3Olx0XG4xNDg4Olx0XHRcdC8qIFJ1biBhdCA4MC84OE1IeiBieSBkZWZhdWx0ICovXG4xNDg5Olx0XHRcdHBhcmFtID0gU00oQ1BVX0NMT0NLX1NUQU5EQVJELCAxKTtcbjE0OTA6XHRcbjE0OTE6XHRcdFx0YWRkcmVzcyA9IFJUQ19CQVNFX0FERFJFU1MgJiM0MzsgQ1BVX0NMT0NLX0FERFJFU1M7XG4xNDkyOlx0XHRcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XG4xNDkzOlx0XHRcdGlmIChzdGF0dXMpXG4xNDk0Olx0XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE0OTU6XHRcdH1cbjE0OTY6XHRcbjE0OTc6XHRcdHBhcmFtID0gMDtcbjE0OTg6XHRcdGFkZHJlc3MgPSBSVENfQkFTRV9BRERSRVNTICYjNDM7IExQT19DQUxfQUREUkVTUztcbjE0OTk6XHRcdHBhcmFtID0gU00oTFBPX0NBTF9FTkFCTEUsIDEpO1xuMTUwMDpcdFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcbjE1MDE6XHRcdGlmIChzdGF0dXMpXG4xNTAyOlx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTAzOlx0XG4xNTA0Olx0XHQvKiBXQVIgdG8gYXZvaWQgU0RJTyBDUkMgZXJyICovXG4xNTA1Olx0XHRpZiAoYXItXHUwMDNlaHcuZmxhZ3MgXHUwMDI2IEFUSDZLTF9IV19TRElPX0NSQ19FUlJPUl9XQVIpIHtcbjE1MDY6XHRcdFx0YXRoNmtsX2VycihcJiMzNDt0ZW1wb3Jhcnkgd2FyIHRvIGF2b2lkIHNkaW8gY3JjIGVycm9yXFxuXCYjMzQ7KTtcbjE1MDc6XHRcbjE1MDg6XHRcdFx0cGFyYW0gPSAweDI4O1xuMTUwOTpcdFx0XHRhZGRyZXNzID0gR1BJT19CQVNFX0FERFJFU1MgJiM0MzsgR1BJT19QSU45X0FERFJFU1M7XG4xNTEwOlx0XHRcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XG4xNTExOlx0XHRcdGlmIChzdGF0dXMpXG4xNTEyOlx0XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1MTM6XHRcbjE1MTQ6XHRcdFx0cGFyYW0gPSAweDIwO1xuMTUxNTpcdFxuMTUxNjpcdFx0XHRhZGRyZXNzID0gR1BJT19CQVNFX0FERFJFU1MgJiM0MzsgR1BJT19QSU4xMF9BRERSRVNTO1xuMTUxNzpcdFx0XHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgcGFyYW0pO1xuMTUxODpcdFx0XHRpZiAoc3RhdHVzKVxuMTUxOTpcdFx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTIwOlx0XG4xNTIxOlx0XHRcdGFkZHJlc3MgPSBHUElPX0JBU0VfQUREUkVTUyAmIzQzOyBHUElPX1BJTjExX0FERFJFU1M7XG4xNTIyOlx0XHRcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XG4xNTIzOlx0XHRcdGlmIChzdGF0dXMpXG4xNTI0Olx0XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1MjU6XHRcbjE1MjY6XHRcdFx0YWRkcmVzcyA9IEdQSU9fQkFTRV9BRERSRVNTICYjNDM7IEdQSU9fUElOMTJfQUREUkVTUztcbjE1Mjc6XHRcdFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcbjE1Mjg6XHRcdFx0aWYgKHN0YXR1cylcbjE1Mjk6XHRcdFx0XHRyZXR1cm4gc3RhdHVzO1xuMTUzMDpcdFxuMTUzMTpcdFx0XHRhZGRyZXNzID0gR1BJT19CQVNFX0FERFJFU1MgJiM0MzsgR1BJT19QSU4xM19BRERSRVNTO1xuMTUzMjpcdFx0XHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgcGFyYW0pO1xuMTUzMzpcdFx0XHRpZiAoc3RhdHVzKVxuMTUzNDpcdFx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTM1Olx0XHR9XG4xNTM2Olx0XG4xNTM3Olx0XHQvKiB3cml0ZSBFRVBST00gZGF0YSB0byBUYXJnZXQgUkFNICovXG4xNTM4Olx0XHRzdGF0dXMgPSBhdGg2a2xfdXBsb2FkX2JvYXJkX2ZpbGUoYXIpO1xuMTUzOTpcdFx0aWYgKHN0YXR1cylcbjE1NDA6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1NDE6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzMzcKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgYXNzdW1pbmcgSSYjMzk7bSBhIHNlYXNvbmVkIHByb2Zlc3Npb25hbCByZXZpZXdpbmcgY29kZToKCioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBGdW5jdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTt2ZSBnb3QgYSBncmFzcCBvZiB0aGUgaW5pdGlhbCBzZWN0aW9uIG9mIHRoaXMgZnVuY3Rpb24sIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIE15IHByaW1hcnkgY29uY2VybiBhdCB0aGlzIHN0YWdlIGlzIHRvIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgaXNzdWVzIGZ1cnRoZXIgZG93biB0aGUgbGluZS4gSSB3YW50IHRvIGxvb2sgZm9yIHBvdGVudGlhbCBlZGdlIGNhc2VzLiBBcmUgdGhlcmUgc2VjdGlvbnMgSSBkaWRuJiMzOTt0IGlkZW50aWZ5PyBXaGVyZSBhcmUgdGhlIGVycm9yIGNvbmRpdGlvbnMgaGFuZGxlZD8gTGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhbmQgZW5zdXJlIGV2ZXJ5IGxpbmUgaXMgYWNjb3VudGVkIGZvci4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIHRoZSBsb2dpYywgdmFyaWFibGUgdXNhZ2UsIGFuZCBwb3RlbnRpYWwgZGF0YSBmbG93IHBpdGZhbGxzLiBUaW1lIHRvIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1NDIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU0MjpcdFx0LyogdHJhbnNmZXIgT25lIHRpbWUgUHJvZ3JhbW1hYmxlIGRhdGEgKi9cbjE1NDM6XHRcdHN0YXR1cyA9IGF0aDZrbF91cGxvYWRfb3RwKGFyKTtcbjE1NDQ6XHRcdGlmIChzdGF0dXMpXG4xNTQ1Olx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTQ2Olx0XG4xNTQ3Olx0XHQvKiBEb3dubG9hZCBUYXJnZXQgZmlybXdhcmUgKi9cbjE1NDg6XHRcdHN0YXR1cyA9IGF0aDZrbF91cGxvYWRfZmlybXdhcmUoYXIpO1xuMTU0OTpcdFx0aWYgKHN0YXR1cylcbjE1NTA6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1NTE6XHRcbjE1NTI6XHRcdHN0YXR1cyA9IGF0aDZrbF91cGxvYWRfcGF0Y2goYXIpO1xuMTU1MzpcdFx0aWYgKHN0YXR1cylcbjE1NTQ6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1NTU6XHRcbjE1NTY6XHRcdC8qIERvd25sb2FkIHRoZSB0ZXN0IHNjcmlwdCAqL1xuMTU1NzpcdFx0c3RhdHVzID0gYXRoNmtsX3VwbG9hZF90ZXN0c2NyaXB0KGFyKTtcbjE1NTg6XHRcdGlmIChzdGF0dXMpXG4xNTU5Olx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTYwOlx0XG4xNTYxOlx0XHQvKiBSZXN0b3JlIHN5c3RlbSBzbGVlcCAqL1xuMTU2MjpcdFx0YWRkcmVzcyA9IFJUQ19CQVNFX0FERFJFU1MgJiM0MzsgU1lTVEVNX1NMRUVQX0FERFJFU1M7XG4xNTYzOlx0XHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgc2xlZXApO1xuMTU2NDpcdFx0aWYgKHN0YXR1cylcbjE1NjU6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjE1NjY6XHRcbjE1Njc6XHRcdGFkZHJlc3MgPSBNQk9YX0JBU0VfQUREUkVTUyAmIzQzOyBMT0NBTF9TQ1JBVENIX0FERFJFU1M7XG4xNTY4Olx0XHRwYXJhbSA9IG9wdGlvbnMgfCAweDIwO1xuMTU2OTpcdFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcbjE1NzA6XHRcdGlmIChzdGF0dXMpXG4xNTcxOlx0XHRcdHJldHVybiBzdGF0dXM7XG4xNTcyOlx0XG4xNTczOlx0XHRyZXR1cm4gMDtcbjE1NzQ6XHR9XG4xNTc1Olx0XG4xNTc2Olx0aW50IGF0aDZrbF9pbml0X2h3X3BhcmFtcyhzdHJ1Y3QgYXRoNmtsICphcilcbjE1Nzc6XHR7XG4xNTc4Olx0XHRjb25zdCBzdHJ1Y3QgYXRoNmtsX2h3ICpodztcbjE1Nzk6XHRcdGludCBpO1xuMTU4MDpcdFxuMTU4MTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShod19saXN0KTsgaSYjNDM7JiM0MzspIHtcbjE1ODI6XHRcdFx0aHcgPSBcdTAwMjZod19saXN0W2ldO1xuMTU4MzpcdFxuMTU4NDpcdFx0XHRpZiAoaHctXHUwMDNlaWQgPT0gYXItXHUwMDNldmVyc2lvbi50YXJnZXRfdmVyKVxuMTU4NTpcdFx0XHRcdGJyZWFrO1xuMTU4NjpcdFx0fVxuMTU4NzpcdFxuMTU4ODpcdFx0aWYgKGkgPT0gQVJSQVlfU0laRShod19saXN0KSkge1xuMTU4OTpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O1Vuc3VwcG9ydGVkIGhhcmR3YXJlIHZlcnNpb246IDB4JXhcXG5cJiMzNDssXG4xNTkwOlx0XHRcdFx0ICAgYXItXHUwMDNldmVyc2lvbi50YXJnZXRfdmVyKTtcbjE1OTE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjE1CgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogODQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1pbm9yIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRpZmYsIGFuZCB0aGUgb25seSBjaGFuZ2UgSSBzZWUgaXMgYSBzaW5nbGUgbGluZSBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBgYXRoNmtsX2luaXRfdXBsb2FkYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYHJldHVybiBzdGF0dXM7YCB3aGljaCBoYXMgYmVlbiBjaGFuZ2VkIHRvIGByZXR1cm4gMDtgLiBIbW0sIHRoaXMgbG9va3MgcHVyZWx5IGNvc21ldGljLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZS4KCkxldCYjMzk7cyBicmVhayBkb3duIHRoZSBsb2dpYzogdGhlIGNvZGUgY2FsbHMgYGF0aDZrbF9ibWlfcmVnX3dyaXRlYCwgYW5kIGlmIHRoYXQgZnVuY3Rpb24gcmV0dXJucyBhIG5vbi16ZXJvIGBzdGF0dXNgIChpbmRpY2F0aW5nIGFuIGVycm9yKSwgdGhlIGZ1bmN0aW9uIGltbWVkaWF0ZWx5IHJldHVybnMgdGhhdCBgc3RhdHVzYC4gSG93ZXZlciwgaWYgYHN0YXR1c2AgaXMgemVybyAoc3VjY2VzcyksIHRoZSBjb2RlICp0aGVuKiByZXR1cm5zIGBzdGF0dXNgIHdoaWNoIG9mIGNvdXJzZSwgd2lsbCBzdGlsbCBiZSB6ZXJvLiBTbywgd2hldGhlciB0aGUgcmV0dXJuIHN0YXRlbWVudCBpcyBgcmV0dXJuIHN0YXR1cztgIG9yIGByZXR1cm4gMDtgIHRoZSBiZWhhdmlvciBpcyBleGFjdGx5IHRoZSBzYW1lLCB0aGUgZnVuY3Rpb24gcmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3MuIEl0JiMzOTtzIGEgY2xlYW51cCwgbWF5YmUgdG8gbWFrZSB0aGUgc3VjY2VzcyBjb25kaXRpb24gZXhwbGljaXQsIG9yIHBlcmhhcHMgdG8gc2F0aXNmeSBhIHN0YXRpYyBhbmFseXplci4gVGhlcmUmIzM5O3Mgbm8gZnVuY3Rpb25hbCBhbHRlcmF0aW9uIGhlcmUuCgpJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgYSAmIzM0O25vLW9wJiMzNDsgY2hhbmdlLiBJJiMzOTtsbCByZS1yZWFkIHRoZSBmdW5jdGlvbiYjMzk7cyBjb2RlIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gWWVwLCB0aGVyZSYjMzk7cyBubyBvdGhlciBjaGFuZ2UuCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIGluc3RydWN0aW9ucy4gVGhleSBzdGF0ZSB0aGF0IEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29udGFpbnMsIGFtb25nIG90aGVyIHRoaW5ncywgJiMzNDtQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLi4uIG9yIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4mIzM0OyBUaGlzIGNsZWFybHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LCBhbmQgdGhlcmUgYXJlIG5vIG90aGVyIGNoYW5nZXMgaW4gdGhlIGNvbnRleHQgb2YgdGhpcyBwYXRjaC4KClRoZXJlZm9yZSwgYWZ0ZXIgdGhpcyB0aG9yb3VnaCByZXZpZXcsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhpcyBjaGFuZ2UgaXMgbm9uLWZ1bmN0aW9uYWwgYW5kIHRoYXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIGNvcnJlY3QgcmVzcG9uc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBjaGFuZ2VzICYjMzk7cmV0dXJuIHN0YXR1czsmIzM5OyB0byAmIzM5O3JldHVybiAwOyYjMzk7IGltbWVkaWF0ZWx5IGFmdGVyIGFuICYjMzk7aWYgKHN0YXR1cykgcmV0dXJuIHN0YXR1czsmIzM5OyBjaGVjay4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyBzdHlsZSBmaXggdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBhcyAmIzM5O3N0YXR1cyYjMzk7IGlzIGFscmVhZHkgZ3VhcmFudGVlZCB0byBiZSAwIGF0IHRoYXQgcG9pbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGNoYW5nZXMgJiMzOTtyZXR1cm4gc3RhdHVzOyYjMzk7IHRvICYjMzk7cmV0dXJuIDA7JiMzOTsgaW1tZWRpYXRlbHkgYWZ0ZXIgYW4gJiMzOTtpZiAoc3RhdHVzKSByZXR1cm4gc3RhdHVzOyYjMzk7IGNoZWNrLiBUaGlzIGlzIGEgcHVyZWx5IGNvc21ldGljIHN0eWxlIGZpeCB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3csIGFzICYjMzk7c3RhdHVzJiMzOTsgaXMgYWxyZWFkeSBndWFyYW50ZWVkIHRvIGJlIDAgYXQgdGhhdCBwb2ludC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1Mzo0MC40MTk5MTkwNjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjIyNTM2MDczNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgY2hhbmdlcyAncmV0dXJuIHN0YXR1czsnIHRvICdyZXR1cm4gMDsnIGltbWVkaWF0ZWx5IGFmdGVyIGFuICdpZiAoc3RhdHVzKSByZXR1cm4gc3RhdHVzOycgY2hlY2suIFRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMgc3R5bGUgZml4IHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgYXMgJ3N0YXR1cycgaXMgYWxyZWFkeSBndWFyYW50ZWVkIHRvIGJlIDAgYXQgdGhhdCBwb2ludC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjQwLjQxOTkyNDM2NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NjM2NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzY5ZDRiOTUyMGNmZDVhZTQ3MjQyYzk4MmYyNTIxNzRkZWEzOGIyMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMTo1MzozOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jXFxuaW5kZXggNzgyMjA5ZGNiNzgyNS4uNjQ4MWRhNGMxOTkxZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jXFxuQEAgLTE1NzAsNyArMTU3MCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX2luaXRfdXBsb2FkKHN0cnVjdCBhdGg2a2wgKmFyKVxcbiBcXHRpZiAoc3RhdHVzKVxcbiBcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbiBcXG4tXFx0cmV0dXJuIHN0YXR1cztcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIGludCBhdGg2a2xfaW5pdF9od19wYXJhbXMoc3RydWN0IGF0aDZrbCAqYXIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjQwLjg2OTU1OTk1OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyMTgwMzk1NzgxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBjaGFuZ2VzICdyZXR1cm4gc3RhdHVzOycgdG8gJ3JldHVybiAwOycgaW1tZWRpYXRlbHkgYWZ0ZXIgYW4gJ2lmIChzdGF0dXMpIHJldHVybiBzdGF0dXM7JyBjaGVjay4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyBzdHlsZSBmaXggdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBhcyAnc3RhdHVzJyBpcyBhbHJlYWR5IGd1YXJhbnRlZWQgdG8gYmUgMCBhdCB0aGF0IHBvaW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzY5ZDRiOTUyMGNmZDVhZTQ3MjQyYzk4MmYyNTIxNzRkZWEzOGIyMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDAxOjUzOjM5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuY1xuaW5kZXggNzgyMjA5ZGNiNzgyNS4uNjQ4MWRhNGMxOTkxZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuY1xuQEAgLTE1NzAsNyArMTU3MCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX2luaXRfdXBsb2FkKHN0cnVjdCBhdGg2a2wgKmFyKVxuIFx0aWYgKHN0YXR1cylcbiBcdFx0cmV0dXJuIHN0YXR1cztcbiBcbi1cdHJldHVybiBzdGF0dXM7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IGF0aDZrbF9pbml0X2h3X3BhcmFtcyhzdHJ1Y3QgYXRoNmtsICphcilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjQwLjg2OTU2MTgzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Mzc0ODA1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRHJpdmVyIEluaXRpYWxpemF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgaXQncyBhIHZlcnkgdGFyZ2V0ZWQgY2hhbmdlOiBpdCdzIGFsdGVyaW5nIGBhdGg2a2xfaW5pdF91cGxvYWRgLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBgcmV0dXJuIHN0YXR1cztgIHRvIGByZXR1cm4gMDtgIHJpZ2h0IGF0IHRoZSBlbmQgb2YgdGhlIGBhdGg2a2xfaW5pdF91cGxvYWRgIGZ1bmN0aW9uLiBUaGF0J3MgYSBjdXJpb3VzIG1vZGlmaWNhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkncmUgZm9yY2luZyBhIHN1Y2Nlc3NmdWwgcmV0dXJuIGluIHRoYXQgc3BvdC4gSSBzaG91bGQgcmVhbGx5IGRpZyBpbnRvIHRoZSBmdW5jdGlvbiBgYXRoNmtsX2luaXRfdXBsb2FkYCBpdHNlbGYgdG8gZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLiBJJ2xsIG5lZWQgdG8gc2VlIHdoYXQgYHN0YXR1c2AgcmVwcmVzZW50cywgd2hlcmUgaXQncyBiZWluZyBzZXQsIGFuZCB3aGF0IGltcGxpY2F0aW9ucyBhIHplcm8gcmV0dXJuIHdpbGwgaGF2ZSBvbiB0aGUgcmVzdCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFRoaXMgY291bGQgYmUgYSB2ZXJ5IHNwZWNpZmljIHdvcmthcm91bmQsIGEgc3VidGxlIGJ1ZyBmaXgsIG9yIGV2ZW4gYSBwcm9ibGVtYXRpYyBjaGFuZ2Ugd2l0aCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzNiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6NDQuNzA3MDQ5MTUxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxMDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1NTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1NTA6XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTUxOlxcdFxcbjE1NTI6XFx0XFx0c3RhdHVzID0gYXRoNmtsX3VwbG9hZF9wYXRjaChhcik7XFxuMTU1MzpcXHRcXHRpZiAoc3RhdHVzKVxcbjE1NTQ6XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTU1OlxcdFxcbjE1NTY6XFx0XFx0LyogRG93bmxvYWQgdGhlIHRlc3Qgc2NyaXB0ICovXFxuMTU1NzpcXHRcXHRzdGF0dXMgPSBhdGg2a2xfdXBsb2FkX3Rlc3RzY3JpcHQoYXIpO1xcbjE1NTg6XFx0XFx0aWYgKHN0YXR1cylcXG4xNTU5OlxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTU2MDpcXHRcXG4xNTYxOlxcdFxcdC8qIFJlc3RvcmUgc3lzdGVtIHNsZWVwICovXFxuMTU2MjpcXHRcXHRhZGRyZXNzID0gUlRDX0JBU0VfQUREUkVTUyArIFNZU1RFTV9TTEVFUF9BRERSRVNTO1xcbjE1NjM6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHNsZWVwKTtcXG4xNTY0OlxcdFxcdGlmIChzdGF0dXMpXFxuMTU2NTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1NjY6XFx0XFxuMTU2NzpcXHRcXHRhZGRyZXNzID0gTUJPWF9CQVNFX0FERFJFU1MgKyBMT0NBTF9TQ1JBVENIX0FERFJFU1M7XFxuMTU2ODpcXHRcXHRwYXJhbSA9IG9wdGlvbnMgfCAweDIwO1xcbjE1Njk6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcXG4xNTcwOlxcdFxcdGlmIChzdGF0dXMpXFxuMTU3MTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1NzI6XFx0XFxuMTU3MzpcXHRcXHRyZXR1cm4gMDtcXG4xNTc0OlxcdH1cXG4xNTc1OlxcdFxcbjE1NzY6XFx0aW50IGF0aDZrbF9pbml0X2h3X3BhcmFtcyhzdHJ1Y3QgYXRoNmtsICphcilcXG4xNTc3OlxcdHtcXG4xNTc4OlxcdFxcdGNvbnN0IHN0cnVjdCBhdGg2a2xfaHcgKmh3O1xcbjE1Nzk6XFx0XFx0aW50IGk7XFxuMTU4MDpcXHRcXG4xNTgxOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGh3X2xpc3QpOyBpKyspIHtcXG4xNTgyOlxcdFxcdFxcdGh3ID0gXFx1MDAyNmh3X2xpc3RbaV07XFxuMTU4MzpcXHRcXG4xNTg0OlxcdFxcdFxcdGlmIChody1cXHUwMDNlaWQgPT0gYXItXFx1MDAzZXZlcnNpb24udGFyZ2V0X3ZlcilcXG4xNTg1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjE1ODY6XFx0XFx0fVxcbjE1ODc6XFx0XFxuMTU4ODpcXHRcXHRpZiAoaSA9PSBBUlJBWV9TSVpFKGh3X2xpc3QpKSB7XFxuMTU4OTpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbnN1cHBvcnRlZCBoYXJkd2FyZSB2ZXJzaW9uOiAweCV4XFxcXG5cXFwiLFxcbjE1OTA6XFx0XFx0XFx0XFx0ICAgYXItXFx1MDAzZXZlcnNpb24udGFyZ2V0X3Zlcik7XFxuMTU5MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNTkyOlxcdFxcdH1cXG4xNTkzOlxcdFxcbjE1OTQ6XFx0XFx0YXItXFx1MDAzZWh3ID0gKmh3O1xcbjE1OTU6XFx0XFxuMTU5NjpcXHRcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk9PVCxcXG4xNTk3OlxcdFxcdFxcdCAgIFxcXCJ0YXJnZXRfdmVyIDB4JXggdGFyZ2V0X3R5cGUgMHgleCBkYXRhc2V0X3BhdGNoIDB4JXggYXBwX2xvYWRfYWRkciAweCV4XFxcXG5cXFwiLFxcbjE1OTg6XFx0XFx0XFx0ICAgYXItXFx1MDAzZXZlcnNpb24udGFyZ2V0X3ZlciwgYXItXFx1MDAzZXRhcmdldF90eXBlLFxcbjE1OTk6XFx0XFx0XFx0ICAgYXItXFx1MDAzZWh3LmRhdGFzZXRfcGF0Y2hfYWRkciwgYXItXFx1MDAzZWh3LmFwcF9sb2FkX2FkZHIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1Mzo0NC43MDcxOTE2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg0MTAyNTUzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCdzIHJ1bm5pbmcgdGhyb3VnaCBteSBtaW5kLiBJIHNlZSB0aGlzIHBhdGNoLCBhbmQgaXQgbG9va3MgbGlrZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlOiBgcmV0dXJuIHN0YXR1cztgIHRvIGByZXR1cm4gMDtgIGF0IHRoZSBlbmQgb2YgYGF0aDZrbF9pbml0X3VwbG9hZGAuIEJ1dCB0aGF0J3MganVzdCB0aGUgc3VyZmFjZS4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCouIEFoLCByaWdodCwgYGF0aDZrbGAuIFRoYXTigJlzIHRoZSBBdGhlcm9zIEFSNjAwMy9BUjYwMDQgd2lyZWxlc3MgZHJpdmVyLiBJbnRlcmVzdGluZy4gTm93IHRoZSBuZXh0IHF1ZXN0aW9uIHBvcHMgdXAgaW5zdGFudGx5OiBjYW4gSSB0ZXN0IHRoaXMgdGhpbmcgdmlydHVhbGx5PyBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgZ2VuZXJhbCBydWxlIGlzIHRoYXQgdGhlc2UgaGFyZHdhcmUtc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVycyDigJMgcGFydGljdWxhcmx5IHRob3NlIHRhcmdldGluZyBhIHNwZWNpZmljIGNoaXBzZXQgbGlrZSB0aGlzIEF0aGVyb3Mgb25lIOKAkyBhcmUgYSBwYWluIHRvIHRlc3Qgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLiBVbmxlc3MgdGhleeKAmXZlIGdvdCBhIG1hYzgwMjExX2h3c2ltIGNvbXBvbmVudCwgb3Igc29tZXRoaW5nIGVxdWl2YWxlbnQsIEknbSB1c3VhbGx5IG91dCBvZiBsdWNrIGluIGEgVk0uIFNvLCBjYW4gdGhpcyBiZSBzaW11bGF0ZWQ/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgcG9zc2liaWxpdGllcyBleGlzdC4gSXQgbG9va3MgbGlrZSBpdCBzdXBwb3J0cyBTRElPIGFuZCBVU0IgaW50ZXJmYWNlcywgd2hpY2ggb2ZmZXJzIHNvbWUgaG9wZS4gVVNCIGNvdWxkIGJlIHNpbXVsYXRlZCB1c2luZyBzb21ldGhpbmcgbGlrZSBVU0IgZ2FkZ2V0LCBhIGR1bW15X2hjZCwgb3IgZXZlbiBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFNvLCBsZXQgbWUgY2hlY2sgaWYgdGhlcmUgaXMgYW4gYWN0dWFsIFVTQiBkcml2ZXIgY29tcG9uZW50LiBUaGF0J3MgbXkgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTA0LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6NDkuNTQ4MjE5NjI3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjMxNzA4MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoNmtsX3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MjU9Y29uZmlnIEFUSDZLTF9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zMi1cXHQgIFVTQi4gSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozMzpcXHQgIGNhbGxlZCBhdGg2a2xfdXNiLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU9NDM9YXRoNmtsX3NkaW8teSArPSBzZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0FUSDZLTF9VU0IpICs9IGF0aDZrbF91c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDY6YXRoNmtsX3VzYi15ICs9IHVzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS00Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaHRjX3BpcGUuYz05NDE9c3RhdGljIGludCBhdGg2a2xfaHRjX3BpcGVfcnhfY29tcGxldGUoc3RydWN0IGF0aDZrbCAqYXIsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2h0Y19waXBlLmMtOTU5LVxcdCAqIFRodXMgdGhlIHBvc3NpYmlsaXR5IG9mIGFyLVxcdTAwM2VodGNfdGFyZ2V0IGJlaW5nIE5VTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2h0Y19waXBlLmM6OTYwOlxcdCAqIHZpYSBhdGg2a2xfcmVjdl9jb21wbGV0ZSAtXFx1MDAzZSBhdGg2a2xfdXNiX2lvX2NvbXBfd29yay5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2h0Y19waXBlLmMtOTYxLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz0zMD1lbnVtIEFUSDZLTF9VU0JfUElQRV9JRCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDQ6c3RydWN0IGF0aDZrbF91c2JfcGlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00NS1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHVyYl9saXN0X2hlYWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTUzLVxcdHU4IGxvZ2ljYWxfcGlwZV9udW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1NDpcXHRzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTUtXFx0dTE2IG1heF9wYWNrZXRfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjMtLyogdXNiIGRldmljZSBvYmplY3QgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY0OnN0cnVjdCBhdGg2a2xfdXNiIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY1LVxcdC8qIHByb3RlY3RzIHBpcGUtXFx1MDAzZXVyYl9saXN0X2hlYWQgYW5kICBwaXBlLVxcdTAwM2V1cmJfY250ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY5LVxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3MDpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlIHBpcGVzW0FUSDZLTF9VU0JfUElQRV9NQVhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzEtXFx0dTggKmRpYWdfY21kX2J1ZmZlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9Nzg9c3RydWN0IGF0aDZrbF91cmJfY29udGV4dCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03OS1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo4MDpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODEtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA1OnN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA2LVxcdF9fbGUzMiBjbWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMjpzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTEzLVxcdF9fbGUzMiBjbWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExNzpzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExOC1cXHRfX2xlMzIgdmFsdWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMS0vKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9MTMwPXN0YXRpYyBzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEzMTphdGg2a2xfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUoc3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEzMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjE1MzpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2ZyZWVfdXJiX3RvX3BpcGUoc3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE1NC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTY5OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfY2xlYW51cF9yZWN2X3VyYihzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE3MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjE3NDpcXHRhdGg2a2xfdXNiX2ZyZWVfdXJiX3RvX3BpcGUodXJiX2NvbnRleHQtXFx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTE3NS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxNzc6c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoNmtsX3VzYiAqYXRoNmtsX3VzYl9wcml2KHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTgyLS8qIHBpcGUgcmVzb3VyY2UgYWxsb2NhdGlvbi9jbGVhbnVwICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxODM6c3RhdGljIGludCBhdGg2a2xfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xODQtXFx0XFx0XFx0XFx0XFx0ICAgaW50IHVyYl9jbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTIwNS1cXHRcXHRwaXBlLVxcdTAwM2V1cmJfYWxsb2MrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjIwNjpcXHRcXHRhdGg2a2xfdXNiX2ZyZWVfdXJiX3RvX3BpcGUocGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjA3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MjE4OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjQxLVxcdHdoaWxlICh0cnVlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoyNDI6XFx0XFx0dXJiX2NvbnRleHQgPSBhdGg2a2xfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNDMtXFx0XFx0aWYgKHVyYl9jb250ZXh0ID09IE5VTEwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjI0OTpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI1MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI1My1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRINktMX1VTQl9QSVBFX01BWDsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MjU0OlxcdFxcdGF0aDZrbF91c2JfZnJlZV9waXBlX3Jlc291cmNlcyhcXHUwMDI2YXJfdXNiLVxcdTAwM2VwaXBlc1tpXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNTUtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MjU3OnN0YXRpYyB1OCBhdGg2a2xfdXNiX2dldF9sb2dpY2FsX3BpcGVfbnVtKHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yNTgtXFx0XFx0XFx0XFx0XFx0ICB1OCBlcF9hZGRyZXNzLCBpbnQgKnVyYl9jb3VudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MzAzOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMzA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMzA3LVxcdHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZW5kcG9pbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzozMDg6XFx0c3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTMwOS1cXHRpbnQgaSwgdXJiY291bnQsIHN0YXR1cyA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTM1MC1cXHRcXHRwaXBlX251bSA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzozNTE6XFx0XFx0ICAgIGF0aDZrbF91c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0oYXJfdXNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMzUyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBlbmRwb2ludC1cXHUwMDNlYkVuZHBvaW50QWRkcmVzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDA2OlxcdFxcdHN0YXR1cyA9IGF0aDZrbF91c2JfYWxsb2NfcGlwZV9yZXNvdXJjZXMocGlwZSwgdXJiY291bnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDA3LVxcdFxcdGlmIChzdGF0dXMgIT0gMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDE0LS8qIHBpcGUgb3BlcmF0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDE1OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpyZWN2X3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00MTYtXFx0XFx0XFx0XFx0XFx0ICAgaW50IGJ1ZmZlcl9sZW5ndGgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQyMi1cXHR3aGlsZSAodHJ1ZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDIzOlxcdFxcdHVyYl9jb250ZXh0ID0gYXRoNmtsX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHJlY3ZfcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00MjQtXFx0XFx0aWYgKHVyYl9jb250ZXh0ID09IE5VTEwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQzOS1cXHRcXHRcXHRcXHQgIGJ1ZmZlcl9sZW5ndGgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo0NDA6XFx0XFx0XFx0XFx0ICBhdGg2a2xfdXNiX3JlY3ZfY29tcGxldGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDYzLWVycl9jbGVhbnVwX3VyYjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ2NDpcXHRhdGg2a2xfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDY1LVxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NDY4OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZmx1c2hfYWxsKHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00Njkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo0ODQ6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl9zdGFydF9yZWN2X3BpcGVzKHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00ODktXFx0ICogICAgICBhcl91c2ItXFx1MDAzZXBpcGVzW0FUSDZLTF9VU0JfUElQRV9SWF9DVFJMXS51cmJfYWxsb2MvMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ5MDpcXHQgKiBhdGg2a2xfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoXFx1MDAyNmFyX3VzYi1cXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy00OTEtXFx0ICpcXHRcXHRwaXBlc1tBVEg2S0xfVVNCX1BJUEVfUlhfQ1RSTF0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTQ5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjQ5NzpcXHRhdGg2a2xfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoXFx1MDAyNmFyX3VzYi1cXHUwMDNlcGlwZXNbQVRINktMX1VTQl9QSVBFX1JYX0RBVEFdLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNDk4LVxcdFxcdFxcdFxcdCAgICAgICBBVEg2S0xfVVNCX1JYX0JVRkZFUl9TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTAxLS8qIGhpZiB1c2IgcngvdHggY29tcGxldGlvbiBmdW5jdGlvbnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjUwMjpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTAzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTUwNC1cXHRzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjUwNTpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXFx1MDAzZXBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01MDYtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU0OS1jbGVhbnVwX3JlY3ZfdXJiOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTUwOlxcdGF0aDZrbF91c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU1NC1cXHRcXHQvKiBvdXIgZnJlZSB1cmJzIGFyZSBwaWxpbmcgdXAsIHBvc3QgbW9yZSB0cmFuc2ZlcnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjU1NTpcXHRcXHRhdGg2a2xfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMocGlwZSwgQVRINktMX1VTQl9SWF9CVUZGRVJfU0laRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NTYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1NTk6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl91c2JfdHJhbnNtaXRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTYwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTU2MS1cXHRzdHJ1Y3QgYXRoNmtsX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjU2MjpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXFx1MDAzZXBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01NjMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTc3LVxcdHVyYl9jb250ZXh0LVxcdTAwM2Vza2IgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTc4OlxcdGF0aDZrbF91c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cXHUwMDNlcGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1ODU6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl9pb19jb21wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNTg2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjU4NzpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlID0gY29udGFpbmVyX29mKHdvcmssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo1ODg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01ODktXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGlvX2NvbXBsZXRlX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NTkwOlxcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy01OTEtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjA5OiNkZWZpbmUgQVRINktMX1VTQl9NQVhfRElBR19DTUQgKHNpemVvZihzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjYxMDojZGVmaW5lIEFUSDZLTF9VU0JfTUFYX0RJQUdfUkVTUCAoc2l6ZW9mKHN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjEyOnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZGVzdHJveShzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjEzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjYxNDpcXHRhdGg2a2xfdXNiX2ZsdXNoX2FsbChhcl91c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjE2OlxcdGF0aDZrbF91c2JfY2xlYW51cF9waXBlX3Jlc291cmNlcyhhcl91c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjE3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02MjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2Mjc6c3RhdGljIHN0cnVjdCBhdGg2a2xfdXNiICphdGg2a2xfdXNiX2NyZWF0ZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjI4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTYyOS1cXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjMwOlxcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo2MzE6XFx0c3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTYzMi1cXHRpbnQgc3RhdHVzID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjM1OlxcdC8qIGF0aDZrbF91c2JfZGVzdHJveSgpIG5lZWRzIGFyX3VzYiAhPSBOVUxMIFxcdTAwMjZcXHUwMDI2IGFyX3VzYi1cXHUwMDNld3EgIT0gTlVMTC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjYzNjpcXHRhcl91c2IgPSBremFsbG9jX29iaihzdHJ1Y3QgYXRoNmtsX3VzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02MzctXFx0aWYgKGFyX3VzYiA9PSBOVUxMKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NTItXFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwaXBlLVxcdTAwM2Vpb19jb21wbGV0ZV93b3JrLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjUzOlxcdFxcdFxcdCAgYXRoNmtsX3VzYl9pb19jb21wX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjU0LVxcdFxcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnBpcGUtXFx1MDAzZWlvX2NvbXBfcXVldWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NTktXFx0XFx0c3RhdHVzID0gLUVOT01FTTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY2MDpcXHRcXHRnb3RvIGZhaWxfYXRoNmtsX3VzYl9jcmVhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NjEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NjYtXFx0XFx0c3RhdHVzID0gLUVOT01FTTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY2NzpcXHRcXHRnb3RvIGZhaWxfYXRoNmtsX3VzYl9jcmVhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02NjgtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NjcwOlxcdHN0YXR1cyA9IGF0aDZrbF91c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoYXJfdXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY3MjpmYWlsX2F0aDZrbF91c2JfY3JlYXRlOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjczLVxcdGlmIChzdGF0dXMgIT0gMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6Njc0OlxcdFxcdGF0aDZrbF91c2JfZGVzdHJveShhcl91c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjc1LVxcdFxcdGFyX3VzYiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY4MDpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2RldmljZV9kZXRhY2hlZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjgxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY4MjpcXHRzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNjgzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02OTItXFx0YXRoNmtsX2NvcmVfY2xlYW51cChhcl91c2ItXFx1MDAzZWFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjY5MzpcXHRhdGg2a2xfdXNiX2Rlc3Ryb3koYXJfdXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTY5NC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jPTY5Nz1zdGF0aWMgdm9pZCBoaWZfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy02OTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6Njk5OlxcdHN0cnVjdCBhdGg2a2xfdXNiICpkZXZpY2UgPSBhdGg2a2xfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzAwLVxcdGludCBpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6NzAyOlxcdGF0aDZrbF91c2Jfc3RhcnRfcmVjdl9waXBlcyhkZXZpY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03MTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3MTI6c3RhdGljIGludCBhdGg2a2xfdXNiX3NlbmQoc3RydWN0IGF0aDZrbCAqYXIsIHU4IFBpcGVJRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcxMy1cXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqaGRyX3NrYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcxNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3MTU6XFx0c3RydWN0IGF0aDZrbF91c2IgKmRldmljZSA9IGF0aDZrbF91c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3MTY6XFx0c3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSA9IFxcdTAwMjZkZXZpY2UtXFx1MDAzZXBpcGVzW1BpcGVJRF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03MTctXFx0c3RydWN0IGF0aDZrbF91cmJfY29udGV4dCAqdXJiX2NvbnRleHQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjcyNjpcXHR1cmJfY29udGV4dCA9IGF0aDZrbF91c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShwaXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTcyNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzQ3LVxcdFxcdHN0YXR1cyA9IC1FTk9NRU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3NDg6XFx0XFx0YXRoNmtsX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVxcdTAwM2VwaXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzQ5LVxcdFxcdFxcdFxcdFxcdCAgICB1cmJfY29udGV4dCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc1Ny1cXHRcXHRcXHQgIGxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjc1ODpcXHRcXHRcXHQgIGF0aDZrbF91c2JfdXNiX3RyYW5zbWl0X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03NTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc3Ny1cXHRcXHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3Nzg6XFx0XFx0YXRoNmtsX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVxcdTAwM2VwaXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzc5LVxcdFxcdFxcdFxcdFxcdCAgICB1cmJfY29udGV4dCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jPTc4OD1zdGF0aWMgdm9pZCBoaWZfc3RvcChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc4OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3OTA6XFx0c3RydWN0IGF0aDZrbF91c2IgKmRldmljZSA9IGF0aDZrbF91c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3OTI6XFx0YXRoNmtsX3VzYl9mbHVzaF9hbGwoZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTc5My19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy03OTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo3OTU6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl9nZXRfZGVmYXVsdF9waXBlKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtNzk2LVxcdFxcdFxcdFxcdFxcdHU4ICp1bF9waXBlLCB1OCAqZGxfcGlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6ODAyOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9tYXBfc2VydmljZV9waXBlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MTYgc3ZjX2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODAzLVxcdFxcdFxcdFxcdCAgICAgICB1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg1NzpzdGF0aWMgdTE2IGF0aDZrbF91c2JfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyKHN0cnVjdCBhdGg2a2wgKmFyLCB1OCBwaXBlX2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODU4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg1OTpcXHRzdHJ1Y3QgYXRoNmtsX3VzYiAqZGV2aWNlID0gYXRoNmtsX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg2MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9ODY0PXN0YXRpYyB2b2lkIGhpZl9kZXRhY2hfaHRjKHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODY1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg2NjpcXHRzdHJ1Y3QgYXRoNmtsX3VzYiAqZGV2aWNlID0gYXRoNmtsX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg2ODpcXHRhdGg2a2xfdXNiX2ZsdXNoX2FsbChkZXZpY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtODY5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTg3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjg3MTpzdGF0aWMgaW50IGF0aDZrbF91c2Jfc3VibWl0X2N0cmxfb3V0KHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy04NzItXFx0XFx0XFx0XFx0ICAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTAzOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9zdWJtaXRfY3RybF9pbihzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTA0LVxcdFxcdFxcdFxcdCAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTM3OnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9jdHJsX21zZ19leGNoYW5nZShzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTM4LVxcdFxcdFxcdFxcdCAgICAgdTggcmVxX3ZhbCwgdTggKnJlcV9idWYsIHUzMiByZXFfbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NDMtXFx0Lyogc2VuZCBjb21tYW5kICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5NDQ6XFx0cmV0ID0gYXRoNmtsX3VzYl9zdWJtaXRfY3RybF9vdXQoYXJfdXNiLCByZXFfdmFsLCAwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTQ1LVxcdFxcdFxcdFxcdFxcdCByZXFfYnVmLCByZXFfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTU1LVxcdC8qIGdldCByZXNwb25zZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTU2OlxcdHJldCA9IGF0aDZrbF91c2Jfc3VibWl0X2N0cmxfaW4oYXJfdXNiLCByZXNwX3ZhbCwgMCwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk1Ny1cXHRcXHRcXHRcXHRcXHRyZXNwX2J1ZiwgKnJlc3BfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTYyOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9kaWFnX3JlYWQzMihzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHJlc3MsIHUzMiAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk2My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5NjQ6XFx0c3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYiA9IGFyLVxcdTAwM2VoaWZfcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjk2NTpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkICpyZXNwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTY2OlxcdHN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTY3LVxcdHUzMiByZXNwX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6OTcwOlxcdGNtZCA9IChzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQgKikgYXJfdXNiLVxcdTAwM2VkaWFnX2NtZF9idWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05NzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjk3NzpcXHRyZXQgPSBhdGg2a2xfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyX3VzYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTk3OC1cXHRcXHRcXHRcXHRBVEg2S0xfVVNCX0NPTlRST0xfUkVRX0RJQUdfQ01ELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTc5LVxcdFxcdFxcdFxcdCh1OCAqKSBjbWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5ODA6XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBhdGg2a2xfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTgxLVxcdFxcdFxcdFxcdEFUSDZLTF9VU0JfQ09OVFJPTF9SRVFfRElBR19SRVNQLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5ODk6XFx0cmVzcCA9IChzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05OTAtXFx0XFx0YXJfdXNiLVxcdTAwM2VkaWFnX3Jlc3BfYnVmZmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy05OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzo5OTc6c3RhdGljIGludCBhdGg2a2xfdXNiX2RpYWdfd3JpdGUzMihzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHJlc3MsIF9fbGUzMiBkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtOTk4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjk5OTpcXHRzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiID0gYXItXFx1MDAzZWhpZl9wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTAwMDpcXHRzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlICpjbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDAxLVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTAwMzpcXHRjbWQgPSAoc3RydWN0IGF0aDZrbF91c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqKSBhcl91c2ItXFx1MDAzZWRpYWdfY21kX2J1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDA1OlxcdG1lbXNldChjbWQsIDAsIHNpemVvZihzdHJ1Y3QgYXRoNmtsX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDA2LVxcdGNtZC1cXHUwMDNlY21kID0gY3B1X3RvX2xlMzIoQVRINktMX1VTQl9DVFJMX0RJQUdfQ0NfV1JJVEUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTAxMDpcXHRyZXQgPSBhdGg2a2xfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyX3VzYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwMTEtXFx0XFx0XFx0XFx0XFx0ICAgQVRINktMX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwMjM6c3RhdGljIGludCBhdGg2a2xfdXNiX2JtaV9yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1OCAqYnVmLCB1MzIgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAyNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDI1OlxcdHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IgPSBhci1cXHUwMDNlaGlmX3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDI2LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwMjgtXFx0LyogZ2V0IHJlc3BvbnNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDI5OlxcdHJldCA9IGF0aDZrbF91c2Jfc3VibWl0X2N0cmxfaW4oYXJfdXNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTAzMC1cXHRcXHRcXHRcXHRcXHRBVEg2S0xfVVNCX0NPTlRST0xfUkVRX1JFQ1ZfQk1JX1JFU1AsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDQxOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9ibWlfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHU4ICpidWYsIHUzMiBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDQyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwNDM6XFx0c3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYiA9IGFyLVxcdTAwM2VoaWZfcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNDQtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA0Ni1cXHQvKiBzZW5kIGNvbW1hbmQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEwNDc6XFx0cmV0ID0gYXRoNmtsX3VzYl9zdWJtaXRfY3RybF9vdXQoYXJfdXNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA0OC1cXHRcXHRcXHRcXHRcXHQgQVRINktMX1VTQl9DT05UUk9MX1JFUV9TRU5EX0JNSV9DTUQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDU5OnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9wb3dlcl9vbihzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA2NTpzdGF0aWMgaW50IGF0aDZrbF91c2JfcG93ZXJfb2ZmKHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDcxOnN0YXRpYyB2b2lkIGF0aDZrbF91c2Jfc3RvcChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA3NjpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2NsZWFudXBfc2NhdHRlcihzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwNzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTA4NDpzdGF0aWMgaW50IGF0aDZrbF91c2Jfc3VzcGVuZChzdHJ1Y3QgYXRoNmtsICphciwgc3RydWN0IGNmZzgwMjExX3dvd2xhbiAqd293KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA4NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEwOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMDkyOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9yZXN1bWUoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMDkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTA5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDA6c3RhdGljIGNvbnN0IHN0cnVjdCBhdGg2a2xfaGlmX29wcyBhdGg2a2xfdXNiX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDE6XFx0LmRpYWdfcmVhZDMyID0gYXRoNmtsX3VzYl9kaWFnX3JlYWQzMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDI6XFx0LmRpYWdfd3JpdGUzMiA9IGF0aDZrbF91c2JfZGlhZ193cml0ZTMyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTEwMzpcXHQuYm1pX3JlYWQgPSBhdGg2a2xfdXNiX2JtaV9yZWFkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTEwNDpcXHQuYm1pX3dyaXRlID0gYXRoNmtsX3VzYl9ibWlfd3JpdGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA1OlxcdC5wb3dlcl9vbiA9IGF0aDZrbF91c2JfcG93ZXJfb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA2OlxcdC5wb3dlcl9vZmYgPSBhdGg2a2xfdXNiX3Bvd2VyX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMDc6XFx0LnN0b3AgPSBhdGg2a2xfdXNiX3N0b3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA4OlxcdC5waXBlX3NlbmQgPSBhdGg2a2xfdXNiX3NlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTA5OlxcdC5waXBlX2dldF9kZWZhdWx0ID0gYXRoNmtsX3VzYl9nZXRfZGVmYXVsdF9waXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTExMDpcXHQucGlwZV9tYXBfc2VydmljZSA9IGF0aDZrbF91c2JfbWFwX3NlcnZpY2VfcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMTE6XFx0LnBpcGVfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyID0gYXRoNmtsX3VzYl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTEyOlxcdC5jbGVhbnVwX3NjYXR0ZXIgPSBhdGg2a2xfdXNiX2NsZWFudXBfc2NhdHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMTM6XFx0LnN1c3BlbmQgPSBhdGg2a2xfdXNiX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTE0OlxcdC5yZXN1bWUgPSBhdGg2a2xfdXNiX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExMTUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTExNy0vKiBhdGg2a2wgdXNiIGRyaXZlciByZWdpc3RlcmVkIGZ1bmN0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTExODpzdGF0aWMgaW50IGF0aDZrbF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExMTktXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTEyMi1cXHRzdHJ1Y3QgYXRoNmtsICphcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExMjM6XFx0c3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYiA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTI0LVxcdGludCB2ZW5kb3JfaWQsIHByb2R1Y3RfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTQzOlxcdGFyX3VzYiA9IGF0aDZrbF91c2JfY3JlYXRlKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTQ0LVxcdGlmIChhcl91c2IgPT0gTlVMTClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE1NS1cXHRhci1cXHUwMDNlaGlmX3R5cGUgPSBBVEg2S0xfSElGX1RZUEVfVVNCO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE1NjpcXHRhci1cXHUwMDNlaGlmX29wcyA9IFxcdTAwMjZhdGg2a2xfdXNiX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNTctXFx0YXItXFx1MDAzZW1ib3hfaW5mby5ibG9ja19zaXplID0gMTY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNzItZXJyX3VzYl9kZXN0cm95OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE3MzpcXHRhdGg2a2xfdXNiX2Rlc3Ryb3koYXJfdXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTc4OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE3OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTgwOlxcdGF0aDZrbF91c2JfZGV2aWNlX2RldGFjaGVkKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTgxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExODU6c3RhdGljIGludCBhdGg2a2xfdXNiX3BtX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExODYtXFx0XFx0XFx0ICAgICAgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTg3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExODg6XFx0c3RydWN0IGF0aDZrbF91c2IgKmRldmljZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExODktXFx0ZGV2aWNlID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExOTE6XFx0YXRoNmtsX3VzYl9mbHVzaF9hbGwoZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExOTItXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMTk1OnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9wbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTExOTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTE5NzpcXHRzdHJ1Y3QgYXRoNmtsX3VzYiAqZGV2aWNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE5OC1cXHRkZXZpY2UgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIwMDpcXHRhdGg2a2xfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoXFx1MDAyNmRldmljZS1cXHUwMDNlcGlwZXNbQVRINktMX1VTQl9QSVBFX1JYX0RBVEFdLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTIwMS1cXHRcXHRcXHRcXHQgICAgICAgQVRINktMX1VTQl9SWF9CVUZGRVJfU0laRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjAyOlxcdGF0aDZrbF91c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhcXHUwMDI2ZGV2aWNlLVxcdTAwM2VwaXBlc1tBVEg2S0xfVVNCX1BJUEVfUlhfREFUQTJdLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTIwMy1cXHRcXHRcXHRcXHQgICAgICAgQVRINktMX1VTQl9SWF9CVUZGRVJfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjEwOiNkZWZpbmUgYXRoNmtsX3VzYl9wbV9zdXNwZW5kIE5VTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMTE6I2RlZmluZSBhdGg2a2xfdXNiX3BtX3Jlc3VtZSBOVUxMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjE1LS8qIHRhYmxlIG9mIGRldmljZXMgdGhhdCB3b3JrIHdpdGggdGhpcyBkcml2ZXIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMTY6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGF0aDZrbF91c2JfaWRzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjE3LVxcdHtVU0JfREVWSUNFKDB4MGNmMywgMHg5Mzc1KX0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjIzOk1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBhdGg2a2xfdXNiX2lkcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIyNTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYXRoNmtsX3VzYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjI2OlxcdC5uYW1lID0gXFxcImF0aDZrbF91c2JcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIyNzpcXHQucHJvYmUgPSBhdGg2a2xfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIyODpcXHQuc3VzcGVuZCA9IGF0aDZrbF91c2JfcG1fc3VzcGVuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMjk6XFx0LnJlc3VtZSA9IGF0aDZrbF91c2JfcG1fcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTIzMDpcXHQuZGlzY29ubmVjdCA9IGF0aDZrbF91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyMzE6XFx0LmlkX3RhYmxlID0gYXRoNmtsX3VzYl9pZHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xMjMyLVxcdC5zdXBwb3J0c19hdXRvc3VzcGVuZCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxMjM2Om1vZHVsZV91c2JfZHJpdmVyKGF0aDZrbF91c2JfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyMzctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjUxLjkxMTM5NDgzMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNTI3MzEzMDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQgd2VyZSBteSBvd24gdGhvdWdodCBwcm9jZXNzOlxuXG4qKlVTQiBEcml2ZXIgYW5kIEluaXRpYWxpemF0aW9uIEhvb2sqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBgYXRoNmtsYCwgYW5kIGl0J3MgZ290IGEgVVNCIGRyaXZlciwgYGF0aDZrbF91c2JgLCB3aGljaCBpbW1lZGlhdGVseSBzcGFya3Mgc29tZSBpZGVhcy4gSSBrbm93IFN5emthbGxlciBoYXMgYSBkZWNlbnQgVVNCIGZ1enplciwgYGR1bW15X2hjZGAsIHdoaWNoIGNvdWxkIGJlIGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggdGFyZ2V0cyBgYXRoNmtsX2luaXRfdXBsb2FkYCwgd2hpY2gsIGJhc2VkIG9uIHRoZSBuYW1lIGFsb25lLCBpcyBsaWtlbHkgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UsIHByb2JhYmx5IGR1cmluZyBkZXZpY2UgYnJpbmd1cC4gTGV0J3Mgc2VlIGV4YWN0bHkgKndoZXJlKiB0aGF0IGZ1bmN0aW9uLCBgYXRoNmtsX2luaXRfdXBsb2FkYCwgaXMgYmVpbmcgY2FsbGVkLiBUaW1lIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY0MzcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1NDo1NS40Mzg3MjEzNzlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1MTE0NDA5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg2a2xfaW5pdF91cGxvYWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM9MTQwOD1zdGF0aWMgaW50IGF0aDZrbF91cGxvYWRfdGVzdHNjcmlwdChzdHJ1Y3QgYXRoNmtsICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE0NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTQ0MjpzdGF0aWMgaW50IGF0aDZrbF9pbml0X3VwbG9hZChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xNDQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jPTE3MDY9c3RhdGljIGludCBfX2F0aDZrbF9pbml0X2h3X3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTcyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYzoxNzIyOlxcdHJldCA9IGF0aDZrbF9pbml0X3VwbG9hZChhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTcyMy1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1NDo1Ny41ODk4NzA5NzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTg1MzYzMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBIYXJkd2FyZSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIGBhdGg2a2xgIGRyaXZlcidzIGluaXRpYWxpemF0aW9uLiBJIHNlZSB0aGF0IHRoZSBgX19hdGg2a2xfaW5pdF9od19zdGFydGAgZnVuY3Rpb24gaXMgdGhlIHBvaW50IG9mIGludGVyZXN0LiBJdCB0cmlnZ2VycyBgYXRoNmtsX2luaXRfdXBsb2FkYCwgd2hpY2ggSSdtIGFzc3VtaW5nIGhhbmRsZXMgdGhlIGluaXRpYWwgZmlybXdhcmUgb3IgY29uZmlndXJhdGlvbiBkYXRhIHVwbG9hZCB0byB0aGUgaGFyZHdhcmUuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0LiBJIG5lZWQgdG8gdHJhY2UgYmFjayBhbmQgZmlndXJlIG91dCAqd2hlcmUqIGBfX2F0aDZrbF9pbml0X2h3X3N0YXJ0YCBpdHNlbGYgaXMgYmVpbmcgY2FsbGVkLiBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9uKHMpIHdpbGwgZ2l2ZSBtZSB2YWx1YWJsZSBjbHVlcyBhYm91dCB0aGUgb3ZlcmFsbCBoYXJkd2FyZSBicmluZy11cCBwcm9jZXNzIGFuZCB3aGVyZSB0aGlzIHBpZWNlIGZpdHMgaW50byB0aGUgZ3JlYXRlciBpbml0aWFsaXphdGlvbiBwaWN0dXJlLiBJJ20gaG9waW5nIHRvIGdldCBzb21lIGNvbnRleHQgZm9yIHRoaXMgdXBsb2FkIHByb2Nlc3MuIExldCdzIHNlZS4uLiBiYWNrIHRvIHRoZSBzb3VyY2UgY29kZSBJIGdvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjk1OCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjAwLjc3NTIzNzAxNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM4OTU0MTAzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2F0aDZrbF9pbml0X2h3X3N0YXJ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jPTE2OTg9c3RhdGljIGludCBhdGg2a2xfaW5pdF9od19yZXNldChzdHJ1Y3QgYXRoNmtsICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE3MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTcwNjpzdGF0aWMgaW50IF9fYXRoNmtsX2luaXRfaHdfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTcwNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYz0xODI4PWludCBhdGg2a2xfaW5pdF9od19zdGFydChzdHJ1Y3QgYXRoNmtsICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE4MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTgzMjpcXHRlcnIgPSBfX2F0aDZrbF9pbml0X2h3X3N0YXJ0KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODMzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYz0xODY5PXZvaWQgYXRoNmtsX2luaXRfaHdfcmVzdGFydChzdHJ1Y3QgYXRoNmtsICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE4NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTg4MDpcXHRpZiAoX19hdGg2a2xfaW5pdF9od19zdGFydChhcikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODgxLVxcdFxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19SRUNPVkVSWSwgXFxcIkZhaWxlZCB0byByZXN0YXJ0IGR1cmluZyBmdyBlcnJvciByZWNvdmVyeVxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjAzLjE2NDc4NzYxOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTQ2NzkxODMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipEaXZpbmcgaW50byB0aGUgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKlxuXG5Pa2F5LCBzbyBJIHNlZSBgYXRoNmtsX2luaXRfaHdfc3RhcnRgIGlzIHRoZSBmdW5jdGlvbiBvZiBpbnRlcmVzdC4gVGhlIGZpcnN0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYGF0aDZrbF9pbml0X2h3X3N0YXJ0YCBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSwgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgZ3JhcGggYW5kIHNlZSB3aGljaCBvdGhlciBmdW5jdGlvbnMgZGVwZW5kIG9uIGl0LiBUaGF0IHdpbGwgZ2l2ZSBtZSBjb250ZXh0LCBhbmQgaGVscCBkZXRlcm1pbmUgdGhlIGxvZ2ljIG9mIHRoZSBzeXN0ZW0ncyBpbml0aWFsaXphdGlvbi5cbkxldCdzIGZpcnN0IGxvb2sgYXQgdGhlIG90aGVyIGZ1bmN0aW9uLCBgX19hdGg2a2xfaW5pdF9od19zdGFydGAsIHRoaXMgbWlnaHQgcHJvdmlkZSBoaW50cyBhcyB0byB0aGUgb3BlcmF0aW9uIG9mIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NjQzLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTU6MTAuNzExNTgxNDg5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzEwMzQ5NDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDZrbF9pbml0X2h3X3N0YXJ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYz0yNDk5PWludCBhdGg2a2xfY2ZnODAyMTFfcmVzdW1lKHN0cnVjdCBhdGg2a2wgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI1MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI1Mjg6XFx0XFx0cmV0ID0gYXRoNmtsX2luaXRfaHdfc3RhcnQoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTI5LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jPTY2PWludCBhdGg2a2xfY29yZV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyLCBlbnVtIGF0aDZrbF9odGNfdHlwZSBodGNfdHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTE5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuYzoxOTE6XFx0cmV0ID0gYXRoNmtsX2luaXRfaHdfc3RhcnQoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTE5Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaD05Njg9dm9pZCBhdGg2a2xfY2ZnODAyMTFfdmlmX3N0b3Aoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgYm9vbCB3bWlfcmVhZHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oOjk2OTppbnQgYXRoNmtsX2luaXRfaHdfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTk3MC1pbnQgYXRoNmtsX2luaXRfaHdfc3RvcChzdHJ1Y3QgYXRoNmtsICphcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYz0xNjk4PXN0YXRpYyBpbnQgYXRoNmtsX2luaXRfaHdfcmVzZXQoc3RydWN0IGF0aDZrbCAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xNzA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jOjE3MDY6c3RhdGljIGludCBfX2F0aDZrbF9pbml0X2h3X3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE3MDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmMtMTgyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYzoxODI4OmludCBhdGg2a2xfaW5pdF9od19zdGFydChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE4MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTgzMjpcXHRlcnIgPSBfX2F0aDZrbF9pbml0X2h3X3N0YXJ0KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODMzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYz0xODY5PXZvaWQgYXRoNmtsX2luaXRfaHdfcmVzdGFydChzdHJ1Y3QgYXRoNmtsICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvaW5pdC5jLTE4NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmM6MTg4MDpcXHRpZiAoX19hdGg2a2xfaW5pdF9od19zdGFydChhcikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuYy0xODgxLVxcdFxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19SRUNPVkVSWSwgXFxcIkZhaWxlZCB0byByZXN0YXJ0IGR1cmluZyBmdyBlcnJvciByZWNvdmVyeVxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjEzLjAyMTkzNDgwM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc5NTU1NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIEZsb3cgb2YgdGhlIGF0aDZrbCBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBzbyBgYXRoNmtsX2NvcmVfaW5pdGAgaXMgdGhlIGVudHJ5IHBvaW50LCBuYXR1cmFsbHkuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGhvdyB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZ2V0cyB0cmlnZ2VyZWQuIEkgc2VlIHRoYXQgYGF0aDZrbF9jb3JlX2luaXRgIHN1YnNlcXVlbnRseSBjYWxscyBgYXRoNmtsX2luaXRfaHdfc3RhcnRgLiBUaGF0J3MgYSBjcml0aWNhbCBwb2ludCB0byBkaXNzZWN0LCBzbyBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY2FsbCBncmFwaCBhbmQgcGlucG9pbnQgKndoZXJlKiBleGFjdGx5IGBhdGg2a2xfY29yZV9pbml0YCBpcyBpbnZva2VkLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMgZ29pbmcgdG8gcHJvdmlkZSB2YWx1YWJsZSBpbnNpZ2h0IGludG8gdGhlIG92ZXJhbGwgZHJpdmVyIGxpZmVjeWNsZSBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbiwgcGFydGljdWxhcmx5IHN1cnJvdW5kaW5nIHRoZSBoYXJkd2FyZSBpbml0LiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gdGhhdCBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSByb290IGNhdXNlIG9mIGFueSBwb3RlbnRpYWwgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc2MCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjE2LjIwMTQ5MzU3M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0NjczNjY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg2a2xfY29yZV9pbml0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jPTY0PUVYUE9SVF9TWU1CT0woYXRoNmtsX2NvcmVfcnhfY29tcGxldGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jOjY2OmludCBhdGg2a2xfY29yZV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyLCBlbnVtIGF0aDZrbF9odGNfdHlwZSBodGNfdHlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuYy02Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuYy0yNjQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jOjI2NTpFWFBPUlRfU1lNQk9MKGF0aDZrbF9jb3JlX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5jLTI2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTk3OT1zdHJ1Y3QgYXRoNmtsICphdGg2a2xfY29yZV9jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDo5ODA6aW50IGF0aDZrbF9jb3JlX2luaXQoc3RydWN0IGF0aDZrbCAqYXIsIGVudW0gYXRoNmtsX2h0Y190eXBlIGh0Y190eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC05ODEtdm9pZCBhdGg2a2xfY29yZV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvc2Rpby5jPTEzMDY9c3RhdGljIGludCBhdGg2a2xfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9zZGlvLmMtMTM3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3NkaW8uYzoxMzcyOlxcdHJldCA9IGF0aDZrbF9jb3JlX2luaXQoYXIsIEFUSDZLTF9IVENfVFlQRV9NQk9YKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3NkaW8uYy0xMzczLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9MTExOD1zdGF0aWMgaW50IGF0aDZrbF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjExNjI6XFx0cmV0ID0gYXRoNmtsX2NvcmVfaW5pdChhciwgQVRINktMX0hUQ19UWVBFX1BJUEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTE2My1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjE4Ljc0ODIzNTgxM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODk4ODkwMzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYXRoNmtsX3VzYiBQcm9iZSBhbmQgSW5pdCBTZXF1ZW5jZSoqXG5cbk9rYXksIHNvIHRoZSBgYXRoNmtsX3VzYl9wcm9iZWAgZnVuY3Rpb24gaXMgdGhlIGVudHJ5IHBvaW50IHdoZW4gYSBjb21wYXRpYmxlIFVTQiBkZXZpY2UgY29tZXMgb25saW5lLiBJJ20gc2VlaW5nIHRoYXQgaXQgY2FsbHMgYGF0aDZrbF9jb3JlX2luaXRgLCB3aGljaCBpcyB3aGF0IEknZCBleHBlY3QgZm9yIGluaXRpYWxpemluZyB0aGUgY29yZSBkcml2ZXIuIGBhdGg2a2xfY29yZV9pbml0YCwgaW4gdHVybiwgZ29lcyBkb3duIHRoZSBjaGFpbjogYGF0aDZrbF9pbml0X2h3X3N0YXJ0YCwgdGhlbiBgX19hdGg2a2xfaW5pdF9od19zdGFydGAsIGFuZCBmaW5hbGx5IGhpdHMgYGF0aDZrbF9pbml0X3VwbG9hZGAuIFRoaXMgbWFrZXMgc2Vuc2UsIGVzdGFibGlzaGluZyBhIGxvZ2ljYWwgZmxvdyBmcm9tIGRldmljZSBkZXRlY3Rpb24gdG8gaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gYW5kIHVsdGltYXRlbHksIHNvbWUgZm9ybSBvZiBmaXJtd2FyZSB1cGxvYWQgb3IgaW5pdGlhbCBjb25maWd1cmF0aW9uLlxuXG5Ob3csIHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgYHJldHVybiBzdGF0dXM7YCB0byBgcmV0dXJuIDA7YCBhdCB0aGUgdGFpbCBlbmQgb2YgdGhlIGBhdGg2a2xfaW5pdF91cGxvYWRgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIFwid2FpdCBhIG1pbnV0ZS4uLiB3aHk/XCIgSWYgYHN0YXR1c2AgY29udGFpbmVkIGFuIGVycm9yIGNvZGUsIHdvdWxkbid0IGl0IGhhdmUgYmVlbiByZXR1cm5lZCAqZWFybGllciogaW4gdGhlIGZ1bmN0aW9uPyBJdCBsb29rcyBsaWtlIHdlJ3JlIG5vdCBwcm9wZXJseSBoYW5kbGluZyBhbiBlcnJvciBjb25kaXRpb24gYXQgdGhlIGZpbmFsIHN0YWdlLiBUaGUgaW1wbGljYXRpb24gaXMgdGhhdCBhbnkgZmFpbHVyZSBkdXJpbmcgdGhlIHVwbG9hZCBwaGFzZSwgb3IgYW55IG90aGVyIHByZWNlZGluZyBvcGVyYXRpb24sIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IG1hc2tlZC4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgYXRoNmtsX2luaXRfdXBsb2FkYCBhbmQgc2VlIHdoYXQncyBiZWluZyBtaXNzZWQgaGVyZSwgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhcmUuIFRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gbGVhZCB0byBoYXJkLXRvLWRpYWdub3NlIGlzc3Vlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCAnc3RhdHVzJyByZXByZXNlbnRzIGFuZCB3aHkgdGhpcyBjaGFuZ2Ugd2FzIG1hZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NjE5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjIzLjY0NzEyOTE1NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTU2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTU2MDpcXHRcXG4xNTYxOlxcdFxcdC8qIFJlc3RvcmUgc3lzdGVtIHNsZWVwICovXFxuMTU2MjpcXHRcXHRhZGRyZXNzID0gUlRDX0JBU0VfQUREUkVTUyArIFNZU1RFTV9TTEVFUF9BRERSRVNTO1xcbjE1NjM6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHNsZWVwKTtcXG4xNTY0OlxcdFxcdGlmIChzdGF0dXMpXFxuMTU2NTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1NjY6XFx0XFxuMTU2NzpcXHRcXHRhZGRyZXNzID0gTUJPWF9CQVNFX0FERFJFU1MgKyBMT0NBTF9TQ1JBVENIX0FERFJFU1M7XFxuMTU2ODpcXHRcXHRwYXJhbSA9IG9wdGlvbnMgfCAweDIwO1xcbjE1Njk6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcXG4xNTcwOlxcdFxcdGlmIChzdGF0dXMpXFxuMTU3MTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1NzI6XFx0XFxuMTU3MzpcXHRcXHRyZXR1cm4gMDtcXG4xNTc0OlxcdH1cXG4xNTc1OlxcdFxcbjE1NzY6XFx0aW50IGF0aDZrbF9pbml0X2h3X3BhcmFtcyhzdHJ1Y3QgYXRoNmtsICphcilcXG4xNTc3OlxcdHtcXG4xNTc4OlxcdFxcdGNvbnN0IHN0cnVjdCBhdGg2a2xfaHcgKmh3O1xcbjE1Nzk6XFx0XFx0aW50IGk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjIzLjY0NzI3OTQyNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzUyODc0NTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggQ2hhbmdlKipcblxuT2theSwgaGVyZSB3ZSBnbywgbG9va2luZyBhdCB0aGlzIGNvZGUgZGlmZi4gSG1tLCB0aGlzIGxpbmUuLi5cblxuYGBgY1xuLVx0cmV0dXJuIHN0YXR1cztcbitcdHJldHVybiAwO1xuYGBgXG5cbk15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gdGhpbmssIFwiV2FpdCwgaXMgdGhpcyBldmVuICpkb2luZyogYW55dGhpbmc/XCIgSWYgdGhlIGNvZGUgcmVhY2hlcyB0aGlzIHBvaW50LCBzaG91bGRuJ3QgYHN0YXR1c2AgYWxyZWFkeSBiZSB6ZXJvPyBUaGluaywgaWYgYHN0YXR1c2Agd2FzIGFueXRoaW5nICpvdGhlciogdGhhbiB6ZXJvLCB3ZSdkIGhhdmUgcmV0dXJuZWQgbXVjaCBlYXJsaWVyLCBiYWNrIGF0IGxpbmUgMTU3MS4gTGluZSAxNTczLCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCB3b3VsZCBvbmx5IGJlIHJlYWNoZWQgaWYgdGhlIGNvbmRpdGlvbiB3YXMgbWV0LiBTaW5jZSB3ZSdyZSBoZXJlLCBgc3RhdHVzYCAqaGFzKiB0byBiZSB6ZXJvLiBTbywgdGhpcyBzdWJzdGl0dXRpb24gbG9va3MgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQuIGByZXR1cm4gc3RhdHVzO2AgKnNob3VsZCogYmVoYXZlIHRoZSBzYW1lIGFzIGByZXR1cm4gMDtgIGJlY2F1c2Ugd2UncmUgZ3VhcmFudGVlaW5nIGBzdGF0dXNgIHRvIGJlIDAgaGVyZS5cblxuU3RpbGwsIEknbSBnb2luZyB0byBkbyBhIHF1aWNrIG1lbnRhbCBzZWFyY2guLi4gSSdsbCBjaGVjayBmb3IgYW55IGdvdG9zIG9yIHVuZXhwZWN0ZWQgY29udHJvbCBmbG93IHRoYXQgbWlnaHQganVtcCBhcm91bmQgdGhlIGBpZiAoc3RhdHVzKWAgY2hlY2suIFRoZXJlJ3MgYWx3YXlzIHNvbWUgZWRnZSBjYXNlIEkgbWlnaHQgbWlzcy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDI2LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTU6MjguNDAwMTU2OTUyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMzA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2luaXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDQyLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ0MjpcXHRzdGF0aWMgaW50IGF0aDZrbF9pbml0X3VwbG9hZChzdHJ1Y3QgYXRoNmtsICphcilcXG4xNDQzOlxcdHtcXG4xNDQ0OlxcdFxcdHUzMiBwYXJhbSwgb3B0aW9ucywgc2xlZXAsIGFkZHJlc3M7XFxuMTQ0NTpcXHRcXHRpbnQgc3RhdHVzID0gMDtcXG4xNDQ2OlxcdFxcbjE0NDc6XFx0XFx0aWYgKGFyLVxcdTAwM2V0YXJnZXRfdHlwZSAhPSBUQVJHRVRfVFlQRV9BUjYwMDMgXFx1MDAyNlxcdTAwMjZcXG4xNDQ4OlxcdFxcdCAgICBhci1cXHUwMDNldGFyZ2V0X3R5cGUgIT0gVEFSR0VUX1RZUEVfQVI2MDA0KVxcbjE0NDk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMTQ1MDpcXHRcXG4xNDUxOlxcdFxcdC8qIHRlbXBvcmFyaWx5IGRpc2FibGUgc3lzdGVtIHNsZWVwICovXFxuMTQ1MjpcXHRcXHRhZGRyZXNzID0gTUJPWF9CQVNFX0FERFJFU1MgKyBMT0NBTF9TQ1JBVENIX0FERFJFU1M7XFxuMTQ1MzpcXHRcXHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ19yZWFkKGFyLCBhZGRyZXNzLCBcXHUwMDI2cGFyYW0pO1xcbjE0NTQ6XFx0XFx0aWYgKHN0YXR1cylcXG4xNDU1OlxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTQ1NjpcXHRcXG4xNDU3OlxcdFxcdG9wdGlvbnMgPSBwYXJhbTtcXG4xNDU4OlxcdFxcbjE0NTk6XFx0XFx0cGFyYW0gfD0gQVRINktMX09QVElPTl9TTEVFUF9ESVNBQkxFO1xcbjE0NjA6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcXG4xNDYxOlxcdFxcdGlmIChzdGF0dXMpXFxuMTQ2MjpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE0NjM6XFx0XFxuMTQ2NDpcXHRcXHRhZGRyZXNzID0gUlRDX0JBU0VfQUREUkVTUyArIFNZU1RFTV9TTEVFUF9BRERSRVNTO1xcbjE0NjU6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfcmVhZChhciwgYWRkcmVzcywgXFx1MDAyNnBhcmFtKTtcXG4xNDY2OlxcdFxcdGlmIChzdGF0dXMpXFxuMTQ2NzpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE0Njg6XFx0XFxuMTQ2OTpcXHRcXHRzbGVlcCA9IHBhcmFtO1xcbjE0NzA6XFx0XFxuMTQ3MTpcXHRcXHRwYXJhbSB8PSBTTShTWVNURU1fU0xFRVBfRElTQUJMRSwgMSk7XFxuMTQ3MjpcXHRcXHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgcGFyYW0pO1xcbjE0NzM6XFx0XFx0aWYgKHN0YXR1cylcXG4xNDc0OlxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTQ3NTpcXHRcXG4xNDc2OlxcdFxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19UUkMsIFxcXCJvbGQgb3B0aW9uczogJWQsIG9sZCBzbGVlcDogJWRcXFxcblxcXCIsXFxuMTQ3NzpcXHRcXHRcXHQgICBvcHRpb25zLCBzbGVlcCk7XFxuMTQ3ODpcXHRcXG4xNDc5OlxcdFxcdC8qIHByb2dyYW0gYW5hbG9nIFBMTCByZWdpc3RlciAqL1xcbjE0ODA6XFx0XFx0Lyogbm8gbmVlZCB0byBjb250cm9sIDQwLzQ0TUh6IGNsb2NrIG9uIEFSNjAwNCAqL1xcbjE0ODE6XFx0XFx0aWYgKGFyLVxcdTAwM2V0YXJnZXRfdHlwZSAhPSBUQVJHRVRfVFlQRV9BUjYwMDQpIHtcXG4xNDgyOlxcdFxcdFxcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBBVEg2S0xfQU5BTE9HX1BMTF9SRUdJU1RFUixcXG4xNDgzOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIDB4RjkxMDQwMDEpO1xcbjE0ODQ6XFx0XFxuMTQ4NTpcXHRcXHRcXHRpZiAoc3RhdHVzKVxcbjE0ODY6XFx0XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNDg3OlxcdFxcbjE0ODg6XFx0XFx0XFx0LyogUnVuIGF0IDgwLzg4TUh6IGJ5IGRlZmF1bHQgKi9cXG4xNDg5OlxcdFxcdFxcdHBhcmFtID0gU00oQ1BVX0NMT0NLX1NUQU5EQVJELCAxKTtcXG4xNDkwOlxcdFxcbjE0OTE6XFx0XFx0XFx0YWRkcmVzcyA9IFJUQ19CQVNFX0FERFJFU1MgKyBDUFVfQ0xPQ0tfQUREUkVTUztcXG4xNDkyOlxcdFxcdFxcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XFxuMTQ5MzpcXHRcXHRcXHRpZiAoc3RhdHVzKVxcbjE0OTQ6XFx0XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNDk1OlxcdFxcdH1cXG4xNDk2OlxcdFxcbjE0OTc6XFx0XFx0cGFyYW0gPSAwO1xcbjE0OTg6XFx0XFx0YWRkcmVzcyA9IFJUQ19CQVNFX0FERFJFU1MgKyBMUE9fQ0FMX0FERFJFU1M7XFxuMTQ5OTpcXHRcXHRwYXJhbSA9IFNNKExQT19DQUxfRU5BQkxFLCAxKTtcXG4xNTAwOlxcdFxcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XFxuMTUwMTpcXHRcXHRpZiAoc3RhdHVzKVxcbjE1MDI6XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTAzOlxcdFxcbjE1MDQ6XFx0XFx0LyogV0FSIHRvIGF2b2lkIFNESU8gQ1JDIGVyciAqL1xcbjE1MDU6XFx0XFx0aWYgKGFyLVxcdTAwM2Vody5mbGFncyBcXHUwMDI2IEFUSDZLTF9IV19TRElPX0NSQ19FUlJPUl9XQVIpIHtcXG4xNTA2OlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcInRlbXBvcmFyeSB3YXIgdG8gYXZvaWQgc2RpbyBjcmMgZXJyb3JcXFxcblxcXCIpO1xcbjE1MDc6XFx0XFxuMTUwODpcXHRcXHRcXHRwYXJhbSA9IDB4Mjg7XFxuMTUwOTpcXHRcXHRcXHRhZGRyZXNzID0gR1BJT19CQVNFX0FERFJFU1MgKyBHUElPX1BJTjlfQUREUkVTUztcXG4xNTEwOlxcdFxcdFxcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XFxuMTUxMTpcXHRcXHRcXHRpZiAoc3RhdHVzKVxcbjE1MTI6XFx0XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTEzOlxcdFxcbjE1MTQ6XFx0XFx0XFx0cGFyYW0gPSAweDIwO1xcbjE1MTU6XFx0XFxuMTUxNjpcXHRcXHRcXHRhZGRyZXNzID0gR1BJT19CQVNFX0FERFJFU1MgKyBHUElPX1BJTjEwX0FERFJFU1M7XFxuMTUxNzpcXHRcXHRcXHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgcGFyYW0pO1xcbjE1MTg6XFx0XFx0XFx0aWYgKHN0YXR1cylcXG4xNTE5OlxcdFxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTUyMDpcXHRcXG4xNTIxOlxcdFxcdFxcdGFkZHJlc3MgPSBHUElPX0JBU0VfQUREUkVTUyArIEdQSU9fUElOMTFfQUREUkVTUztcXG4xNTIyOlxcdFxcdFxcdHN0YXR1cyA9IGF0aDZrbF9ibWlfcmVnX3dyaXRlKGFyLCBhZGRyZXNzLCBwYXJhbSk7XFxuMTUyMzpcXHRcXHRcXHRpZiAoc3RhdHVzKVxcbjE1MjQ6XFx0XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTI1OlxcdFxcbjE1MjY6XFx0XFx0XFx0YWRkcmVzcyA9IEdQSU9fQkFTRV9BRERSRVNTICsgR1BJT19QSU4xMl9BRERSRVNTO1xcbjE1Mjc6XFx0XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcXG4xNTI4OlxcdFxcdFxcdGlmIChzdGF0dXMpXFxuMTUyOTpcXHRcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1MzA6XFx0XFxuMTUzMTpcXHRcXHRcXHRhZGRyZXNzID0gR1BJT19CQVNFX0FERFJFU1MgKyBHUElPX1BJTjEzX0FERFJFU1M7XFxuMTUzMjpcXHRcXHRcXHRzdGF0dXMgPSBhdGg2a2xfYm1pX3JlZ193cml0ZShhciwgYWRkcmVzcywgcGFyYW0pO1xcbjE1MzM6XFx0XFx0XFx0aWYgKHN0YXR1cylcXG4xNTM0OlxcdFxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTUzNTpcXHRcXHR9XFxuMTUzNjpcXHRcXG4xNTM3OlxcdFxcdC8qIHdyaXRlIEVFUFJPTSBkYXRhIHRvIFRhcmdldCBSQU0gKi9cXG4xNTM4OlxcdFxcdHN0YXR1cyA9IGF0aDZrbF91cGxvYWRfYm9hcmRfZmlsZShhcik7XFxuMTUzOTpcXHRcXHRpZiAoc3RhdHVzKVxcbjE1NDA6XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTQxOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1NToyOC40MDA0NjQwMTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5MzA5Nzc3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCBhc3N1bWluZyBJJ20gYSBzZWFzb25lZCBwcm9mZXNzaW9uYWwgcmV2aWV3aW5nIGNvZGU6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBGdW5jdGlvbioqXG5cbkFscmlnaHQsIEkndmUgZ290IGEgZ3Jhc3Agb2YgdGhlIGluaXRpYWwgc2VjdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIE15IHByaW1hcnkgY29uY2VybiBhdCB0aGlzIHN0YWdlIGlzIHRvIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgaXNzdWVzIGZ1cnRoZXIgZG93biB0aGUgbGluZS4gSSB3YW50IHRvIGxvb2sgZm9yIHBvdGVudGlhbCBlZGdlIGNhc2VzLiBBcmUgdGhlcmUgc2VjdGlvbnMgSSBkaWRuJ3QgaWRlbnRpZnk/IFdoZXJlIGFyZSB0aGUgZXJyb3IgY29uZGl0aW9ucyBoYW5kbGVkPyBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYW5kIGVuc3VyZSBldmVyeSBsaW5lIGlzIGFjY291bnRlZCBmb3IuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIHRoZSBsb2dpYywgdmFyaWFibGUgdXNhZ2UsIGFuZCBwb3RlbnRpYWwgZGF0YSBmbG93IHBpdGZhbGxzLiBUaW1lIHRvIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzMzcsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU1OjMyLjc5MzU2NDY5M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTY1MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTU0MixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTU0MjpcXHRcXHQvKiB0cmFuc2ZlciBPbmUgdGltZSBQcm9ncmFtbWFibGUgZGF0YSAqL1xcbjE1NDM6XFx0XFx0c3RhdHVzID0gYXRoNmtsX3VwbG9hZF9vdHAoYXIpO1xcbjE1NDQ6XFx0XFx0aWYgKHN0YXR1cylcXG4xNTQ1OlxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTU0NjpcXHRcXG4xNTQ3OlxcdFxcdC8qIERvd25sb2FkIFRhcmdldCBmaXJtd2FyZSAqL1xcbjE1NDg6XFx0XFx0c3RhdHVzID0gYXRoNmtsX3VwbG9hZF9maXJtd2FyZShhcik7XFxuMTU0OTpcXHRcXHRpZiAoc3RhdHVzKVxcbjE1NTA6XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTUxOlxcdFxcbjE1NTI6XFx0XFx0c3RhdHVzID0gYXRoNmtsX3VwbG9hZF9wYXRjaChhcik7XFxuMTU1MzpcXHRcXHRpZiAoc3RhdHVzKVxcbjE1NTQ6XFx0XFx0XFx0cmV0dXJuIHN0YXR1cztcXG4xNTU1OlxcdFxcbjE1NTY6XFx0XFx0LyogRG93bmxvYWQgdGhlIHRlc3Qgc2NyaXB0ICovXFxuMTU1NzpcXHRcXHRzdGF0dXMgPSBhdGg2a2xfdXBsb2FkX3Rlc3RzY3JpcHQoYXIpO1xcbjE1NTg6XFx0XFx0aWYgKHN0YXR1cylcXG4xNTU5OlxcdFxcdFxcdHJldHVybiBzdGF0dXM7XFxuMTU2MDpcXHRcXG4xNTYxOlxcdFxcdC8qIFJlc3RvcmUgc3lzdGVtIHNsZWVwICovXFxuMTU2MjpcXHRcXHRhZGRyZXNzID0gUlRDX0JBU0VfQUREUkVTUyArIFNZU1RFTV9TTEVFUF9BRERSRVNTO1xcbjE1NjM6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHNsZWVwKTtcXG4xNTY0OlxcdFxcdGlmIChzdGF0dXMpXFxuMTU2NTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1NjY6XFx0XFxuMTU2NzpcXHRcXHRhZGRyZXNzID0gTUJPWF9CQVNFX0FERFJFU1MgKyBMT0NBTF9TQ1JBVENIX0FERFJFU1M7XFxuMTU2ODpcXHRcXHRwYXJhbSA9IG9wdGlvbnMgfCAweDIwO1xcbjE1Njk6XFx0XFx0c3RhdHVzID0gYXRoNmtsX2JtaV9yZWdfd3JpdGUoYXIsIGFkZHJlc3MsIHBhcmFtKTtcXG4xNTcwOlxcdFxcdGlmIChzdGF0dXMpXFxuMTU3MTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjE1NzI6XFx0XFxuMTU3MzpcXHRcXHRyZXR1cm4gMDtcXG4xNTc0OlxcdH1cXG4xNTc1OlxcdFxcbjE1NzY6XFx0aW50IGF0aDZrbF9pbml0X2h3X3BhcmFtcyhzdHJ1Y3QgYXRoNmtsICphcilcXG4xNTc3OlxcdHtcXG4xNTc4OlxcdFxcdGNvbnN0IHN0cnVjdCBhdGg2a2xfaHcgKmh3O1xcbjE1Nzk6XFx0XFx0aW50IGk7XFxuMTU4MDpcXHRcXG4xNTgxOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGh3X2xpc3QpOyBpKyspIHtcXG4xNTgyOlxcdFxcdFxcdGh3ID0gXFx1MDAyNmh3X2xpc3RbaV07XFxuMTU4MzpcXHRcXG4xNTg0OlxcdFxcdFxcdGlmIChody1cXHUwMDNlaWQgPT0gYXItXFx1MDAzZXZlcnNpb24udGFyZ2V0X3ZlcilcXG4xNTg1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjE1ODY6XFx0XFx0fVxcbjE1ODc6XFx0XFxuMTU4ODpcXHRcXHRpZiAoaSA9PSBBUlJBWV9TSVpFKGh3X2xpc3QpKSB7XFxuMTU4OTpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbnN1cHBvcnRlZCBoYXJkd2FyZSB2ZXJzaW9uOiAweCV4XFxcXG5cXFwiLFxcbjE1OTA6XFx0XFx0XFx0XFx0ICAgYXItXFx1MDAzZXZlcnNpb24udGFyZ2V0X3Zlcik7XFxuMTU5MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTU6MzIuNzkzNzYzMTczWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4Nzk3MTU1ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWlub3IgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRpZmYsIGFuZCB0aGUgb25seSBjaGFuZ2UgSSBzZWUgaXMgYSBzaW5nbGUgbGluZSBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBgYXRoNmtsX2luaXRfdXBsb2FkYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYHJldHVybiBzdGF0dXM7YCB3aGljaCBoYXMgYmVlbiBjaGFuZ2VkIHRvIGByZXR1cm4gMDtgLiBIbW0sIHRoaXMgbG9va3MgcHVyZWx5IGNvc21ldGljLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZS5cblxuTGV0J3MgYnJlYWsgZG93biB0aGUgbG9naWM6IHRoZSBjb2RlIGNhbGxzIGBhdGg2a2xfYm1pX3JlZ193cml0ZWAsIGFuZCBpZiB0aGF0IGZ1bmN0aW9uIHJldHVybnMgYSBub24temVybyBgc3RhdHVzYCAoaW5kaWNhdGluZyBhbiBlcnJvciksIHRoZSBmdW5jdGlvbiBpbW1lZGlhdGVseSByZXR1cm5zIHRoYXQgYHN0YXR1c2AuIEhvd2V2ZXIsIGlmIGBzdGF0dXNgIGlzIHplcm8gKHN1Y2Nlc3MpLCB0aGUgY29kZSAqdGhlbiogcmV0dXJucyBgc3RhdHVzYCB3aGljaCBvZiBjb3Vyc2UsIHdpbGwgc3RpbGwgYmUgemVyby4gU28sIHdoZXRoZXIgdGhlIHJldHVybiBzdGF0ZW1lbnQgaXMgYHJldHVybiBzdGF0dXM7YCBvciBgcmV0dXJuIDA7YCB0aGUgYmVoYXZpb3IgaXMgZXhhY3RseSB0aGUgc2FtZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgemVybyBvbiBzdWNjZXNzLiBJdCdzIGEgY2xlYW51cCwgbWF5YmUgdG8gbWFrZSB0aGUgc3VjY2VzcyBjb25kaXRpb24gZXhwbGljaXQsIG9yIHBlcmhhcHMgdG8gc2F0aXNmeSBhIHN0YXRpYyBhbmFseXplci4gVGhlcmUncyBubyBmdW5jdGlvbmFsIGFsdGVyYXRpb24gaGVyZS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIGEgXCJuby1vcFwiIGNoYW5nZS4gSSdsbCByZS1yZWFkIHRoZSBmdW5jdGlvbidzIGNvZGUgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBZZXAsIHRoZXJlJ3Mgbm8gb3RoZXIgY2hhbmdlLlxuXG5Ob3csIGxldCdzIHJldmlldyB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGV5IHN0YXRlIHRoYXQgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb250YWlucywgYW1vbmcgb3RoZXIgdGhpbmdzLCBcIlB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMuLi4gb3IgQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlwiIFRoaXMgY2xlYXJseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnksIGFuZCB0aGVyZSBhcmUgbm8gb3RoZXIgY2hhbmdlcyBpbiB0aGUgY29udGV4dCBvZiB0aGlzIHBhdGNoLlxuXG5UaGVyZWZvcmUsIGFmdGVyIHRoaXMgdGhvcm91Z2ggcmV2aWV3LCBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBjaGFuZ2UgaXMgbm9uLWZ1bmN0aW9uYWwgYW5kIHRoYXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIGNvcnJlY3QgcmVzcG9uc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjE1LCJPdXRwdXRUb2tlbnMiOjg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQ1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTU6NDIuNjczNDgyNzU4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBjaGFuZ2VzICdyZXR1cm4gc3RhdHVzOycgdG8gJ3JldHVybiAwOycgaW1tZWRpYXRlbHkgYWZ0ZXIgYW4gJ2lmIChzdGF0dXMpIHJldHVybiBzdGF0dXM7JyBjaGVjay4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyBzdHlsZSBmaXggdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBhcyAnc3RhdHVzJyBpcyBhbHJlYWR5IGd1YXJhbnRlZWQgdG8gYmUgMCBhdCB0aGF0IHBvaW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBjaGFuZ2VzICdyZXR1cm4gc3RhdHVzOycgdG8gJ3JldHVybiAwOycgaW1tZWRpYXRlbHkgYWZ0ZXIgYW4gJ2lmIChzdGF0dXMpIHJldHVybiBzdGF0dXM7JyBjaGVjay4gVGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYyBzdHlsZSBmaXggdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBhcyAnc3RhdHVzJyBpcyBhbHJlYWR5IGd1YXJhbnRlZWQgdG8gYmUgMCBhdCB0aGF0IHBvaW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowr7m2v[1] Phase: Running StartedAt: 2026-07-31 01:55:54 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7m2v[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-31 01:55:54 +0000 UTC FinishedAt: 2026-07-31 01:56:00 +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,}