Name: series-workflowgv2zg Phase: Failed StartedAt: 2026-07-15 15:17:17 +0000 UTC FinishedAt: 2026-07-15 16:00:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgv2zg[0] Phase: Succeeded StartedAt: 2026-07-15 15:17:17 +0000 UTC FinishedAt: 2026-07-15 16:00:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgv2zg[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 15:17:17 +0000 UTC FinishedAt: 2026-07-15 16:00:40 +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+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGBwaV91cGRhdGVfaXJ0ZWAgS1ZNIHg4NiBvcGVyYXRpb24gZnJvbSBvcHRpb25hbCB0byBtYW5kYXRvcnkuIFRoaXMgb25seSBhZGRzIGEgYFdBUk5fT05gIGNoZWNrIGR1cmluZyBLVk0gbW9kdWxlIGluaXRpYWxpemF0aW9uIHRvIGVuc3VyZSB0aGUgZnVuY3Rpb24gcG9pbnRlciBpcyBwcm92aWRlZC4gU2luY2UgYm90aCBWTVggYW5kIFNWTSBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSB1bmNvbmRpdGlvbmFsbHkgcHJvdmlkZSB0aGlzIGZ1bmN0aW9uLCB0aGUgd2FybmluZyBpcyB1bnJlYWNoYWJsZSBhbmQgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDFjODNiZDNlM2EzOWQyMjc2MWM2MjlkY2ExOTEyZjcxOGJhYWQxMDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxNTo1NzoxMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaFxuaW5kZXggNzM2MTI5ZGIyNzJhYmMuLjBhY2ZlMTU2NDNlMWMwIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaFxuQEAgLTExMCw3ICYjNDM7MTEwLDcgQEAgS1ZNX1g4Nl9PUChoYW5kbGVfZXhpdF9pcnFvZmYpXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfY3B1X2RpcnR5X2xvZ2dpbmcpXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTCh2Y3B1X2Jsb2NraW5nKVxuIEtWTV9YODZfT1BfT1BUSU9OQUwodmNwdV91bmJsb2NraW5nKVxuLUtWTV9YODZfT1BfT1BUSU9OQUwocGlfdXBkYXRlX2lydGUpXG4mIzQzO0tWTV9YODZfT1AocGlfdXBkYXRlX2lydGUpXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTChwaV9zdGFydF9ieXBhc3MpXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTChhcGljdl9wcmVfc3RhdGVfcmVzdG9yZSlcbiBLVk1fWDg2X09QX09QVElPTkFMKGFwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgcGlfdXBkYXRlX2lydGVgIEtWTSB4ODYgb3BlcmF0aW9uIGZyb20gb3B0aW9uYWwgdG8gbWFuZGF0b3J5LiBUaGlzIG9ubHkgYWRkcyBhIGBXQVJOX09OYCBjaGVjayBkdXJpbmcgS1ZNIG1vZHVsZSBpbml0aWFsaXphdGlvbiB0byBlbnN1cmUgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaXMgcHJvdmlkZWQuIFNpbmNlIGJvdGggVk1YIGFuZCBTVk0gaW1wbGVtZW50YXRpb25zIGFscmVhZHkgdW5jb25kaXRpb25hbGx5IHByb3ZpZGUgdGhpcyBmdW5jdGlvbiwgdGhlIHdhcm5pbmcgaXMgdW5yZWFjaGFibGUgYW5kIHRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFjODNiZDNlM2EzOWQyMjc2MWM2MjlkY2ExOTEyZjcxOGJhYWQxMDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAxNTo1NzoxMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oCmluZGV4IDczNjEyOWRiMjcyYWJjLi4wYWNmZTE1NjQzZTFjMCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oCkBAIC0xMTAsNyAmIzQzOzExMCw3IEBAIEtWTV9YODZfT1AoaGFuZGxlX2V4aXRfaXJxb2ZmKQogS1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfY3B1X2RpcnR5X2xvZ2dpbmcpCiBLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfYmxvY2tpbmcpCiBLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfdW5ibG9ja2luZykKLUtWTV9YODZfT1BfT1BUSU9OQUwocGlfdXBkYXRlX2lydGUpCiYjNDM7S1ZNX1g4Nl9PUChwaV91cGRhdGVfaXJ0ZSkKIEtWTV9YODZfT1BfT1BUSU9OQUwocGlfc3RhcnRfYnlwYXNzKQogS1ZNX1g4Nl9PUF9PUFRJT05BTChhcGljdl9wcmVfc3RhdGVfcmVzdG9yZSkKIEtWTV9YODZfT1BfT1BUSU9OQUwoYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQ2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtWTSB4ODYgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1vZGlmeWluZyBgYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaGAuIEludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGNoYW5naW5nIGBLVk1fWDg2X09QX09QVElPTkFMKHBpX3VwZGF0ZV9pcnRlKWAgdG8ganVzdCBgS1ZNX1g4Nl9PUChwaV91cGRhdGVfaXJ0ZSlgLiBUaGF0JiMzOTtzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZS4gQmFzaWNhbGx5LCB0aGV5JiMzOTtyZSBtYWtpbmcgdGhlIGBwaV91cGRhdGVfaXJ0ZWAgb3BlcmF0aW9uIG1hbmRhdG9yeSBpbnN0ZWFkIG9mIG9wdGlvbmFsIHdpdGhpbiB0aGUgS1ZNIHg4NiBvcGVyYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQuCgpNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYHBpX3VwZGF0ZV9pcnRlYCBhY3R1YWxseSAqaXMqLiBJcyBpdCBWTVgtc3BlY2lmaWM/IFNWTT8gQm90aD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gS1ZNIGFuZCB3aHkgdGhleSYjMzk7cmUgZm9yY2luZyBpdHMgcHJlc2VuY2UuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKTGV0JiMzOTtzIGdyZXAgdGhyb3VnaCBgYXJjaC94ODYva3ZtL2AgZm9yIGBwaV91cGRhdGVfaXJ0ZWAgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIGNvbnRleHRzIGluIHdoaWNoIGl0JiMzOTtzIHVzZWQuIFRpbWUgdG8gZ2V0IHRvIHdvcmshCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGlfdXBkYXRlX2lydGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9pcnEuYz00MjY9c3RhdGljIGJvb2wga3ZtX2lycV9pc19wb3N0YWJsZShzdHJ1Y3Qga3ZtX2xhcGljX2lycSAqaXJxKVxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy00MzItXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDMzOnN0YXRpYyBpbnQga3ZtX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcbmFyY2gveDg2L2t2bS9pcnEuYy00MzQtXHRcdFx0ICAgICAgc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmVudHJ5KVxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy00NjctXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDY4Olx0ciA9IGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSkoaXJxZmQsIGlycWZkLVx1MDAzZWt2bSwgaG9zdF9pcnEsIGlycWZkLVx1MDAzZWdzaSxcbmFyY2gveDg2L2t2bS9pcnEuYy00NjktXHRcdFx0XHRcdCB2Y3B1LCBpcnEudmVjdG9yKTtcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NDgyPWludCBrdm1fYXJjaF9pcnFfYnlwYXNzX2FkZF9wcm9kdWNlcihzdHJ1Y3QgaXJxX2J5cGFzc19jb25zdW1lciAqY29ucyxcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDk2LVx0aWYgKGlycWZkLVx1MDAzZWlycV9lbnRyeS50eXBlID09IEtWTV9JUlFfUk9VVElOR19NU0kpIHtcbmFyY2gveDg2L2t2bS9pcnEuYzo0OTc6XHRcdHJldCA9IGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgXHUwMDI2aXJxZmQtXHUwMDNlaXJxX2VudHJ5KTtcbmFyY2gveDg2L2t2bS9pcnEuYy00OTgtXHRcdGlmIChyZXQpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NTA4PXZvaWQga3ZtX2FyY2hfaXJxX2J5cGFzc19kZWxfcHJvZHVjZXIoc3RydWN0IGlycV9ieXBhc3NfY29uc3VtZXIgKmNvbnMsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTUyNy1cdCAgICBXQVJOX09OX09OQ0UoaXJxZmQtXHUwMDNlaXJxX2J5cGFzc192Y3B1KSkge1xuYXJjaC94ODYva3ZtL2lycS5jOjUyODpcdFx0cmV0ID0ga3ZtX3BpX3VwZGF0ZV9pcnRlKGlycWZkLCBOVUxMKTtcbmFyY2gveDg2L2t2bS9pcnEuYy01MjktXHRcdGlmIChyZXQpXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTU0MD12b2lkIGt2bV9hcmNoX3VwZGF0ZV9pcnFmZF9yb3V0aW5nKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTUyLVxuYXJjaC94ODYva3ZtL2lycS5jOjU1MzpcdGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgbmV3KTtcbmFyY2gveDg2L2t2bS9pcnEuYy01NTQtfVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jPTkwMj1zdGF0aWMgdm9pZCBzdm1faXJfbGlzdF9kZWwoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTkxNC1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jOjkxNTppbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTkxNi1cdFx0XHR1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMTQ9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDE5LVx0LmRlbGl2ZXJfaW50ZXJydXB0ID0gc3ZtX2RlbGl2ZXJfaW50ZXJydXB0LFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1NDIwOlx0LnBpX3VwZGF0ZV9pcnRlID0gYXZpY19waV91cGRhdGVfaXJ0ZSxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQyMS1cdC5zZXR1cF9tY2UgPSBzdm1fc2V0dXBfbWNlLFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9OTU5PXZvaWQgYXZpY19yZWZyZXNoX2FwaWN2X2V4ZWNfY3RybChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo5NjA6aW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTk2MS1cdFx0XHR1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYz04ODA9c3RydWN0IGt2bV94ODZfb3BzIHZ0X3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTctXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzo5OTg6XHQucGlfdXBkYXRlX2lydGUgPSB2bXhfcGlfdXBkYXRlX2lydGUsXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTktXHQucGlfc3RhcnRfYnlwYXNzID0gdm14X3BpX3N0YXJ0X2J5cGFzcyxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmM9Mjk3PXZvaWQgdm14X3BpX3N0YXJ0X2J5cGFzcyhzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jLTMwNC1cbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYzozMDU6aW50IHZteF9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYy0zMDYtXHRcdCAgICAgICB1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmg9MTY9Ym9vbCBwaV9oYXNfcGVuZGluZ19pbnRlcnJ1cHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaDoxNzppbnQgdm14X3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5oLTE4LVx0XHQgICAgICAgdW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk4NQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBQYXRjaDogTWFraW5nIGBwaV91cGRhdGVfaXJ0ZWAgTWFuZGF0b3J5KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbWFraW5nIGEgc2lnbmlmaWNhbnQgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGRyb3BwaW5nIHRoZSBgT1BUSU9OQUxgIHF1YWxpZmllciBmcm9tIGBLVk1fWDg2X09QX09QVElPTkFMKHBpX3VwZGF0ZV9pcnRlKWAsIHR1cm5pbmcgaXQgaW50byBqdXN0IGBLVk1fWDg2X09QKHBpX3VwZGF0ZV9pcnRlKWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHNvIHRoaXMgaXMgbm8gbG9uZ2VyIGFuIG9wdGlvbmFsIG9wZXJhdGlvbi4mIzM0OyBUaGF0IGhhcyBwcmV0dHkgYmlnIGltcGxpY2F0aW9ucyBmb3IgaG93IGl0JiMzOTtzIGhhbmRsZWQuIEJlZm9yZSwgaWYgaXQgd2FzbiYjMzk7dCBpbXBsZW1lbnRlZCwgdGhlIEtWTSBjb2RlIHdvdWxkIG5lZWQgdG8gY2hlY2sgZm9yIGl0cyBleGlzdGVuY2UsIHByb2JhYmx5IHVzaW5nIHNvbWV0aGluZyBsaWtlIGBrdm1feDg2X2hhc2Agb3Igc2ltaWxhciBmdW5jdGlvbi4gTm93LCBpZiBpdCYjMzk7cyBubyBsb25nZXIgb3B0aW9uYWwsIGFueSBjYWxscyB0byBpdCwgc3VjaCBhcyBga3ZtX3g4Nl9jYWxsKHBpX3VwZGF0ZV9pcnRlKWAsIGFyZSBqdXN0IGdvaW5nIHRv4oCmIGNhbGwgaXQuIE5vIGNvbmRpdGlvbmFsIGNoZWNrLiBUaGlzIGlzIHNvbWV0aGluZyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBvZiBjb3Vyc2UsIGJlY2F1c2UgYW4gdW5pbXBsZW1lbnRlZCBmdW5jdGlvbiBjYWxsIGlzIGEgY3Jhc2ggaW4gdGhlIG1ha2luZy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBpbmRlZWQgaG93IGBrdm1feDg2X2NhbGxgIHdvcmtzIHdpdGggYEtWTV9YODZfT1BgLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYGFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhgIGFuZCB0cmFjZSBob3cgYEtWTV9YODZfT1BgIGFuZCByZWxhdGVkIG1hY3JvcyBhcmUgYWN0dWFsbHkgZGVmaW5lZCBhbmQgdXNlZCB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHN1YnRsZSBjb25zZXF1ZW5jZXMgSSYjMzk7bSBtaXNzaW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXRhaWxzIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgbm93IGlzIGNyaXRpY2FsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tWTV9YODZfT1AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyOiNpZiAhZGVmaW5lZChLVk1fWDg2X09QKSB8fCBcXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozOiAgICAhZGVmaW5lZChLVk1fWDg2X09QX09QVElPTkFMKSB8fCBcXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo0OiAgICAhZGVmaW5lZChLVk1fWDg2X09QX09QVElPTkFMX1JFVDApXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjU6I2Vycm9yIE1pc3Npbmcgb25lIG9yIG1vcmUgS1ZNX1g4Nl9PUCAjZGVmaW5lc1xuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC02LSNlbHNlXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTctLypcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODogKiBLVk1fWDg2X09QKCkgYW5kIEtWTV9YODZfT1BfT1BUSU9OQUwoKSBhcmUgdXNlZCB0byBoZWxwIGdlbmVyYXRlXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTktICogYm90aCBERUNMQVJFL0RFRklORV9TVEFUSUNfQ0FMTCgpIGludm9jYXRpb25zIGFuZFxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTEtICpcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI6ICogS1ZNX1g4Nl9PUF9PUFRJT05BTCgpIGNhbiBiZSB1c2VkIGZvciB0aG9zZSBmdW5jdGlvbnMgdGhhdCBjYW4gaGF2ZVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzogKiBhIE5VTEwgZGVmaW5pdGlvbi4gIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCgpIGNhbiBiZSB1c2VkIGxpa2V3aXNlXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE0LSAqIHRvIG1ha2UgYSBkZWZpbml0aW9uIG9wdGlvbmFsLCBidXQgaW4gdGhpcyBjYXNlIHRoZSBkZWZhdWx0IHdpbGxcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE2LSAqL1xuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNzpLVk1fWDg2X09QKGNoZWNrX3Byb2Nlc3Nvcl9jb21wYXRpYmlsaXR5KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxODpLVk1fWDg2X09QKGVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE5OktWTV9YODZfT1AoZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjIwOktWTV9YODZfT1AoaGFyZHdhcmVfdW5zZXR1cClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjE6S1ZNX1g4Nl9PUChoYXNfZW11bGF0ZWRfbXNyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyMjpLVk1fWDg2X09QKHZjcHVfYWZ0ZXJfc2V0X2NwdWlkKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyMzpLVk1fWDg2X09QKHZtX2luaXQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjI0OktWTV9YODZfT1BfT1BUSU9OQUwodm1fZGVzdHJveSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjU6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2bV9wcmVfZGVzdHJveSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHZjcHVfcHJlY3JlYXRlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyNzpLVk1fWDg2X09QKHZjcHVfY3JlYXRlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyODpLVk1fWDg2X09QKHZjcHVfZnJlZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Mjk6S1ZNX1g4Nl9PUCh2Y3B1X3Jlc2V0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozMDpLVk1fWDg2X09QKHByZXBhcmVfc3dpdGNoX3RvX2d1ZXN0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozMTpLVk1fWDg2X09QKHZjcHVfbG9hZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MzI6S1ZNX1g4Nl9PUCh2Y3B1X3B1dClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MzM6S1ZNX1g4Nl9PUCh1cGRhdGVfZXhjZXB0aW9uX2JpdG1hcClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MzQ6S1ZNX1g4Nl9PUChnZXRfbXNyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozNTpLVk1fWDg2X09QKHNldF9tc3IpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM2OktWTV9YODZfT1AoZ2V0X3NlZ21lbnRfYmFzZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Mzc6S1ZNX1g4Nl9PUChnZXRfc2VnbWVudClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Mzg6S1ZNX1g4Nl9PUChnZXRfY3BsKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozOTpLVk1fWDg2X09QKGdldF9jcGxfbm9fY2FjaGUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQwOktWTV9YODZfT1Aoc2V0X3NlZ21lbnQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQxOktWTV9YODZfT1AoZ2V0X2NzX2RiX2xfYml0cylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDI6S1ZNX1g4Nl9PUChpc192YWxpZF9jcjApXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQzOktWTV9YODZfT1Aoc2V0X2NyMClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDQ6S1ZNX1g4Nl9PUF9PUFRJT05BTChwb3N0X3NldF9jcjMpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ1OktWTV9YODZfT1AoaXNfdmFsaWRfY3I0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo0NjpLVk1fWDg2X09QKHNldF9jcjQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ3OktWTV9YODZfT1Aoc2V0X2VmZXIpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ4OktWTV9YODZfT1AoZ2V0X2lkdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDk6S1ZNX1g4Nl9PUChzZXRfaWR0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo1MDpLVk1fWDg2X09QKGdldF9nZHQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjUxOktWTV9YODZfT1Aoc2V0X2dkdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTI6S1ZNX1g4Nl9PUChzeW5jX2RpcnR5X2RlYnVnX3JlZ3MpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjUzOktWTV9YODZfT1Aoc2V0X2RyNylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTQ6S1ZNX1g4Nl9PUChjYWNoZV9yZWcpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjU1OktWTV9YODZfT1AoZ2V0X3JmbGFncylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTY6S1ZNX1g4Nl9PUChzZXRfcmZsYWdzKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo1NzpLVk1fWDg2X09QKGdldF9pZl9mbGFnKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo1ODpLVk1fWDg2X09QKGZsdXNoX3RsYl9hbGwpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjU5OktWTV9YODZfT1AoZmx1c2hfdGxiX2N1cnJlbnQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTYwLSNpZiBJU19FTkFCTEVEKENPTkZJR19IWVBFUlYpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjYxOktWTV9YODZfT1BfT1BUSU9OQUwoZmx1c2hfcmVtb3RlX3RsYnMpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjYyOktWTV9YODZfT1BfT1BUSU9OQUwoZmx1c2hfcmVtb3RlX3RsYnNfcmFuZ2UpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTYzLSNlbmRpZlxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2NDpLVk1fWDg2X09QKGZsdXNoX3RsYl9ndmEpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjY1OktWTV9YODZfT1AoZmx1c2hfdGxiX2d1ZXN0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2NjpLVk1fWDg2X09QKHZjcHVfcHJlX3J1bilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Njc6S1ZNX1g4Nl9PUCh2Y3B1X3J1bilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Njg6S1ZNX1g4Nl9PUChoYW5kbGVfZXhpdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Njk6S1ZNX1g4Nl9PUChza2lwX2VtdWxhdGVkX2luc3RydWN0aW9uKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3MDpLVk1fWDg2X09QX09QVElPTkFMKHVwZGF0ZV9lbXVsYXRlZF9pbnN0cnVjdGlvbilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzE6S1ZNX1g4Nl9PUChzZXRfaW50ZXJydXB0X3NoYWRvdylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzI6S1ZNX1g4Nl9PUChnZXRfaW50ZXJydXB0X3NoYWRvdylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzM6S1ZNX1g4Nl9PUChwYXRjaF9oeXBlcmNhbGwpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjc0OktWTV9YODZfT1AoaW5qZWN0X2lycSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzU6S1ZNX1g4Nl9PUChpbmplY3Rfbm1pKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3NjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoaXNfdm5taV9wZW5kaW5nKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3NzpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X3ZubWlfcGVuZGluZylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Nzg6S1ZNX1g4Nl9PUChpbmplY3RfZXhjZXB0aW9uKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3OTpLVk1fWDg2X09QKGNhbmNlbF9pbmplY3Rpb24pXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjgwOktWTV9YODZfT1AoaW50ZXJydXB0X2FsbG93ZWQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjgxOktWTV9YODZfT1Aobm1pX2FsbG93ZWQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjgyOktWTV9YODZfT1AoZ2V0X25taV9tYXNrKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4MzpLVk1fWDg2X09QKHNldF9ubWlfbWFzaylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODQ6S1ZNX1g4Nl9PUChlbmFibGVfbm1pX3dpbmRvdylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODU6S1ZNX1g4Nl9PUChlbmFibGVfaXJxX3dpbmRvdylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODY6S1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfY3I4X2ludGVyY2VwdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODc6S1ZNX1g4Nl9PUChyZWZyZXNoX2FwaWN2X2V4ZWNfY3RybClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODg6S1ZNX1g4Nl9PUF9PUFRJT05BTChod2FwaWNfaXNyX3VwZGF0ZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODk6S1ZNX1g4Nl9PUF9PUFRJT05BTChsb2FkX2VvaV9leGl0bWFwKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5MDpLVk1fWDg2X09QX09QVElPTkFMKHNldF92aXJ0dWFsX2FwaWNfbW9kZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTE6S1ZNX1g4Nl9PUF9PUFRJT05BTChzZXRfYXBpY19hY2Nlc3NfcGFnZV9hZGRyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5MjpLVk1fWDg2X09QKGRlbGl2ZXJfaW50ZXJydXB0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5MzpLVk1fWDg2X09QX09QVElPTkFMKHN5bmNfcGlyX3RvX2lycilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTQ6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHNldF90c3NfYWRkcilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTU6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHNldF9pZGVudGl0eV9tYXBfYWRkcilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGdldF9tdF9tYXNrKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NzpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAodGRwX2hhc19zbWVwKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5ODpLVk1fWDg2X09QKGxvYWRfbW11X3BnZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTk6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHNldF9leHRlcm5hbF9zcHRlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDA6S1ZNX1g4Nl9PUF9PUFRJT05BTChmcmVlX2V4dGVybmFsX3NwdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTAxOktWTV9YODZfT1AoaGFzX3diaW52ZF9leGl0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDI6S1ZNX1g4Nl9PUChnZXRfbDJfdHNjX29mZnNldClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTAzOktWTV9YODZfT1AoZ2V0X2wyX3RzY19tdWx0aXBsaWVyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDQ6S1ZNX1g4Nl9PUCh3cml0ZV90c2Nfb2Zmc2V0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDU6S1ZNX1g4Nl9PUCh3cml0ZV90c2NfbXVsdGlwbGllcilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTA2OktWTV9YODZfT1AoZ2V0X2V4aXRfaW5mbylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTA3OktWTV9YODZfT1AoZ2V0X2VudHJ5X2luZm8pXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwODpLVk1fWDg2X09QKGNoZWNrX2ludGVyY2VwdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTA5OktWTV9YODZfT1AoaGFuZGxlX2V4aXRfaXJxb2ZmKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTA6S1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfY3B1X2RpcnR5X2xvZ2dpbmcpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExMTpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfYmxvY2tpbmcpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExMjpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfdW5ibG9ja2luZylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTEzOktWTV9YODZfT1AocGlfdXBkYXRlX2lydGUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExNDpLVk1fWDg2X09QX09QVElPTkFMKHBpX3N0YXJ0X2J5cGFzcylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE1OktWTV9YODZfT1BfT1BUSU9OQUwoYXBpY3ZfcHJlX3N0YXRlX3Jlc3RvcmUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExNjpLVk1fWDg2X09QX09QVElPTkFMKGFwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE3OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChkeV9hcGljdl9oYXNfcGVuZGluZ19pbnRlcnJ1cHQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExODpLVk1fWDg2X09QX09QVElPTkFMKHByb3RlY3RlZF9hcGljX2hhc19pbnRlcnJ1cHQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExOTpLVk1fWDg2X09QX09QVElPTkFMKHNldF9odl90aW1lcilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTIwOktWTV9YODZfT1BfT1BUSU9OQUwoY2FuY2VsX2h2X3RpbWVyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjE6S1ZNX1g4Nl9PUChzZXR1cF9tY2UpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEyMi0jaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTIzOktWTV9YODZfT1Aoc21pX2FsbG93ZWQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEyNDpLVk1fWDg2X09QKGVudGVyX3NtbSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI1OktWTV9YODZfT1AobGVhdmVfc21tKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjY6S1ZNX1g4Nl9PUChlbmFibGVfc21pX3dpbmRvdylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTI3LSNlbmRpZlxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjg6S1ZNX1g4Nl9PUF9PUFRJT05BTChkZXZfZ2V0X2F0dHIpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEyOTpLVk1fWDg2X09QX09QVElPTkFMKG1lbV9lbmNfaW9jdGwpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzMDpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfbWVtX2VuY19pb2N0bClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTMxOktWTV9YODZfT1BfT1BUSU9OQUwodmNwdV9tZW1fZW5jX3VubG9ja2VkX2lvY3RsKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzI6S1ZNX1g4Nl9PUF9PUFRJT05BTChtZW1fZW5jX3JlZ2lzdGVyX3JlZ2lvbilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTMzOktWTV9YODZfT1BfT1BUSU9OQUwobWVtX2VuY191bnJlZ2lzdGVyX3JlZ2lvbilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM0OktWTV9YODZfT1BfT1BUSU9OQUwodm1fY29weV9lbmNfY29udGV4dF9mcm9tKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzU6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2bV9tb3ZlX2VuY19jb250ZXh0X2Zyb20pXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzNjpLVk1fWDg2X09QX09QVElPTkFMKGd1ZXN0X21lbW9yeV9yZWNsYWltZWQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzNzpLVk1fWDg2X09QX09QVElPTkFMKHJlbG9hZF92bXNhKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzg6S1ZNX1g4Nl9PUChnZXRfZmVhdHVyZV9tc3IpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzOTpLVk1fWDg2X09QKGNoZWNrX2VtdWxhdGVfaW5zdHJ1Y3Rpb24pXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0MDpLVk1fWDg2X09QKGFwaWNfaW5pdF9zaWduYWxfYmxvY2tlZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQxOktWTV9YODZfT1BfT1BUSU9OQUwoZW5hYmxlX2wyX3RsYl9mbHVzaClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQyOktWTV9YODZfT1BfT1BUSU9OQUwobWlncmF0ZV90aW1lcnMpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0MzpLVk1fWDg2X09QKHJlY2FsY19pbnRlcmNlcHRzKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDQ6S1ZNX1g4Nl9PUChjb21wbGV0ZV9lbXVsYXRlZF9tc3IpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0NTpLVk1fWDg2X09QKHZjcHVfZGVsaXZlcl9zaXBpX3ZlY3RvcilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQ2OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCh2Y3B1X2dldF9hcGljdl9pbmhpYml0X3JlYXNvbnMpO1xuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDc6S1ZNX1g4Nl9PUF9PUFRJT05BTChnZXRfdW50YWdnZWRfYWRkcilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQ4OktWTV9YODZfT1BfT1BUSU9OQUwoYWxsb2NfYXBpY19iYWNraW5nX3BhZ2UpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE0OS0jaWZkZWYgQ09ORklHX0hBVkVfS1ZNX0FSQ0hfR01FTV9QUkVQQVJFXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1MDpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZ21lbV9wcmVwYXJlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTEtI2VuZGlmXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1MjpLVk1fWDg2X09QX09QVElPTkFMKGdtZW1faW52YWxpZGF0ZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTUzLSNpZmRlZiBDT05GSUdfSEFWRV9LVk1fQVJDSF9HTUVNX0lOVkFMSURBVEVcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTU0OktWTV9YODZfT1BfT1BUSU9OQUwoZ21lbV9pbnZhbGlkYXRlX3JhbmdlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTUtI2VuZGlmXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1NjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZ21lbV9tYXhfbWFwcGluZ19sZXZlbClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTU3LSNlbmRpZlxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTgtXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1OTojdW5kZWYgS1ZNX1g4Nl9PUFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNjA6I3VuZGVmIEtWTV9YODZfT1BfT1BUSU9OQUxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTYxOiN1bmRlZiBLVk1fWDg2X09QX09QVElPTkFMX1JFVDBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTExMgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgcGlfdXBkYXRlX2lydGVgIEtWTSBPcGVyYXRpb24qKgoKT2theSwgc28gaXQgc2VlbXMgYHBpX3VwZGF0ZV9pcnRlYCBoYXMgYmVjb21lIGEgKm1hbmRhdG9yeSogS1ZNIHg4NiBvcGVyYXRpb24uIFRoaXMgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssIGlmIGl0JiMzOTtzIG1hbmRhdG9yeSwgdGhlbiBib3RoIFZNWCBhbmQgU1ZNIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMgKmhhdmUqIHRvIHByb3ZpZGUgaW1wbGVtZW50YXRpb25zIGZvciBpdC4gTGV0JiMzOTtzIHNlZS4uLiBhIHF1aWNrIGdyZXAgc2hvd3MgbWUgdGhhdCBgdm14X3BpX3VwZGF0ZV9pcnRlYCBpcyBpbmRlZWQgcmVzaWRpbmcgaW4gYGFyY2gveDg2L2t2bS92bXgvbWFpbi5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIHRoZSBJbnRlbCBzaWRlLCBhbmQgYGF2aWNfcGlfdXBkYXRlX2lydGVgIGlzIG92ZXIgaW4gYGFyY2gveDg2L2t2bS9zdm0vc3ZtLmNgLCB0YWtpbmcgY2FyZSBvZiB0aGUgQU1EIFNWTS4KCldhaXQgYSBzZWNvbmQuIE5vdyBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhpcyAtLSB3aGF0IGlmIHNvbWVvbmUmIzM5O3MgcnVubmluZyBLVk0gYnV0IGhhc24mIzM5O3QgY29tcGlsZWQgaW4gZWl0aGVyIFNWTSAqb3IqIFZNWCBzdXBwb3J0PyBCdXQgbm8sIEtWTSB4ODYgb3BlcmF0aW9ucyBhcmUgaGFuZGxlZCBieSB0aGUgbW9kdWxlcyB3aGljaCBhcmUgbG9hZGVkLCBga3ZtLWludGVsYCBvciBga3ZtLWFtZGAuIFRoYXQgc29sdmVzIHRoYXQuIE9rYXksIEkmIzM5O20ganVzdCBtYWtpbmcgc3VyZSBoZXJlLCBhbmQgYW0gZ29pbmcgdG8gY2hlY2sgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBvdGhlciBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UgdG8gZ28gYmFjayB0byBgYXJjaC94ODYva3ZtL2lycS5jYCBhZ2Fpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1feDg2X2NhbGxcXChwaV91cGRhdGVfaXJ0ZVxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2lycS5jPTQzMz1zdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTQ2Ny1cbmFyY2gveDg2L2t2bS9pcnEuYzo0Njg6XHRyID0ga3ZtX3g4Nl9jYWxsKHBpX3VwZGF0ZV9pcnRlKShpcnFmZCwgaXJxZmQtXHUwMDNla3ZtLCBob3N0X2lycSwgaXJxZmQtXHUwMDNlZ3NpLFxuYXJjaC94ODYva3ZtL2lycS5jLTQ2OS1cdFx0XHRcdFx0IHZjcHUsIGlycS52ZWN0b3IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzcwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOgoKKipUaGlua2luZyBUaHJvdWdoIHRoZSBga3ZtX3BpX3VwZGF0ZV9pcnRlYCBNYW5kYXRvcnkgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgYGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSlgIGZ1bmN0aW9uIGlzICptYW5kYXRvcnkqIG5vdywgbWVhbmluZyBpdCYjMzk7cyBnb2luZyB0byBiZSBjYWxsZWQgZGlyZWN0bHkuIFRoYXQmIzM5O3MgYSBrZXkgZGlzdGluY3Rpb24uIEJlZm9yZSB0aGlzIHBhdGNoLCBgcGlfdXBkYXRlX2lydGVgIHdhcywgaW4gZWZmZWN0LCBvcHRpb25hbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5ldyByZXF1aXJlbWVudC4KCk15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBoYXZlIHRvIGZpbmQgb3V0ICpob3cqIGBrdm1fcGlfdXBkYXRlX2lydGVgIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGBwaV91cGRhdGVfaXJ0ZWAgd2FzIGFjdHVhbGx5IHByZXNlbnQgb3IgaW1wbGVtZW50ZWQuIFdoYXQgbG9naWMgd2FzIGVtcGxveWVkLCBhbmQgaG93IGRvZXMgdGhpcyBjaGFuZ2UgdGhlIGNvZGUmIzM5O3MgYmVoYXZpb3Igd2hlbiB0aGF0IG9wdGlvbmFsIGNoZWNrIGlzIG5vIGxvbmdlciBuZWVkZWQ/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgb2xkIGNvbmRpdGlvbmFsIHRoYXQgbWFuYWdlZCB0aGUgb3B0aW9uYWxpdHkgdG8gZ2F1Z2UgaG93IHRoZSBmdW5jdGlvbiYjMzk7cyBpbnRlcm5hbCBmbG93IGlzIHNoaWZ0aW5nIGFzIGEgcmVzdWx0IG9mIG1ha2luZyB0aGUgdXBkYXRlIG1hbmRhdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3BpX3VwZGF0ZV9pcnRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaXJxLmM9NDI2PXN0YXRpYyBib29sIGt2bV9pcnFfaXNfcG9zdGFibGUoc3RydWN0IGt2bV9sYXBpY19pcnEgKmlycSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDMyLVxuYXJjaC94ODYva3ZtL2lycS5jOjQzMzpzdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDM0LVx0XHRcdCAgICAgIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplbnRyeSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NDgyPWludCBrdm1fYXJjaF9pcnFfYnlwYXNzX2FkZF9wcm9kdWNlcihzdHJ1Y3QgaXJxX2J5cGFzc19jb25zdW1lciAqY29ucyxcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDk2LVx0aWYgKGlycWZkLVx1MDAzZWlycV9lbnRyeS50eXBlID09IEtWTV9JUlFfUk9VVElOR19NU0kpIHtcbmFyY2gveDg2L2t2bS9pcnEuYzo0OTc6XHRcdHJldCA9IGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgXHUwMDI2aXJxZmQtXHUwMDNlaXJxX2VudHJ5KTtcbmFyY2gveDg2L2t2bS9pcnEuYy00OTgtXHRcdGlmIChyZXQpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NTA4PXZvaWQga3ZtX2FyY2hfaXJxX2J5cGFzc19kZWxfcHJvZHVjZXIoc3RydWN0IGlycV9ieXBhc3NfY29uc3VtZXIgKmNvbnMsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTUyNy1cdCAgICBXQVJOX09OX09OQ0UoaXJxZmQtXHUwMDNlaXJxX2J5cGFzc192Y3B1KSkge1xuYXJjaC94ODYva3ZtL2lycS5jOjUyODpcdFx0cmV0ID0ga3ZtX3BpX3VwZGF0ZV9pcnRlKGlycWZkLCBOVUxMKTtcbmFyY2gveDg2L2t2bS9pcnEuYy01MjktXHRcdGlmIChyZXQpXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTU0MD12b2lkIGt2bV9hcmNoX3VwZGF0ZV9pcnFmZF9yb3V0aW5nKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTUyLVxuYXJjaC94ODYva3ZtL2lycS5jOjU1MzpcdGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgbmV3KTtcbmFyY2gveDg2L2t2bS9pcnEuYy01NTQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjY3NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gS1ZNIEludGVycnVwdCBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhpcyBhbGwgd29ya3MsIHNvIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZm9jdXNpbmcgb24gYGFyY2gveDg2L2t2bS9pcnEuY2AuIEkgZmlndXJlIGxpbmUgNDMzIGlzIGEgZ29vZCBwbGFjZSB0byBiZWdpbi4gSXQmIzM5O3MgbGlrZWx5IGEgY3JpdGljYWwganVuY3R1cmUgaW4gdGhlIGludGVycnVwdCBwYXRoLCBwb3RlbnRpYWxseSByZWxhdGVkIHRvIGluamVjdGlvbiwgbWFza2luZywgb3Igc29tZSBhc3BlY3Qgb2YgdmlydHVhbGl6YXRpb24gdGhhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTGV0JiMzOTtzIHNlZSB3aGF0IGludGVyZXN0aW5nIGNvZGUgbGl2ZXMgdGhlcmUuIFRpbWUgdG8gZGlnIGluIGFuZCBjb3JyZWxhdGUgd2hhdCBJIHNlZSB3aXRoIHRoZSBvdmVyYWxsIGludGVycnVwdCBmbG93LiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgbG9naWMgdGhhdCYjMzk7cyBiZWluZyBwZXJmb3JtZWQgYXQgdGhpcyBzdGFnZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGludGVyYWN0aW9ucyBhbmQgaG93IEtWTSBtYW5hZ2VzIHRoZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2lycS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MzA6XHRcdFx0aXJxLVx1MDAzZWRlbGl2ZXJ5X21vZGUgPT0gQVBJQ19ETV9MT1dFU1QpO1xuIDQzMTpcdH1cbiA0MzI6XHRcbiA0MzM6XHRzdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG4gNDM0Olx0XHRcdFx0ICAgICAgc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmVudHJ5KVxuIDQzNTpcdHtcbiA0MzY6XHRcdHVuc2lnbmVkIGludCBob3N0X2lycSA9IGlycWZkLVx1MDAzZXByb2R1Y2VyLVx1MDAzZWlycTtcbiA0Mzc6XHRcdHN0cnVjdCBrdm0gKmt2bSA9IGlycWZkLVx1MDAzZWt2bTtcbiA0Mzg6XHRcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdSA9IE5VTEw7XG4gNDM5Olx0XHRzdHJ1Y3Qga3ZtX2xhcGljX2lycSBpcnE7XG4gNDQwOlx0XHRpbnQgcjtcbiA0NDE6XHRcbiA0NDI6XHRcdGlmIChXQVJOX09OX09OQ0UoIWlycWNoaXBfaW5fa2VybmVsKGt2bSkgfHwgIWt2bV9hcmNoX2hhc19pcnFfYnlwYXNzKCkpKVxuIDQ0MzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA0NDQ6XHRcbiA0NDU6XHRcdGlmIChlbnRyeSBcdTAwMjZcdTAwMjYgZW50cnktXHUwMDNldHlwZSA9PSBLVk1fSVJRX1JPVVRJTkdfTVNJKSB7XG4gNDQ2Olx0XHRcdGt2bV9tc2lfdG9fbGFwaWNfaXJxKGt2bSwgZW50cnksIFx1MDAyNmlycSk7XG4gNDQ3Olx0XG4gNDQ4Olx0XHRcdC8qXG4gNDQ5Olx0XHRcdCAqIEZvcmNlIHJlbWFwcGVkIG1vZGUgaWYgaGFyZHdhcmUgZG9lc24mIzM5O3Qgc3VwcG9ydCBwb3N0aW5nIHRoZVxuIDQ1MDpcdFx0XHQgKiB2aXJ0dWFsIGludGVycnVwdCB0byBhIHZDUFUuICBPbmx5IElSUXMgYXJlIHBvc3RhYmxlIChOTUlzLFxuIDQ1MTpcdFx0XHQgKiBTTUlzLCBldGMuIGFyZSBub3QpLCBhbmQgbmVpdGhlciBBTUQgbm9yIEludGVsIElPTU1VcyBzdXBwb3J0XG4gNDUyOlx0XHRcdCAqIHBvc3RpbmcgbXVsdGljYXN0L2Jyb2FkY2FzdCBJUlFzLiAgSWYgdGhlIGludGVycnVwdCBjYW4mIzM5O3QgYmVcbiA0NTM6XHRcdFx0ICogcG9zdGVkLCB0aGUgZGV2aWNlIE1TSSBuZWVkcyB0byBiZSByb3V0ZWQgdG8gdGhlIGhvc3Qgc28gdGhhdFxuIDQ1NDpcdFx0XHQgKiB0aGUgZ3Vlc3QmIzM5O3MgZGVzaXJlZCBpbnRlcnJ1cHQgY2FuIGJlIHN5bnRoZXNpemVkIGJ5IEtWTS5cbiA0NTU6XHRcdFx0ICpcbiA0NTY6XHRcdFx0ICogVGhpcyBtZWFucyB0aGF0IEtWTSBjYW4gb25seSBwb3N0IGxvd2VzdC1wcmlvcml0eSBpbnRlcnJ1cHRzXG4gNDU3Olx0XHRcdCAqIGlmIHRoZXkgaGF2ZSBhIHNpbmdsZSBDUFUgYXMgdGhlIGRlc3RpbmF0aW9uLCBlLmcuIG9ubHkgaWZcbiA0NTg6XHRcdFx0ICogdGhlIGd1ZXN0IGhhcyBhZmZpbmVkIHRoZSBpbnRlcnJ1cHQgdG8gYSBzaW5nbGUgdkNQVS5cbiA0NTk6XHRcdFx0ICovXG4gNDYwOlx0XHRcdGlmICgha3ZtX2ludHJfaXNfc2luZ2xlX3ZjcHUoa3ZtLCBcdTAwMjZpcnEsIFx1MDAyNnZjcHUpIHx8XG4gNDYxOlx0XHRcdCAgICAha3ZtX2lycV9pc19wb3N0YWJsZShcdTAwMjZpcnEpKVxuIDQ2MjpcdFx0XHRcdHZjcHUgPSBOVUxMO1xuIDQ2MzpcdFx0fVxuIDQ2NDpcdFxuIDQ2NTpcdFx0aWYgKCFpcnFmZC1cdTAwM2VpcnFfYnlwYXNzX3ZjcHUgXHUwMDI2XHUwMDI2ICF2Y3B1KVxuIDQ2NjpcdFx0XHRyZXR1cm4gMDtcbiA0Njc6XHRcbiA0Njg6XHRcdHIgPSBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpKGlycWZkLCBpcnFmZC1cdTAwM2Vrdm0sIGhvc3RfaXJxLCBpcnFmZC1cdTAwM2Vnc2ksXG4gNDY5Olx0XHRcdFx0XHRcdCB2Y3B1LCBpcnEudmVjdG9yKTtcbiA0NzA6XHRcdGlmIChyKSB7XG4gNDcxOlx0XHRcdFdBUk5fT05fT05DRShpcnFmZC1cdTAwM2VpcnFfYnlwYXNzX3ZjcHUgXHUwMDI2XHUwMDI2ICF2Y3B1KTtcbiA0NzI6XHRcdFx0aXJxZmQtXHUwMDNlaXJxX2J5cGFzc192Y3B1ID0gTlVMTDtcbiA0NzM6XHRcdFx0cmV0dXJuIHI7XG4gNDc0Olx0XHR9XG4gNDc1Olx0XG4gNDc2Olx0XHRpcnFmZC1cdTAwM2VpcnFfYnlwYXNzX3ZjcHUgPSB2Y3B1O1xuIDQ3NzpcdFxuIDQ3ODpcdFx0dHJhY2Vfa3ZtX3BpX2lydGVfdXBkYXRlKGhvc3RfaXJxLCB2Y3B1LCBpcnFmZC1cdTAwM2Vnc2ksIGlycS52ZWN0b3IsICEhdmNwdSk7XG4gNDc5Olx0XHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4NjEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gSVJRIEJ5cGFzcyBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBga3ZtX3BpX3VwZGF0ZV9pcnRlYCBmdW5jdGlvbiBhbmQgc29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSBjbGlja2luZy4gSXQgc2VlbXMgbGlrZSBga3ZtX3g4Nl9jYWxsKHBpX3VwZGF0ZV9pcnRlKWAgaXMgY2FsbGVkICp1bmNvbmRpdGlvbmFsbHkqIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLCBhcyBsb25nIGFzIGVpdGhlciBgaXJxZmQtJmd0O2lycV9ieXBhc3NfdmNwdWAgb3IgYHZjcHVgIGlzbiYjMzk7dCBudWxsLiBUaGUgdGhpbmcgaXMsIGJlZm9yZSB0aGlzIHBhdGNoLCBjYWxsaW5nIGBwaV91cGRhdGVfaXJ0ZWAgc2VlbWVkICpvcHRpb25hbCouIAoKVGhhdCYjMzk7cyB3aGVuIGl0IGhpdHMgbWU6IGlmIGBwaV91cGRhdGVfaXJ0ZWAgd2FzIG9wdGlvbmFsLCB0aGVuIGBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpYCB3b3VsZCBqdXN0IGJlIGEgY2FsbCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHJpZ2h0PyBBbmQgdGhhdCBmdW5jdGlvbiBwb2ludGVyIGNvdWxkIGhhdmUgdmVyeSB3ZWxsIGJlZW4gYE5VTExgLCBkZXBlbmRpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24uIElzIHRoYXQgd2hhdCYjMzk7cyBnb2luZyBvbj8gT3IgZG9lcyBga3ZtX3g4Nl9jYWxsYCBkbyBzb21ldGhpbmcgbW9yZSBpbnZvbHZlZCB3aGVuIHRoZSBmdW5jdGlvbiBpdCYjMzk7cyB3cmFwcGluZyBpcyBvcHRpb25hbD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBoYXBwZW5zIHdoZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBvcHRpb25hbCBmdW5jdGlvbnMgaW4gdGhpcyBga3ZtX3g4Nl9jYWxsYCBjb250ZXh0LgoKSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4gVGltZSB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byBgYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaGAgYW5kIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGBrdm1feDg2X2NhbGxgIGlzIGRlZmluZWQgYW5kIGlmIGl0IGhhbmRsZXMgYE5VTExgIGZ1bmN0aW9uIHBvaW50ZXJzIGdyYWNlZnVsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2FsbCBmbG93IGNvbXBsZXRlbHkgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIGt2bV94ODZfY2FsbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2luY2x1ZGUvYXNtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTE3ODc9ZXh0ZXJuIHN0cnVjdCBrdm1feDg2X25lc3RlZF9vcHMga3ZtX25lc3RlZF9vcHMgX19yZWFkX21vc3RseTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTc4OC1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTc4OTojZGVmaW5lIGt2bV94ODZfY2FsbChmdW5jKSBzdGF0aWNfY2FsbChrdm1feDg2XyMjZnVuYylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTc5MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2MDIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBzdGF0aWNfY2FsbGAgYW5kIEl0cyBJbXBsaWNhdGlvbnMqKgoKT2theSwgc28gSSBzZWUgYSBgc3RhdGljX2NhbGwoa3ZtX3g4Nl9waV91cGRhdGVfaXJ0ZSlgIGNhbGwuIFRoaXMgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJZiBpdCYjMzk7cyBhIGBzdGF0aWNfY2FsbGAsIGl0IGxpa2VseSBtZWFucyB0aGVyZSYjMzk7cyBhIGRlZ3JlZSBvZiBjb21waWxlLXRpbWUgb3B0aW9uYWJpbGl0eSBpbnZvbHZlZCwgYW5kIHRoYXQgcmFpc2VzIGEgZmV3IGltbWVkaWF0ZSBxdWVzdGlvbnMgaW4gbXkgbWluZC4gU3BlY2lmaWNhbGx5LCBpZiB0aGlzIGZ1bmN0aW9uIGNhbGwgaXMgb3B0aW9uYWwsIHdoYXTigJlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIHdoZW4gaXQgKmlzbiYjMzk7dCogdXNlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLiBJIGhhdmUgdG8gbG9vayBhdCBob3cgYGt2bV94ODZfb3BzYCBpcyBpbml0aWFsaXplZCwgYXMgdGhhdCBsaWtlbHkgaG9sZHMgdGhlIGtleSB0byB0aGUgZGlzcGF0Y2ggbWVjaGFuaXNtLiBUaGUgZmlsZSB0byBzdGFydCB3aXRoIHNob3VsZCBiZSBgYXJjaC94ODYva3ZtL3g4Ni5jYCwgb3IgcmVhbGx5LCB3aGVyZXZlciBga3ZtX3g4Nl9vcHNgIGdldHMgcG9wdWxhdGVkIHdpdGggaXRzIGZ1bmN0aW9uIHBvaW50ZXJzLiBUaGF0IHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byBkZXRlcm1pbmUgd2hldGhlciBga3ZtX3g4Nl9waV91cGRhdGVfaXJ0ZWAgaXMgYWx3YXlzIHByZXNlbnQsIG9yIGlmIHRoZXJlJiMzOTtzIGEgZmFsbGJhY2sgb3IgYWx0ZXJuYXRpdmUgYmVoYXZpb3IuIFVuZGVyc3RhbmRpbmcgdGhpcyBpcyBjcnVjaWFsIGZvciBldmFsdWF0aW5nIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgb3IgY29tcGF0aWJpbGl0eSBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tWTV9YODZfT1BfT1BUSU9OQUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz0xNjY9c3RydWN0IGt2bV94ODZfbmVzdGVkX29wcyBrdm1fbmVzdGVkX29wcyBfX3JlYWRfbW9zdGx5O1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xNzAtXHRcdFx0XHQqKCgoc3RydWN0IGt2bV94ODZfb3BzICopMCktXHUwMDNlZnVuYykpO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjE3MTojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgS1ZNX1g4Nl9PUFxuYXJjaC94ODYva3ZtL3g4Ni5jOjE3MjojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCBLVk1fWDg2X09QXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTczLSNpbmNsdWRlIFx1MDAzY2FzbS9rdm0teDg2LW9wcy5oXHUwMDNlXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTY5NDI9c3RhdGljIGlubGluZSB2b2lkIGt2bV9vcHNfdXBkYXRlKHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTY5NDktXHRXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKTsgX19LVk1fWDg2X09QKGZ1bmMpXG5hcmNoL3g4Ni9rdm0veDg2LmM6Njk1MDojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgX19LVk1fWDg2X09QXG5hcmNoL3g4Ni9rdm0veDg2LmM6Njk1MTojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChmdW5jKSBcXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTY5NTItXHRzdGF0aWNfY2FsbF91cGRhdGUoa3ZtX3g4Nl8jI2Z1bmMsICh2b2lkICopa3ZtX3g4Nl9vcHMuZnVuYyA/IDogXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0MDEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS1ZNIEluc3RydWN0aW9uIE9wdGltaXphdGlvbiBDb25jZXJucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgbWFjcm8sIGFuZCBpdCYjMzk7cyBlc3NlbnRpYWxseSBqdXN0IGFuIGFsaWFzIGZvciBgX19LVk1fWDg2X09QYCwgd2hpY2ggZXhwYW5kcyB0byBhIGBzdGF0aWNfY2FsbF91cGRhdGVgIHRoYXQgbWFwcyBhIGZ1bmN0aW9uIHRvIGBrdm1feDg2X29wcy5mdW5jYC4gIFRoZSBjcnV4IG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhhdCBpZiBga3ZtX3g4Nl9vcHMuZnVuY2AgaXMgYE5VTExgLCB0aGVuIHRoZSBzdGF0aWMgY2FsbCBnZXRzIHVwZGF0ZWQgdG8gYE5VTExgLiBUaGUgaW1tZWRpYXRlIGlzc3VlIGhlcmUgaXMgdGhhdCAqY2FsbGluZyogYSBgTlVMTGAgZnVuY3Rpb24gaXMgYSBndWFyYW50ZWVkIGNyYXNoLCByaWdodD8gSXQmIzM5O3MgZWxlbWVudGFyeSwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBmb2xsb3dpbmcgdGhlIGxvZ2ljIGNvcnJlY3RseS4KCldhaXQgYSBzZWNvbmQsIHRoZXJlJiMzOTtzIGBLVk1fWDg2X09QX09QVElPTkFMX1JFVDBgLCB3aGljaCBzZWVtcyB0byBoYXZlIGEgZmFsbGJhY2sgbWVjaGFuaXNtIHRvIGBfX3N0YXRpY19jYWxsX3JldHVybjBgLiAgV2h5IGRvZXNuJiMzOTt0IGBLVk1fWDg2X09QX09QVElPTkFMYCBhbHNvIGhhdmUgYSBmYWxsYmFjaz8gVGhhdCBzZWVtcyBsaWtlIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIEl0IG1lYW5zIHRoZSBvcHRpb25hbCBpbnN0cnVjdGlvbiBwYXRoIGlzbiYjMzk7dCB0cnVseSBvcHRpb25hbCDigJMgaXQmIzM5O3MgbWFuZGF0b3J5LCB1bmxlc3MgdGhlIGRldmVsb3BlciB0YWtlcyBzcGVjaWZpYyBhY3Rpb25zIHRvIGhhbmRsZSB0aGUgbnVsbCBwb2ludGVyLiBUaGlzIGlzIHNvbWV0aGluZyBJJiMzOTtkIHdhbnQgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4KCkkgbmVlZCB0byBkaWcgaW50byB0aGUgYGFyY2gveDg2L2t2bS94ODYuY2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDY5NDksIHRvIHNlZSBpZiB0aGVyZSBpcyBzb21lIG9idmlvdXMgcmVhc29uaW5nIGhlcmUsIG9yIGlmIHRoaXMgaXMsIGFzIEkgc3VzcGVjdCwgYSBzdWJ0bGUgYnVnIHRoYXQgbmVlZHMgc29tZSBhdHRlbnRpb24uIExldCBtZSBjaGVjayB0aGUgcmVsYXRlZCBjb2RlIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY5NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Njk0MDpcdH1cbjY5NDE6XHRcbjY5NDI6XHRzdGF0aWMgaW5saW5lIHZvaWQga3ZtX29wc191cGRhdGUoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcylcbjY5NDM6XHR7XG42OTQ0Olx0XHRtZW1jcHkoXHUwMDI2a3ZtX3g4Nl9vcHMsIG9wcy1cdTAwM2VydW50aW1lX29wcywgc2l6ZW9mKGt2bV94ODZfb3BzKSk7XG42OTQ1Olx0XG42OTQ2Olx0I2RlZmluZSBfX0tWTV9YODZfT1AoZnVuYykgXFxcbjY5NDc6XHRcdHN0YXRpY19jYWxsX3VwZGF0ZShrdm1feDg2XyMjZnVuYywga3ZtX3g4Nl9vcHMuZnVuYyk7XG42OTQ4Olx0I2RlZmluZSBLVk1fWDg2X09QKGZ1bmMpIFxcXG42OTQ5Olx0XHRXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKTsgX19LVk1fWDg2X09QKGZ1bmMpXG42OTUwOlx0I2RlZmluZSBLVk1fWDg2X09QX09QVElPTkFMIF9fS1ZNX1g4Nl9PUFxuNjk1MTpcdCNkZWZpbmUgS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGZ1bmMpIFxcXG42OTUyOlx0XHRzdGF0aWNfY2FsbF91cGRhdGUoa3ZtX3g4Nl8jI2Z1bmMsICh2b2lkICopa3ZtX3g4Nl9vcHMuZnVuYyA/IDogXFxcbjY5NTM6XHRcdFx0XHRcdFx0ICAgKHZvaWQgKilfX3N0YXRpY19jYWxsX3JldHVybjApO1xuNjk1NDpcdCNpbmNsdWRlIFx1MDAzY2FzbS9rdm0teDg2LW9wcy5oXHUwMDNlXG42OTU1Olx0I3VuZGVmIF9fS1ZNX1g4Nl9PUFxuNjk1NjpcdFxuNjk1NzpcdFx0a3ZtX25lc3RlZF9vcHNfdXBkYXRlKG9wcy1cdTAwM2VuZXN0ZWRfb3BzKTtcbjY5NTg6XHRcbjY5NTk6XHRcdGt2bV9wbXVfb3BzX3VwZGF0ZShvcHMtXHUwMDNlcG11X29wcyk7XG42OTYwOlx0fVxuNjk2MTpcdFxuNjk2MjpcdHN0YXRpYyBpbnQga3ZtX3g4Nl9jaGVja19wcm9jZXNzb3JfY29tcGF0aWJpbGl0eSh2b2lkKVxuNjk2MzpcdHtcbjY5NjQ6XHRcdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XG42OTY1Olx0XHRzdHJ1Y3QgY3B1aW5mb194ODYgKmMgPSBcdTAwMjZjcHVfZGF0YShjcHUpO1xuNjk2NjpcdFxuNjk2NzpcdFx0LypcbjY5Njg6XHRcdCAqIENvbXBhdGliaWxpdHkgY2hlY2tzIGFyZSBkb25lIHdoZW4gbG9hZGluZyBLVk0gYW5kIHdoZW4gZW5hYmxpbmdcbjY5Njk6XHRcdCAqIGhhcmR3YXJlLCBlLmcuIGR1cmluZyBDUFUgaG90cGx1ZywgdG8gZW5zdXJlIGFsbCBvbmxpbmUgQ1BVcyBhcmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1NDcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gWDg2IE9wZXJhdGlvbnMgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIGBwaV91cGRhdGVfaXJ0ZWAgZnJvbSBhbiBvcHRpb25hbCBLVk0geDg2IG9wZXJhdGlvbiAoYEtWTV9YODZfT1BfT1BUSU9OQUxgKSB0byBhIHJlcXVpcmVkIG9uZSAoYEtWTV9YODZfT1BgKS4gVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgd2UmIzM5O2xsIG5vdyBnZXQgYSBgV0FSTl9PTmAgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiBpZiBga3ZtX3g4Nl9vcHMucGlfdXBkYXRlX2lydGVgIGlzIE5VTEwuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgZnVuY3Rpb24sIGBwaV91cGRhdGVfaXJ0ZWAsIGlzIGNvbnNpc3RlbnRseSBpbXBsZW1lbnRlZCBieSBib3RoIFZNWCAoSW50ZWwpIGFuZCBTVk0gKEFNRCkgaHlwZXJ2aXNvcnMuIFRoaXMgY2hhbmdlIGZlZWxzIHBvdGVudGlhbGx5IHJpc2t5IGlmIHRoZXJlJiMzOTtzIGV2ZW4gYSByZW1vdGUgY2hhbmNlIG9mIGl0ICpub3QqIGJlaW5nIGF2YWlsYWJsZS4KCkxldCBtZSBxdWlja2x5IHZlcmlmeSB0aGF0LiBJJiMzOTtsbCBjaGVjayBgYXJjaC94ODYva3ZtL3ZteC9tYWluLmNgIGFuZCBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AuIEFscmlnaHQsIEkgYWxyZWFkeSBoYXZlIHRoZSByZWxldmFudCBsaW5lcyBmcm9tIHRoZSBjb2RlOiBib3RoIFZNWCBhbmQgU1ZNIGhhdmUgYW4gaW1wbGVtZW50YXRpb246IGB2bXhfcGlfdXBkYXRlX2lydGVgIGFuZCBgYXZpY19waV91cGRhdGVfaXJ0ZWAsIHJlc3BlY3RpdmVseS4gR29vZC4gQnV0IHdhaXTigKYgbXkgbWluZCBxdWlja2x5IGp1bXBzIHRvIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLgoKSXMgaXQgcG9zc2libGUgdGhhdCBgQ09ORklHX0tWTV9BTURgIG9yIGBDT05GSUdfS1ZNX0lOVEVMYCBhcmUgKm5vdCogYnVpbHQgaW50byB0aGUga2VybmVsLCBhbmQgdGhlIGZ1bmN0aW9uIHdvdWxkICpub3QqIGJlIGNvbXBpbGVkIGluPyBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgYGF2aWNfcGlfdXBkYXRlX2lydGVgIGluIGBzdm0uY2AgaXMgYWx3YXlzIGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXZpY19waV91cGRhdGVfaXJ0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vYXZpYy5jPTkwMj1zdGF0aWMgdm9pZCBzdm1faXJfbGlzdF9kZWwoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTkxNC1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jOjkxNTppbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTkxNi1cdFx0XHR1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMTQ9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDE5LVx0LmRlbGl2ZXJfaW50ZXJydXB0ID0gc3ZtX2RlbGl2ZXJfaW50ZXJydXB0LFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1NDIwOlx0LnBpX3VwZGF0ZV9pcnRlID0gYXZpY19waV91cGRhdGVfaXJ0ZSxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQyMS1cdC5zZXR1cF9tY2UgPSBzdm1fc2V0dXBfbWNlLFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9OTU5PXZvaWQgYXZpY19yZWZyZXNoX2FwaWN2X2V4ZWNfY3RybChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo5NjA6aW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTk2MS1cdFx0XHR1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc2NjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgS1ZNL0FNRCBBVklDIEltcGxlbWVudGF0aW9uKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIHplcm8gaW4gb24gYGF2aWNfcGlfdXBkYXRlX2lydGVgLiBJIHJlY2FsbCB0aGF0JiMzOTtzIG5lc3RsZWQgd2l0aGluIGBhdmljLmNgLiAgQSBrZXkgcXVlc3Rpb24gaW1tZWRpYXRlbHkgcG9wcyB1cDogaXMgYGF2aWMuY2AgKmFsd2F5cyogY29tcGlsZWQgaW50byB0aGUga2VybmVsIHdoZW4gYENPTkZJR19LVk1fQU1EYCBpcyBlbmFibGVkPyBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIHRoaXMuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBLVk0gb24gQU1EIHN5c3RlbXMgbGV2ZXJhZ2VzIHRoZSBBZHZhbmNlZCBWaXJ0dWFsIEludGVycnVwdCBDb250cm9sbGVyIChBVklDKSwgYnV0IEkgbmVlZCB0byBkZWZpbml0aXZlbHkgZXN0YWJsaXNoIHRoZSBjb21waWxhdGlvbiBkZXBlbmRlbmN5LiBJZiBgYXZpYy5jYCBpc24mIzM5O3QgY29uc2lzdGVudGx5IGluY2x1ZGVkIHVuZGVyIGBDT05GSUdfS1ZNX0FNRGAsIHRoZW4gdGhlIGBhdmljX3BpX3VwZGF0ZV9pcnRlYCBmdW5jdGlvbiBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLCBhbmQgaXRzIHByZXNlbmNlIGluIHRoZSBrZXJuZWwgaXMgZGVwZW5kZW50IG9uIG1vcmUgdGhhbiBqdXN0IHRoZSBgQ09ORklHX0tWTV9BTURgIG9wdGlvbi4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRvIGNvbmZpcm0uIFRoaXMgaGFzIGltcGxpY2F0aW9ucyBmb3IgaG93IEFWSUMmIzM5O3MgZnVuY3Rpb25hbGl0aWVzIGFyZSBhY3RpdmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXZpY1xcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTY5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgS1ZNIHg4NiBNYWtlZmlsZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgcmlnaHQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIg4oCTIHRoZSBgYXJjaC94ODYva3ZtL01ha2VmaWxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBLVk0gbW9kdWxlcyBhbmQgcmVsZXZhbnQgeDg2LXNwZWNpZmljIGNvbXBvbmVudHMgYXJlIGJ1aWx0IGFuZCBsaW5rZWQgd2l0aGluIHRoZSBrZXJuZWwuIFRoaXMgTWFrZWZpbGUgaXMgZ29pbmcgdG8gYmUgdGhlIHJvYWRtYXAuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGtleSB2YXJpYWJsZXMsIGluY2x1ZGUgcGF0aHMsIHNvdXJjZSBmaWxlcywgYW5kIGFueSBzcGVjaWFsIGJ1aWxkIHJ1bGVzIHNwZWNpZmljIHRvIEtWTSB3aXRoaW4gdGhlIHg4NiBhcmNoaXRlY3R1cmUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgaW5mb3JtYXRpb24gYWJvdXQgaG93IEtWTSBpbnRlcmFjdHMgd2l0aCBmZWF0dXJlcyBsaWtlIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMgKFZULXggb3IgQU1ELVYpLCBtZW1vcnkgbWFuYWdlbWVudCwgYW5kIGludGVycnVwdCBoYW5kbGluZyBvbiB0aGUgeDg2IHBsYXRmb3JtLiBUaGUgZGVwZW5kZW5jaWVzIHdpbGwgbGlrZWx5IHJldmVhbCBob3cgaXQgaW50ZWdyYXRlcyBpbnRvIHRoZSBvdmVyYWxsIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQgdHJlYXN1cmVzIHRoaXMgTWFrZWZpbGUgaG9sZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F2aWNcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MjI9a3ZtLWludGVsLSQoQ09ORklHX0tWTV9JTlRFTF9URFgpXHQmIzQzOz0gdm14L3RkeC5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMjMtXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MjQ6a3ZtLWFtZC15XHRcdCYjNDM7PSBzdm0vc3ZtLm8gc3ZtL3ZtZW50ZXIubyBzdm0vcG11Lm8gc3ZtL25lc3RlZC5vIHN2bS9hdmljLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzNTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBDb21waWxhdGlvbiBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIHNvIGBzdm0vYXZpYy5vYC4uLiB0aGF0JiMzOTtzIGFsd2F5cyBidWlsdCwgbm8gcXVlc3Rpb24uIE5vdywgSSBuZWVkIHRvIGpvZyBteSBtZW1vcnkgYSBiaXQuIFdoZXJlIGRvZXMgYHZteF9waV91cGRhdGVfaXJ0ZWAgY29tZSBmcm9tPyBBaCwgdGhhdCYjMzk7cyByaWdodCwgaXQmIzM5O3MgYnVyaWVkIGluIGBwb3N0ZWRfaW50ci5jYC4gT2theSwgdGhhdCBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2hlY2sgdGhhdCBzcGVjaWZpYyBzb3VyY2UgZmlsZSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBidWlsZCBwcm9jZXNzLCB0byBzZWUgd2h5IEkmIzM5O20gYXNraW5nIHRoaXMgcXVlc3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Bvc3RlZF9pbnRyXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL01ha2VmaWxlPTE3PWt2bS1pbnRlbC15XHRcdCYjNDM7PSB2bXgvdm14Lm8gdm14L3ZtZW50ZXIubyB2bXgvcG11X2ludGVsLm8gdm14L3ZtY3MxMi5vIFxcXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MTg6XHRcdFx0ICAgdm14L25lc3RlZC5vIHZteC9wb3N0ZWRfaW50ci5vIHZteC9tYWluLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0xOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2NzgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgdGhlIGBwaV91cGRhdGVfaXJ0ZWAgQ29tcGlsYXRpb24qKgoKT2theSwgc28gYHZteC9wb3N0ZWRfaW50ci5vYCBpcyBhbHdheXMgY29tcGlsZWQsIHdoaWNoIG1lYW5zIGBwaV91cGRhdGVfaXJ0ZWAgaXMgKmFsd2F5cyogZ29pbmcgdG8gYmUgcHJlc2VudCBpbiBib3RoIGB2dF94ODZfb3BzYCBhbmQgYHN2bV94ODZfb3BzYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzLCB3aGF0IGhhcHBlbnMgaWYgYGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSlgIGdldHMgaW52b2tlZCB3aGVuIGBpcnFfYnlwYXNzYCBpc24mIzM5O3QgYWN0aXZlPyBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhIHN1YnRsZSBlcnJvciBjb25kaXRpb24uCgpBaCwgcmlnaHQsIHRoZSBwYXRjaCBqdXN0IG1vdmVzIGZyb20gYEtWTV9YODZfT1BfT1BUSU9OQUwocGlfdXBkYXRlX2lydGUpYCB0byBgS1ZNX1g4Nl9PUChwaV91cGRhdGVfaXJ0ZSlgLiBTbywgdGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiwgd2hlbiB0aGUgbW9kdWxlIGxvYWRzLCB3ZSYjMzk7cmUgZ29pbmcgdG8gaW50cm9kdWNlIGEgYFdBUk5fT04oIWt2bV94ODZfb3BzLmZ1bmMpYC4gQnV0IGJvdGggVk1YIGFuZCBTVk0gKmFsd2F5cyogc3VwcGx5IHRoaXMgZnVuY3Rpb24sIHNvIHRoYXQgYFdBUk5fT05gIHNob3VsZCBuZXZlciBhY3R1YWxseSB0cmlnZ2VyLiBXZSYjMzk7cmUgZWZmZWN0aXZlbHkgdHVybmluZyBhbiBvcHRpb25hbCBmdW5jdGlvbiBpbnRvIGEgbWFuZGF0b3J5IG9uZSwgd2hpY2ggaXMgc2FmZSBpbiB0aGlzIGNhc2UuCgpCdXQgaG9sZCBvbi4uLiBpcyB0aGVyZSBhbnkgb3RoZXIgbG9jYXRpb24gaW4gdGhlIGNvZGUgd2hlcmUgYGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSlgIGlzIHVzZWQsIGFuZCAqcHJldmlvdXNseSogdGhlcmUgd2FzIGEgY2hlY2sgdG8gc2VlIGlmIHRoZSBmdW5jdGlvbiB3YXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQ/IEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuIEkgbmVlZCB0byBzY2FuIGZvciBhbnkgaW5zdGFuY2VzIG9mIGBrdm1feDg2X2hhcyhwaV91cGRhdGVfaXJ0ZSlgIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgb3IgYXNzdW1wdGlvbnMgdGhhdCBjb3VsZCBiZSBicm9rZW4gYnkgdGhpcyBjaGFuZ2UuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGViYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV94ODZfaGFzXFwocGlfdXBkYXRlX2lydGVcXCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzNTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgYHBpX3VwZGF0ZV9pcnRlYCB2YXJpYWJsZS4qKiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8ga25vdyB3aGVyZSB0aGlzIHRoaW5nIGlzIGJlaW5nIHVzZWQuIElmIGl0JiMzOTtzIG5vdCBiZWluZyBjaGVja2VkIGFueXdoZXJlLCB0aGVuIGl0JiMzOTtzIGVmZmVjdGl2ZWx5IGRlYWQgY29kZSwgd2hpY2ggY291bGQgYmUgYSBzaW1wbGUgY2xlYW4tdXAuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiBpdCAqaXMqIGJlaW5nIGNoZWNrZWQsIEkgbmVlZCB0byBrbm93ICp3aGVyZSogYW5kICp3aHkqLiBJdHMgdXNhZ2Ugd2lsbCBkaWN0YXRlIGl0cyBpbXBvcnRhbmNlIGFuZCwgdGhlcmVmb3JlLCB0aGUgaW1wb3J0YW5jZSBvZiBhbnl0aGluZyByZWxhdGVkIHRvIGl0LiBVbmRlcnN0YW5kaW5nIGl0cyByb2xlIGlzIGtleSBiZWZvcmUgbWFraW5nIGFueSBqdWRnbWVudHMgb24gd2hhdCB0byBkbywgb3Igd2hldGhlciB0aGVyZSBpcyBhIGJ1Zy4gTGV0JiMzOTtzIHNlZSBpZiBJIGNhbiB0cmFjZSBpdHMgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BpX3VwZGF0ZV9pcnRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaXJxLmM9NDI2PXN0YXRpYyBib29sIGt2bV9pcnFfaXNfcG9zdGFibGUoc3RydWN0IGt2bV9sYXBpY19pcnEgKmlycSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDMyLVxuYXJjaC94ODYva3ZtL2lycS5jOjQzMzpzdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDM0LVx0XHRcdCAgICAgIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplbnRyeSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDY3LVxuYXJjaC94ODYva3ZtL2lycS5jOjQ2ODpcdHIgPSBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpKGlycWZkLCBpcnFmZC1cdTAwM2Vrdm0sIGhvc3RfaXJxLCBpcnFmZC1cdTAwM2Vnc2ksXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDY5LVx0XHRcdFx0XHQgdmNwdSwgaXJxLnZlY3Rvcik7XG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTQ4Mj1pbnQga3ZtX2FyY2hfaXJxX2J5cGFzc19hZGRfcHJvZHVjZXIoc3RydWN0IGlycV9ieXBhc3NfY29uc3VtZXIgKmNvbnMsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTQ5Ni1cdGlmIChpcnFmZC1cdTAwM2VpcnFfZW50cnkudHlwZSA9PSBLVk1fSVJRX1JPVVRJTkdfTVNJKSB7XG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDk3Olx0XHRyZXQgPSBrdm1fcGlfdXBkYXRlX2lydGUoaXJxZmQsIFx1MDAyNmlycWZkLVx1MDAzZWlycV9lbnRyeSk7XG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDk4LVx0XHRpZiAocmV0KSB7XG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTUwOD12b2lkIGt2bV9hcmNoX2lycV9ieXBhc3NfZGVsX3Byb2R1Y2VyKHN0cnVjdCBpcnFfYnlwYXNzX2NvbnN1bWVyICpjb25zLFxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy01MjctXHQgICAgV0FSTl9PTl9PTkNFKGlycWZkLVx1MDAzZWlycV9ieXBhc3NfdmNwdSkpIHtcbmFyY2gveDg2L2t2bS9pcnEuYzo1Mjg6XHRcdHJldCA9IGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgTlVMTCk7XG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTI5LVx0XHRpZiAocmV0KVxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYz01NDA9dm9pZCBrdm1fYXJjaF91cGRhdGVfaXJxZmRfcm91dGluZyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTU1Mi1cbmFyY2gveDg2L2t2bS9pcnEuYzo1NTM6XHRrdm1fcGlfdXBkYXRlX2lydGUoaXJxZmQsIG5ldyk7XG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTU0LX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYz05MDI9c3RhdGljIHZvaWQgc3ZtX2lyX2xpc3RfZGVsKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZClcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYy05MTQtXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYzo5MTU6aW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYy05MTYtXHRcdFx0dW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzE0PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQxOS1cdC5kZWxpdmVyX2ludGVycnVwdCA9IHN2bV9kZWxpdmVyX2ludGVycnVwdCxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQyMDpcdC5waV91cGRhdGVfaXJ0ZSA9IGF2aWNfcGlfdXBkYXRlX2lydGUsXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MjEtXHQuc2V0dXBfbWNlID0gc3ZtX3NldHVwX21jZSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTk1OT12b2lkIGF2aWNfcmVmcmVzaF9hcGljdl9leGVjX2N0cmwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6OTYwOmludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC05NjEtXHRcdFx0dW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTk3LVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6OTk4Olx0LnBpX3VwZGF0ZV9pcnRlID0gdm14X3BpX3VwZGF0ZV9pcnRlLFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTk5LVx0LnBpX3N0YXJ0X2J5cGFzcyA9IHZteF9waV9zdGFydF9ieXBhc3MsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jPTI5Nz12b2lkIHZteF9waV9zdGFydF9ieXBhc3Moc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYy0zMDQtXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmM6MzA1OmludCB2bXhfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMzA2LVx0XHQgICAgICAgdW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5oPTE2PWJvb2wgcGlfaGFzX3BlbmRpbmdfaW50ZXJydXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmg6MTc6aW50IHZteF9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaC0xOC1cdFx0ICAgICAgIHVuc2lnbmVkIGludCBob3N0X2lycSwgdWludDMyX3QgZ3Vlc3RfaXJxLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE0MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIERlZXAgaW50byBLVk0gSW50ZXJydXB0IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBga3ZtX3BpX3VwZGF0ZV9pcnRlYC4gSW50ZXJlc3RpbmcsIHRoaXMgZnVuY3Rpb24gc2VlbXMgbGlrZSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBpbnRlcnJ1cHQgbWFuYWdlbWVudCBwdXp6bGUsIGJ1dCB3YWl0Li4uaXQmIzM5O3Mgb25seSBjYWxsZWQgdW5kZXIgdmVyeSBzcGVjaWZpYyBjb25kaXRpb25zLCBuYW1lbHkgaWYgdGhlIGBpcnFjaGlwX2luX2tlcm5lbChrdm0pYCBjaGVjayBpcyB0cnVlIGFuZCBpZiBga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKWAgYWxzbyBldmFsdWF0ZXMgdG8gdHJ1ZS4gVGhhdCYjMzk7cyBhIGNydWNpYWwgYml0IG9mIGNvbmRpdGlvbmFsIGxvZ2ljIEkgbmVlZCB0byBiZSBhd2FyZSBvZiEgVG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY2FsbCBwYXRoLCBJIG5lZWQgdG8ga25vdyBleGFjdGx5IHdoYXQgYGt2bV9hcmNoX2hhc19pcnFfYnlwYXNzKClgIG1lYW5zLCBhbmQgd2hlcmUgaXQmIzM5O3MgYmVpbmcgdXNlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyBhbmQgd2hlcmUgaXQmIzM5O3MgZGVmaW5lZC4gVGltZSB0byBkcmlsbCBkb3duIG9uIHRoYXQgZnVuY3Rpb24hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX2hhc19pcnFfYnlwYXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaXJxLmM9NDMzPXN0YXRpYyBpbnQga3ZtX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDQxLVxuYXJjaC94ODYva3ZtL2lycS5jOjQ0MjpcdGlmIChXQVJOX09OX09OQ0UoIWlycWNoaXBfaW5fa2VybmVsKGt2bSkgfHwgIWt2bV9hcmNoX2hhc19pcnFfYnlwYXNzKCkpKVxuYXJjaC94ODYva3ZtL2lycS5jLTQ0My1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jPTE0Nz1zdGF0aWMgYm9vbCB2bXhfY2FuX3VzZV92dGRfcGkoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYy0xNTMtXHQgKi9cbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYzoxNTQ6XHRyZXR1cm4gaXJxY2hpcF9pbl9rZXJuZWwoa3ZtKSBcdTAwMjZcdTAwMjYga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKSBcdTAwMjZcdTAwMjZcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYy0xNTUtXHQgICAgICAgUkVBRF9PTkNFKGt2bS1cdTAwM2VhcmNoLm5yX3Bvc3NpYmxlX2J5cGFzc19pcnFzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3NDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS1ZNIElSUSBCeXBhc3MgTG9jYXRpb24gUXVhbmRhcnkqKgoKT2theSwgSSYjMzk7bSBqdXN0IHF1aWNrbHkgdHJ5aW5nIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoZXJlIGV4YWN0bHkgdGhhdCBga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKWAgZnVuY3Rpb24gaXMgZGVmaW5lZC4gSXMgaXQgdHVja2VkIGF3YXkgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AsIG9yIGlzIGl0IGRlY2xhcmVkIGluIHRoYXQgaGVhZGVyIGZpbGUsIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oYD8gSSAqa25vdyogSSYjMzk7dmUgd29ya2VkIHdpdGggaXQgYmVmb3JlLi4uIEl0JiMzOTtzIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgYmVjYXVzZSBJIGRvbiYjMzk7dCB3YW50IHRvIGNoYXNlIHRoZSB3cm9uZyBpbmNsdWRlIHBhdGggd2hlbiBJJiMzOTttIHRyYWNraW5nIHNvbWV0aGluZyBkb3duIG9yIGNoYW5naW5nIHRoZSBmdW5jdGlvbmFsaXR5IGFyb3VuZCB0aGUgYnlwYXNzLiBHb3R0YSBxdWlja2x5IHZlcmlmeSB0aGF0IGxvY2F0aW9uIHRvIGtlZXAgdGhpbmdzIGVmZmljaWVudC4gUmlnaHQsIGxldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0xODkyPXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fYXJjaF92Y3B1X3VuYmxvY2tpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTg5Ni1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTg5NzpzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3Modm9pZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTg5OC17XG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTQzMz1zdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTQ0MS1cbmFyY2gveDg2L2t2bS9pcnEuYzo0NDI6XHRpZiAoV0FSTl9PTl9PTkNFKCFpcnFjaGlwX2luX2tlcm5lbChrdm0pIHx8ICFrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpKSlcbmFyY2gveDg2L2t2bS9pcnEuYy00NDMtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYz0xNDc9c3RhdGljIGJvb2wgdm14X2Nhbl91c2VfdnRkX3BpKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMTUzLVx0ICovXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmM6MTU0Olx0cmV0dXJuIGlycWNoaXBfaW5fa2VybmVsKGt2bSkgXHUwMDI2XHUwMDI2IGt2bV9hcmNoX2hhc19pcnFfYnlwYXNzKCkgXHUwMDI2XHUwMDI2XG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMTU1LVx0ICAgICAgIFJFQURfT05DRShrdm0tXHUwMDNlYXJjaC5ucl9wb3NzaWJsZV9ieXBhc3NfaXJxcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDcxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBLVk0gSG9zdCBIZWFkZXIqKgoKT2theSwgSSBuZWVkIHRvIGludmVzdGlnYXRlIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSB4ODYgS1ZNIGhvc3QgaW1wbGVtZW50YXRpb24uIExldCYjMzk7cyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGEgbGlrZWx5IGFyZWEuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gcHJvdG90eXBlcyByZWxhdGVkIHRvIEtWTSYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBob3N0IENQVSBhcmUgb2Z0ZW4gZGVmaW5lZCBuZWFyIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgd2l0aGluIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oYC4gQW5kIGtub3dpbmcgdGhlIHByb2plY3QsIGxpbmVzIDE4OTctaXNoIHNob3VsZCBiZSBhIGdvb2QgcGxhY2UgdG8gYmVnaW4uIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB5b3UgZmluZCB0aGUgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byB0aGUgbW9yZSBhZHZhbmNlZCBDUFUgZmVhdHVyZXMgYW5kIHJlZ2lzdGVycyBhbmQgdGhlaXIgZW11bGF0aW9uIHdpdGhpbiBLVk0gb24geDg2LiBUaGlzIHdpbGwgZWl0aGVyIGJlIHRoZSBzb3VyY2Ugb3IgYW4gZW50cnkgcG9pbnQgdG8gdGhlIHNvdXJjZSBvZiB3aGF0ZXZlciBpdCBpcyBJIGFtIGFmdGVyLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4OTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTg5NTpcdH1cbjE4OTY6XHRcbjE4OTc6XHRzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3Modm9pZClcbjE4OTg6XHR7XG4xODk5Olx0XHRyZXR1cm4gZW5hYmxlX2RldmljZV9wb3N0ZWRfaXJxcztcbjE5MDA6XHR9XG4xOTAxOlx0XG4xOTAyOlx0I2VuZGlmIC8qIF9BU01fWDg2X0tWTV9IT1NUX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4NTIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIGBwaV91cGRhdGVfaXJ0ZWAqKgoKT2theSwgc28gYGt2bV9hcmNoX2hhc19pcnFfYnlwYXNzKClgIGhpbmdlcyBvbiBgZW5hYmxlX2RldmljZV9wb3N0ZWRfaXJxc2AsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgZWl0aGVyIGEgbW9kdWxlIHBhcmFtZXRlciBvciBhIGdsb2JhbCB2YXJpYWJsZS4gVGhpcyBwYXRjaCBtYWtlcyBgcGlfdXBkYXRlX2lydGVgIGEgbWFuZGF0b3J5IEtWTSB4ODYgb3BlcmF0aW9uLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyBhY3R1YWxseSAqZG8qIGFueXRoaW5nPwoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlcmUmIzM5O3Mgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBwYXRjaCByZW1vdmVzIHRoZSBmYWxsYmFjayB0byBgTlVMTGAgZm9yIGBwaV91cGRhdGVfaXJ0ZWAgaW4gYGt2bV94ODZfb3BzYC4gQnV0LCBpdCBzZWVtcyBsaWtlIGJvdGggVk1YIGFuZCBTVk0gYWx3YXlzIHByb3ZpZGVkIHRoaXMsIHNvIGl0IHdhcyBuZXZlciBgTlVMTGAgaW4gcHJhY3RpY2UuIFRoZSBgc3RhdGljX2NhbGxfdXBkYXRlYCB3b3VsZCBoYXZlIHNldCBpdCB0byBgTlVMTGAgb25seSBpZiB0aGUgaW1wbGVtZW50YXRpb24gZGlkbiYjMzk7dCBzdXBwbHkgaXQuCgpIYW5nIG9uLCB3aGF0IGFib3V0IHdoZW4gYGVuYWJsZV9kZXZpY2VfcG9zdGVkX2lycXNgIGlzIGZhbHNlPyBUaGVuIGBrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpYCBpcyBmYWxzZSwgYW5kIGBrdm1fcGlfdXBkYXRlX2lydGVgIHJldHVybnMgYC1FSU5WQUxgIGVhcmx5LCBieXBhc3NpbmcgdGhlIHdob2xlIGBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpYCBjYWxsLiBSaWdodC4gU28sIGl0IHJlYWxseSBqdXN0IHR3ZWFrcyB0aGUgZGVmaW5pdGlvbiBpbiBga3ZtLXg4Ni1vcHMuaGAuCgpEb2VzIGl0IGNoYW5nZSBiZWhhdmlvciB0aGVuPyBJZiBib3RoIFZNWCBhbmQgU1ZNICphbHdheXMqIHByb3ZpZGVkIGBwaV91cGRhdGVfaXJ0ZWAsIG1ha2luZyBpdCBtYW5kYXRvcnkgc2VlbXMgdG8ganVzdCBhZGQgYSBgV0FSTl9PTigha3ZtX3g4Nl9vcHMuZnVuYylgIGR1cmluZyBpbml0aWFsaXphdGlvbi4gQnV0IHRoYXQgYFdBUk5fT05gIHNob3VsZCBuZXZlciB0cmlnZ2VyLCBiZWNhdXNlIHRoZSBmdW5jdGlvbnMgYXJlIGFsd2F5cyBwcm92aWRlZC4gQW5kLCBhcyBmYXIgYXMgSSYjMzk7bSBhd2FyZSwgS1ZNIHg4NiAqb25seSogaGFzIFZNWCBhbmQgU1ZNLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQuLi4gTm8gb3RoZXIgYXJjaGl0ZWN0dXJlcyBhcmUgcmVsZXZhbnQuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggZm9yIG90aGVyIHVzZXMgb2YgYHBpX3VwZGF0ZV9pcnRlYC4uLiBObywgdGhlIGdyZXBzIGNhbWUgdXAgZW1wdHkuCgpTbywgdGhpcyBsb29rcyBsaWtlIGEgY2xlYW51cCBwYXRjaCwgZXNzZW50aWFsbHkgZGVjbGFyaW5nIGFuIG9wZXJhdGlvbiBtYW5kYXRvcnkgYmVjYXVzZSBhbGwgaW1wbGVtZW50YXRpb25zIGFscmVhZHkgcHJvdmlkZSBpdC4gSXQgc2VlbXMgdG8ganVzdCBiZSBtYWtpbmcgdGhlIG1hY3JvIGZyb20gYEtWTV9YODZfT1BfT1BUSU9OQUxgIHRvIGBLVk1fWDg2X09QYC4gIFNpbmNlIGJvdGggaW1wbGVtZW50YXRpb25zICphbHdheXMqIHByb3ZpZGVkIGl0LCB0aGVuIHRoZSBvbmx5IHJlYWwgY2hhbmdlIGlzIHRoZSBhZGRlZCBgV0FSTl9PTmAgZHVyaW5nIG1vZHVsZSBsb2FkLCBhbmQgdGhhdCBzaG91bGQgYmUgdW5yZWFjaGFibGUuCgpPa2F5LCBsZXQgbWUgZG91YmxlLWNoZWNrLiBJbiBgdnRfeDg2X29wc2AsIGl0JiMzOTtzIHNldCB0byBgdm14X3BpX3VwZGF0ZV9pcnRlYC4gSW4gYHN2bV94ODZfb3BzYCwgaXQmIzM5O3Mgc2V0IHRvIGBhdmljX3BpX3VwZGF0ZV9pcnRlYC4gQXJlIHRoZXNlIGluaXRpYWxpemF0aW9ucyBjb25kaXRpb25hbCBpbiBhbnkgd2F5PyBObywgdGhleSBhcHBlYXIgdG8gYmUgZGlyZWN0IGFzc2lnbm1lbnRzLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIGlzIGZ1enppbmcgaXQgZXZlbiB3b3J0aHdoaWxlPyBJdCBzZWVtcyBsaWtlIGEgdmVyeSBsb3ctaW1wYWN0IGNoYW5nZSB0aGF0IHJlYWxseSBvbmx5IGFmZmVjdHMgYSBgV0FSTl9PTmAgd2hpY2ggd2lsbCBuZXZlciBiZSBoaXQsIHNvIGl0JiMzOTtzIGEgcGFzcyBmb3IgZnV6emluZyB1bmxlc3MgdGhlcmUmIzM5O3Mgc29tZSBzdWJ0bGUgaW50ZXJhY3Rpb24gSSYjMzk7bSBtaXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtcXC5waV91cGRhdGVfaXJ0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzE0PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQxOS1cdC5kZWxpdmVyX2ludGVycnVwdCA9IHN2bV9kZWxpdmVyX2ludGVycnVwdCxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQyMDpcdC5waV91cGRhdGVfaXJ0ZSA9IGF2aWNfcGlfdXBkYXRlX2lydGUsXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MjEtXHQuc2V0dXBfbWNlID0gc3ZtX3NldHVwX21jZSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYz04ODA9c3RydWN0IGt2bV94ODZfb3BzIHZ0X3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTctXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzo5OTg6XHQucGlfdXBkYXRlX2lydGUgPSB2bXhfcGlfdXBkYXRlX2lydGUsXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTktXHQucGlfc3RhcnRfYnlwYXNzID0gdm14X3BpX3N0YXJ0X2J5cGFzcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ0MTUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYSBLVk0gQ29kZSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgS1ZNIGNvZGUgY2hhbmdlIHJlbGF0ZWQgdG8gYGt2bV94ODZfb3BzLnBpX3VwZGF0ZV9pcnRlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgdW5jb25kaXRpb25hbGx5IGluaXRpYWxpemVkIHdpdGhpbiB0aGUgc3RydWN0IGRlZmluaXRpb24uIFRoZXJlZm9yZSwgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgYGt2bV94ODZfb3BzLnBpX3VwZGF0ZV9pcnRlYCAqc2hvdWxkKiBuZXZlciBiZSBOVUxMLgoKQ29uc2VxdWVudGx5LCBzd2l0Y2hpbmcgZnJvbSBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgdG8gYEtWTV9YODZfT1BgIHNlZW1zIGxpa2UgaXQmIzM5O3MganVzdCBhIGNvc21ldGljIGNoYW5nZSDigJMgcHJpbWFyaWx5IG1vZGlmeWluZyB0aGUgc3RhdGljIGNhbGwgdXBkYXRlIG1hY3JvIHRvIGluY2x1ZGUgYSBgV0FSTl9PTigha3ZtX3g4Nl9vcHMuZnVuYylgLiBBbmQgc2luY2UgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaXMgKm5ldmVyKiBOVUxMLCB0aGlzIGBXQVJOX09OYCB3aWxsIGFsd2F5cyBiZSB1bnJlYWNoYWJsZS4gSW4gZXNzZW5jZSwgaXQgYXBwZWFycyB0aGVyZSYjMzk7cyBubyBhY3R1YWwgZnVuY3Rpb25hbCBkaWZmZXJlbmNlLiBUaGUgY29kZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYXQgcnVudGltZSByZW1haW5zIGV4YWN0bHkgdGhlIHNhbWUg4oCTIGp1c3QgYSBzdGF0aWMgY2FsbCB0byB0aGUgaW50ZW5kZWQgZnVuY3Rpb24uCgpCdXQsIGhhbmcgb24gYSBzZWNvbmQuLi4gaXMgdGhlcmUgZXZlbiBhICpwZXJmb3JtYW5jZSogZGlmZmVyZW5jZSwgc29tZSBzb3J0IG9mIG92ZXJoZWFkIGFzc29jaWF0ZWQgd2l0aCBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgY29tcGFyZWQgdG8ganVzdCBgS1ZNX1g4Nl9PUGA/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgYGFyY2gveDg2L2t2bS94ODYuY2AgYWdhaW4uIEkgaGF2ZSB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgc3VidGxlIGltcGFjdHMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2OTQ2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY5NDY6XHQjZGVmaW5lIF9fS1ZNX1g4Nl9PUChmdW5jKSBcXFxuNjk0NzpcdFx0c3RhdGljX2NhbGxfdXBkYXRlKGt2bV94ODZfIyNmdW5jLCBrdm1feDg2X29wcy5mdW5jKTtcbjY5NDg6XHQjZGVmaW5lIEtWTV9YODZfT1AoZnVuYykgXFxcbjY5NDk6XHRcdFdBUk5fT04oIWt2bV94ODZfb3BzLmZ1bmMpOyBfX0tWTV9YODZfT1AoZnVuYylcbjY5NTA6XHQjZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgX19LVk1fWDg2X09QXG42OTUxOlx0I2RlZmluZSBLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZnVuYykgXFxcbjY5NTI6XHRcdHN0YXRpY19jYWxsX3VwZGF0ZShrdm1feDg2XyMjZnVuYywgKHZvaWQgKilrdm1feDg2X29wcy5mdW5jID8gOiBcXFxuNjk1MzpcdFx0XHRcdFx0XHQgICAodm9pZCAqKV9fc3RhdGljX2NhbGxfcmV0dXJuMCk7XG42OTU0Olx0I2luY2x1ZGUgXHUwMDNjYXNtL2t2bS14ODYtb3BzLmhcdTAwM2VcbjY5NTU6XHQjdW5kZWYgX19LVk1fWDg2X09QXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MjMyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIFg4NiBPcGVyYXRpb25zIENvZGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgaXMsIGZvciBhbGwgaW50ZW50cyBhbmQgcHVycG9zZXMsICppZGVudGljYWwqIHRvIGBfX0tWTV9YODZfT1BgLiBUaGUgbGF0dGVyIGlzIGp1c3QgYSB3cmFwcGVyIGNvbnRhaW5pbmcgYFdBUk5fT04oIWt2bV94ODZfb3BzLmZ1bmMpOyBfX0tWTV9YODZfT1AoZnVuYylgLiBUaGUgb25seSByZWFsIHZhcmlhdGlvbiBhcmlzZXMgZHVyaW5nIGBrdm1fb3BzX3VwZGF0ZSgpYC4gSGVyZSwgdGhlIGBXQVJOX09OYCBjaGVjayBpcyBhcHBsaWVkLgoKQnV0IGhhbmcgb24sIHRoYXQgYFdBUk5fT05gIGlzIGFsbW9zdCBjZXJ0YWlubHkgYSBub24tZXZlbnQuIExvb2tpbmcgYXQgdGhlIGluaXRpYWxpemF0aW9uLCBga3ZtX3g4Nl9vcHMucGlfdXBkYXRlX2lydGVgIGlzIHN0YXRpY2FsbHkgc2V0IHRvIGEgdmFsaWQgZnVuY3Rpb24gcG9pbnRlciBpbiBib3RoIFZNWCBhbmQgU1ZNIGltcGxlbWVudGF0aW9ucy4gVGhhdCBtZWFucyB0aGUgd2FybmluZyBjb25kaXRpb24gaXMgdmlydHVhbGx5IGltcG9zc2libGUuCgpTbywgcmVhbGlzdGljYWxseSwgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IGFjdHVhbCBmdW5jdGlvbmFsIGFsdGVyYXRpb25zIHRoYXQgd291bGQgZXZlbiBiZSB3b3J0aCBmdXp6aW5nLiBJdCByZWFsbHkganVzdCBzZWVtcyBsaWtlIGEgc3RydWN0dXJhbCBjbGVhbnVwIG9yIGNvZGUgaHlnaWVuZSBraW5kIG9mIGNoYW5nZS4KCkJ1dCwgYXMgYSBnb29kIHByYWN0aWNlLCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2ssIGp1c3QgdG8gYmUgc3VyZSwgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBzbmVha3kgaW5zdGFuY2VzIHdoZXJlIHRoZXNlIG1hY3JvcyBhY3R1YWxseSBiZWhhdmUgZGlmZmVyZW50bHkuIE9uZSBmaW5hbCBzd2VlcCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S1ZNX1g4Nl9PUF9PUFRJT05BTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTItI2lmICFkZWZpbmVkKEtWTV9YODZfT1ApIHx8IFxcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM6ICAgICFkZWZpbmVkKEtWTV9YODZfT1BfT1BUSU9OQUwpIHx8IFxcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ6ICAgICFkZWZpbmVkKEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtNS0jZXJyb3IgTWlzc2luZyBvbmUgb3IgbW9yZSBLVk1fWDg2X09QICNkZWZpbmVzXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC03LS8qXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjg6ICogS1ZNX1g4Nl9PUCgpIGFuZCBLVk1fWDg2X09QX09QVElPTkFMKCkgYXJlIHVzZWQgdG8gaGVscCBnZW5lcmF0ZVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC05LSAqIGJvdGggREVDTEFSRS9ERUZJTkVfU1RBVElDX0NBTEwoKSBpbnZvY2F0aW9ucyBhbmRcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTExLSAqXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEyOiAqIEtWTV9YODZfT1BfT1BUSU9OQUwoKSBjYW4gYmUgdXNlZCBmb3IgdGhvc2UgZnVuY3Rpb25zIHRoYXQgY2FuIGhhdmVcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM6ICogYSBOVUxMIGRlZmluaXRpb24uICBLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoKSBjYW4gYmUgdXNlZCBsaWtld2lzZVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNC0gKiB0byBtYWtlIGEgZGVmaW5pdGlvbiBvcHRpb25hbCwgYnV0IGluIHRoaXMgY2FzZSB0aGUgZGVmYXVsdCB3aWxsXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD0yMz1LVk1fWDg2X09QKHZtX2luaXQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjI0OktWTV9YODZfT1BfT1BUSU9OQUwodm1fZGVzdHJveSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjU6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2bV9wcmVfZGVzdHJveSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHZjcHVfcHJlY3JlYXRlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0yNy1LVk1fWDg2X09QKHZjcHVfY3JlYXRlKVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9NDM9S1ZNX1g4Nl9PUChzZXRfY3IwKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo0NDpLVk1fWDg2X09QX09QVElPTkFMKHBvc3Rfc2V0X2NyMylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtNDUtS1ZNX1g4Nl9PUChpc192YWxpZF9jcjQpXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD01OT1LVk1fWDg2X09QKGZsdXNoX3RsYl9jdXJyZW50KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC02MC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSFlQRVJWKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2MTpLVk1fWDg2X09QX09QVElPTkFMKGZsdXNoX3JlbW90ZV90bGJzKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2MjpLVk1fWDg2X09QX09QVElPTkFMKGZsdXNoX3JlbW90ZV90bGJzX3JhbmdlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC02My0jZW5kaWZcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTY5PUtWTV9YODZfT1Aoc2tpcF9lbXVsYXRlZF9pbnN0cnVjdGlvbilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzA6S1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfZW11bGF0ZWRfaW5zdHJ1Y3Rpb24pXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTcxLUtWTV9YODZfT1Aoc2V0X2ludGVycnVwdF9zaGFkb3cpXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD03NT1LVk1fWDg2X09QKGluamVjdF9ubWkpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjc2OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChpc192bm1pX3BlbmRpbmcpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjc3OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChzZXRfdm5taV9wZW5kaW5nKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC03OC1LVk1fWDg2X09QKGluamVjdF9leGNlcHRpb24pXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD04NT1LVk1fWDg2X09QKGVuYWJsZV9pcnFfd2luZG93KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4NjpLVk1fWDg2X09QX09QVElPTkFMKHVwZGF0ZV9jcjhfaW50ZXJjZXB0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC04Ny1LVk1fWDg2X09QKHJlZnJlc2hfYXBpY3ZfZXhlY19jdHJsKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4ODpLVk1fWDg2X09QX09QVElPTkFMKGh3YXBpY19pc3JfdXBkYXRlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4OTpLVk1fWDg2X09QX09QVElPTkFMKGxvYWRfZW9pX2V4aXRtYXApXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjkwOktWTV9YODZfT1BfT1BUSU9OQUwoc2V0X3ZpcnR1YWxfYXBpY19tb2RlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5MTpLVk1fWDg2X09QX09QVElPTkFMKHNldF9hcGljX2FjY2Vzc19wYWdlX2FkZHIpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTkyLUtWTV9YODZfT1AoZGVsaXZlcl9pbnRlcnJ1cHQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjkzOktWTV9YODZfT1BfT1BUSU9OQUwoc3luY19waXJfdG9faXJyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NDpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X3Rzc19hZGRyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NTpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X2lkZW50aXR5X21hcF9hZGRyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZ2V0X210X21hc2spXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjk3OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCh0ZHBfaGFzX3NtZXApXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTk4LUtWTV9YODZfT1AobG9hZF9tbXVfcGdkKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5OTpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X2V4dGVybmFsX3NwdGUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwMDpLVk1fWDg2X09QX09QVElPTkFMKGZyZWVfZXh0ZXJuYWxfc3B0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xMDEtS1ZNX1g4Nl9PUChoYXNfd2JpbnZkX2V4aXQpXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD0xMDk9S1ZNX1g4Nl9PUChoYW5kbGVfZXhpdF9pcnFvZmYpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExMDpLVk1fWDg2X09QX09QVElPTkFMKHVwZGF0ZV9jcHVfZGlydHlfbG9nZ2luZylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTExOktWTV9YODZfT1BfT1BUSU9OQUwodmNwdV9ibG9ja2luZylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTEyOktWTV9YODZfT1BfT1BUSU9OQUwodmNwdV91bmJsb2NraW5nKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xMTMtS1ZNX1g4Nl9PUChwaV91cGRhdGVfaXJ0ZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE0OktWTV9YODZfT1BfT1BUSU9OQUwocGlfc3RhcnRfYnlwYXNzKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTU6S1ZNX1g4Nl9PUF9PUFRJT05BTChhcGljdl9wcmVfc3RhdGVfcmVzdG9yZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE2OktWTV9YODZfT1BfT1BUSU9OQUwoYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTc6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGR5X2FwaWN2X2hhc19wZW5kaW5nX2ludGVycnVwdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE4OktWTV9YODZfT1BfT1BUSU9OQUwocHJvdGVjdGVkX2FwaWNfaGFzX2ludGVycnVwdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE5OktWTV9YODZfT1BfT1BUSU9OQUwoc2V0X2h2X3RpbWVyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjA6S1ZNX1g4Nl9PUF9PUFRJT05BTChjYW5jZWxfaHZfdGltZXIpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEyMS1LVk1fWDg2X09QKHNldHVwX21jZSlcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTEyNj1LVk1fWDg2X09QKGVuYWJsZV9zbWlfd2luZG93KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xMjctI2VuZGlmXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEyODpLVk1fWDg2X09QX09QVElPTkFMKGRldl9nZXRfYXR0cilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI5OktWTV9YODZfT1BfT1BUSU9OQUwobWVtX2VuY19pb2N0bClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTMwOktWTV9YODZfT1BfT1BUSU9OQUwodmNwdV9tZW1fZW5jX2lvY3RsKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzE6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2Y3B1X21lbV9lbmNfdW5sb2NrZWRfaW9jdGwpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzMjpLVk1fWDg2X09QX09QVElPTkFMKG1lbV9lbmNfcmVnaXN0ZXJfcmVnaW9uKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzM6S1ZNX1g4Nl9PUF9PUFRJT05BTChtZW1fZW5jX3VucmVnaXN0ZXJfcmVnaW9uKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzQ6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2bV9jb3B5X2VuY19jb250ZXh0X2Zyb20pXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzNTpLVk1fWDg2X09QX09QVElPTkFMKHZtX21vdmVfZW5jX2NvbnRleHRfZnJvbSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM2OktWTV9YODZfT1BfT1BUSU9OQUwoZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM3OktWTV9YODZfT1BfT1BUSU9OQUwocmVsb2FkX3Ztc2EpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEzOC1LVk1fWDg2X09QKGdldF9mZWF0dXJlX21zcilcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTE0MD1LVk1fWDg2X09QKGFwaWNfaW5pdF9zaWduYWxfYmxvY2tlZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQxOktWTV9YODZfT1BfT1BUSU9OQUwoZW5hYmxlX2wyX3RsYl9mbHVzaClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQyOktWTV9YODZfT1BfT1BUSU9OQUwobWlncmF0ZV90aW1lcnMpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE0My1LVk1fWDg2X09QKHJlY2FsY19pbnRlcmNlcHRzKVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9MTQ1PUtWTV9YODZfT1AodmNwdV9kZWxpdmVyX3NpcGlfdmVjdG9yKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHZjcHVfZ2V0X2FwaWN2X2luaGliaXRfcmVhc29ucyk7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0NzpLVk1fWDg2X09QX09QVElPTkFMKGdldF91bnRhZ2dlZF9hZGRyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDg6S1ZNX1g4Nl9PUF9PUFRJT05BTChhbGxvY19hcGljX2JhY2tpbmdfcGFnZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTQ5LSNpZmRlZiBDT05GSUdfSEFWRV9LVk1fQVJDSF9HTUVNX1BSRVBBUkVcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTUwOktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChnbWVtX3ByZXBhcmUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE1MS0jZW5kaWZcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTUyOktWTV9YODZfT1BfT1BUSU9OQUwoZ21lbV9pbnZhbGlkYXRlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTMtI2lmZGVmIENPTkZJR19IQVZFX0tWTV9BUkNIX0dNRU1fSU5WQUxJREFURVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNTQ6S1ZNX1g4Nl9PUF9PUFRJT05BTChnbWVtX2ludmFsaWRhdGVfcmFuZ2UpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE1NS0jZW5kaWZcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTU2OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChnbWVtX21heF9tYXBwaW5nX2xldmVsKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTctI2VuZGlmXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTktI3VuZGVmIEtWTV9YODZfT1BcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTYwOiN1bmRlZiBLVk1fWDg2X09QX09QVElPTkFMXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE2MTojdW5kZWYgS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0xNzg3PWV4dGVybiBzdHJ1Y3Qga3ZtX3g4Nl9uZXN0ZWRfb3BzIGt2bV9uZXN0ZWRfb3BzIF9fcmVhZF9tb3N0bHk7XG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNzkyLVx0REVDTEFSRV9TVEFUSUNfQ0FMTChrdm1feDg2XyMjZnVuYywgKigoKHN0cnVjdCBrdm1feDg2X29wcyAqKTApLVx1MDAzZWZ1bmMpKTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTc5MzojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgS1ZNX1g4Nl9PUFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoxNzk0OiNkZWZpbmUgS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwIEtWTV9YODZfT1BcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTc5NS0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtLXg4Ni1vcHMuaFx1MDAzZVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xNjY9c3RydWN0IGt2bV94ODZfbmVzdGVkX29wcyBrdm1fbmVzdGVkX29wcyBfX3JlYWRfbW9zdGx5O1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xNzAtXHRcdFx0XHQqKCgoc3RydWN0IGt2bV94ODZfb3BzICopMCktXHUwMDNlZnVuYykpO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjE3MTojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgS1ZNX1g4Nl9PUFxuYXJjaC94ODYva3ZtL3g4Ni5jOjE3MjojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCBLVk1fWDg2X09QXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTczLSNpbmNsdWRlIFx1MDAzY2FzbS9rdm0teDg2LW9wcy5oXHUwMDNlXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTY5NDI9c3RhdGljIGlubGluZSB2b2lkIGt2bV9vcHNfdXBkYXRlKHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTY5NDktXHRXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKTsgX19LVk1fWDg2X09QKGZ1bmMpXG5hcmNoL3g4Ni9rdm0veDg2LmM6Njk1MDojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgX19LVk1fWDg2X09QXG5hcmNoL3g4Ni9rdm0veDg2LmM6Njk1MTojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChmdW5jKSBcXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTY5NTItXHRzdGF0aWNfY2FsbF91cGRhdGUoa3ZtX3g4Nl8jI2Z1bmMsICh2b2lkICopa3ZtX3g4Nl9vcHMuZnVuYyA/IDogXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA0NzgKCQkJCQkJCW91dHB1dDogMTA3CgkJCQkJCQl0aG91Z2h0czogMjU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNX1g4Nl9PUF9PUFRJT05BTCBDaGFuZ2UqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgaXMganVzdCBhIG1hY3JvLCBlZmZlY3RpdmVseSBleHBhbmRpbmcgdG8gYHN0YXRpY19jYWxsX3VwZGF0ZWAsIHdoaWNoIGluIHR1cm4sIGlzIGNhbGxpbmcgYGt2bV94ODZfb3BzLmZ1bmNgLiAgVGhlIGtleSBoZXJlIGlzIHRoYXQgaWYgYGt2bV94ODZfb3BzLmZ1bmNgIGlzIE5VTEwsIHRoZW4gdGhlIHN0YXRpYyBjYWxsIGdldHMgdXBkYXRlZCB0byBOVUxMLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gYHBpX3VwZGF0ZV9pcnRlYCAqbmV2ZXIqIHNlZW1zIHRvIGJlIE5VTEwuIFRoZXJlZm9yZSwgdGhlIGNoYW5nZSB0byBgS1ZNX1g4Nl9PUGAgc2ltcGx5IHRocm93cyBpbiBhIGBXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKWAgY2hlY2suCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhIHN0cnVjdHVyYWwgY2hhbmdlLCBhbmQgbm90aGluZyBtb3JlLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBmb3JjaW5nIGFsbCBLVk0geDg2IGltcGxlbWVudGF0aW9ucyB0byBwcm92aWRlIHRoaXMgYHBpX3VwZGF0ZV9pcnRlYCBmdW5jdGlvbiwgYWRkaW5nIGFuIGVhcmx5IGNoZWNrIGF0IG1vZHVsZSBsb2FkIHRvIGVuc3VyZSBpdHMgcHJlc2VuY2UuIEhvd2V2ZXIsIHNpbmNlIGFsbCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSAqZG8qIHByb3ZpZGUgaXQsIHRoZSBhY3R1YWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbCByZW1haW5zIHVuY2hhbmdlZC4gVGhlcmUmIzM5O3Mgbm8gZGV0ZWN0YWJsZSBtb2RpZmljYXRpb24gdG8gYW55IGNvcmUga2VybmVsIGxvZ2ljIHJlYWNoYWJsZSB0aHJvdWdoIHN0YW5kYXJkIG1lYW5zLCBhbmQgc28gaXQgY2FuJiMzOTt0IGJlIGZ1enplZCBpbiBhbnkgbWVhbmluZ2Z1bCB3YXkuCgpHaXZlbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTttIGNvbmZpZGVudCBpbiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByYXRpb25hbGUgaXMgdGhhdCB0aGlzIGlzIHB1cmVseSBzdHJ1Y3R1cmFsLCBhIHNpbXBsZSBlbmZvcmNlbWVudCBvZiBhbiBleGlzdGluZyByZXF1aXJlbWVudC4gVGhpcyBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGNoYW5nZXMgb3IgZXhwb3NlIGFueSBuZXcgY29kZSBwYXRocyB0byBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGBwaV91cGRhdGVfaXJ0ZWAgS1ZNIHg4NiBvcGVyYXRpb24gZnJvbSBvcHRpb25hbCB0byBtYW5kYXRvcnkuIFRoaXMgb25seSBhZGRzIGEgYFdBUk5fT05gIGNoZWNrIGR1cmluZyBLVk0gbW9kdWxlIGluaXRpYWxpemF0aW9uIHRvIGVuc3VyZSB0aGUgZnVuY3Rpb24gcG9pbnRlciBpcyBwcm92aWRlZC4gU2luY2UgYm90aCBWTVggYW5kIFNWTSBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSB1bmNvbmRpdGlvbmFsbHkgcHJvdmlkZSB0aGlzIGZ1bmN0aW9uLCB0aGUgd2FybmluZyBpcyB1bnJlYWNoYWJsZSBhbmQgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgYHBpX3VwZGF0ZV9pcnRlYCBLVk0geDg2IG9wZXJhdGlvbiBmcm9tIG9wdGlvbmFsIHRvIG1hbmRhdG9yeS4gVGhpcyBvbmx5IGFkZHMgYSBgV0FSTl9PTmAgY2hlY2sgZHVyaW5nIEtWTSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gdG8gZW5zdXJlIHRoZSBmdW5jdGlvbiBwb2ludGVyIGlzIHByb3ZpZGVkLiBTaW5jZSBib3RoIFZNWCBhbmQgU1ZNIGltcGxlbWVudGF0aW9ucyBhbHJlYWR5IHVuY29uZGl0aW9uYWxseSBwcm92aWRlIHRoaXMgZnVuY3Rpb24sIHRoZSB3YXJuaW5nIGlzIHVucmVhY2hhYmxlIGFuZCB0aGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTc6MTEuODk0MTcwMDgxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3MDQxMjczMTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgcGlfdXBkYXRlX2lydGVgIEtWTSB4ODYgb3BlcmF0aW9uIGZyb20gb3B0aW9uYWwgdG8gbWFuZGF0b3J5LiBUaGlzIG9ubHkgYWRkcyBhIGBXQVJOX09OYCBjaGVjayBkdXJpbmcgS1ZNIG1vZHVsZSBpbml0aWFsaXphdGlvbiB0byBlbnN1cmUgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaXMgcHJvdmlkZWQuIFNpbmNlIGJvdGggVk1YIGFuZCBTVk0gaW1wbGVtZW50YXRpb25zIGFscmVhZHkgdW5jb25kaXRpb25hbGx5IHByb3ZpZGUgdGhpcyBmdW5jdGlvbiwgdGhlIHdhcm5pbmcgaXMgdW5yZWFjaGFibGUgYW5kIHRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCdzIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTc6MTEuODk0MTc1NjIxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDg0Njk2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxYzgzYmQzZTNhMzlkMjI3NjFjNjI5ZGNhMTkxMmY3MThiYWFkMTA5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDE1OjU3OjEwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXFxuaW5kZXggNzM2MTI5ZGIyNzJhYmMuLjBhY2ZlMTU2NDNlMWMwIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXFxuQEAgLTExMCw3ICsxMTAsNyBAQCBLVk1fWDg2X09QKGhhbmRsZV9leGl0X2lycW9mZilcXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfY3B1X2RpcnR5X2xvZ2dpbmcpXFxuIEtWTV9YODZfT1BfT1BUSU9OQUwodmNwdV9ibG9ja2luZylcXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTCh2Y3B1X3VuYmxvY2tpbmcpXFxuLUtWTV9YODZfT1BfT1BUSU9OQUwocGlfdXBkYXRlX2lydGUpXFxuK0tWTV9YODZfT1AocGlfdXBkYXRlX2lydGUpXFxuIEtWTV9YODZfT1BfT1BUSU9OQUwocGlfc3RhcnRfYnlwYXNzKVxcbiBLVk1fWDg2X09QX09QVElPTkFMKGFwaWN2X3ByZV9zdGF0ZV9yZXN0b3JlKVxcbiBLVk1fWDg2X09QX09QVElPTkFMKGFwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTc6MTIuNDQzNDg3OTY5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTY0OTE5NDg3MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGBwaV91cGRhdGVfaXJ0ZWAgS1ZNIHg4NiBvcGVyYXRpb24gZnJvbSBvcHRpb25hbCB0byBtYW5kYXRvcnkuIFRoaXMgb25seSBhZGRzIGEgYFdBUk5fT05gIGNoZWNrIGR1cmluZyBLVk0gbW9kdWxlIGluaXRpYWxpemF0aW9uIHRvIGVuc3VyZSB0aGUgZnVuY3Rpb24gcG9pbnRlciBpcyBwcm92aWRlZC4gU2luY2UgYm90aCBWTVggYW5kIFNWTSBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSB1bmNvbmRpdGlvbmFsbHkgcHJvdmlkZSB0aGlzIGZ1bmN0aW9uLCB0aGUgd2FybmluZyBpcyB1bnJlYWNoYWJsZSBhbmQgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFjODNiZDNlM2EzOWQyMjc2MWM2MjlkY2ExOTEyZjcxOGJhYWQxMDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxNTo1NzoxMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXG5pbmRleCA3MzYxMjlkYjI3MmFiYy4uMGFjZmUxNTY0M2UxYzAgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXG5AQCAtMTEwLDcgKzExMCw3IEBAIEtWTV9YODZfT1AoaGFuZGxlX2V4aXRfaXJxb2ZmKVxuIEtWTV9YODZfT1BfT1BUSU9OQUwodXBkYXRlX2NwdV9kaXJ0eV9sb2dnaW5nKVxuIEtWTV9YODZfT1BfT1BUSU9OQUwodmNwdV9ibG9ja2luZylcbiBLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfdW5ibG9ja2luZylcbi1LVk1fWDg2X09QX09QVElPTkFMKHBpX3VwZGF0ZV9pcnRlKVxuK0tWTV9YODZfT1AocGlfdXBkYXRlX2lydGUpXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTChwaV9zdGFydF9ieXBhc3MpXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTChhcGljdl9wcmVfc3RhdGVfcmVzdG9yZSlcbiBLVk1fWDg2X09QX09QVElPTkFMKGFwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU3OjEyLjQ0MzQ4OTMzOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NzM4NDc2NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIHg4NiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbW9kaWZ5aW5nIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBjaGFuZ2luZyBgS1ZNX1g4Nl9PUF9PUFRJT05BTChwaV91cGRhdGVfaXJ0ZSlgIHRvIGp1c3QgYEtWTV9YODZfT1AocGlfdXBkYXRlX2lydGUpYC4gVGhhdCdzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZS4gQmFzaWNhbGx5LCB0aGV5J3JlIG1ha2luZyB0aGUgYHBpX3VwZGF0ZV9pcnRlYCBvcGVyYXRpb24gbWFuZGF0b3J5IGluc3RlYWQgb2Ygb3B0aW9uYWwgd2l0aGluIHRoZSBLVk0geDg2IG9wZXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdC5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBwaV91cGRhdGVfaXJ0ZWAgYWN0dWFsbHkgKmlzKi4gSXMgaXQgVk1YLXNwZWNpZmljPyBTVk0/IEJvdGg/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIEtWTSBhbmQgd2h5IHRoZXkncmUgZm9yY2luZyBpdHMgcHJlc2VuY2UuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gdG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuXG5cbkxldCdzIGdyZXAgdGhyb3VnaCBgYXJjaC94ODYva3ZtL2AgZm9yIGBwaV91cGRhdGVfaXJ0ZWAgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIGNvbnRleHRzIGluIHdoaWNoIGl0J3MgdXNlZC4gVGltZSB0byBnZXQgdG8gd29yayFcblxuXG4iLCJJbnB1dFRva2VucyI6MTk0NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU3OjE3LjAxNzMzOTMyMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzE1MjkwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaV91cGRhdGVfaXJ0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9pcnEuYz00MjY9c3RhdGljIGJvb2wga3ZtX2lycV9pc19wb3N0YWJsZShzdHJ1Y3Qga3ZtX2xhcGljX2lycSAqaXJxKVxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTQzMi1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDMzOnN0YXRpYyBpbnQga3ZtX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDM0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplbnRyeSlcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy00NjctXFxuYXJjaC94ODYva3ZtL2lycS5jOjQ2ODpcXHRyID0ga3ZtX3g4Nl9jYWxsKHBpX3VwZGF0ZV9pcnRlKShpcnFmZCwgaXJxZmQtXFx1MDAzZWt2bSwgaG9zdF9pcnEsIGlycWZkLVxcdTAwM2Vnc2ksXFxuYXJjaC94ODYva3ZtL2lycS5jLTQ2OS1cXHRcXHRcXHRcXHRcXHQgdmNwdSwgaXJxLnZlY3Rvcik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NDgyPWludCBrdm1fYXJjaF9pcnFfYnlwYXNzX2FkZF9wcm9kdWNlcihzdHJ1Y3QgaXJxX2J5cGFzc19jb25zdW1lciAqY29ucyxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy00OTYtXFx0aWYgKGlycWZkLVxcdTAwM2VpcnFfZW50cnkudHlwZSA9PSBLVk1fSVJRX1JPVVRJTkdfTVNJKSB7XFxuYXJjaC94ODYva3ZtL2lycS5jOjQ5NzpcXHRcXHRyZXQgPSBrdm1fcGlfdXBkYXRlX2lydGUoaXJxZmQsIFxcdTAwMjZpcnFmZC1cXHUwMDNlaXJxX2VudHJ5KTtcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDk4LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYz01MDg9dm9pZCBrdm1fYXJjaF9pcnFfYnlwYXNzX2RlbF9wcm9kdWNlcihzdHJ1Y3QgaXJxX2J5cGFzc19jb25zdW1lciAqY29ucyxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy01MjctXFx0ICAgIFdBUk5fT05fT05DRShpcnFmZC1cXHUwMDNlaXJxX2J5cGFzc192Y3B1KSkge1xcbmFyY2gveDg2L2t2bS9pcnEuYzo1Mjg6XFx0XFx0cmV0ID0ga3ZtX3BpX3VwZGF0ZV9pcnRlKGlycWZkLCBOVUxMKTtcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTI5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NTQwPXZvaWQga3ZtX2FyY2hfdXBkYXRlX2lycWZkX3JvdXRpbmcoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLFxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTU1Mi1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NTUzOlxcdGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgbmV3KTtcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTU0LX1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jPTkwMj1zdGF0aWMgdm9pZCBzdm1faXJfbGlzdF9kZWwoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9hdmljLmMtOTE0LVxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jOjkxNTppbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYy05MTYtXFx0XFx0XFx0dW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMTQ9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MTktXFx0LmRlbGl2ZXJfaW50ZXJydXB0ID0gc3ZtX2RlbGl2ZXJfaW50ZXJydXB0LFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQyMDpcXHQucGlfdXBkYXRlX2lydGUgPSBhdmljX3BpX3VwZGF0ZV9pcnRlLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQyMS1cXHQuc2V0dXBfbWNlID0gc3ZtX3NldHVwX21jZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9OTU5PXZvaWQgYXZpY19yZWZyZXNoX2FwaWN2X2V4ZWNfY3RybChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6OTYwOmludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTYxLVxcdFxcdFxcdHVuc2lnbmVkIGludCBob3N0X2lycSwgdWludDMyX3QgZ3Vlc3RfaXJxLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTctXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6OTk4OlxcdC5waV91cGRhdGVfaXJ0ZSA9IHZteF9waV91cGRhdGVfaXJ0ZSxcXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTktXFx0LnBpX3N0YXJ0X2J5cGFzcyA9IHZteF9waV9zdGFydF9ieXBhc3MsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmM9Mjk3PXZvaWQgdm14X3BpX3N0YXJ0X2J5cGFzcyhzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMzA0LVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYzozMDU6aW50IHZteF9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMzA2LVxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaD0xNj1ib29sIHBpX2hhc19wZW5kaW5nX2ludGVycnVwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaDoxNzppbnQgdm14X3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaC0xOC1cXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU3OjE3LjA4NDUwMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3MTEwNTk3OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2g6IE1ha2luZyBgcGlfdXBkYXRlX2lydGVgIE1hbmRhdG9yeSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbWFraW5nIGEgc2lnbmlmaWNhbnQgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgZHJvcHBpbmcgdGhlIGBPUFRJT05BTGAgcXVhbGlmaWVyIGZyb20gYEtWTV9YODZfT1BfT1BUSU9OQUwocGlfdXBkYXRlX2lydGUpYCwgdHVybmluZyBpdCBpbnRvIGp1c3QgYEtWTV9YODZfT1AocGlfdXBkYXRlX2lydGUpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgc28gdGhpcyBpcyBubyBsb25nZXIgYW4gb3B0aW9uYWwgb3BlcmF0aW9uLlwiIFRoYXQgaGFzIHByZXR0eSBiaWcgaW1wbGljYXRpb25zIGZvciBob3cgaXQncyBoYW5kbGVkLiBCZWZvcmUsIGlmIGl0IHdhc24ndCBpbXBsZW1lbnRlZCwgdGhlIEtWTSBjb2RlIHdvdWxkIG5lZWQgdG8gY2hlY2sgZm9yIGl0cyBleGlzdGVuY2UsIHByb2JhYmx5IHVzaW5nIHNvbWV0aGluZyBsaWtlIGBrdm1feDg2X2hhc2Agb3Igc2ltaWxhciBmdW5jdGlvbi4gTm93LCBpZiBpdCdzIG5vIGxvbmdlciBvcHRpb25hbCwgYW55IGNhbGxzIHRvIGl0LCBzdWNoIGFzIGBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpYCwgYXJlIGp1c3QgZ29pbmcgdG/igKYgY2FsbCBpdC4gTm8gY29uZGl0aW9uYWwgY2hlY2suIFRoaXMgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIG9mIGNvdXJzZSwgYmVjYXVzZSBhbiB1bmltcGxlbWVudGVkIGZ1bmN0aW9uIGNhbGwgaXMgYSBjcmFzaCBpbiB0aGUgbWFraW5nLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGluZGVlZCBob3cgYGt2bV94ODZfY2FsbGAgd29ya3Mgd2l0aCBgS1ZNX1g4Nl9PUGAuIEknbGwgbmVlZCB0byBsb29rIGF0IGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oYCBhbmQgdHJhY2UgaG93IGBLVk1fWDg2X09QYCBhbmQgcmVsYXRlZCBtYWNyb3MgYXJlIGFjdHVhbGx5IGRlZmluZWQgYW5kIHVzZWQgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucyBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBzdWJ0bGUgY29uc2VxdWVuY2VzIEknbSBtaXNzaW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXRhaWxzIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgbm93IGlzIGNyaXRpY2FsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTg1LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU3OjI0Ljc5NTU2MzU4NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA5MjQwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS1ZNX1g4Nl9PUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjojaWYgIWRlZmluZWQoS1ZNX1g4Nl9PUCkgfHwgXFxcXFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MzogICAgIWRlZmluZWQoS1ZNX1g4Nl9PUF9PUFRJT05BTCkgfHwgXFxcXFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDogICAgIWRlZmluZWQoS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTojZXJyb3IgTWlzc2luZyBvbmUgb3IgbW9yZSBLVk1fWDg2X09QICNkZWZpbmVzXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC02LSNlbHNlXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC03LS8qXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4OiAqIEtWTV9YODZfT1AoKSBhbmQgS1ZNX1g4Nl9PUF9PUFRJT05BTCgpIGFyZSB1c2VkIHRvIGhlbHAgZ2VuZXJhdGVcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTktICogYm90aCBERUNMQVJFL0RFRklORV9TVEFUSUNfQ0FMTCgpIGludm9jYXRpb25zIGFuZFxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xMS0gKlxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI6ICogS1ZNX1g4Nl9PUF9PUFRJT05BTCgpIGNhbiBiZSB1c2VkIGZvciB0aG9zZSBmdW5jdGlvbnMgdGhhdCBjYW4gaGF2ZVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM6ICogYSBOVUxMIGRlZmluaXRpb24uICBLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoKSBjYW4gYmUgdXNlZCBsaWtld2lzZVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTQtICogdG8gbWFrZSBhIGRlZmluaXRpb24gb3B0aW9uYWwsIGJ1dCBpbiB0aGlzIGNhc2UgdGhlIGRlZmF1bHQgd2lsbFxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNi0gKi9cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE3OktWTV9YODZfT1AoY2hlY2tfcHJvY2Vzc29yX2NvbXBhdGliaWxpdHkpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxODpLVk1fWDg2X09QKGVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxOTpLVk1fWDg2X09QKGRpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjA6S1ZNX1g4Nl9PUChoYXJkd2FyZV91bnNldHVwKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjE6S1ZNX1g4Nl9PUChoYXNfZW11bGF0ZWRfbXNyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjI6S1ZNX1g4Nl9PUCh2Y3B1X2FmdGVyX3NldF9jcHVpZClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjIzOktWTV9YODZfT1Aodm1faW5pdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjI0OktWTV9YODZfT1BfT1BUSU9OQUwodm1fZGVzdHJveSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjI1OktWTV9YODZfT1BfT1BUSU9OQUwodm1fcHJlX2Rlc3Ryb3kpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyNjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAodmNwdV9wcmVjcmVhdGUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyNzpLVk1fWDg2X09QKHZjcHVfY3JlYXRlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Mjg6S1ZNX1g4Nl9PUCh2Y3B1X2ZyZWUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyOTpLVk1fWDg2X09QKHZjcHVfcmVzZXQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozMDpLVk1fWDg2X09QKHByZXBhcmVfc3dpdGNoX3RvX2d1ZXN0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MzE6S1ZNX1g4Nl9PUCh2Y3B1X2xvYWQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozMjpLVk1fWDg2X09QKHZjcHVfcHV0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MzM6S1ZNX1g4Nl9PUCh1cGRhdGVfZXhjZXB0aW9uX2JpdG1hcClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM0OktWTV9YODZfT1AoZ2V0X21zcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM1OktWTV9YODZfT1Aoc2V0X21zcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM2OktWTV9YODZfT1AoZ2V0X3NlZ21lbnRfYmFzZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM3OktWTV9YODZfT1AoZ2V0X3NlZ21lbnQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozODpLVk1fWDg2X09QKGdldF9jcGwpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozOTpLVk1fWDg2X09QKGdldF9jcGxfbm9fY2FjaGUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo0MDpLVk1fWDg2X09QKHNldF9zZWdtZW50KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDE6S1ZNX1g4Nl9PUChnZXRfY3NfZGJfbF9iaXRzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDI6S1ZNX1g4Nl9PUChpc192YWxpZF9jcjApXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo0MzpLVk1fWDg2X09QKHNldF9jcjApXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo0NDpLVk1fWDg2X09QX09QVElPTkFMKHBvc3Rfc2V0X2NyMylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ1OktWTV9YODZfT1AoaXNfdmFsaWRfY3I0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDY6S1ZNX1g4Nl9PUChzZXRfY3I0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDc6S1ZNX1g4Nl9PUChzZXRfZWZlcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ4OktWTV9YODZfT1AoZ2V0X2lkdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ5OktWTV9YODZfT1Aoc2V0X2lkdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjUwOktWTV9YODZfT1AoZ2V0X2dkdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjUxOktWTV9YODZfT1Aoc2V0X2dkdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjUyOktWTV9YODZfT1Aoc3luY19kaXJ0eV9kZWJ1Z19yZWdzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTM6S1ZNX1g4Nl9PUChzZXRfZHI3KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTQ6S1ZNX1g4Nl9PUChjYWNoZV9yZWcpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo1NTpLVk1fWDg2X09QKGdldF9yZmxhZ3MpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo1NjpLVk1fWDg2X09QKHNldF9yZmxhZ3MpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo1NzpLVk1fWDg2X09QKGdldF9pZl9mbGFnKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTg6S1ZNX1g4Nl9PUChmbHVzaF90bGJfYWxsKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTk6S1ZNX1g4Nl9PUChmbHVzaF90bGJfY3VycmVudClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTYwLSNpZiBJU19FTkFCTEVEKENPTkZJR19IWVBFUlYpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2MTpLVk1fWDg2X09QX09QVElPTkFMKGZsdXNoX3JlbW90ZV90bGJzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NjI6S1ZNX1g4Nl9PUF9PUFRJT05BTChmbHVzaF9yZW1vdGVfdGxic19yYW5nZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTYzLSNlbmRpZlxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NjQ6S1ZNX1g4Nl9PUChmbHVzaF90bGJfZ3ZhKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NjU6S1ZNX1g4Nl9PUChmbHVzaF90bGJfZ3Vlc3QpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2NjpLVk1fWDg2X09QKHZjcHVfcHJlX3J1bilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjY3OktWTV9YODZfT1AodmNwdV9ydW4pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2ODpLVk1fWDg2X09QKGhhbmRsZV9leGl0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Njk6S1ZNX1g4Nl9PUChza2lwX2VtdWxhdGVkX2luc3RydWN0aW9uKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzA6S1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfZW11bGF0ZWRfaW5zdHJ1Y3Rpb24pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3MTpLVk1fWDg2X09QKHNldF9pbnRlcnJ1cHRfc2hhZG93KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzI6S1ZNX1g4Nl9PUChnZXRfaW50ZXJydXB0X3NoYWRvdylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjczOktWTV9YODZfT1AocGF0Y2hfaHlwZXJjYWxsKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzQ6S1ZNX1g4Nl9PUChpbmplY3RfaXJxKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzU6S1ZNX1g4Nl9PUChpbmplY3Rfbm1pKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGlzX3ZubWlfcGVuZGluZylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjc3OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChzZXRfdm5taV9wZW5kaW5nKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Nzg6S1ZNX1g4Nl9PUChpbmplY3RfZXhjZXB0aW9uKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Nzk6S1ZNX1g4Nl9PUChjYW5jZWxfaW5qZWN0aW9uKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODA6S1ZNX1g4Nl9PUChpbnRlcnJ1cHRfYWxsb3dlZClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjgxOktWTV9YODZfT1Aobm1pX2FsbG93ZWQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4MjpLVk1fWDg2X09QKGdldF9ubWlfbWFzaylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjgzOktWTV9YODZfT1Aoc2V0X25taV9tYXNrKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODQ6S1ZNX1g4Nl9PUChlbmFibGVfbm1pX3dpbmRvdylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjg1OktWTV9YODZfT1AoZW5hYmxlX2lycV93aW5kb3cpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4NjpLVk1fWDg2X09QX09QVElPTkFMKHVwZGF0ZV9jcjhfaW50ZXJjZXB0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODc6S1ZNX1g4Nl9PUChyZWZyZXNoX2FwaWN2X2V4ZWNfY3RybClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjg4OktWTV9YODZfT1BfT1BUSU9OQUwoaHdhcGljX2lzcl91cGRhdGUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4OTpLVk1fWDg2X09QX09QVElPTkFMKGxvYWRfZW9pX2V4aXRtYXApXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5MDpLVk1fWDg2X09QX09QVElPTkFMKHNldF92aXJ0dWFsX2FwaWNfbW9kZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjkxOktWTV9YODZfT1BfT1BUSU9OQUwoc2V0X2FwaWNfYWNjZXNzX3BhZ2VfYWRkcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjkyOktWTV9YODZfT1AoZGVsaXZlcl9pbnRlcnJ1cHQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5MzpLVk1fWDg2X09QX09QVElPTkFMKHN5bmNfcGlyX3RvX2lycilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjk0OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChzZXRfdHNzX2FkZHIpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NTpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X2lkZW50aXR5X21hcF9hZGRyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGdldF9tdF9tYXNrKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTc6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHRkcF9oYXNfc21lcClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjk4OktWTV9YODZfT1AobG9hZF9tbXVfcGdkKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTk6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHNldF9leHRlcm5hbF9zcHRlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTAwOktWTV9YODZfT1BfT1BUSU9OQUwoZnJlZV9leHRlcm5hbF9zcHQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDE6S1ZNX1g4Nl9PUChoYXNfd2JpbnZkX2V4aXQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDI6S1ZNX1g4Nl9PUChnZXRfbDJfdHNjX29mZnNldClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwMzpLVk1fWDg2X09QKGdldF9sMl90c2NfbXVsdGlwbGllcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwNDpLVk1fWDg2X09QKHdyaXRlX3RzY19vZmZzZXQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDU6S1ZNX1g4Nl9PUCh3cml0ZV90c2NfbXVsdGlwbGllcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwNjpLVk1fWDg2X09QKGdldF9leGl0X2luZm8pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDc6S1ZNX1g4Nl9PUChnZXRfZW50cnlfaW5mbylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwODpLVk1fWDg2X09QKGNoZWNrX2ludGVyY2VwdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwOTpLVk1fWDg2X09QKGhhbmRsZV9leGl0X2lycW9mZilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExMDpLVk1fWDg2X09QX09QVElPTkFMKHVwZGF0ZV9jcHVfZGlydHlfbG9nZ2luZylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExMTpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfYmxvY2tpbmcpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTI6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2Y3B1X3VuYmxvY2tpbmcpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTM6S1ZNX1g4Nl9PUChwaV91cGRhdGVfaXJ0ZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExNDpLVk1fWDg2X09QX09QVElPTkFMKHBpX3N0YXJ0X2J5cGFzcylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExNTpLVk1fWDg2X09QX09QVElPTkFMKGFwaWN2X3ByZV9zdGF0ZV9yZXN0b3JlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE2OktWTV9YODZfT1BfT1BUSU9OQUwoYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE3OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChkeV9hcGljdl9oYXNfcGVuZGluZ19pbnRlcnJ1cHQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTg6S1ZNX1g4Nl9PUF9PUFRJT05BTChwcm90ZWN0ZWRfYXBpY19oYXNfaW50ZXJydXB0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE5OktWTV9YODZfT1BfT1BUSU9OQUwoc2V0X2h2X3RpbWVyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTIwOktWTV9YODZfT1BfT1BUSU9OQUwoY2FuY2VsX2h2X3RpbWVyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTIxOktWTV9YODZfT1Aoc2V0dXBfbWNlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTIyLSNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTIzOktWTV9YODZfT1Aoc21pX2FsbG93ZWQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjQ6S1ZNX1g4Nl9PUChlbnRlcl9zbW0pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjU6S1ZNX1g4Nl9PUChsZWF2ZV9zbW0pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjY6S1ZNX1g4Nl9PUChlbmFibGVfc21pX3dpbmRvdylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEyNy0jZW5kaWZcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEyODpLVk1fWDg2X09QX09QVElPTkFMKGRldl9nZXRfYXR0cilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEyOTpLVk1fWDg2X09QX09QVElPTkFMKG1lbV9lbmNfaW9jdGwpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzA6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2Y3B1X21lbV9lbmNfaW9jdGwpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzE6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2Y3B1X21lbV9lbmNfdW5sb2NrZWRfaW9jdGwpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzI6S1ZNX1g4Nl9PUF9PUFRJT05BTChtZW1fZW5jX3JlZ2lzdGVyX3JlZ2lvbilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzMzpLVk1fWDg2X09QX09QVElPTkFMKG1lbV9lbmNfdW5yZWdpc3Rlcl9yZWdpb24pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzQ6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2bV9jb3B5X2VuY19jb250ZXh0X2Zyb20pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzU6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2bV9tb3ZlX2VuY19jb250ZXh0X2Zyb20pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzY6S1ZNX1g4Nl9PUF9PUFRJT05BTChndWVzdF9tZW1vcnlfcmVjbGFpbWVkKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM3OktWTV9YODZfT1BfT1BUSU9OQUwocmVsb2FkX3Ztc2EpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzg6S1ZNX1g4Nl9PUChnZXRfZmVhdHVyZV9tc3IpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzk6S1ZNX1g4Nl9PUChjaGVja19lbXVsYXRlX2luc3RydWN0aW9uKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQwOktWTV9YODZfT1AoYXBpY19pbml0X3NpZ25hbF9ibG9ja2VkKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQxOktWTV9YODZfT1BfT1BUSU9OQUwoZW5hYmxlX2wyX3RsYl9mbHVzaClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0MjpLVk1fWDg2X09QX09QVElPTkFMKG1pZ3JhdGVfdGltZXJzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQzOktWTV9YODZfT1AocmVjYWxjX2ludGVyY2VwdHMpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDQ6S1ZNX1g4Nl9PUChjb21wbGV0ZV9lbXVsYXRlZF9tc3IpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDU6S1ZNX1g4Nl9PUCh2Y3B1X2RlbGl2ZXJfc2lwaV92ZWN0b3IpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHZjcHVfZ2V0X2FwaWN2X2luaGliaXRfcmVhc29ucyk7XFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDc6S1ZNX1g4Nl9PUF9PUFRJT05BTChnZXRfdW50YWdnZWRfYWRkcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0ODpLVk1fWDg2X09QX09QVElPTkFMKGFsbG9jX2FwaWNfYmFja2luZ19wYWdlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTQ5LSNpZmRlZiBDT05GSUdfSEFWRV9LVk1fQVJDSF9HTUVNX1BSRVBBUkVcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1MDpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZ21lbV9wcmVwYXJlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTUxLSNlbmRpZlxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTUyOktWTV9YODZfT1BfT1BUSU9OQUwoZ21lbV9pbnZhbGlkYXRlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTUzLSNpZmRlZiBDT05GSUdfSEFWRV9LVk1fQVJDSF9HTUVNX0lOVkFMSURBVEVcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1NDpLVk1fWDg2X09QX09QVElPTkFMKGdtZW1faW52YWxpZGF0ZV9yYW5nZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE1NS0jZW5kaWZcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1NjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZ21lbV9tYXhfbWFwcGluZ19sZXZlbClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE1Ny0jZW5kaWZcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE1OC1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1OTojdW5kZWYgS1ZNX1g4Nl9PUFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTYwOiN1bmRlZiBLVk1fWDg2X09QX09QVElPTkFMXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNjE6I3VuZGVmIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1NzoyNS4yNTY0OTQ0OTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTIyOTgwOTUwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgcGlfdXBkYXRlX2lydGVgIEtWTSBPcGVyYXRpb24qKlxuXG5Pa2F5LCBzbyBpdCBzZWVtcyBgcGlfdXBkYXRlX2lydGVgIGhhcyBiZWNvbWUgYSAqbWFuZGF0b3J5KiBLVk0geDg2IG9wZXJhdGlvbi4gVGhpcyBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgaWYgaXQncyBtYW5kYXRvcnksIHRoZW4gYm90aCBWTVggYW5kIFNWTSB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zICpoYXZlKiB0byBwcm92aWRlIGltcGxlbWVudGF0aW9ucyBmb3IgaXQuIExldCdzIHNlZS4uLiBhIHF1aWNrIGdyZXAgc2hvd3MgbWUgdGhhdCBgdm14X3BpX3VwZGF0ZV9pcnRlYCBpcyBpbmRlZWQgcmVzaWRpbmcgaW4gYGFyY2gveDg2L2t2bS92bXgvbWFpbi5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIHRoZSBJbnRlbCBzaWRlLCBhbmQgYGF2aWNfcGlfdXBkYXRlX2lydGVgIGlzIG92ZXIgaW4gYGFyY2gveDg2L2t2bS9zdm0vc3ZtLmNgLCB0YWtpbmcgY2FyZSBvZiB0aGUgQU1EIFNWTS5cblxuV2FpdCBhIHNlY29uZC4gTm93IEknbSBtZW50YWxseSBwYXJzaW5nIHRoaXMgLS0gd2hhdCBpZiBzb21lb25lJ3MgcnVubmluZyBLVk0gYnV0IGhhc24ndCBjb21waWxlZCBpbiBlaXRoZXIgU1ZNICpvciogVk1YIHN1cHBvcnQ/IEJ1dCBubywgS1ZNIHg4NiBvcGVyYXRpb25zIGFyZSBoYW5kbGVkIGJ5IHRoZSBtb2R1bGVzIHdoaWNoIGFyZSBsb2FkZWQsIGBrdm0taW50ZWxgIG9yIGBrdm0tYW1kYC4gVGhhdCBzb2x2ZXMgdGhhdC4gT2theSwgSSdtIGp1c3QgbWFraW5nIHN1cmUgaGVyZSwgYW5kIGFtIGdvaW5nIHRvIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBvdGhlciBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UgdG8gZ28gYmFjayB0byBgYXJjaC94ODYva3ZtL2lycS5jYCBhZ2Fpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExMTIsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTc6NDYuNDg2MzA2MTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE0Mzg3NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3g4Nl9jYWxsXFxcXChwaV91cGRhdGVfaXJ0ZVxcXFwpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL2lycS5jPTQzMz1zdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDY3LVxcbmFyY2gveDg2L2t2bS9pcnEuYzo0Njg6XFx0ciA9IGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSkoaXJxZmQsIGlycWZkLVxcdTAwM2Vrdm0sIGhvc3RfaXJxLCBpcnFmZC1cXHUwMDNlZ3NpLFxcbmFyY2gveDg2L2t2bS9pcnEuYy00NjktXFx0XFx0XFx0XFx0XFx0IHZjcHUsIGlycS52ZWN0b3IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1Nzo0Ni41Nzc3NDk1NThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM3NjAzMTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKlRoaW5raW5nIFRocm91Z2ggdGhlIGBrdm1fcGlfdXBkYXRlX2lydGVgIE1hbmRhdG9yeSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIGBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpYCBmdW5jdGlvbiBpcyAqbWFuZGF0b3J5KiBub3csIG1lYW5pbmcgaXQncyBnb2luZyB0byBiZSBjYWxsZWQgZGlyZWN0bHkuIFRoYXQncyBhIGtleSBkaXN0aW5jdGlvbi4gQmVmb3JlIHRoaXMgcGF0Y2gsIGBwaV91cGRhdGVfaXJ0ZWAgd2FzLCBpbiBlZmZlY3QsIG9wdGlvbmFsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IHJlcXVpcmVtZW50LlxuXG5NeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgaGF2ZSB0byBmaW5kIG91dCAqaG93KiBga3ZtX3BpX3VwZGF0ZV9pcnRlYCB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBgcGlfdXBkYXRlX2lydGVgIHdhcyBhY3R1YWxseSBwcmVzZW50IG9yIGltcGxlbWVudGVkLiBXaGF0IGxvZ2ljIHdhcyBlbXBsb3llZCwgYW5kIGhvdyBkb2VzIHRoaXMgY2hhbmdlIHRoZSBjb2RlJ3MgYmVoYXZpb3Igd2hlbiB0aGF0IG9wdGlvbmFsIGNoZWNrIGlzIG5vIGxvbmdlciBuZWVkZWQ/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgb2xkIGNvbmRpdGlvbmFsIHRoYXQgbWFuYWdlZCB0aGUgb3B0aW9uYWxpdHkgdG8gZ2F1Z2UgaG93IHRoZSBmdW5jdGlvbidzIGludGVybmFsIGZsb3cgaXMgc2hpZnRpbmcgYXMgYSByZXN1bHQgb2YgbWFraW5nIHRoZSB1cGRhdGUgbWFuZGF0b3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTc3MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU3OjUxLjAxNTM1NTUxM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxNzI1NTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9waV91cGRhdGVfaXJ0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9pcnEuYz00MjY9c3RhdGljIGJvb2wga3ZtX2lycV9pc19wb3N0YWJsZShzdHJ1Y3Qga3ZtX2xhcGljX2lycSAqaXJxKVxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTQzMi1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDMzOnN0YXRpYyBpbnQga3ZtX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDM0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplbnRyeSlcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYz00ODI9aW50IGt2bV9hcmNoX2lycV9ieXBhc3NfYWRkX3Byb2R1Y2VyKHN0cnVjdCBpcnFfYnlwYXNzX2NvbnN1bWVyICpjb25zLFxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTQ5Ni1cXHRpZiAoaXJxZmQtXFx1MDAzZWlycV9lbnRyeS50eXBlID09IEtWTV9JUlFfUk9VVElOR19NU0kpIHtcXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDk3OlxcdFxcdHJldCA9IGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgXFx1MDAyNmlycWZkLVxcdTAwM2VpcnFfZW50cnkpO1xcbmFyY2gveDg2L2t2bS9pcnEuYy00OTgtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jPTUwOD12b2lkIGt2bV9hcmNoX2lycV9ieXBhc3NfZGVsX3Byb2R1Y2VyKHN0cnVjdCBpcnFfYnlwYXNzX2NvbnN1bWVyICpjb25zLFxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTUyNy1cXHQgICAgV0FSTl9PTl9PTkNFKGlycWZkLVxcdTAwM2VpcnFfYnlwYXNzX3ZjcHUpKSB7XFxuYXJjaC94ODYva3ZtL2lycS5jOjUyODpcXHRcXHRyZXQgPSBrdm1fcGlfdXBkYXRlX2lydGUoaXJxZmQsIE5VTEwpO1xcbmFyY2gveDg2L2t2bS9pcnEuYy01MjktXFx0XFx0aWYgKHJldClcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYz01NDA9dm9pZCBrdm1fYXJjaF91cGRhdGVfaXJxZmRfcm91dGluZyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTUyLVxcbmFyY2gveDg2L2t2bS9pcnEuYzo1NTM6XFx0a3ZtX3BpX3VwZGF0ZV9pcnRlKGlycWZkLCBuZXcpO1xcbmFyY2gveDg2L2t2bS9pcnEuYy01NTQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1Nzo1MS40NDcwODc4NzRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg3MDk4ODYxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBLVk0gSW50ZXJydXB0IEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhpcyBhbGwgd29ya3MsIHNvIEknbSBnb2luZyB0byBzdGFydCBieSBmb2N1c2luZyBvbiBgYXJjaC94ODYva3ZtL2lycS5jYC4gSSBmaWd1cmUgbGluZSA0MzMgaXMgYSBnb29kIHBsYWNlIHRvIGJlZ2luLiBJdCdzIGxpa2VseSBhIGNyaXRpY2FsIGp1bmN0dXJlIGluIHRoZSBpbnRlcnJ1cHQgcGF0aCwgcG90ZW50aWFsbHkgcmVsYXRlZCB0byBpbmplY3Rpb24sIG1hc2tpbmcsIG9yIHNvbWUgYXNwZWN0IG9mIHZpcnR1YWxpemF0aW9uIHRoYXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIExldCdzIHNlZSB3aGF0IGludGVyZXN0aW5nIGNvZGUgbGl2ZXMgdGhlcmUuIFRpbWUgdG8gZGlnIGluIGFuZCBjb3JyZWxhdGUgd2hhdCBJIHNlZSB3aXRoIHRoZSBvdmVyYWxsIGludGVycnVwdCBmbG93LiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGtleSBsb2dpYyB0aGF0J3MgYmVpbmcgcGVyZm9ybWVkIGF0IHRoaXMgc3RhZ2UuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGludGVyYWN0aW9ucyBhbmQgaG93IEtWTSBtYW5hZ2VzIHRoZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNjc3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTc6NTYuMzE4MDc5NjA5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gveDg2L2t2bS9pcnEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MzAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MzA6XFx0XFx0XFx0aXJxLVxcdTAwM2VkZWxpdmVyeV9tb2RlID09IEFQSUNfRE1fTE9XRVNUKTtcXG4gNDMxOlxcdH1cXG4gNDMyOlxcdFxcbiA0MzM6XFx0c3RhdGljIGludCBrdm1fcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLFxcbiA0MzQ6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmVudHJ5KVxcbiA0MzU6XFx0e1xcbiA0MzY6XFx0XFx0dW5zaWduZWQgaW50IGhvc3RfaXJxID0gaXJxZmQtXFx1MDAzZXByb2R1Y2VyLVxcdTAwM2VpcnE7XFxuIDQzNzpcXHRcXHRzdHJ1Y3Qga3ZtICprdm0gPSBpcnFmZC1cXHUwMDNla3ZtO1xcbiA0Mzg6XFx0XFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1ID0gTlVMTDtcXG4gNDM5OlxcdFxcdHN0cnVjdCBrdm1fbGFwaWNfaXJxIGlycTtcXG4gNDQwOlxcdFxcdGludCByO1xcbiA0NDE6XFx0XFxuIDQ0MjpcXHRcXHRpZiAoV0FSTl9PTl9PTkNFKCFpcnFjaGlwX2luX2tlcm5lbChrdm0pIHx8ICFrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpKSlcXG4gNDQzOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA0NDQ6XFx0XFxuIDQ0NTpcXHRcXHRpZiAoZW50cnkgXFx1MDAyNlxcdTAwMjYgZW50cnktXFx1MDAzZXR5cGUgPT0gS1ZNX0lSUV9ST1VUSU5HX01TSSkge1xcbiA0NDY6XFx0XFx0XFx0a3ZtX21zaV90b19sYXBpY19pcnEoa3ZtLCBlbnRyeSwgXFx1MDAyNmlycSk7XFxuIDQ0NzpcXHRcXG4gNDQ4OlxcdFxcdFxcdC8qXFxuIDQ0OTpcXHRcXHRcXHQgKiBGb3JjZSByZW1hcHBlZCBtb2RlIGlmIGhhcmR3YXJlIGRvZXNuJ3Qgc3VwcG9ydCBwb3N0aW5nIHRoZVxcbiA0NTA6XFx0XFx0XFx0ICogdmlydHVhbCBpbnRlcnJ1cHQgdG8gYSB2Q1BVLiAgT25seSBJUlFzIGFyZSBwb3N0YWJsZSAoTk1JcyxcXG4gNDUxOlxcdFxcdFxcdCAqIFNNSXMsIGV0Yy4gYXJlIG5vdCksIGFuZCBuZWl0aGVyIEFNRCBub3IgSW50ZWwgSU9NTVVzIHN1cHBvcnRcXG4gNDUyOlxcdFxcdFxcdCAqIHBvc3RpbmcgbXVsdGljYXN0L2Jyb2FkY2FzdCBJUlFzLiAgSWYgdGhlIGludGVycnVwdCBjYW4ndCBiZVxcbiA0NTM6XFx0XFx0XFx0ICogcG9zdGVkLCB0aGUgZGV2aWNlIE1TSSBuZWVkcyB0byBiZSByb3V0ZWQgdG8gdGhlIGhvc3Qgc28gdGhhdFxcbiA0NTQ6XFx0XFx0XFx0ICogdGhlIGd1ZXN0J3MgZGVzaXJlZCBpbnRlcnJ1cHQgY2FuIGJlIHN5bnRoZXNpemVkIGJ5IEtWTS5cXG4gNDU1OlxcdFxcdFxcdCAqXFxuIDQ1NjpcXHRcXHRcXHQgKiBUaGlzIG1lYW5zIHRoYXQgS1ZNIGNhbiBvbmx5IHBvc3QgbG93ZXN0LXByaW9yaXR5IGludGVycnVwdHNcXG4gNDU3OlxcdFxcdFxcdCAqIGlmIHRoZXkgaGF2ZSBhIHNpbmdsZSBDUFUgYXMgdGhlIGRlc3RpbmF0aW9uLCBlLmcuIG9ubHkgaWZcXG4gNDU4OlxcdFxcdFxcdCAqIHRoZSBndWVzdCBoYXMgYWZmaW5lZCB0aGUgaW50ZXJydXB0IHRvIGEgc2luZ2xlIHZDUFUuXFxuIDQ1OTpcXHRcXHRcXHQgKi9cXG4gNDYwOlxcdFxcdFxcdGlmICgha3ZtX2ludHJfaXNfc2luZ2xlX3ZjcHUoa3ZtLCBcXHUwMDI2aXJxLCBcXHUwMDI2dmNwdSkgfHxcXG4gNDYxOlxcdFxcdFxcdCAgICAha3ZtX2lycV9pc19wb3N0YWJsZShcXHUwMDI2aXJxKSlcXG4gNDYyOlxcdFxcdFxcdFxcdHZjcHUgPSBOVUxMO1xcbiA0NjM6XFx0XFx0fVxcbiA0NjQ6XFx0XFxuIDQ2NTpcXHRcXHRpZiAoIWlycWZkLVxcdTAwM2VpcnFfYnlwYXNzX3ZjcHUgXFx1MDAyNlxcdTAwMjYgIXZjcHUpXFxuIDQ2NjpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNDY3OlxcdFxcbiA0Njg6XFx0XFx0ciA9IGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSkoaXJxZmQsIGlycWZkLVxcdTAwM2Vrdm0sIGhvc3RfaXJxLCBpcnFmZC1cXHUwMDNlZ3NpLFxcbiA0Njk6XFx0XFx0XFx0XFx0XFx0XFx0IHZjcHUsIGlycS52ZWN0b3IpO1xcbiA0NzA6XFx0XFx0aWYgKHIpIHtcXG4gNDcxOlxcdFxcdFxcdFdBUk5fT05fT05DRShpcnFmZC1cXHUwMDNlaXJxX2J5cGFzc192Y3B1IFxcdTAwMjZcXHUwMDI2ICF2Y3B1KTtcXG4gNDcyOlxcdFxcdFxcdGlycWZkLVxcdTAwM2VpcnFfYnlwYXNzX3ZjcHUgPSBOVUxMO1xcbiA0NzM6XFx0XFx0XFx0cmV0dXJuIHI7XFxuIDQ3NDpcXHRcXHR9XFxuIDQ3NTpcXHRcXG4gNDc2OlxcdFxcdGlycWZkLVxcdTAwM2VpcnFfYnlwYXNzX3ZjcHUgPSB2Y3B1O1xcbiA0Nzc6XFx0XFxuIDQ3ODpcXHRcXHR0cmFjZV9rdm1fcGlfaXJ0ZV91cGRhdGUoaG9zdF9pcnEsIHZjcHUsIGlycWZkLVxcdTAwM2Vnc2ksIGlycS52ZWN0b3IsICEhdmNwdSk7XFxuIDQ3OTpcXHRcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTc6NTYuMzE4MTY5OTc5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMzU0MjE3NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIElSUSBCeXBhc3MgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBrdm1fcGlfdXBkYXRlX2lydGVgIGZ1bmN0aW9uIGFuZCBzb21ldGhpbmcncyBub3QgcXVpdGUgY2xpY2tpbmcuIEl0IHNlZW1zIGxpa2UgYGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSlgIGlzIGNhbGxlZCAqdW5jb25kaXRpb25hbGx5KiB3aXRoaW4gdGhhdCBmdW5jdGlvbiwgYXMgbG9uZyBhcyBlaXRoZXIgYGlycWZkLVx1MDAzZWlycV9ieXBhc3NfdmNwdWAgb3IgYHZjcHVgIGlzbid0IG51bGwuIFRoZSB0aGluZyBpcywgYmVmb3JlIHRoaXMgcGF0Y2gsIGNhbGxpbmcgYHBpX3VwZGF0ZV9pcnRlYCBzZWVtZWQgKm9wdGlvbmFsKi4gXG5cblRoYXQncyB3aGVuIGl0IGhpdHMgbWU6IGlmIGBwaV91cGRhdGVfaXJ0ZWAgd2FzIG9wdGlvbmFsLCB0aGVuIGBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpYCB3b3VsZCBqdXN0IGJlIGEgY2FsbCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHJpZ2h0PyBBbmQgdGhhdCBmdW5jdGlvbiBwb2ludGVyIGNvdWxkIGhhdmUgdmVyeSB3ZWxsIGJlZW4gYE5VTExgLCBkZXBlbmRpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24uIElzIHRoYXQgd2hhdCdzIGdvaW5nIG9uPyBPciBkb2VzIGBrdm1feDg2X2NhbGxgIGRvIHNvbWV0aGluZyBtb3JlIGludm9sdmVkIHdoZW4gdGhlIGZ1bmN0aW9uIGl0J3Mgd3JhcHBpbmcgaXMgb3B0aW9uYWw/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaGFwcGVucyB3aGVuIHdlJ3JlIGRlYWxpbmcgd2l0aCBvcHRpb25hbCBmdW5jdGlvbnMgaW4gdGhpcyBga3ZtX3g4Nl9jYWxsYCBjb250ZXh0LlxuXG5JIG5lZWQgdG8gc2VlIHdoYXQncyBhY3R1YWxseSBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QuIFRpbWUgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCdzIGhlYWQgb3ZlciB0byBgYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaGAgYW5kIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGBrdm1feDg2X2NhbGxgIGlzIGRlZmluZWQgYW5kIGlmIGl0IGhhbmRsZXMgYE5VTExgIGZ1bmN0aW9uIHBvaW50ZXJzIGdyYWNlZnVsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2FsbCBmbG93IGNvbXBsZXRlbHkgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgYSBwcm9ibGVtIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODYxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTg6NDYuNjcyMzkwMjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MTg3MDQzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIGt2bV94ODZfY2FsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9pbmNsdWRlL2FzbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0xNzg3PWV4dGVybiBzdHJ1Y3Qga3ZtX3g4Nl9uZXN0ZWRfb3BzIGt2bV9uZXN0ZWRfb3BzIF9fcmVhZF9tb3N0bHk7XFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNzg4LVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTc4OTojZGVmaW5lIGt2bV94ODZfY2FsbChmdW5jKSBzdGF0aWNfY2FsbChrdm1feDg2XyMjZnVuYylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTE3OTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU4OjQ3LjA1NDI2NjU1MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDA3MTU1NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHN0YXRpY19jYWxsYCBhbmQgSXRzIEltcGxpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEkgc2VlIGEgYHN0YXRpY19jYWxsKGt2bV94ODZfcGlfdXBkYXRlX2lydGUpYCBjYWxsLiBUaGlzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSWYgaXQncyBhIGBzdGF0aWNfY2FsbGAsIGl0IGxpa2VseSBtZWFucyB0aGVyZSdzIGEgZGVncmVlIG9mIGNvbXBpbGUtdGltZSBvcHRpb25hYmlsaXR5IGludm9sdmVkLCBhbmQgdGhhdCByYWlzZXMgYSBmZXcgaW1tZWRpYXRlIHF1ZXN0aW9ucyBpbiBteSBtaW5kLiBTcGVjaWZpY2FsbHksIGlmIHRoaXMgZnVuY3Rpb24gY2FsbCBpcyBvcHRpb25hbCwgd2hhdOKAmXMgdGhlIGRlZmF1bHQgYmVoYXZpb3Igd2hlbiBpdCAqaXNuJ3QqIHVzZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZS4gSSBoYXZlIHRvIGxvb2sgYXQgaG93IGBrdm1feDg2X29wc2AgaXMgaW5pdGlhbGl6ZWQsIGFzIHRoYXQgbGlrZWx5IGhvbGRzIHRoZSBrZXkgdG8gdGhlIGRpc3BhdGNoIG1lY2hhbmlzbS4gVGhlIGZpbGUgdG8gc3RhcnQgd2l0aCBzaG91bGQgYmUgYGFyY2gveDg2L2t2bS94ODYuY2AsIG9yIHJlYWxseSwgd2hlcmV2ZXIgYGt2bV94ODZfb3BzYCBnZXRzIHBvcHVsYXRlZCB3aXRoIGl0cyBmdW5jdGlvbiBwb2ludGVycy4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYGt2bV94ODZfcGlfdXBkYXRlX2lydGVgIGlzIGFsd2F5cyBwcmVzZW50LCBvciBpZiB0aGVyZSdzIGEgZmFsbGJhY2sgb3IgYWx0ZXJuYXRpdmUgYmVoYXZpb3IuIFVuZGVyc3RhbmRpbmcgdGhpcyBpcyBjcnVjaWFsIGZvciBldmFsdWF0aW5nIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgb3IgY29tcGF0aWJpbGl0eSBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjAyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTg6NTQuMDYxNDI1MjQyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYwMjAyNTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktWTV9YODZfT1BfT1BUSU9OQUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9MTY2PXN0cnVjdCBrdm1feDg2X25lc3RlZF9vcHMga3ZtX25lc3RlZF9vcHMgX19yZWFkX21vc3RseTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0xNzAtXFx0XFx0XFx0XFx0KigoKHN0cnVjdCBrdm1feDg2X29wcyAqKTApLVxcdTAwM2VmdW5jKSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjE3MTojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgS1ZNX1g4Nl9PUFxcbmFyY2gveDg2L2t2bS94ODYuYzoxNzI6I2RlZmluZSBLVk1fWDg2X09QX09QVElPTkFMX1JFVDAgS1ZNX1g4Nl9PUFxcbmFyY2gveDg2L2t2bS94ODYuYy0xNzMtI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm0teDg2LW9wcy5oXFx1MDAzZVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTY5NDI9c3RhdGljIGlubGluZSB2b2lkIGt2bV9vcHNfdXBkYXRlKHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjk0OS1cXHRXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKTsgX19LVk1fWDg2X09QKGZ1bmMpXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjY5NTA6I2RlZmluZSBLVk1fWDg2X09QX09QVElPTkFMIF9fS1ZNX1g4Nl9PUFxcbmFyY2gveDg2L2t2bS94ODYuYzo2OTUxOiNkZWZpbmUgS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGZ1bmMpIFxcXFxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjk1Mi1cXHRzdGF0aWNfY2FsbF91cGRhdGUoa3ZtX3g4Nl8jI2Z1bmMsICh2b2lkICopa3ZtX3g4Nl9vcHMuZnVuYyA/IDogXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1ODo1NS40MjE2MzM4NjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQxMDE5OTU3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gSW5zdHJ1Y3Rpb24gT3B0aW1pemF0aW9uIENvbmNlcm5zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgbWFjcm8sIGFuZCBpdCdzIGVzc2VudGlhbGx5IGp1c3QgYW4gYWxpYXMgZm9yIGBfX0tWTV9YODZfT1BgLCB3aGljaCBleHBhbmRzIHRvIGEgYHN0YXRpY19jYWxsX3VwZGF0ZWAgdGhhdCBtYXBzIGEgZnVuY3Rpb24gdG8gYGt2bV94ODZfb3BzLmZ1bmNgLiAgVGhlIGNydXggb2YgdGhpcyBzZWVtcyB0byBiZSB0aGF0IGlmIGBrdm1feDg2X29wcy5mdW5jYCBpcyBgTlVMTGAsIHRoZW4gdGhlIHN0YXRpYyBjYWxsIGdldHMgdXBkYXRlZCB0byBgTlVMTGAuIFRoZSBpbW1lZGlhdGUgaXNzdWUgaGVyZSBpcyB0aGF0ICpjYWxsaW5nKiBhIGBOVUxMYCBmdW5jdGlvbiBpcyBhIGd1YXJhbnRlZWQgY3Jhc2gsIHJpZ2h0PyBJdCdzIGVsZW1lbnRhcnksIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIGxvZ2ljIGNvcnJlY3RseS5cblxuV2FpdCBhIHNlY29uZCwgdGhlcmUncyBgS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwYCwgd2hpY2ggc2VlbXMgdG8gaGF2ZSBhIGZhbGxiYWNrIG1lY2hhbmlzbSB0byBgX19zdGF0aWNfY2FsbF9yZXR1cm4wYC4gIFdoeSBkb2Vzbid0IGBLVk1fWDg2X09QX09QVElPTkFMYCBhbHNvIGhhdmUgYSBmYWxsYmFjaz8gVGhhdCBzZWVtcyBsaWtlIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIEl0IG1lYW5zIHRoZSBvcHRpb25hbCBpbnN0cnVjdGlvbiBwYXRoIGlzbid0IHRydWx5IG9wdGlvbmFsIOKAkyBpdCdzIG1hbmRhdG9yeSwgdW5sZXNzIHRoZSBkZXZlbG9wZXIgdGFrZXMgc3BlY2lmaWMgYWN0aW9ucyB0byBoYW5kbGUgdGhlIG51bGwgcG9pbnRlci4gVGhpcyBpcyBzb21ldGhpbmcgSSdkIHdhbnQgdG8gaW52ZXN0aWdhdGUgZnVydGhlci5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgYXJjaC94ODYva3ZtL3g4Ni5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNjk0OSwgdG8gc2VlIGlmIHRoZXJlIGlzIHNvbWUgb2J2aW91cyByZWFzb25pbmcgaGVyZSwgb3IgaWYgdGhpcyBpcywgYXMgSSBzdXNwZWN0LCBhIHN1YnRsZSBidWcgdGhhdCBuZWVkcyBzb21lIGF0dGVudGlvbi4gTGV0IG1lIGNoZWNrIHRoZSByZWxhdGVkIGNvZGUgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NDAxLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjAzLjgzMTgzNjEyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDc4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY5NDAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY5NDA6XFx0fVxcbjY5NDE6XFx0XFxuNjk0MjpcXHRzdGF0aWMgaW5saW5lIHZvaWQga3ZtX29wc191cGRhdGUoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcylcXG42OTQzOlxcdHtcXG42OTQ0OlxcdFxcdG1lbWNweShcXHUwMDI2a3ZtX3g4Nl9vcHMsIG9wcy1cXHUwMDNlcnVudGltZV9vcHMsIHNpemVvZihrdm1feDg2X29wcykpO1xcbjY5NDU6XFx0XFxuNjk0NjpcXHQjZGVmaW5lIF9fS1ZNX1g4Nl9PUChmdW5jKSBcXFxcXFxuNjk0NzpcXHRcXHRzdGF0aWNfY2FsbF91cGRhdGUoa3ZtX3g4Nl8jI2Z1bmMsIGt2bV94ODZfb3BzLmZ1bmMpO1xcbjY5NDg6XFx0I2RlZmluZSBLVk1fWDg2X09QKGZ1bmMpIFxcXFxcXG42OTQ5OlxcdFxcdFdBUk5fT04oIWt2bV94ODZfb3BzLmZ1bmMpOyBfX0tWTV9YODZfT1AoZnVuYylcXG42OTUwOlxcdCNkZWZpbmUgS1ZNX1g4Nl9PUF9PUFRJT05BTCBfX0tWTV9YODZfT1BcXG42OTUxOlxcdCNkZWZpbmUgS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGZ1bmMpIFxcXFxcXG42OTUyOlxcdFxcdHN0YXRpY19jYWxsX3VwZGF0ZShrdm1feDg2XyMjZnVuYywgKHZvaWQgKilrdm1feDg2X29wcy5mdW5jID8gOiBcXFxcXFxuNjk1MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAodm9pZCAqKV9fc3RhdGljX2NhbGxfcmV0dXJuMCk7XFxuNjk1NDpcXHQjaW5jbHVkZSBcXHUwMDNjYXNtL2t2bS14ODYtb3BzLmhcXHUwMDNlXFxuNjk1NTpcXHQjdW5kZWYgX19LVk1fWDg2X09QXFxuNjk1NjpcXHRcXG42OTU3OlxcdFxcdGt2bV9uZXN0ZWRfb3BzX3VwZGF0ZShvcHMtXFx1MDAzZW5lc3RlZF9vcHMpO1xcbjY5NTg6XFx0XFxuNjk1OTpcXHRcXHRrdm1fcG11X29wc191cGRhdGUob3BzLVxcdTAwM2VwbXVfb3BzKTtcXG42OTYwOlxcdH1cXG42OTYxOlxcdFxcbjY5NjI6XFx0c3RhdGljIGludCBrdm1feDg2X2NoZWNrX3Byb2Nlc3Nvcl9jb21wYXRpYmlsaXR5KHZvaWQpXFxuNjk2MzpcXHR7XFxuNjk2NDpcXHRcXHRpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpO1xcbjY5NjU6XFx0XFx0c3RydWN0IGNwdWluZm9feDg2ICpjID0gXFx1MDAyNmNwdV9kYXRhKGNwdSk7XFxuNjk2NjpcXHRcXG42OTY3OlxcdFxcdC8qXFxuNjk2ODpcXHRcXHQgKiBDb21wYXRpYmlsaXR5IGNoZWNrcyBhcmUgZG9uZSB3aGVuIGxvYWRpbmcgS1ZNIGFuZCB3aGVuIGVuYWJsaW5nXFxuNjk2OTpcXHRcXHQgKiBoYXJkd2FyZSwgZS5nLiBkdXJpbmcgQ1BVIGhvdHBsdWcsIHRvIGVuc3VyZSBhbGwgb25saW5lIENQVXMgYXJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjAzLjgzMjI0NjcxM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzQ1NDk4MjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIFg4NiBPcGVyYXRpb25zIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIGBwaV91cGRhdGVfaXJ0ZWAgZnJvbSBhbiBvcHRpb25hbCBLVk0geDg2IG9wZXJhdGlvbiAoYEtWTV9YODZfT1BfT1BUSU9OQUxgKSB0byBhIHJlcXVpcmVkIG9uZSAoYEtWTV9YODZfT1BgKS4gVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgd2UnbGwgbm93IGdldCBhIGBXQVJOX09OYCBkdXJpbmcgS1ZNIGluaXRpYWxpemF0aW9uIGlmIGBrdm1feDg2X29wcy5waV91cGRhdGVfaXJ0ZWAgaXMgTlVMTC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbiwgYHBpX3VwZGF0ZV9pcnRlYCwgaXMgY29uc2lzdGVudGx5IGltcGxlbWVudGVkIGJ5IGJvdGggVk1YIChJbnRlbCkgYW5kIFNWTSAoQU1EKSBoeXBlcnZpc29ycy4gVGhpcyBjaGFuZ2UgZmVlbHMgcG90ZW50aWFsbHkgcmlza3kgaWYgdGhlcmUncyBldmVuIGEgcmVtb3RlIGNoYW5jZSBvZiBpdCAqbm90KiBiZWluZyBhdmFpbGFibGUuXG5cbkxldCBtZSBxdWlja2x5IHZlcmlmeSB0aGF0LiBJJ2xsIGNoZWNrIGBhcmNoL3g4Ni9rdm0vdm14L21haW4uY2AgYW5kIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYC4gQWxyaWdodCwgSSBhbHJlYWR5IGhhdmUgdGhlIHJlbGV2YW50IGxpbmVzIGZyb20gdGhlIGNvZGU6IGJvdGggVk1YIGFuZCBTVk0gaGF2ZSBhbiBpbXBsZW1lbnRhdGlvbjogYHZteF9waV91cGRhdGVfaXJ0ZWAgYW5kIGBhdmljX3BpX3VwZGF0ZV9pcnRlYCwgcmVzcGVjdGl2ZWx5LiBHb29kLiBCdXQgd2FpdOKApiBteSBtaW5kIHF1aWNrbHkganVtcHMgdG8gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uXG5cbklzIGl0IHBvc3NpYmxlIHRoYXQgYENPTkZJR19LVk1fQU1EYCBvciBgQ09ORklHX0tWTV9JTlRFTGAgYXJlICpub3QqIGJ1aWx0IGludG8gdGhlIGtlcm5lbCwgYW5kIHRoZSBmdW5jdGlvbiB3b3VsZCAqbm90KiBiZSBjb21waWxlZCBpbj8gSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIGBhdmljX3BpX3VwZGF0ZV9pcnRlYCBpbiBgc3ZtLmNgIGlzIGFsd2F5cyBhdmFpbGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTQ3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6MDkuMTc3NzQ3MjM4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzgwNjUwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXZpY19waV91cGRhdGVfaXJ0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYz05MDI9c3RhdGljIHZvaWQgc3ZtX2lyX2xpc3RfZGVsKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZClcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTkxNC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYzo5MTU6aW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXFxuYXJjaC94ODYva3ZtL3N2bS9hdmljLmMtOTE2LVxcdFxcdFxcdHVuc2lnbmVkIGludCBob3N0X2lycSwgdWludDMyX3QgZ3Vlc3RfaXJxLFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzE0PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDE5LVxcdC5kZWxpdmVyX2ludGVycnVwdCA9IHN2bV9kZWxpdmVyX2ludGVycnVwdCxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjU0MjA6XFx0LnBpX3VwZGF0ZV9pcnRlID0gYXZpY19waV91cGRhdGVfaXJ0ZSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MjEtXFx0LnNldHVwX21jZSA9IHN2bV9zZXR1cF9tY2UsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTk1OT12b2lkIGF2aWNfcmVmcmVzaF9hcGljdl9leGVjX2N0cmwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oOjk2MDppbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTk2MS1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6MDkuNjU1ODIzMTQ4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMTQ3MTUyMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBLVk0vQU1EIEFWSUMgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIHplcm8gaW4gb24gYGF2aWNfcGlfdXBkYXRlX2lydGVgLiBJIHJlY2FsbCB0aGF0J3MgbmVzdGxlZCB3aXRoaW4gYGF2aWMuY2AuICBBIGtleSBxdWVzdGlvbiBpbW1lZGlhdGVseSBwb3BzIHVwOiBpcyBgYXZpYy5jYCAqYWx3YXlzKiBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgd2hlbiBgQ09ORklHX0tWTV9BTURgIGlzIGVuYWJsZWQ/IFRoYXQncyB0aGUgY3J1eCBvZiB0aGlzLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgS1ZNIG9uIEFNRCBzeXN0ZW1zIGxldmVyYWdlcyB0aGUgQWR2YW5jZWQgVmlydHVhbCBJbnRlcnJ1cHQgQ29udHJvbGxlciAoQVZJQyksIGJ1dCBJIG5lZWQgdG8gZGVmaW5pdGl2ZWx5IGVzdGFibGlzaCB0aGUgY29tcGlsYXRpb24gZGVwZW5kZW5jeS4gSWYgYGF2aWMuY2AgaXNuJ3QgY29uc2lzdGVudGx5IGluY2x1ZGVkIHVuZGVyIGBDT05GSUdfS1ZNX0FNRGAsIHRoZW4gdGhlIGBhdmljX3BpX3VwZGF0ZV9pcnRlYCBmdW5jdGlvbiBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLCBhbmQgaXRzIHByZXNlbmNlIGluIHRoZSBrZXJuZWwgaXMgZGVwZW5kZW50IG9uIG1vcmUgdGhhbiBqdXN0IHRoZSBgQ09ORklHX0tWTV9BTURgIG9wdGlvbi4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRvIGNvbmZpcm0uIFRoaXMgaGFzIGltcGxpY2F0aW9ucyBmb3IgaG93IEFWSUMncyBmdW5jdGlvbmFsaXRpZXMgYXJlIGFjdGl2YXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc2NjMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1OToxMi45NzA1NDA5MzdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMDQzNjA5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdmljXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9zdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1OToxMy4wNDA1OTMyOTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwNjA0MTkyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdDpcblxuKipEaXZpbmcgaW50byB0aGUgS1ZNIHg4NiBNYWtlZmlsZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzdGFydCBieSBuYXZpZ2F0aW5nIHJpZ2h0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIOKAkyB0aGUgYGFyY2gveDg2L2t2bS9NYWtlZmlsZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgS1ZNIG1vZHVsZXMgYW5kIHJlbGV2YW50IHg4Ni1zcGVjaWZpYyBjb21wb25lbnRzIGFyZSBidWlsdCBhbmQgbGlua2VkIHdpdGhpbiB0aGUga2VybmVsLiBUaGlzIE1ha2VmaWxlIGlzIGdvaW5nIHRvIGJlIHRoZSByb2FkbWFwLiBJJ20gbG9va2luZyBmb3IgdGhlIGtleSB2YXJpYWJsZXMsIGluY2x1ZGUgcGF0aHMsIHNvdXJjZSBmaWxlcywgYW5kIGFueSBzcGVjaWFsIGJ1aWxkIHJ1bGVzIHNwZWNpZmljIHRvIEtWTSB3aXRoaW4gdGhlIHg4NiBhcmNoaXRlY3R1cmUuIEknbSBleHBlY3RpbmcgdG8gZmluZCBpbmZvcm1hdGlvbiBhYm91dCBob3cgS1ZNIGludGVyYWN0cyB3aXRoIGZlYXR1cmVzIGxpa2UgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucyAoVlQteCBvciBBTUQtViksIG1lbW9yeSBtYW5hZ2VtZW50LCBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIG9uIHRoZSB4ODYgcGxhdGZvcm0uIFRoZSBkZXBlbmRlbmNpZXMgd2lsbCBsaWtlbHkgcmV2ZWFsIGhvdyBpdCBpbnRlZ3JhdGVzIGludG8gdGhlIG92ZXJhbGwga2VybmVsIGJ1aWxkIHByb2Nlc3MuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0cmVhc3VyZXMgdGhpcyBNYWtlZmlsZSBob2xkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5NjksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1OToxNi42NDY2Mzg0MThaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0ODQ1MDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF2aWNcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MjI9a3ZtLWludGVsLSQoQ09ORklHX0tWTV9JTlRFTF9URFgpXFx0Kz0gdm14L3RkeC5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTIzLVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyNDprdm0tYW1kLXlcXHRcXHQrPSBzdm0vc3ZtLm8gc3ZtL3ZtZW50ZXIubyBzdm0vcG11Lm8gc3ZtL25lc3RlZC5vIHN2bS9hdmljLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMjUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjE2LjcxMTQ4OTU3N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA0NTIwODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIENvbXBpbGF0aW9uIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBgc3ZtL2F2aWMub2AuLi4gdGhhdCdzIGFsd2F5cyBidWlsdCwgbm8gcXVlc3Rpb24uIE5vdywgSSBuZWVkIHRvIGpvZyBteSBtZW1vcnkgYSBiaXQuIFdoZXJlIGRvZXMgYHZteF9waV91cGRhdGVfaXJ0ZWAgY29tZSBmcm9tPyBBaCwgdGhhdCdzIHJpZ2h0LCBpdCdzIGJ1cmllZCBpbiBgcG9zdGVkX2ludHIuY2AuIE9rYXksIHRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2hlY2sgdGhhdCBzcGVjaWZpYyBzb3VyY2UgZmlsZSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBidWlsZCBwcm9jZXNzLCB0byBzZWUgd2h5IEknbSBhc2tpbmcgdGhpcyBxdWVzdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1OToyMS41MTYwMTI4MjRaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzY4OTg5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwb3N0ZWRfaW50clxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZT0xNz1rdm0taW50ZWwteVxcdFxcdCs9IHZteC92bXgubyB2bXgvdm1lbnRlci5vIHZteC9wbXVfaW50ZWwubyB2bXgvdm1jczEyLm8gXFxcXFxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZToxODpcXHRcXHRcXHQgICB2bXgvbmVzdGVkLm8gdm14L3Bvc3RlZF9pbnRyLm8gdm14L21haW4ub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0xOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6MjEuNjk5NzA4MzdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQzOTAwMzMwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiB0aGUgYHBpX3VwZGF0ZV9pcnRlYCBDb21waWxhdGlvbioqXG5cbk9rYXksIHNvIGB2bXgvcG9zdGVkX2ludHIub2AgaXMgYWx3YXlzIGNvbXBpbGVkLCB3aGljaCBtZWFucyBgcGlfdXBkYXRlX2lydGVgIGlzICphbHdheXMqIGdvaW5nIHRvIGJlIHByZXNlbnQgaW4gYm90aCBgdnRfeDg2X29wc2AgYW5kIGBzdm1feDg2X29wc2AuIFRoYXQncyB0aGUgYmFzZWxpbmUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzLCB3aGF0IGhhcHBlbnMgaWYgYGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSlgIGdldHMgaW52b2tlZCB3aGVuIGBpcnFfYnlwYXNzYCBpc24ndCBhY3RpdmU/IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYSBzdWJ0bGUgZXJyb3IgY29uZGl0aW9uLlxuXG5BaCwgcmlnaHQsIHRoZSBwYXRjaCBqdXN0IG1vdmVzIGZyb20gYEtWTV9YODZfT1BfT1BUSU9OQUwocGlfdXBkYXRlX2lydGUpYCB0byBgS1ZNX1g4Nl9PUChwaV91cGRhdGVfaXJ0ZSlgLiBTbywgdGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiwgd2hlbiB0aGUgbW9kdWxlIGxvYWRzLCB3ZSdyZSBnb2luZyB0byBpbnRyb2R1Y2UgYSBgV0FSTl9PTigha3ZtX3g4Nl9vcHMuZnVuYylgLiBCdXQgYm90aCBWTVggYW5kIFNWTSAqYWx3YXlzKiBzdXBwbHkgdGhpcyBmdW5jdGlvbiwgc28gdGhhdCBgV0FSTl9PTmAgc2hvdWxkIG5ldmVyIGFjdHVhbGx5IHRyaWdnZXIuIFdlJ3JlIGVmZmVjdGl2ZWx5IHR1cm5pbmcgYW4gb3B0aW9uYWwgZnVuY3Rpb24gaW50byBhIG1hbmRhdG9yeSBvbmUsIHdoaWNoIGlzIHNhZmUgaW4gdGhpcyBjYXNlLlxuXG5CdXQgaG9sZCBvbi4uLiBpcyB0aGVyZSBhbnkgb3RoZXIgbG9jYXRpb24gaW4gdGhlIGNvZGUgd2hlcmUgYGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSlgIGlzIHVzZWQsIGFuZCAqcHJldmlvdXNseSogdGhlcmUgd2FzIGEgY2hlY2sgdG8gc2VlIGlmIHRoZSBmdW5jdGlvbiB3YXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQ/IEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuIEkgbmVlZCB0byBzY2FuIGZvciBhbnkgaW5zdGFuY2VzIG9mIGBrdm1feDg2X2hhcyhwaV91cGRhdGVfaXJ0ZSlgIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyBvciBhc3N1bXB0aW9ucyB0aGF0IGNvdWxkIGJlIGJyb2tlbiBieSB0aGlzIGNoYW5nZS4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlYmFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2NzgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6MjguMTM4NzE0MzEyWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjgwMTY1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3g4Nl9oYXNcXFxcKHBpX3VwZGF0ZV9pcnRlXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6MjguMjAxNTMwOTYxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NTQxMDEwODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgYHBpX3VwZGF0ZV9pcnRlYCB2YXJpYWJsZS4qKiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8ga25vdyB3aGVyZSB0aGlzIHRoaW5nIGlzIGJlaW5nIHVzZWQuIElmIGl0J3Mgbm90IGJlaW5nIGNoZWNrZWQgYW55d2hlcmUsIHRoZW4gaXQncyBlZmZlY3RpdmVseSBkZWFkIGNvZGUsIHdoaWNoIGNvdWxkIGJlIGEgc2ltcGxlIGNsZWFuLXVwLiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgaXQgKmlzKiBiZWluZyBjaGVja2VkLCBJIG5lZWQgdG8ga25vdyAqd2hlcmUqIGFuZCAqd2h5Ki4gSXRzIHVzYWdlIHdpbGwgZGljdGF0ZSBpdHMgaW1wb3J0YW5jZSBhbmQsIHRoZXJlZm9yZSwgdGhlIGltcG9ydGFuY2Ugb2YgYW55dGhpbmcgcmVsYXRlZCB0byBpdC4gVW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpcyBrZXkgYmVmb3JlIG1ha2luZyBhbnkganVkZ21lbnRzIG9uIHdoYXQgdG8gZG8sIG9yIHdoZXRoZXIgdGhlcmUgaXMgYSBidWcuIExldCdzIHNlZSBpZiBJIGNhbiB0cmFjZSBpdHMgdXNhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzU4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6MzEuMTU1NjM0ODk4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTUzMzY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaV91cGRhdGVfaXJ0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9pcnEuYz00MjY9c3RhdGljIGJvb2wga3ZtX2lycV9pc19wb3N0YWJsZShzdHJ1Y3Qga3ZtX2xhcGljX2lycSAqaXJxKVxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTQzMi1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDMzOnN0YXRpYyBpbnQga3ZtX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDM0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplbnRyeSlcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy00NjctXFxuYXJjaC94ODYva3ZtL2lycS5jOjQ2ODpcXHRyID0ga3ZtX3g4Nl9jYWxsKHBpX3VwZGF0ZV9pcnRlKShpcnFmZCwgaXJxZmQtXFx1MDAzZWt2bSwgaG9zdF9pcnEsIGlycWZkLVxcdTAwM2Vnc2ksXFxuYXJjaC94ODYva3ZtL2lycS5jLTQ2OS1cXHRcXHRcXHRcXHRcXHQgdmNwdSwgaXJxLnZlY3Rvcik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NDgyPWludCBrdm1fYXJjaF9pcnFfYnlwYXNzX2FkZF9wcm9kdWNlcihzdHJ1Y3QgaXJxX2J5cGFzc19jb25zdW1lciAqY29ucyxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy00OTYtXFx0aWYgKGlycWZkLVxcdTAwM2VpcnFfZW50cnkudHlwZSA9PSBLVk1fSVJRX1JPVVRJTkdfTVNJKSB7XFxuYXJjaC94ODYva3ZtL2lycS5jOjQ5NzpcXHRcXHRyZXQgPSBrdm1fcGlfdXBkYXRlX2lydGUoaXJxZmQsIFxcdTAwMjZpcnFmZC1cXHUwMDNlaXJxX2VudHJ5KTtcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDk4LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYz01MDg9dm9pZCBrdm1fYXJjaF9pcnFfYnlwYXNzX2RlbF9wcm9kdWNlcihzdHJ1Y3QgaXJxX2J5cGFzc19jb25zdW1lciAqY29ucyxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy01MjctXFx0ICAgIFdBUk5fT05fT05DRShpcnFmZC1cXHUwMDNlaXJxX2J5cGFzc192Y3B1KSkge1xcbmFyY2gveDg2L2t2bS9pcnEuYzo1Mjg6XFx0XFx0cmV0ID0ga3ZtX3BpX3VwZGF0ZV9pcnRlKGlycWZkLCBOVUxMKTtcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTI5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NTQwPXZvaWQga3ZtX2FyY2hfdXBkYXRlX2lycWZkX3JvdXRpbmcoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLFxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTU1Mi1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NTUzOlxcdGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgbmV3KTtcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTU0LX1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jPTkwMj1zdGF0aWMgdm9pZCBzdm1faXJfbGlzdF9kZWwoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9hdmljLmMtOTE0LVxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jOjkxNTppbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYy05MTYtXFx0XFx0XFx0dW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMTQ9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MTktXFx0LmRlbGl2ZXJfaW50ZXJydXB0ID0gc3ZtX2RlbGl2ZXJfaW50ZXJydXB0LFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQyMDpcXHQucGlfdXBkYXRlX2lydGUgPSBhdmljX3BpX3VwZGF0ZV9pcnRlLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQyMS1cXHQuc2V0dXBfbWNlID0gc3ZtX3NldHVwX21jZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9OTU5PXZvaWQgYXZpY19yZWZyZXNoX2FwaWN2X2V4ZWNfY3RybChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6OTYwOmludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTYxLVxcdFxcdFxcdHVuc2lnbmVkIGludCBob3N0X2lycSwgdWludDMyX3QgZ3Vlc3RfaXJxLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTctXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6OTk4OlxcdC5waV91cGRhdGVfaXJ0ZSA9IHZteF9waV91cGRhdGVfaXJ0ZSxcXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTktXFx0LnBpX3N0YXJ0X2J5cGFzcyA9IHZteF9waV9zdGFydF9ieXBhc3MsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmM9Mjk3PXZvaWQgdm14X3BpX3N0YXJ0X2J5cGFzcyhzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMzA0LVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYzozMDU6aW50IHZteF9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMzA2LVxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaD0xNj1ib29sIHBpX2hhc19wZW5kaW5nX2ludGVycnVwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaDoxNzppbnQgdm14X3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaC0xOC1cXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjMxLjIxNzE3NzUxNloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTQ5MzE5NzM1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgRGVlcCBpbnRvIEtWTSBJbnRlcnJ1cHQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBga3ZtX3BpX3VwZGF0ZV9pcnRlYC4gSW50ZXJlc3RpbmcsIHRoaXMgZnVuY3Rpb24gc2VlbXMgbGlrZSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBpbnRlcnJ1cHQgbWFuYWdlbWVudCBwdXp6bGUsIGJ1dCB3YWl0Li4uaXQncyBvbmx5IGNhbGxlZCB1bmRlciB2ZXJ5IHNwZWNpZmljIGNvbmRpdGlvbnMsIG5hbWVseSBpZiB0aGUgYGlycWNoaXBfaW5fa2VybmVsKGt2bSlgIGNoZWNrIGlzIHRydWUgYW5kIGlmIGBrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpYCBhbHNvIGV2YWx1YXRlcyB0byB0cnVlLiBUaGF0J3MgYSBjcnVjaWFsIGJpdCBvZiBjb25kaXRpb25hbCBsb2dpYyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YhIFRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNhbGwgcGF0aCwgSSBuZWVkIHRvIGtub3cgZXhhY3RseSB3aGF0IGBrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpYCBtZWFucywgYW5kIHdoZXJlIGl0J3MgYmVpbmcgdXNlZC4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBkb2VzIGFuZCB3aGVyZSBpdCdzIGRlZmluZWQuIFRpbWUgdG8gZHJpbGwgZG93biBvbiB0aGF0IGZ1bmN0aW9uIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE0MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjQ2LjcxMDM3ODIzNFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyMjgwOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX2hhc19pcnFfYnlwYXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL2lycS5jPTQzMz1zdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDQxLVxcbmFyY2gveDg2L2t2bS9pcnEuYzo0NDI6XFx0aWYgKFdBUk5fT05fT05DRSghaXJxY2hpcF9pbl9rZXJuZWwoa3ZtKSB8fCAha3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKSkpXFxuYXJjaC94ODYva3ZtL2lycS5jLTQ0My1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYz0xNDc9c3RhdGljIGJvb2wgdm14X2Nhbl91c2VfdnRkX3BpKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYy0xNTMtXFx0ICovXFxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jOjE1NDpcXHRyZXR1cm4gaXJxY2hpcF9pbl9rZXJuZWwoa3ZtKSBcXHUwMDI2XFx1MDAyNiBrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jLTE1NS1cXHQgICAgICAgUkVBRF9PTkNFKGt2bS1cXHUwMDNlYXJjaC5ucl9wb3NzaWJsZV9ieXBhc3NfaXJxcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjQ3LjE2MjY2NDc4NVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE0MjI3NzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS1ZNIElSUSBCeXBhc3MgTG9jYXRpb24gUXVhbmRhcnkqKlxuXG5Pa2F5LCBJJ20ganVzdCBxdWlja2x5IHRyeWluZyB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGVyZSBleGFjdGx5IHRoYXQgYGt2bV9hcmNoX2hhc19pcnFfYnlwYXNzKClgIGZ1bmN0aW9uIGlzIGRlZmluZWQuIElzIGl0IHR1Y2tlZCBhd2F5IGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgLCBvciBpcyBpdCBkZWNsYXJlZCBpbiB0aGF0IGhlYWRlciBmaWxlLCBgYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaGA/IEkgKmtub3cqIEkndmUgd29ya2VkIHdpdGggaXQgYmVmb3JlLi4uIEl0J3MgaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBiZWNhdXNlIEkgZG9uJ3Qgd2FudCB0byBjaGFzZSB0aGUgd3JvbmcgaW5jbHVkZSBwYXRoIHdoZW4gSSdtIHRyYWNraW5nIHNvbWV0aGluZyBkb3duIG9yIGNoYW5naW5nIHRoZSBmdW5jdGlvbmFsaXR5IGFyb3VuZCB0aGUgYnlwYXNzLiBHb3R0YSBxdWlja2x5IHZlcmlmeSB0aGF0IGxvY2F0aW9uIHRvIGtlZXAgdGhpbmdzIGVmZmljaWVudC4gUmlnaHQsIGxldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTc0OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjUwLjY3Njg5NTE0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODAwNzMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYXJjaF9oYXNfaXJxX2J5cGFzc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0xODkyPXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fYXJjaF92Y3B1X3VuYmxvY2tpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xODk2LVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTg5NzpzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3Modm9pZClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTE4OTgte1xcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jPTQzMz1zdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDQxLVxcbmFyY2gveDg2L2t2bS9pcnEuYzo0NDI6XFx0aWYgKFdBUk5fT05fT05DRSghaXJxY2hpcF9pbl9rZXJuZWwoa3ZtKSB8fCAha3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKSkpXFxuYXJjaC94ODYva3ZtL2lycS5jLTQ0My1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYz0xNDc9c3RhdGljIGJvb2wgdm14X2Nhbl91c2VfdnRkX3BpKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYy0xNTMtXFx0ICovXFxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jOjE1NDpcXHRyZXR1cm4gaXJxY2hpcF9pbl9rZXJuZWwoa3ZtKSBcXHUwMDI2XFx1MDAyNiBrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jLTE1NS1cXHQgICAgICAgUkVBRF9PTkNFKGt2bS1cXHUwMDNlYXJjaC5ucl9wb3NzaWJsZV9ieXBhc3NfaXJxcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjUwLjc1NDkxMDkxOFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkzNjcyMzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIEtWTSBIb3N0IEhlYWRlcioqXG5cbk9rYXksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgeDg2IEtWTSBob3N0IGltcGxlbWVudGF0aW9uLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGEgbGlrZWx5IGFyZWEuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gcHJvdG90eXBlcyByZWxhdGVkIHRvIEtWTSdzIGludGVyYWN0aW9uIHdpdGggdGhlIGhvc3QgQ1BVIGFyZSBvZnRlbiBkZWZpbmVkIG5lYXIgdGhlIGludGVyZmFjZSBkZWZpbml0aW9ucyB3aXRoaW4gYGFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhgLiBBbmQga25vd2luZyB0aGUgcHJvamVjdCwgbGluZXMgMTg5Ny1pc2ggc2hvdWxkIGJlIGEgZ29vZCBwbGFjZSB0byBiZWdpbi4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgeW91IGZpbmQgdGhlIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gdGhlIG1vcmUgYWR2YW5jZWQgQ1BVIGZlYXR1cmVzIGFuZCByZWdpc3RlcnMgYW5kIHRoZWlyIGVtdWxhdGlvbiB3aXRoaW4gS1ZNIG9uIHg4Ni4gVGhpcyB3aWxsIGVpdGhlciBiZSB0aGUgc291cmNlIG9yIGFuIGVudHJ5IHBvaW50IHRvIHRoZSBzb3VyY2Ugb2Ygd2hhdGV2ZXIgaXQgaXMgSSBhbSBhZnRlci4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0J3MgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDcxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6NTUuNDQ4NTg2MzA3WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4OTUsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE4OTU6XFx0fVxcbjE4OTY6XFx0XFxuMTg5NzpcXHRzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3Modm9pZClcXG4xODk4OlxcdHtcXG4xODk5OlxcdFxcdHJldHVybiBlbmFibGVfZGV2aWNlX3Bvc3RlZF9pcnFzO1xcbjE5MDA6XFx0fVxcbjE5MDE6XFx0XFxuMTkwMjpcXHQjZW5kaWYgLyogX0FTTV9YODZfS1ZNX0hPU1RfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1OTo1NS40NDg3MTA3NTdaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI2MTk1MjkzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIGBwaV91cGRhdGVfaXJ0ZWAqKlxuXG5Pa2F5LCBzbyBga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKWAgaGluZ2VzIG9uIGBlbmFibGVfZGV2aWNlX3Bvc3RlZF9pcnFzYCwgd2hpY2gsIGFzIEkgcmVjYWxsLCBpcyBlaXRoZXIgYSBtb2R1bGUgcGFyYW1ldGVyIG9yIGEgZ2xvYmFsIHZhcmlhYmxlLiBUaGlzIHBhdGNoIG1ha2VzIGBwaV91cGRhdGVfaXJ0ZWAgYSBtYW5kYXRvcnkgS1ZNIHg4NiBvcGVyYXRpb24uIFRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGFjdHVhbGx5ICpkbyogYW55dGhpbmc/XG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXJlJ3Mgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBwYXRjaCByZW1vdmVzIHRoZSBmYWxsYmFjayB0byBgTlVMTGAgZm9yIGBwaV91cGRhdGVfaXJ0ZWAgaW4gYGt2bV94ODZfb3BzYC4gQnV0LCBpdCBzZWVtcyBsaWtlIGJvdGggVk1YIGFuZCBTVk0gYWx3YXlzIHByb3ZpZGVkIHRoaXMsIHNvIGl0IHdhcyBuZXZlciBgTlVMTGAgaW4gcHJhY3RpY2UuIFRoZSBgc3RhdGljX2NhbGxfdXBkYXRlYCB3b3VsZCBoYXZlIHNldCBpdCB0byBgTlVMTGAgb25seSBpZiB0aGUgaW1wbGVtZW50YXRpb24gZGlkbid0IHN1cHBseSBpdC5cblxuSGFuZyBvbiwgd2hhdCBhYm91dCB3aGVuIGBlbmFibGVfZGV2aWNlX3Bvc3RlZF9pcnFzYCBpcyBmYWxzZT8gVGhlbiBga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKWAgaXMgZmFsc2UsIGFuZCBga3ZtX3BpX3VwZGF0ZV9pcnRlYCByZXR1cm5zIGAtRUlOVkFMYCBlYXJseSwgYnlwYXNzaW5nIHRoZSB3aG9sZSBga3ZtX3g4Nl9jYWxsKHBpX3VwZGF0ZV9pcnRlKWAgY2FsbC4gUmlnaHQuIFNvLCBpdCByZWFsbHkganVzdCB0d2Vha3MgdGhlIGRlZmluaXRpb24gaW4gYGt2bS14ODYtb3BzLmhgLlxuXG5Eb2VzIGl0IGNoYW5nZSBiZWhhdmlvciB0aGVuPyBJZiBib3RoIFZNWCBhbmQgU1ZNICphbHdheXMqIHByb3ZpZGVkIGBwaV91cGRhdGVfaXJ0ZWAsIG1ha2luZyBpdCBtYW5kYXRvcnkgc2VlbXMgdG8ganVzdCBhZGQgYSBgV0FSTl9PTigha3ZtX3g4Nl9vcHMuZnVuYylgIGR1cmluZyBpbml0aWFsaXphdGlvbi4gQnV0IHRoYXQgYFdBUk5fT05gIHNob3VsZCBuZXZlciB0cmlnZ2VyLCBiZWNhdXNlIHRoZSBmdW5jdGlvbnMgYXJlIGFsd2F5cyBwcm92aWRlZC4gQW5kLCBhcyBmYXIgYXMgSSdtIGF3YXJlLCBLVk0geDg2ICpvbmx5KiBoYXMgVk1YIGFuZCBTVk0uIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdC4uLiBObyBvdGhlciBhcmNoaXRlY3R1cmVzIGFyZSByZWxldmFudC4gTGV0J3Mgc2VlLi4uIEknbSBnb2luZyB0byBzZWFyY2ggZm9yIG90aGVyIHVzZXMgb2YgYHBpX3VwZGF0ZV9pcnRlYC4uLiBObywgdGhlIGdyZXBzIGNhbWUgdXAgZW1wdHkuXG5cblNvLCB0aGlzIGxvb2tzIGxpa2UgYSBjbGVhbnVwIHBhdGNoLCBlc3NlbnRpYWxseSBkZWNsYXJpbmcgYW4gb3BlcmF0aW9uIG1hbmRhdG9yeSBiZWNhdXNlIGFsbCBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSBwcm92aWRlIGl0LiBJdCBzZWVtcyB0byBqdXN0IGJlIG1ha2luZyB0aGUgbWFjcm8gZnJvbSBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgdG8gYEtWTV9YODZfT1BgLiAgU2luY2UgYm90aCBpbXBsZW1lbnRhdGlvbnMgKmFsd2F5cyogcHJvdmlkZWQgaXQsIHRoZW4gdGhlIG9ubHkgcmVhbCBjaGFuZ2UgaXMgdGhlIGFkZGVkIGBXQVJOX09OYCBkdXJpbmcgbW9kdWxlIGxvYWQsIGFuZCB0aGF0IHNob3VsZCBiZSB1bnJlYWNoYWJsZS5cblxuT2theSwgbGV0IG1lIGRvdWJsZS1jaGVjay4gSW4gYHZ0X3g4Nl9vcHNgLCBpdCdzIHNldCB0byBgdm14X3BpX3VwZGF0ZV9pcnRlYC4gSW4gYHN2bV94ODZfb3BzYCwgaXQncyBzZXQgdG8gYGF2aWNfcGlfdXBkYXRlX2lydGVgLiBBcmUgdGhlc2UgaW5pdGlhbGl6YXRpb25zIGNvbmRpdGlvbmFsIGluIGFueSB3YXk/IE5vLCB0aGV5IGFwcGVhciB0byBiZSBkaXJlY3QgYXNzaWdubWVudHMuXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCBpcyBmdXp6aW5nIGl0IGV2ZW4gd29ydGh3aGlsZT8gSXQgc2VlbXMgbGlrZSBhIHZlcnkgbG93LWltcGFjdCBjaGFuZ2UgdGhhdCByZWFsbHkgb25seSBhZmZlY3RzIGEgYFdBUk5fT05gIHdoaWNoIHdpbGwgbmV2ZXIgYmUgaGl0LCBzbyBpdCdzIGEgcGFzcyBmb3IgZnV6emluZyB1bmxlc3MgdGhlcmUncyBzb21lIHN1YnRsZSBpbnRlcmFjdGlvbiBJJ20gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4NTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowMDowOC4wNjgyNDM0NDdaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMzYzNDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlxcXFwucGlfdXBkYXRlX2lydGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMTQ9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MTktXFx0LmRlbGl2ZXJfaW50ZXJydXB0ID0gc3ZtX2RlbGl2ZXJfaW50ZXJydXB0LFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQyMDpcXHQucGlfdXBkYXRlX2lydGUgPSBhdmljX3BpX3VwZGF0ZV9pcnRlLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQyMS1cXHQuc2V0dXBfbWNlID0gc3ZtX3NldHVwX21jZSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTg4MD1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgdnRfeDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTk3LVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjk5ODpcXHQucGlfdXBkYXRlX2lydGUgPSB2bXhfcGlfdXBkYXRlX2lydGUsXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTk5LVxcdC5waV9zdGFydF9ieXBhc3MgPSB2bXhfcGlfc3RhcnRfYnlwYXNzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowMDowOC4xMzg2MTIzNjZaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI5NjUyNjQ5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIEtWTSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgS1ZNIGNvZGUgY2hhbmdlIHJlbGF0ZWQgdG8gYGt2bV94ODZfb3BzLnBpX3VwZGF0ZV9pcnRlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyB1bmNvbmRpdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aGluIHRoZSBzdHJ1Y3QgZGVmaW5pdGlvbi4gVGhlcmVmb3JlLCB0aGUgZnVuY3Rpb24gcG9pbnRlciBga3ZtX3g4Nl9vcHMucGlfdXBkYXRlX2lydGVgICpzaG91bGQqIG5ldmVyIGJlIE5VTEwuXG5cbkNvbnNlcXVlbnRseSwgc3dpdGNoaW5nIGZyb20gYEtWTV9YODZfT1BfT1BUSU9OQUxgIHRvIGBLVk1fWDg2X09QYCBzZWVtcyBsaWtlIGl0J3MganVzdCBhIGNvc21ldGljIGNoYW5nZSDigJMgcHJpbWFyaWx5IG1vZGlmeWluZyB0aGUgc3RhdGljIGNhbGwgdXBkYXRlIG1hY3JvIHRvIGluY2x1ZGUgYSBgV0FSTl9PTigha3ZtX3g4Nl9vcHMuZnVuYylgLiBBbmQgc2luY2UgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaXMgKm5ldmVyKiBOVUxMLCB0aGlzIGBXQVJOX09OYCB3aWxsIGFsd2F5cyBiZSB1bnJlYWNoYWJsZS4gSW4gZXNzZW5jZSwgaXQgYXBwZWFycyB0aGVyZSdzIG5vIGFjdHVhbCBmdW5jdGlvbmFsIGRpZmZlcmVuY2UuIFRoZSBjb2RlIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhdCBydW50aW1lIHJlbWFpbnMgZXhhY3RseSB0aGUgc2FtZSDigJMganVzdCBhIHN0YXRpYyBjYWxsIHRvIHRoZSBpbnRlbmRlZCBmdW5jdGlvbi5cblxuQnV0LCBoYW5nIG9uIGEgc2Vjb25kLi4uIGlzIHRoZXJlIGV2ZW4gYSAqcGVyZm9ybWFuY2UqIGRpZmZlcmVuY2UsIHNvbWUgc29ydCBvZiBvdmVyaGVhZCBhc3NvY2lhdGVkIHdpdGggYEtWTV9YODZfT1BfT1BUSU9OQUxgIGNvbXBhcmVkIHRvIGp1c3QgYEtWTV9YODZfT1BgPyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBhcmNoL3g4Ni9rdm0veDg2LmNgIGFnYWluLiBJIGhhdmUgdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBpbXBhY3RzIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NDE1LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjAwOjE3LjQzNTE0MTc3OFoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTkxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY5NDYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY5NDY6XFx0I2RlZmluZSBfX0tWTV9YODZfT1AoZnVuYykgXFxcXFxcbjY5NDc6XFx0XFx0c3RhdGljX2NhbGxfdXBkYXRlKGt2bV94ODZfIyNmdW5jLCBrdm1feDg2X29wcy5mdW5jKTtcXG42OTQ4OlxcdCNkZWZpbmUgS1ZNX1g4Nl9PUChmdW5jKSBcXFxcXFxuNjk0OTpcXHRcXHRXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKTsgX19LVk1fWDg2X09QKGZ1bmMpXFxuNjk1MDpcXHQjZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgX19LVk1fWDg2X09QXFxuNjk1MTpcXHQjZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChmdW5jKSBcXFxcXFxuNjk1MjpcXHRcXHRzdGF0aWNfY2FsbF91cGRhdGUoa3ZtX3g4Nl8jI2Z1bmMsICh2b2lkICopa3ZtX3g4Nl9vcHMuZnVuYyA/IDogXFxcXFxcbjY5NTM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgKHZvaWQgKilfX3N0YXRpY19jYWxsX3JldHVybjApO1xcbjY5NTQ6XFx0I2luY2x1ZGUgXFx1MDAzY2FzbS9rdm0teDg2LW9wcy5oXFx1MDAzZVxcbjY5NTU6XFx0I3VuZGVmIF9fS1ZNX1g4Nl9PUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowMDoxNy40MzU1MDI0ODhaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAxOTE4Mzg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTSBYODYgT3BlcmF0aW9ucyBDb2RlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgYEtWTV9YODZfT1BfT1BUSU9OQUxgIGlzLCBmb3IgYWxsIGludGVudHMgYW5kIHB1cnBvc2VzLCAqaWRlbnRpY2FsKiB0byBgX19LVk1fWDg2X09QYC4gVGhlIGxhdHRlciBpcyBqdXN0IGEgd3JhcHBlciBjb250YWluaW5nIGBXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKTsgX19LVk1fWDg2X09QKGZ1bmMpYC4gVGhlIG9ubHkgcmVhbCB2YXJpYXRpb24gYXJpc2VzIGR1cmluZyBga3ZtX29wc191cGRhdGUoKWAuIEhlcmUsIHRoZSBgV0FSTl9PTmAgY2hlY2sgaXMgYXBwbGllZC5cblxuQnV0IGhhbmcgb24sIHRoYXQgYFdBUk5fT05gIGlzIGFsbW9zdCBjZXJ0YWlubHkgYSBub24tZXZlbnQuIExvb2tpbmcgYXQgdGhlIGluaXRpYWxpemF0aW9uLCBga3ZtX3g4Nl9vcHMucGlfdXBkYXRlX2lydGVgIGlzIHN0YXRpY2FsbHkgc2V0IHRvIGEgdmFsaWQgZnVuY3Rpb24gcG9pbnRlciBpbiBib3RoIFZNWCBhbmQgU1ZNIGltcGxlbWVudGF0aW9ucy4gVGhhdCBtZWFucyB0aGUgd2FybmluZyBjb25kaXRpb24gaXMgdmlydHVhbGx5IGltcG9zc2libGUuXG5cblNvLCByZWFsaXN0aWNhbGx5LCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBhY3R1YWwgZnVuY3Rpb25hbCBhbHRlcmF0aW9ucyB0aGF0IHdvdWxkIGV2ZW4gYmUgd29ydGggZnV6emluZy4gSXQgcmVhbGx5IGp1c3Qgc2VlbXMgbGlrZSBhIHN0cnVjdHVyYWwgY2xlYW51cCBvciBjb2RlIGh5Z2llbmUga2luZCBvZiBjaGFuZ2UuXG5cbkJ1dCwgYXMgYSBnb29kIHByYWN0aWNlLCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2ssIGp1c3QgdG8gYmUgc3VyZSwgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHNuZWFreSBpbnN0YW5jZXMgd2hlcmUgdGhlc2UgbWFjcm9zIGFjdHVhbGx5IGJlaGF2ZSBkaWZmZXJlbnRseS4gT25lIGZpbmFsIHN3ZWVwIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjMyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDA6MjIuNDU0NjkwMDEzWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzUzMDM5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJLVk1fWDg2X09QX09QVElPTkFMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTItI2lmICFkZWZpbmVkKEtWTV9YODZfT1ApIHx8IFxcXFxcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM6ICAgICFkZWZpbmVkKEtWTV9YODZfT1BfT1BUSU9OQUwpIHx8IFxcXFxcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ6ICAgICFkZWZpbmVkKEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTUtI2Vycm9yIE1pc3Npbmcgb25lIG9yIG1vcmUgS1ZNX1g4Nl9PUCAjZGVmaW5lc1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC03LS8qXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4OiAqIEtWTV9YODZfT1AoKSBhbmQgS1ZNX1g4Nl9PUF9PUFRJT05BTCgpIGFyZSB1c2VkIHRvIGhlbHAgZ2VuZXJhdGVcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTktICogYm90aCBERUNMQVJFL0RFRklORV9TVEFUSUNfQ0FMTCgpIGludm9jYXRpb25zIGFuZFxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xMS0gKlxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI6ICogS1ZNX1g4Nl9PUF9PUFRJT05BTCgpIGNhbiBiZSB1c2VkIGZvciB0aG9zZSBmdW5jdGlvbnMgdGhhdCBjYW4gaGF2ZVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM6ICogYSBOVUxMIGRlZmluaXRpb24uICBLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoKSBjYW4gYmUgdXNlZCBsaWtld2lzZVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTQtICogdG8gbWFrZSBhIGRlZmluaXRpb24gb3B0aW9uYWwsIGJ1dCBpbiB0aGlzIGNhc2UgdGhlIGRlZmF1bHQgd2lsbFxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD0yMz1LVk1fWDg2X09QKHZtX2luaXQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyNDpLVk1fWDg2X09QX09QVElPTkFMKHZtX2Rlc3Ryb3kpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyNTpLVk1fWDg2X09QX09QVElPTkFMKHZtX3ByZV9kZXN0cm95KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHZjcHVfcHJlY3JlYXRlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMjctS1ZNX1g4Nl9PUCh2Y3B1X2NyZWF0ZSlcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9NDM9S1ZNX1g4Nl9PUChzZXRfY3IwKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDQ6S1ZNX1g4Nl9PUF9PUFRJT05BTChwb3N0X3NldF9jcjMpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC00NS1LVk1fWDg2X09QKGlzX3ZhbGlkX2NyNClcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9NTk9S1ZNX1g4Nl9PUChmbHVzaF90bGJfY3VycmVudClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTYwLSNpZiBJU19FTkFCTEVEKENPTkZJR19IWVBFUlYpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2MTpLVk1fWDg2X09QX09QVElPTkFMKGZsdXNoX3JlbW90ZV90bGJzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NjI6S1ZNX1g4Nl9PUF9PUFRJT05BTChmbHVzaF9yZW1vdGVfdGxic19yYW5nZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTYzLSNlbmRpZlxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD02OT1LVk1fWDg2X09QKHNraXBfZW11bGF0ZWRfaW5zdHJ1Y3Rpb24pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3MDpLVk1fWDg2X09QX09QVElPTkFMKHVwZGF0ZV9lbXVsYXRlZF9pbnN0cnVjdGlvbilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTcxLUtWTV9YODZfT1Aoc2V0X2ludGVycnVwdF9zaGFkb3cpXFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTc1PUtWTV9YODZfT1AoaW5qZWN0X25taSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjc2OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChpc192bm1pX3BlbmRpbmcpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3NzpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X3ZubWlfcGVuZGluZylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTc4LUtWTV9YODZfT1AoaW5qZWN0X2V4Y2VwdGlvbilcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9ODU9S1ZNX1g4Nl9PUChlbmFibGVfaXJxX3dpbmRvdylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjg2OktWTV9YODZfT1BfT1BUSU9OQUwodXBkYXRlX2NyOF9pbnRlcmNlcHQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC04Ny1LVk1fWDg2X09QKHJlZnJlc2hfYXBpY3ZfZXhlY19jdHJsKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODg6S1ZNX1g4Nl9PUF9PUFRJT05BTChod2FwaWNfaXNyX3VwZGF0ZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjg5OktWTV9YODZfT1BfT1BUSU9OQUwobG9hZF9lb2lfZXhpdG1hcClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjkwOktWTV9YODZfT1BfT1BUSU9OQUwoc2V0X3ZpcnR1YWxfYXBpY19tb2RlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTE6S1ZNX1g4Nl9PUF9PUFRJT05BTChzZXRfYXBpY19hY2Nlc3NfcGFnZV9hZGRyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtOTItS1ZNX1g4Nl9PUChkZWxpdmVyX2ludGVycnVwdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjkzOktWTV9YODZfT1BfT1BUSU9OQUwoc3luY19waXJfdG9faXJyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTQ6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHNldF90c3NfYWRkcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjk1OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChzZXRfaWRlbnRpdHlfbWFwX2FkZHIpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZ2V0X210X21hc2spXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NzpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAodGRwX2hhc19zbWVwKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtOTgtS1ZNX1g4Nl9PUChsb2FkX21tdV9wZ2QpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5OTpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X2V4dGVybmFsX3NwdGUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDA6S1ZNX1g4Nl9PUF9PUFRJT05BTChmcmVlX2V4dGVybmFsX3NwdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEwMS1LVk1fWDg2X09QKGhhc193YmludmRfZXhpdClcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9MTA5PUtWTV9YODZfT1AoaGFuZGxlX2V4aXRfaXJxb2ZmKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTEwOktWTV9YODZfT1BfT1BUSU9OQUwodXBkYXRlX2NwdV9kaXJ0eV9sb2dnaW5nKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTExOktWTV9YODZfT1BfT1BUSU9OQUwodmNwdV9ibG9ja2luZylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExMjpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfdW5ibG9ja2luZylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTExMy1LVk1fWDg2X09QKHBpX3VwZGF0ZV9pcnRlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE0OktWTV9YODZfT1BfT1BUSU9OQUwocGlfc3RhcnRfYnlwYXNzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE1OktWTV9YODZfT1BfT1BUSU9OQUwoYXBpY3ZfcHJlX3N0YXRlX3Jlc3RvcmUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTY6S1ZNX1g4Nl9PUF9PUFRJT05BTChhcGljdl9wb3N0X3N0YXRlX3Jlc3RvcmUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTc6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGR5X2FwaWN2X2hhc19wZW5kaW5nX2ludGVycnVwdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExODpLVk1fWDg2X09QX09QVElPTkFMKHByb3RlY3RlZF9hcGljX2hhc19pbnRlcnJ1cHQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTk6S1ZNX1g4Nl9PUF9PUFRJT05BTChzZXRfaHZfdGltZXIpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjA6S1ZNX1g4Nl9PUF9PUFRJT05BTChjYW5jZWxfaHZfdGltZXIpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xMjEtS1ZNX1g4Nl9PUChzZXR1cF9tY2UpXFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTEyNj1LVk1fWDg2X09QKGVuYWJsZV9zbWlfd2luZG93KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTI3LSNlbmRpZlxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI4OktWTV9YODZfT1BfT1BUSU9OQUwoZGV2X2dldF9hdHRyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI5OktWTV9YODZfT1BfT1BUSU9OQUwobWVtX2VuY19pb2N0bClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzMDpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfbWVtX2VuY19pb2N0bClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzMTpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfbWVtX2VuY191bmxvY2tlZF9pb2N0bClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzMjpLVk1fWDg2X09QX09QVElPTkFMKG1lbV9lbmNfcmVnaXN0ZXJfcmVnaW9uKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTMzOktWTV9YODZfT1BfT1BUSU9OQUwobWVtX2VuY191bnJlZ2lzdGVyX3JlZ2lvbilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzNDpLVk1fWDg2X09QX09QVElPTkFMKHZtX2NvcHlfZW5jX2NvbnRleHRfZnJvbSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzNTpLVk1fWDg2X09QX09QVElPTkFMKHZtX21vdmVfZW5jX2NvbnRleHRfZnJvbSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzNjpLVk1fWDg2X09QX09QVElPTkFMKGd1ZXN0X21lbW9yeV9yZWNsYWltZWQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzc6S1ZNX1g4Nl9PUF9PUFRJT05BTChyZWxvYWRfdm1zYSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEzOC1LVk1fWDg2X09QKGdldF9mZWF0dXJlX21zcilcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9MTQwPUtWTV9YODZfT1AoYXBpY19pbml0X3NpZ25hbF9ibG9ja2VkKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQxOktWTV9YODZfT1BfT1BUSU9OQUwoZW5hYmxlX2wyX3RsYl9mbHVzaClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0MjpLVk1fWDg2X09QX09QVElPTkFMKG1pZ3JhdGVfdGltZXJzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTQzLUtWTV9YODZfT1AocmVjYWxjX2ludGVyY2VwdHMpXFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTE0NT1LVk1fWDg2X09QKHZjcHVfZGVsaXZlcl9zaXBpX3ZlY3RvcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0NjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAodmNwdV9nZXRfYXBpY3ZfaW5oaWJpdF9yZWFzb25zKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0NzpLVk1fWDg2X09QX09QVElPTkFMKGdldF91bnRhZ2dlZF9hZGRyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQ4OktWTV9YODZfT1BfT1BUSU9OQUwoYWxsb2NfYXBpY19iYWNraW5nX3BhZ2UpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNDktI2lmZGVmIENPTkZJR19IQVZFX0tWTV9BUkNIX0dNRU1fUFJFUEFSRVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTUwOktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChnbWVtX3ByZXBhcmUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTEtI2VuZGlmXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNTI6S1ZNX1g4Nl9PUF9PUFRJT05BTChnbWVtX2ludmFsaWRhdGUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTMtI2lmZGVmIENPTkZJR19IQVZFX0tWTV9BUkNIX0dNRU1fSU5WQUxJREFURVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTU0OktWTV9YODZfT1BfT1BUSU9OQUwoZ21lbV9pbnZhbGlkYXRlX3JhbmdlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTU1LSNlbmRpZlxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTU2OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChnbWVtX21heF9tYXBwaW5nX2xldmVsKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTU3LSNlbmRpZlxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTktI3VuZGVmIEtWTV9YODZfT1BcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE2MDojdW5kZWYgS1ZNX1g4Nl9PUF9PUFRJT05BTFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTYxOiN1bmRlZiBLVk1fWDg2X09QX09QVElPTkFMX1JFVDBcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTc4Nz1leHRlcm4gc3RydWN0IGt2bV94ODZfbmVzdGVkX29wcyBrdm1fbmVzdGVkX29wcyBfX3JlYWRfbW9zdGx5O1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNzkyLVxcdERFQ0xBUkVfU1RBVElDX0NBTEwoa3ZtX3g4Nl8jI2Z1bmMsICooKChzdHJ1Y3Qga3ZtX3g4Nl9vcHMgKikwKS1cXHUwMDNlZnVuYykpO1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTc5MzojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgS1ZNX1g4Nl9PUFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTc5NDojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCBLVk1fWDg2X09QXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNzk1LSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtLXg4Ni1vcHMuaFxcdTAwM2VcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xNjY9c3RydWN0IGt2bV94ODZfbmVzdGVkX29wcyBrdm1fbmVzdGVkX29wcyBfX3JlYWRfbW9zdGx5O1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTE3MC1cXHRcXHRcXHRcXHQqKCgoc3RydWN0IGt2bV94ODZfb3BzICopMCktXFx1MDAzZWZ1bmMpKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTcxOiNkZWZpbmUgS1ZNX1g4Nl9PUF9PUFRJT05BTCBLVk1fWDg2X09QXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjE3MjojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCBLVk1fWDg2X09QXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTE3My0jaW5jbHVkZSBcXHUwMDNjYXNtL2t2bS14ODYtb3BzLmhcXHUwMDNlXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9Njk0Mj1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX29wc191cGRhdGUoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcylcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy02OTQ5LVxcdFdBUk5fT04oIWt2bV94ODZfb3BzLmZ1bmMpOyBfX0tWTV9YODZfT1AoZnVuYylcXG5hcmNoL3g4Ni9rdm0veDg2LmM6Njk1MDojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgX19LVk1fWDg2X09QXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjY5NTE6I2RlZmluZSBLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZnVuYykgXFxcXFxcbmFyY2gveDg2L2t2bS94ODYuYy02OTUyLVxcdHN0YXRpY19jYWxsX3VwZGF0ZShrdm1feDg2XyMjZnVuYywgKHZvaWQgKilrdm1feDg2X29wcy5mdW5jID8gOiBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjAwOjIyLjUzMjIyNTg1MVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDAzMTg0MTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNX1g4Nl9PUF9PUFRJT05BTCBDaGFuZ2UqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIGBLVk1fWDg2X09QX09QVElPTkFMYCBpcyBqdXN0IGEgbWFjcm8sIGVmZmVjdGl2ZWx5IGV4cGFuZGluZyB0byBgc3RhdGljX2NhbGxfdXBkYXRlYCwgd2hpY2ggaW4gdHVybiwgaXMgY2FsbGluZyBga3ZtX3g4Nl9vcHMuZnVuY2AuICBUaGUga2V5IGhlcmUgaXMgdGhhdCBpZiBga3ZtX3g4Nl9vcHMuZnVuY2AgaXMgTlVMTCwgdGhlbiB0aGUgc3RhdGljIGNhbGwgZ2V0cyB1cGRhdGVkIHRvIE5VTEwuIEJ1dCwgaG9sZCBvbiBhIHNlY29uZC4uLiBgcGlfdXBkYXRlX2lydGVgICpuZXZlciogc2VlbXMgdG8gYmUgTlVMTC4gVGhlcmVmb3JlLCB0aGUgY2hhbmdlIHRvIGBLVk1fWDg2X09QYCBzaW1wbHkgdGhyb3dzIGluIGEgYFdBUk5fT04oIWt2bV94ODZfb3BzLmZ1bmMpYCBjaGVjay5cblxuRXNzZW50aWFsbHksIHRoaXMgaXMgYSBzdHJ1Y3R1cmFsIGNoYW5nZSwgYW5kIG5vdGhpbmcgbW9yZS4gSXQncyBlc3NlbnRpYWxseSBmb3JjaW5nIGFsbCBLVk0geDg2IGltcGxlbWVudGF0aW9ucyB0byBwcm92aWRlIHRoaXMgYHBpX3VwZGF0ZV9pcnRlYCBmdW5jdGlvbiwgYWRkaW5nIGFuIGVhcmx5IGNoZWNrIGF0IG1vZHVsZSBsb2FkIHRvIGVuc3VyZSBpdHMgcHJlc2VuY2UuIEhvd2V2ZXIsIHNpbmNlIGFsbCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSAqZG8qIHByb3ZpZGUgaXQsIHRoZSBhY3R1YWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbCByZW1haW5zIHVuY2hhbmdlZC4gVGhlcmUncyBubyBkZXRlY3RhYmxlIG1vZGlmaWNhdGlvbiB0byBhbnkgY29yZSBrZXJuZWwgbG9naWMgcmVhY2hhYmxlIHRocm91Z2ggc3RhbmRhcmQgbWVhbnMsIGFuZCBzbyBpdCBjYW4ndCBiZSBmdXp6ZWQgaW4gYW55IG1lYW5pbmdmdWwgd2F5LlxuXG5HaXZlbiB0aGlzIGFuYWx5c2lzLCBJJ20gY29uZmlkZW50IGluIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJhdGlvbmFsZSBpcyB0aGF0IHRoaXMgaXMgcHVyZWx5IHN0cnVjdHVyYWwsIGEgc2ltcGxlIGVuZm9yY2VtZW50IG9mIGFuIGV4aXN0aW5nIHJlcXVpcmVtZW50LiBUaGlzIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGV4cG9zZSBhbnkgbmV3IGNvZGUgcGF0aHMgdG8gZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0NzgsIk91dHB1dFRva2VucyI6MTA3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjAwOjI4LjkzNTQxMjMzN1oiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGBwaV91cGRhdGVfaXJ0ZWAgS1ZNIHg4NiBvcGVyYXRpb24gZnJvbSBvcHRpb25hbCB0byBtYW5kYXRvcnkuIFRoaXMgb25seSBhZGRzIGEgYFdBUk5fT05gIGNoZWNrIGR1cmluZyBLVk0gbW9kdWxlIGluaXRpYWxpemF0aW9uIHRvIGVuc3VyZSB0aGUgZnVuY3Rpb24gcG9pbnRlciBpcyBwcm92aWRlZC4gU2luY2UgYm90aCBWTVggYW5kIFNWTSBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSB1bmNvbmRpdGlvbmFsbHkgcHJvdmlkZSB0aGlzIGZ1bmN0aW9uLCB0aGUgd2FybmluZyBpcyB1bnJlYWNoYWJsZSBhbmQgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgcGlfdXBkYXRlX2lydGVgIEtWTSB4ODYgb3BlcmF0aW9uIGZyb20gb3B0aW9uYWwgdG8gbWFuZGF0b3J5LiBUaGlzIG9ubHkgYWRkcyBhIGBXQVJOX09OYCBjaGVjayBkdXJpbmcgS1ZNIG1vZHVsZSBpbml0aWFsaXphdGlvbiB0byBlbnN1cmUgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaXMgcHJvdmlkZWQuIFNpbmNlIGJvdGggVk1YIGFuZCBTVk0gaW1wbGVtZW50YXRpb25zIGFscmVhZHkgdW5jb25kaXRpb25hbGx5IHByb3ZpZGUgdGhpcyBmdW5jdGlvbiwgdGhlIHdhcm5pbmcgaXMgdW5yZWFjaGFibGUgYW5kIHRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCdzIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowgv2zg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 15:17:17 +0000 UTC FinishedAt: 2026-07-15 16:00:30 +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+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGBwaV91cGRhdGVfaXJ0ZWAgS1ZNIHg4NiBvcGVyYXRpb24gZnJvbSBvcHRpb25hbCB0byBtYW5kYXRvcnkuIFRoaXMgb25seSBhZGRzIGEgYFdBUk5fT05gIGNoZWNrIGR1cmluZyBLVk0gbW9kdWxlIGluaXRpYWxpemF0aW9uIHRvIGVuc3VyZSB0aGUgZnVuY3Rpb24gcG9pbnRlciBpcyBwcm92aWRlZC4gU2luY2UgYm90aCBWTVggYW5kIFNWTSBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSB1bmNvbmRpdGlvbmFsbHkgcHJvdmlkZSB0aGlzIGZ1bmN0aW9uLCB0aGUgd2FybmluZyBpcyB1bnJlYWNoYWJsZSBhbmQgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDFjODNiZDNlM2EzOWQyMjc2MWM2MjlkY2ExOTEyZjcxOGJhYWQxMDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxNTo1NzoxMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaFxuaW5kZXggNzM2MTI5ZGIyNzJhYmMuLjBhY2ZlMTU2NDNlMWMwIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaFxuQEAgLTExMCw3ICYjNDM7MTEwLDcgQEAgS1ZNX1g4Nl9PUChoYW5kbGVfZXhpdF9pcnFvZmYpXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfY3B1X2RpcnR5X2xvZ2dpbmcpXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTCh2Y3B1X2Jsb2NraW5nKVxuIEtWTV9YODZfT1BfT1BUSU9OQUwodmNwdV91bmJsb2NraW5nKVxuLUtWTV9YODZfT1BfT1BUSU9OQUwocGlfdXBkYXRlX2lydGUpXG4mIzQzO0tWTV9YODZfT1AocGlfdXBkYXRlX2lydGUpXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTChwaV9zdGFydF9ieXBhc3MpXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTChhcGljdl9wcmVfc3RhdGVfcmVzdG9yZSlcbiBLVk1fWDg2X09QX09QVElPTkFMKGFwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgcGlfdXBkYXRlX2lydGVgIEtWTSB4ODYgb3BlcmF0aW9uIGZyb20gb3B0aW9uYWwgdG8gbWFuZGF0b3J5LiBUaGlzIG9ubHkgYWRkcyBhIGBXQVJOX09OYCBjaGVjayBkdXJpbmcgS1ZNIG1vZHVsZSBpbml0aWFsaXphdGlvbiB0byBlbnN1cmUgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaXMgcHJvdmlkZWQuIFNpbmNlIGJvdGggVk1YIGFuZCBTVk0gaW1wbGVtZW50YXRpb25zIGFscmVhZHkgdW5jb25kaXRpb25hbGx5IHByb3ZpZGUgdGhpcyBmdW5jdGlvbiwgdGhlIHdhcm5pbmcgaXMgdW5yZWFjaGFibGUgYW5kIHRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFjODNiZDNlM2EzOWQyMjc2MWM2MjlkY2ExOTEyZjcxOGJhYWQxMDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAxNTo1NzoxMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oCmluZGV4IDczNjEyOWRiMjcyYWJjLi4wYWNmZTE1NjQzZTFjMCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oCkBAIC0xMTAsNyAmIzQzOzExMCw3IEBAIEtWTV9YODZfT1AoaGFuZGxlX2V4aXRfaXJxb2ZmKQogS1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfY3B1X2RpcnR5X2xvZ2dpbmcpCiBLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfYmxvY2tpbmcpCiBLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfdW5ibG9ja2luZykKLUtWTV9YODZfT1BfT1BUSU9OQUwocGlfdXBkYXRlX2lydGUpCiYjNDM7S1ZNX1g4Nl9PUChwaV91cGRhdGVfaXJ0ZSkKIEtWTV9YODZfT1BfT1BUSU9OQUwocGlfc3RhcnRfYnlwYXNzKQogS1ZNX1g4Nl9PUF9PUFRJT05BTChhcGljdl9wcmVfc3RhdGVfcmVzdG9yZSkKIEtWTV9YODZfT1BfT1BUSU9OQUwoYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQ2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtWTSB4ODYgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1vZGlmeWluZyBgYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaGAuIEludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGNoYW5naW5nIGBLVk1fWDg2X09QX09QVElPTkFMKHBpX3VwZGF0ZV9pcnRlKWAgdG8ganVzdCBgS1ZNX1g4Nl9PUChwaV91cGRhdGVfaXJ0ZSlgLiBUaGF0JiMzOTtzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZS4gQmFzaWNhbGx5LCB0aGV5JiMzOTtyZSBtYWtpbmcgdGhlIGBwaV91cGRhdGVfaXJ0ZWAgb3BlcmF0aW9uIG1hbmRhdG9yeSBpbnN0ZWFkIG9mIG9wdGlvbmFsIHdpdGhpbiB0aGUgS1ZNIHg4NiBvcGVyYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQuCgpNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYHBpX3VwZGF0ZV9pcnRlYCBhY3R1YWxseSAqaXMqLiBJcyBpdCBWTVgtc3BlY2lmaWM/IFNWTT8gQm90aD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gS1ZNIGFuZCB3aHkgdGhleSYjMzk7cmUgZm9yY2luZyBpdHMgcHJlc2VuY2UuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKTGV0JiMzOTtzIGdyZXAgdGhyb3VnaCBgYXJjaC94ODYva3ZtL2AgZm9yIGBwaV91cGRhdGVfaXJ0ZWAgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIGNvbnRleHRzIGluIHdoaWNoIGl0JiMzOTtzIHVzZWQuIFRpbWUgdG8gZ2V0IHRvIHdvcmshCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGlfdXBkYXRlX2lydGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9pcnEuYz00MjY9c3RhdGljIGJvb2wga3ZtX2lycV9pc19wb3N0YWJsZShzdHJ1Y3Qga3ZtX2xhcGljX2lycSAqaXJxKVxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy00MzItXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDMzOnN0YXRpYyBpbnQga3ZtX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcbmFyY2gveDg2L2t2bS9pcnEuYy00MzQtXHRcdFx0ICAgICAgc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmVudHJ5KVxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy00NjctXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDY4Olx0ciA9IGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSkoaXJxZmQsIGlycWZkLVx1MDAzZWt2bSwgaG9zdF9pcnEsIGlycWZkLVx1MDAzZWdzaSxcbmFyY2gveDg2L2t2bS9pcnEuYy00NjktXHRcdFx0XHRcdCB2Y3B1LCBpcnEudmVjdG9yKTtcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NDgyPWludCBrdm1fYXJjaF9pcnFfYnlwYXNzX2FkZF9wcm9kdWNlcihzdHJ1Y3QgaXJxX2J5cGFzc19jb25zdW1lciAqY29ucyxcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDk2LVx0aWYgKGlycWZkLVx1MDAzZWlycV9lbnRyeS50eXBlID09IEtWTV9JUlFfUk9VVElOR19NU0kpIHtcbmFyY2gveDg2L2t2bS9pcnEuYzo0OTc6XHRcdHJldCA9IGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgXHUwMDI2aXJxZmQtXHUwMDNlaXJxX2VudHJ5KTtcbmFyY2gveDg2L2t2bS9pcnEuYy00OTgtXHRcdGlmIChyZXQpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NTA4PXZvaWQga3ZtX2FyY2hfaXJxX2J5cGFzc19kZWxfcHJvZHVjZXIoc3RydWN0IGlycV9ieXBhc3NfY29uc3VtZXIgKmNvbnMsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTUyNy1cdCAgICBXQVJOX09OX09OQ0UoaXJxZmQtXHUwMDNlaXJxX2J5cGFzc192Y3B1KSkge1xuYXJjaC94ODYva3ZtL2lycS5jOjUyODpcdFx0cmV0ID0ga3ZtX3BpX3VwZGF0ZV9pcnRlKGlycWZkLCBOVUxMKTtcbmFyY2gveDg2L2t2bS9pcnEuYy01MjktXHRcdGlmIChyZXQpXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTU0MD12b2lkIGt2bV9hcmNoX3VwZGF0ZV9pcnFmZF9yb3V0aW5nKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTUyLVxuYXJjaC94ODYva3ZtL2lycS5jOjU1MzpcdGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgbmV3KTtcbmFyY2gveDg2L2t2bS9pcnEuYy01NTQtfVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jPTkwMj1zdGF0aWMgdm9pZCBzdm1faXJfbGlzdF9kZWwoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTkxNC1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jOjkxNTppbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTkxNi1cdFx0XHR1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMTQ9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDE5LVx0LmRlbGl2ZXJfaW50ZXJydXB0ID0gc3ZtX2RlbGl2ZXJfaW50ZXJydXB0LFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1NDIwOlx0LnBpX3VwZGF0ZV9pcnRlID0gYXZpY19waV91cGRhdGVfaXJ0ZSxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQyMS1cdC5zZXR1cF9tY2UgPSBzdm1fc2V0dXBfbWNlLFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9OTU5PXZvaWQgYXZpY19yZWZyZXNoX2FwaWN2X2V4ZWNfY3RybChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo5NjA6aW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTk2MS1cdFx0XHR1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYz04ODA9c3RydWN0IGt2bV94ODZfb3BzIHZ0X3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTctXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzo5OTg6XHQucGlfdXBkYXRlX2lydGUgPSB2bXhfcGlfdXBkYXRlX2lydGUsXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTktXHQucGlfc3RhcnRfYnlwYXNzID0gdm14X3BpX3N0YXJ0X2J5cGFzcyxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmM9Mjk3PXZvaWQgdm14X3BpX3N0YXJ0X2J5cGFzcyhzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jLTMwNC1cbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYzozMDU6aW50IHZteF9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYy0zMDYtXHRcdCAgICAgICB1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmg9MTY9Ym9vbCBwaV9oYXNfcGVuZGluZ19pbnRlcnJ1cHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaDoxNzppbnQgdm14X3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5oLTE4LVx0XHQgICAgICAgdW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk4NQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBQYXRjaDogTWFraW5nIGBwaV91cGRhdGVfaXJ0ZWAgTWFuZGF0b3J5KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbWFraW5nIGEgc2lnbmlmaWNhbnQgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGRyb3BwaW5nIHRoZSBgT1BUSU9OQUxgIHF1YWxpZmllciBmcm9tIGBLVk1fWDg2X09QX09QVElPTkFMKHBpX3VwZGF0ZV9pcnRlKWAsIHR1cm5pbmcgaXQgaW50byBqdXN0IGBLVk1fWDg2X09QKHBpX3VwZGF0ZV9pcnRlKWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHNvIHRoaXMgaXMgbm8gbG9uZ2VyIGFuIG9wdGlvbmFsIG9wZXJhdGlvbi4mIzM0OyBUaGF0IGhhcyBwcmV0dHkgYmlnIGltcGxpY2F0aW9ucyBmb3IgaG93IGl0JiMzOTtzIGhhbmRsZWQuIEJlZm9yZSwgaWYgaXQgd2FzbiYjMzk7dCBpbXBsZW1lbnRlZCwgdGhlIEtWTSBjb2RlIHdvdWxkIG5lZWQgdG8gY2hlY2sgZm9yIGl0cyBleGlzdGVuY2UsIHByb2JhYmx5IHVzaW5nIHNvbWV0aGluZyBsaWtlIGBrdm1feDg2X2hhc2Agb3Igc2ltaWxhciBmdW5jdGlvbi4gTm93LCBpZiBpdCYjMzk7cyBubyBsb25nZXIgb3B0aW9uYWwsIGFueSBjYWxscyB0byBpdCwgc3VjaCBhcyBga3ZtX3g4Nl9jYWxsKHBpX3VwZGF0ZV9pcnRlKWAsIGFyZSBqdXN0IGdvaW5nIHRv4oCmIGNhbGwgaXQuIE5vIGNvbmRpdGlvbmFsIGNoZWNrLiBUaGlzIGlzIHNvbWV0aGluZyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBvZiBjb3Vyc2UsIGJlY2F1c2UgYW4gdW5pbXBsZW1lbnRlZCBmdW5jdGlvbiBjYWxsIGlzIGEgY3Jhc2ggaW4gdGhlIG1ha2luZy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBpbmRlZWQgaG93IGBrdm1feDg2X2NhbGxgIHdvcmtzIHdpdGggYEtWTV9YODZfT1BgLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYGFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhgIGFuZCB0cmFjZSBob3cgYEtWTV9YODZfT1BgIGFuZCByZWxhdGVkIG1hY3JvcyBhcmUgYWN0dWFsbHkgZGVmaW5lZCBhbmQgdXNlZCB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHN1YnRsZSBjb25zZXF1ZW5jZXMgSSYjMzk7bSBtaXNzaW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXRhaWxzIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgbm93IGlzIGNyaXRpY2FsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tWTV9YODZfT1AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyOiNpZiAhZGVmaW5lZChLVk1fWDg2X09QKSB8fCBcXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozOiAgICAhZGVmaW5lZChLVk1fWDg2X09QX09QVElPTkFMKSB8fCBcXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo0OiAgICAhZGVmaW5lZChLVk1fWDg2X09QX09QVElPTkFMX1JFVDApXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjU6I2Vycm9yIE1pc3Npbmcgb25lIG9yIG1vcmUgS1ZNX1g4Nl9PUCAjZGVmaW5lc1xuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC02LSNlbHNlXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTctLypcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODogKiBLVk1fWDg2X09QKCkgYW5kIEtWTV9YODZfT1BfT1BUSU9OQUwoKSBhcmUgdXNlZCB0byBoZWxwIGdlbmVyYXRlXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTktICogYm90aCBERUNMQVJFL0RFRklORV9TVEFUSUNfQ0FMTCgpIGludm9jYXRpb25zIGFuZFxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTEtICpcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI6ICogS1ZNX1g4Nl9PUF9PUFRJT05BTCgpIGNhbiBiZSB1c2VkIGZvciB0aG9zZSBmdW5jdGlvbnMgdGhhdCBjYW4gaGF2ZVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzogKiBhIE5VTEwgZGVmaW5pdGlvbi4gIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCgpIGNhbiBiZSB1c2VkIGxpa2V3aXNlXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE0LSAqIHRvIG1ha2UgYSBkZWZpbml0aW9uIG9wdGlvbmFsLCBidXQgaW4gdGhpcyBjYXNlIHRoZSBkZWZhdWx0IHdpbGxcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE2LSAqL1xuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNzpLVk1fWDg2X09QKGNoZWNrX3Byb2Nlc3Nvcl9jb21wYXRpYmlsaXR5KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxODpLVk1fWDg2X09QKGVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE5OktWTV9YODZfT1AoZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjIwOktWTV9YODZfT1AoaGFyZHdhcmVfdW5zZXR1cClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjE6S1ZNX1g4Nl9PUChoYXNfZW11bGF0ZWRfbXNyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyMjpLVk1fWDg2X09QKHZjcHVfYWZ0ZXJfc2V0X2NwdWlkKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyMzpLVk1fWDg2X09QKHZtX2luaXQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjI0OktWTV9YODZfT1BfT1BUSU9OQUwodm1fZGVzdHJveSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjU6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2bV9wcmVfZGVzdHJveSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHZjcHVfcHJlY3JlYXRlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyNzpLVk1fWDg2X09QKHZjcHVfY3JlYXRlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyODpLVk1fWDg2X09QKHZjcHVfZnJlZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Mjk6S1ZNX1g4Nl9PUCh2Y3B1X3Jlc2V0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozMDpLVk1fWDg2X09QKHByZXBhcmVfc3dpdGNoX3RvX2d1ZXN0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozMTpLVk1fWDg2X09QKHZjcHVfbG9hZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MzI6S1ZNX1g4Nl9PUCh2Y3B1X3B1dClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MzM6S1ZNX1g4Nl9PUCh1cGRhdGVfZXhjZXB0aW9uX2JpdG1hcClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MzQ6S1ZNX1g4Nl9PUChnZXRfbXNyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozNTpLVk1fWDg2X09QKHNldF9tc3IpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM2OktWTV9YODZfT1AoZ2V0X3NlZ21lbnRfYmFzZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Mzc6S1ZNX1g4Nl9PUChnZXRfc2VnbWVudClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Mzg6S1ZNX1g4Nl9PUChnZXRfY3BsKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozOTpLVk1fWDg2X09QKGdldF9jcGxfbm9fY2FjaGUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQwOktWTV9YODZfT1Aoc2V0X3NlZ21lbnQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQxOktWTV9YODZfT1AoZ2V0X2NzX2RiX2xfYml0cylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDI6S1ZNX1g4Nl9PUChpc192YWxpZF9jcjApXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQzOktWTV9YODZfT1Aoc2V0X2NyMClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDQ6S1ZNX1g4Nl9PUF9PUFRJT05BTChwb3N0X3NldF9jcjMpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ1OktWTV9YODZfT1AoaXNfdmFsaWRfY3I0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo0NjpLVk1fWDg2X09QKHNldF9jcjQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ3OktWTV9YODZfT1Aoc2V0X2VmZXIpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ4OktWTV9YODZfT1AoZ2V0X2lkdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDk6S1ZNX1g4Nl9PUChzZXRfaWR0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo1MDpLVk1fWDg2X09QKGdldF9nZHQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjUxOktWTV9YODZfT1Aoc2V0X2dkdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTI6S1ZNX1g4Nl9PUChzeW5jX2RpcnR5X2RlYnVnX3JlZ3MpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjUzOktWTV9YODZfT1Aoc2V0X2RyNylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTQ6S1ZNX1g4Nl9PUChjYWNoZV9yZWcpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjU1OktWTV9YODZfT1AoZ2V0X3JmbGFncylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTY6S1ZNX1g4Nl9PUChzZXRfcmZsYWdzKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo1NzpLVk1fWDg2X09QKGdldF9pZl9mbGFnKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo1ODpLVk1fWDg2X09QKGZsdXNoX3RsYl9hbGwpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjU5OktWTV9YODZfT1AoZmx1c2hfdGxiX2N1cnJlbnQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTYwLSNpZiBJU19FTkFCTEVEKENPTkZJR19IWVBFUlYpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjYxOktWTV9YODZfT1BfT1BUSU9OQUwoZmx1c2hfcmVtb3RlX3RsYnMpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjYyOktWTV9YODZfT1BfT1BUSU9OQUwoZmx1c2hfcmVtb3RlX3RsYnNfcmFuZ2UpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTYzLSNlbmRpZlxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2NDpLVk1fWDg2X09QKGZsdXNoX3RsYl9ndmEpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjY1OktWTV9YODZfT1AoZmx1c2hfdGxiX2d1ZXN0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2NjpLVk1fWDg2X09QKHZjcHVfcHJlX3J1bilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Njc6S1ZNX1g4Nl9PUCh2Y3B1X3J1bilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Njg6S1ZNX1g4Nl9PUChoYW5kbGVfZXhpdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Njk6S1ZNX1g4Nl9PUChza2lwX2VtdWxhdGVkX2luc3RydWN0aW9uKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3MDpLVk1fWDg2X09QX09QVElPTkFMKHVwZGF0ZV9lbXVsYXRlZF9pbnN0cnVjdGlvbilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzE6S1ZNX1g4Nl9PUChzZXRfaW50ZXJydXB0X3NoYWRvdylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzI6S1ZNX1g4Nl9PUChnZXRfaW50ZXJydXB0X3NoYWRvdylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzM6S1ZNX1g4Nl9PUChwYXRjaF9oeXBlcmNhbGwpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjc0OktWTV9YODZfT1AoaW5qZWN0X2lycSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzU6S1ZNX1g4Nl9PUChpbmplY3Rfbm1pKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3NjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoaXNfdm5taV9wZW5kaW5nKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3NzpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X3ZubWlfcGVuZGluZylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Nzg6S1ZNX1g4Nl9PUChpbmplY3RfZXhjZXB0aW9uKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3OTpLVk1fWDg2X09QKGNhbmNlbF9pbmplY3Rpb24pXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjgwOktWTV9YODZfT1AoaW50ZXJydXB0X2FsbG93ZWQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjgxOktWTV9YODZfT1Aobm1pX2FsbG93ZWQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjgyOktWTV9YODZfT1AoZ2V0X25taV9tYXNrKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4MzpLVk1fWDg2X09QKHNldF9ubWlfbWFzaylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODQ6S1ZNX1g4Nl9PUChlbmFibGVfbm1pX3dpbmRvdylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODU6S1ZNX1g4Nl9PUChlbmFibGVfaXJxX3dpbmRvdylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODY6S1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfY3I4X2ludGVyY2VwdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODc6S1ZNX1g4Nl9PUChyZWZyZXNoX2FwaWN2X2V4ZWNfY3RybClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODg6S1ZNX1g4Nl9PUF9PUFRJT05BTChod2FwaWNfaXNyX3VwZGF0ZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODk6S1ZNX1g4Nl9PUF9PUFRJT05BTChsb2FkX2VvaV9leGl0bWFwKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5MDpLVk1fWDg2X09QX09QVElPTkFMKHNldF92aXJ0dWFsX2FwaWNfbW9kZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTE6S1ZNX1g4Nl9PUF9PUFRJT05BTChzZXRfYXBpY19hY2Nlc3NfcGFnZV9hZGRyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5MjpLVk1fWDg2X09QKGRlbGl2ZXJfaW50ZXJydXB0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5MzpLVk1fWDg2X09QX09QVElPTkFMKHN5bmNfcGlyX3RvX2lycilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTQ6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHNldF90c3NfYWRkcilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTU6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHNldF9pZGVudGl0eV9tYXBfYWRkcilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGdldF9tdF9tYXNrKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NzpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAodGRwX2hhc19zbWVwKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5ODpLVk1fWDg2X09QKGxvYWRfbW11X3BnZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTk6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHNldF9leHRlcm5hbF9zcHRlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDA6S1ZNX1g4Nl9PUF9PUFRJT05BTChmcmVlX2V4dGVybmFsX3NwdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTAxOktWTV9YODZfT1AoaGFzX3diaW52ZF9leGl0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDI6S1ZNX1g4Nl9PUChnZXRfbDJfdHNjX29mZnNldClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTAzOktWTV9YODZfT1AoZ2V0X2wyX3RzY19tdWx0aXBsaWVyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDQ6S1ZNX1g4Nl9PUCh3cml0ZV90c2Nfb2Zmc2V0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDU6S1ZNX1g4Nl9PUCh3cml0ZV90c2NfbXVsdGlwbGllcilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTA2OktWTV9YODZfT1AoZ2V0X2V4aXRfaW5mbylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTA3OktWTV9YODZfT1AoZ2V0X2VudHJ5X2luZm8pXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwODpLVk1fWDg2X09QKGNoZWNrX2ludGVyY2VwdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTA5OktWTV9YODZfT1AoaGFuZGxlX2V4aXRfaXJxb2ZmKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTA6S1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfY3B1X2RpcnR5X2xvZ2dpbmcpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExMTpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfYmxvY2tpbmcpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExMjpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfdW5ibG9ja2luZylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTEzOktWTV9YODZfT1AocGlfdXBkYXRlX2lydGUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExNDpLVk1fWDg2X09QX09QVElPTkFMKHBpX3N0YXJ0X2J5cGFzcylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE1OktWTV9YODZfT1BfT1BUSU9OQUwoYXBpY3ZfcHJlX3N0YXRlX3Jlc3RvcmUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExNjpLVk1fWDg2X09QX09QVElPTkFMKGFwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE3OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChkeV9hcGljdl9oYXNfcGVuZGluZ19pbnRlcnJ1cHQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExODpLVk1fWDg2X09QX09QVElPTkFMKHByb3RlY3RlZF9hcGljX2hhc19pbnRlcnJ1cHQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExOTpLVk1fWDg2X09QX09QVElPTkFMKHNldF9odl90aW1lcilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTIwOktWTV9YODZfT1BfT1BUSU9OQUwoY2FuY2VsX2h2X3RpbWVyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjE6S1ZNX1g4Nl9PUChzZXR1cF9tY2UpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEyMi0jaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTIzOktWTV9YODZfT1Aoc21pX2FsbG93ZWQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEyNDpLVk1fWDg2X09QKGVudGVyX3NtbSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI1OktWTV9YODZfT1AobGVhdmVfc21tKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjY6S1ZNX1g4Nl9PUChlbmFibGVfc21pX3dpbmRvdylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTI3LSNlbmRpZlxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjg6S1ZNX1g4Nl9PUF9PUFRJT05BTChkZXZfZ2V0X2F0dHIpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEyOTpLVk1fWDg2X09QX09QVElPTkFMKG1lbV9lbmNfaW9jdGwpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzMDpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfbWVtX2VuY19pb2N0bClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTMxOktWTV9YODZfT1BfT1BUSU9OQUwodmNwdV9tZW1fZW5jX3VubG9ja2VkX2lvY3RsKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzI6S1ZNX1g4Nl9PUF9PUFRJT05BTChtZW1fZW5jX3JlZ2lzdGVyX3JlZ2lvbilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTMzOktWTV9YODZfT1BfT1BUSU9OQUwobWVtX2VuY191bnJlZ2lzdGVyX3JlZ2lvbilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM0OktWTV9YODZfT1BfT1BUSU9OQUwodm1fY29weV9lbmNfY29udGV4dF9mcm9tKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzU6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2bV9tb3ZlX2VuY19jb250ZXh0X2Zyb20pXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzNjpLVk1fWDg2X09QX09QVElPTkFMKGd1ZXN0X21lbW9yeV9yZWNsYWltZWQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzNzpLVk1fWDg2X09QX09QVElPTkFMKHJlbG9hZF92bXNhKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzg6S1ZNX1g4Nl9PUChnZXRfZmVhdHVyZV9tc3IpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzOTpLVk1fWDg2X09QKGNoZWNrX2VtdWxhdGVfaW5zdHJ1Y3Rpb24pXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0MDpLVk1fWDg2X09QKGFwaWNfaW5pdF9zaWduYWxfYmxvY2tlZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQxOktWTV9YODZfT1BfT1BUSU9OQUwoZW5hYmxlX2wyX3RsYl9mbHVzaClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQyOktWTV9YODZfT1BfT1BUSU9OQUwobWlncmF0ZV90aW1lcnMpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0MzpLVk1fWDg2X09QKHJlY2FsY19pbnRlcmNlcHRzKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDQ6S1ZNX1g4Nl9PUChjb21wbGV0ZV9lbXVsYXRlZF9tc3IpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0NTpLVk1fWDg2X09QKHZjcHVfZGVsaXZlcl9zaXBpX3ZlY3RvcilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQ2OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCh2Y3B1X2dldF9hcGljdl9pbmhpYml0X3JlYXNvbnMpO1xuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDc6S1ZNX1g4Nl9PUF9PUFRJT05BTChnZXRfdW50YWdnZWRfYWRkcilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQ4OktWTV9YODZfT1BfT1BUSU9OQUwoYWxsb2NfYXBpY19iYWNraW5nX3BhZ2UpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE0OS0jaWZkZWYgQ09ORklHX0hBVkVfS1ZNX0FSQ0hfR01FTV9QUkVQQVJFXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1MDpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZ21lbV9wcmVwYXJlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTEtI2VuZGlmXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1MjpLVk1fWDg2X09QX09QVElPTkFMKGdtZW1faW52YWxpZGF0ZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTUzLSNpZmRlZiBDT05GSUdfSEFWRV9LVk1fQVJDSF9HTUVNX0lOVkFMSURBVEVcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTU0OktWTV9YODZfT1BfT1BUSU9OQUwoZ21lbV9pbnZhbGlkYXRlX3JhbmdlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTUtI2VuZGlmXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1NjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZ21lbV9tYXhfbWFwcGluZ19sZXZlbClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTU3LSNlbmRpZlxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTgtXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1OTojdW5kZWYgS1ZNX1g4Nl9PUFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNjA6I3VuZGVmIEtWTV9YODZfT1BfT1BUSU9OQUxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTYxOiN1bmRlZiBLVk1fWDg2X09QX09QVElPTkFMX1JFVDBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTExMgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgcGlfdXBkYXRlX2lydGVgIEtWTSBPcGVyYXRpb24qKgoKT2theSwgc28gaXQgc2VlbXMgYHBpX3VwZGF0ZV9pcnRlYCBoYXMgYmVjb21lIGEgKm1hbmRhdG9yeSogS1ZNIHg4NiBvcGVyYXRpb24uIFRoaXMgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssIGlmIGl0JiMzOTtzIG1hbmRhdG9yeSwgdGhlbiBib3RoIFZNWCBhbmQgU1ZNIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMgKmhhdmUqIHRvIHByb3ZpZGUgaW1wbGVtZW50YXRpb25zIGZvciBpdC4gTGV0JiMzOTtzIHNlZS4uLiBhIHF1aWNrIGdyZXAgc2hvd3MgbWUgdGhhdCBgdm14X3BpX3VwZGF0ZV9pcnRlYCBpcyBpbmRlZWQgcmVzaWRpbmcgaW4gYGFyY2gveDg2L2t2bS92bXgvbWFpbi5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIHRoZSBJbnRlbCBzaWRlLCBhbmQgYGF2aWNfcGlfdXBkYXRlX2lydGVgIGlzIG92ZXIgaW4gYGFyY2gveDg2L2t2bS9zdm0vc3ZtLmNgLCB0YWtpbmcgY2FyZSBvZiB0aGUgQU1EIFNWTS4KCldhaXQgYSBzZWNvbmQuIE5vdyBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhpcyAtLSB3aGF0IGlmIHNvbWVvbmUmIzM5O3MgcnVubmluZyBLVk0gYnV0IGhhc24mIzM5O3QgY29tcGlsZWQgaW4gZWl0aGVyIFNWTSAqb3IqIFZNWCBzdXBwb3J0PyBCdXQgbm8sIEtWTSB4ODYgb3BlcmF0aW9ucyBhcmUgaGFuZGxlZCBieSB0aGUgbW9kdWxlcyB3aGljaCBhcmUgbG9hZGVkLCBga3ZtLWludGVsYCBvciBga3ZtLWFtZGAuIFRoYXQgc29sdmVzIHRoYXQuIE9rYXksIEkmIzM5O20ganVzdCBtYWtpbmcgc3VyZSBoZXJlLCBhbmQgYW0gZ29pbmcgdG8gY2hlY2sgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBvdGhlciBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UgdG8gZ28gYmFjayB0byBgYXJjaC94ODYva3ZtL2lycS5jYCBhZ2Fpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1feDg2X2NhbGxcXChwaV91cGRhdGVfaXJ0ZVxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2lycS5jPTQzMz1zdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTQ2Ny1cbmFyY2gveDg2L2t2bS9pcnEuYzo0Njg6XHRyID0ga3ZtX3g4Nl9jYWxsKHBpX3VwZGF0ZV9pcnRlKShpcnFmZCwgaXJxZmQtXHUwMDNla3ZtLCBob3N0X2lycSwgaXJxZmQtXHUwMDNlZ3NpLFxuYXJjaC94ODYva3ZtL2lycS5jLTQ2OS1cdFx0XHRcdFx0IHZjcHUsIGlycS52ZWN0b3IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzcwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOgoKKipUaGlua2luZyBUaHJvdWdoIHRoZSBga3ZtX3BpX3VwZGF0ZV9pcnRlYCBNYW5kYXRvcnkgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgYGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSlgIGZ1bmN0aW9uIGlzICptYW5kYXRvcnkqIG5vdywgbWVhbmluZyBpdCYjMzk7cyBnb2luZyB0byBiZSBjYWxsZWQgZGlyZWN0bHkuIFRoYXQmIzM5O3MgYSBrZXkgZGlzdGluY3Rpb24uIEJlZm9yZSB0aGlzIHBhdGNoLCBgcGlfdXBkYXRlX2lydGVgIHdhcywgaW4gZWZmZWN0LCBvcHRpb25hbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5ldyByZXF1aXJlbWVudC4KCk15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBoYXZlIHRvIGZpbmQgb3V0ICpob3cqIGBrdm1fcGlfdXBkYXRlX2lydGVgIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGBwaV91cGRhdGVfaXJ0ZWAgd2FzIGFjdHVhbGx5IHByZXNlbnQgb3IgaW1wbGVtZW50ZWQuIFdoYXQgbG9naWMgd2FzIGVtcGxveWVkLCBhbmQgaG93IGRvZXMgdGhpcyBjaGFuZ2UgdGhlIGNvZGUmIzM5O3MgYmVoYXZpb3Igd2hlbiB0aGF0IG9wdGlvbmFsIGNoZWNrIGlzIG5vIGxvbmdlciBuZWVkZWQ/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgb2xkIGNvbmRpdGlvbmFsIHRoYXQgbWFuYWdlZCB0aGUgb3B0aW9uYWxpdHkgdG8gZ2F1Z2UgaG93IHRoZSBmdW5jdGlvbiYjMzk7cyBpbnRlcm5hbCBmbG93IGlzIHNoaWZ0aW5nIGFzIGEgcmVzdWx0IG9mIG1ha2luZyB0aGUgdXBkYXRlIG1hbmRhdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3BpX3VwZGF0ZV9pcnRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaXJxLmM9NDI2PXN0YXRpYyBib29sIGt2bV9pcnFfaXNfcG9zdGFibGUoc3RydWN0IGt2bV9sYXBpY19pcnEgKmlycSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDMyLVxuYXJjaC94ODYva3ZtL2lycS5jOjQzMzpzdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDM0LVx0XHRcdCAgICAgIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplbnRyeSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NDgyPWludCBrdm1fYXJjaF9pcnFfYnlwYXNzX2FkZF9wcm9kdWNlcihzdHJ1Y3QgaXJxX2J5cGFzc19jb25zdW1lciAqY29ucyxcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDk2LVx0aWYgKGlycWZkLVx1MDAzZWlycV9lbnRyeS50eXBlID09IEtWTV9JUlFfUk9VVElOR19NU0kpIHtcbmFyY2gveDg2L2t2bS9pcnEuYzo0OTc6XHRcdHJldCA9IGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgXHUwMDI2aXJxZmQtXHUwMDNlaXJxX2VudHJ5KTtcbmFyY2gveDg2L2t2bS9pcnEuYy00OTgtXHRcdGlmIChyZXQpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NTA4PXZvaWQga3ZtX2FyY2hfaXJxX2J5cGFzc19kZWxfcHJvZHVjZXIoc3RydWN0IGlycV9ieXBhc3NfY29uc3VtZXIgKmNvbnMsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTUyNy1cdCAgICBXQVJOX09OX09OQ0UoaXJxZmQtXHUwMDNlaXJxX2J5cGFzc192Y3B1KSkge1xuYXJjaC94ODYva3ZtL2lycS5jOjUyODpcdFx0cmV0ID0ga3ZtX3BpX3VwZGF0ZV9pcnRlKGlycWZkLCBOVUxMKTtcbmFyY2gveDg2L2t2bS9pcnEuYy01MjktXHRcdGlmIChyZXQpXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTU0MD12b2lkIGt2bV9hcmNoX3VwZGF0ZV9pcnFmZF9yb3V0aW5nKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTUyLVxuYXJjaC94ODYva3ZtL2lycS5jOjU1MzpcdGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgbmV3KTtcbmFyY2gveDg2L2t2bS9pcnEuYy01NTQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjY3NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gS1ZNIEludGVycnVwdCBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhpcyBhbGwgd29ya3MsIHNvIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZm9jdXNpbmcgb24gYGFyY2gveDg2L2t2bS9pcnEuY2AuIEkgZmlndXJlIGxpbmUgNDMzIGlzIGEgZ29vZCBwbGFjZSB0byBiZWdpbi4gSXQmIzM5O3MgbGlrZWx5IGEgY3JpdGljYWwganVuY3R1cmUgaW4gdGhlIGludGVycnVwdCBwYXRoLCBwb3RlbnRpYWxseSByZWxhdGVkIHRvIGluamVjdGlvbiwgbWFza2luZywgb3Igc29tZSBhc3BlY3Qgb2YgdmlydHVhbGl6YXRpb24gdGhhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTGV0JiMzOTtzIHNlZSB3aGF0IGludGVyZXN0aW5nIGNvZGUgbGl2ZXMgdGhlcmUuIFRpbWUgdG8gZGlnIGluIGFuZCBjb3JyZWxhdGUgd2hhdCBJIHNlZSB3aXRoIHRoZSBvdmVyYWxsIGludGVycnVwdCBmbG93LiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgbG9naWMgdGhhdCYjMzk7cyBiZWluZyBwZXJmb3JtZWQgYXQgdGhpcyBzdGFnZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGludGVyYWN0aW9ucyBhbmQgaG93IEtWTSBtYW5hZ2VzIHRoZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2lycS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MzA6XHRcdFx0aXJxLVx1MDAzZWRlbGl2ZXJ5X21vZGUgPT0gQVBJQ19ETV9MT1dFU1QpO1xuIDQzMTpcdH1cbiA0MzI6XHRcbiA0MzM6XHRzdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG4gNDM0Olx0XHRcdFx0ICAgICAgc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmVudHJ5KVxuIDQzNTpcdHtcbiA0MzY6XHRcdHVuc2lnbmVkIGludCBob3N0X2lycSA9IGlycWZkLVx1MDAzZXByb2R1Y2VyLVx1MDAzZWlycTtcbiA0Mzc6XHRcdHN0cnVjdCBrdm0gKmt2bSA9IGlycWZkLVx1MDAzZWt2bTtcbiA0Mzg6XHRcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdSA9IE5VTEw7XG4gNDM5Olx0XHRzdHJ1Y3Qga3ZtX2xhcGljX2lycSBpcnE7XG4gNDQwOlx0XHRpbnQgcjtcbiA0NDE6XHRcbiA0NDI6XHRcdGlmIChXQVJOX09OX09OQ0UoIWlycWNoaXBfaW5fa2VybmVsKGt2bSkgfHwgIWt2bV9hcmNoX2hhc19pcnFfYnlwYXNzKCkpKVxuIDQ0MzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA0NDQ6XHRcbiA0NDU6XHRcdGlmIChlbnRyeSBcdTAwMjZcdTAwMjYgZW50cnktXHUwMDNldHlwZSA9PSBLVk1fSVJRX1JPVVRJTkdfTVNJKSB7XG4gNDQ2Olx0XHRcdGt2bV9tc2lfdG9fbGFwaWNfaXJxKGt2bSwgZW50cnksIFx1MDAyNmlycSk7XG4gNDQ3Olx0XG4gNDQ4Olx0XHRcdC8qXG4gNDQ5Olx0XHRcdCAqIEZvcmNlIHJlbWFwcGVkIG1vZGUgaWYgaGFyZHdhcmUgZG9lc24mIzM5O3Qgc3VwcG9ydCBwb3N0aW5nIHRoZVxuIDQ1MDpcdFx0XHQgKiB2aXJ0dWFsIGludGVycnVwdCB0byBhIHZDUFUuICBPbmx5IElSUXMgYXJlIHBvc3RhYmxlIChOTUlzLFxuIDQ1MTpcdFx0XHQgKiBTTUlzLCBldGMuIGFyZSBub3QpLCBhbmQgbmVpdGhlciBBTUQgbm9yIEludGVsIElPTU1VcyBzdXBwb3J0XG4gNDUyOlx0XHRcdCAqIHBvc3RpbmcgbXVsdGljYXN0L2Jyb2FkY2FzdCBJUlFzLiAgSWYgdGhlIGludGVycnVwdCBjYW4mIzM5O3QgYmVcbiA0NTM6XHRcdFx0ICogcG9zdGVkLCB0aGUgZGV2aWNlIE1TSSBuZWVkcyB0byBiZSByb3V0ZWQgdG8gdGhlIGhvc3Qgc28gdGhhdFxuIDQ1NDpcdFx0XHQgKiB0aGUgZ3Vlc3QmIzM5O3MgZGVzaXJlZCBpbnRlcnJ1cHQgY2FuIGJlIHN5bnRoZXNpemVkIGJ5IEtWTS5cbiA0NTU6XHRcdFx0ICpcbiA0NTY6XHRcdFx0ICogVGhpcyBtZWFucyB0aGF0IEtWTSBjYW4gb25seSBwb3N0IGxvd2VzdC1wcmlvcml0eSBpbnRlcnJ1cHRzXG4gNDU3Olx0XHRcdCAqIGlmIHRoZXkgaGF2ZSBhIHNpbmdsZSBDUFUgYXMgdGhlIGRlc3RpbmF0aW9uLCBlLmcuIG9ubHkgaWZcbiA0NTg6XHRcdFx0ICogdGhlIGd1ZXN0IGhhcyBhZmZpbmVkIHRoZSBpbnRlcnJ1cHQgdG8gYSBzaW5nbGUgdkNQVS5cbiA0NTk6XHRcdFx0ICovXG4gNDYwOlx0XHRcdGlmICgha3ZtX2ludHJfaXNfc2luZ2xlX3ZjcHUoa3ZtLCBcdTAwMjZpcnEsIFx1MDAyNnZjcHUpIHx8XG4gNDYxOlx0XHRcdCAgICAha3ZtX2lycV9pc19wb3N0YWJsZShcdTAwMjZpcnEpKVxuIDQ2MjpcdFx0XHRcdHZjcHUgPSBOVUxMO1xuIDQ2MzpcdFx0fVxuIDQ2NDpcdFxuIDQ2NTpcdFx0aWYgKCFpcnFmZC1cdTAwM2VpcnFfYnlwYXNzX3ZjcHUgXHUwMDI2XHUwMDI2ICF2Y3B1KVxuIDQ2NjpcdFx0XHRyZXR1cm4gMDtcbiA0Njc6XHRcbiA0Njg6XHRcdHIgPSBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpKGlycWZkLCBpcnFmZC1cdTAwM2Vrdm0sIGhvc3RfaXJxLCBpcnFmZC1cdTAwM2Vnc2ksXG4gNDY5Olx0XHRcdFx0XHRcdCB2Y3B1LCBpcnEudmVjdG9yKTtcbiA0NzA6XHRcdGlmIChyKSB7XG4gNDcxOlx0XHRcdFdBUk5fT05fT05DRShpcnFmZC1cdTAwM2VpcnFfYnlwYXNzX3ZjcHUgXHUwMDI2XHUwMDI2ICF2Y3B1KTtcbiA0NzI6XHRcdFx0aXJxZmQtXHUwMDNlaXJxX2J5cGFzc192Y3B1ID0gTlVMTDtcbiA0NzM6XHRcdFx0cmV0dXJuIHI7XG4gNDc0Olx0XHR9XG4gNDc1Olx0XG4gNDc2Olx0XHRpcnFmZC1cdTAwM2VpcnFfYnlwYXNzX3ZjcHUgPSB2Y3B1O1xuIDQ3NzpcdFxuIDQ3ODpcdFx0dHJhY2Vfa3ZtX3BpX2lydGVfdXBkYXRlKGhvc3RfaXJxLCB2Y3B1LCBpcnFmZC1cdTAwM2Vnc2ksIGlycS52ZWN0b3IsICEhdmNwdSk7XG4gNDc5Olx0XHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4NjEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gSVJRIEJ5cGFzcyBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBga3ZtX3BpX3VwZGF0ZV9pcnRlYCBmdW5jdGlvbiBhbmQgc29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSBjbGlja2luZy4gSXQgc2VlbXMgbGlrZSBga3ZtX3g4Nl9jYWxsKHBpX3VwZGF0ZV9pcnRlKWAgaXMgY2FsbGVkICp1bmNvbmRpdGlvbmFsbHkqIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLCBhcyBsb25nIGFzIGVpdGhlciBgaXJxZmQtJmd0O2lycV9ieXBhc3NfdmNwdWAgb3IgYHZjcHVgIGlzbiYjMzk7dCBudWxsLiBUaGUgdGhpbmcgaXMsIGJlZm9yZSB0aGlzIHBhdGNoLCBjYWxsaW5nIGBwaV91cGRhdGVfaXJ0ZWAgc2VlbWVkICpvcHRpb25hbCouIAoKVGhhdCYjMzk7cyB3aGVuIGl0IGhpdHMgbWU6IGlmIGBwaV91cGRhdGVfaXJ0ZWAgd2FzIG9wdGlvbmFsLCB0aGVuIGBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpYCB3b3VsZCBqdXN0IGJlIGEgY2FsbCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHJpZ2h0PyBBbmQgdGhhdCBmdW5jdGlvbiBwb2ludGVyIGNvdWxkIGhhdmUgdmVyeSB3ZWxsIGJlZW4gYE5VTExgLCBkZXBlbmRpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24uIElzIHRoYXQgd2hhdCYjMzk7cyBnb2luZyBvbj8gT3IgZG9lcyBga3ZtX3g4Nl9jYWxsYCBkbyBzb21ldGhpbmcgbW9yZSBpbnZvbHZlZCB3aGVuIHRoZSBmdW5jdGlvbiBpdCYjMzk7cyB3cmFwcGluZyBpcyBvcHRpb25hbD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBoYXBwZW5zIHdoZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBvcHRpb25hbCBmdW5jdGlvbnMgaW4gdGhpcyBga3ZtX3g4Nl9jYWxsYCBjb250ZXh0LgoKSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4gVGltZSB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byBgYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaGAgYW5kIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGBrdm1feDg2X2NhbGxgIGlzIGRlZmluZWQgYW5kIGlmIGl0IGhhbmRsZXMgYE5VTExgIGZ1bmN0aW9uIHBvaW50ZXJzIGdyYWNlZnVsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2FsbCBmbG93IGNvbXBsZXRlbHkgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIGt2bV94ODZfY2FsbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2luY2x1ZGUvYXNtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTE3ODc9ZXh0ZXJuIHN0cnVjdCBrdm1feDg2X25lc3RlZF9vcHMga3ZtX25lc3RlZF9vcHMgX19yZWFkX21vc3RseTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTc4OC1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTc4OTojZGVmaW5lIGt2bV94ODZfY2FsbChmdW5jKSBzdGF0aWNfY2FsbChrdm1feDg2XyMjZnVuYylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTc5MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2MDIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBzdGF0aWNfY2FsbGAgYW5kIEl0cyBJbXBsaWNhdGlvbnMqKgoKT2theSwgc28gSSBzZWUgYSBgc3RhdGljX2NhbGwoa3ZtX3g4Nl9waV91cGRhdGVfaXJ0ZSlgIGNhbGwuIFRoaXMgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJZiBpdCYjMzk7cyBhIGBzdGF0aWNfY2FsbGAsIGl0IGxpa2VseSBtZWFucyB0aGVyZSYjMzk7cyBhIGRlZ3JlZSBvZiBjb21waWxlLXRpbWUgb3B0aW9uYWJpbGl0eSBpbnZvbHZlZCwgYW5kIHRoYXQgcmFpc2VzIGEgZmV3IGltbWVkaWF0ZSBxdWVzdGlvbnMgaW4gbXkgbWluZC4gU3BlY2lmaWNhbGx5LCBpZiB0aGlzIGZ1bmN0aW9uIGNhbGwgaXMgb3B0aW9uYWwsIHdoYXTigJlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIHdoZW4gaXQgKmlzbiYjMzk7dCogdXNlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLiBJIGhhdmUgdG8gbG9vayBhdCBob3cgYGt2bV94ODZfb3BzYCBpcyBpbml0aWFsaXplZCwgYXMgdGhhdCBsaWtlbHkgaG9sZHMgdGhlIGtleSB0byB0aGUgZGlzcGF0Y2ggbWVjaGFuaXNtLiBUaGUgZmlsZSB0byBzdGFydCB3aXRoIHNob3VsZCBiZSBgYXJjaC94ODYva3ZtL3g4Ni5jYCwgb3IgcmVhbGx5LCB3aGVyZXZlciBga3ZtX3g4Nl9vcHNgIGdldHMgcG9wdWxhdGVkIHdpdGggaXRzIGZ1bmN0aW9uIHBvaW50ZXJzLiBUaGF0IHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byBkZXRlcm1pbmUgd2hldGhlciBga3ZtX3g4Nl9waV91cGRhdGVfaXJ0ZWAgaXMgYWx3YXlzIHByZXNlbnQsIG9yIGlmIHRoZXJlJiMzOTtzIGEgZmFsbGJhY2sgb3IgYWx0ZXJuYXRpdmUgYmVoYXZpb3IuIFVuZGVyc3RhbmRpbmcgdGhpcyBpcyBjcnVjaWFsIGZvciBldmFsdWF0aW5nIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgb3IgY29tcGF0aWJpbGl0eSBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tWTV9YODZfT1BfT1BUSU9OQUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz0xNjY9c3RydWN0IGt2bV94ODZfbmVzdGVkX29wcyBrdm1fbmVzdGVkX29wcyBfX3JlYWRfbW9zdGx5O1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xNzAtXHRcdFx0XHQqKCgoc3RydWN0IGt2bV94ODZfb3BzICopMCktXHUwMDNlZnVuYykpO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjE3MTojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgS1ZNX1g4Nl9PUFxuYXJjaC94ODYva3ZtL3g4Ni5jOjE3MjojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCBLVk1fWDg2X09QXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTczLSNpbmNsdWRlIFx1MDAzY2FzbS9rdm0teDg2LW9wcy5oXHUwMDNlXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTY5NDI9c3RhdGljIGlubGluZSB2b2lkIGt2bV9vcHNfdXBkYXRlKHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTY5NDktXHRXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKTsgX19LVk1fWDg2X09QKGZ1bmMpXG5hcmNoL3g4Ni9rdm0veDg2LmM6Njk1MDojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgX19LVk1fWDg2X09QXG5hcmNoL3g4Ni9rdm0veDg2LmM6Njk1MTojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChmdW5jKSBcXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTY5NTItXHRzdGF0aWNfY2FsbF91cGRhdGUoa3ZtX3g4Nl8jI2Z1bmMsICh2b2lkICopa3ZtX3g4Nl9vcHMuZnVuYyA/IDogXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0MDEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS1ZNIEluc3RydWN0aW9uIE9wdGltaXphdGlvbiBDb25jZXJucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgbWFjcm8sIGFuZCBpdCYjMzk7cyBlc3NlbnRpYWxseSBqdXN0IGFuIGFsaWFzIGZvciBgX19LVk1fWDg2X09QYCwgd2hpY2ggZXhwYW5kcyB0byBhIGBzdGF0aWNfY2FsbF91cGRhdGVgIHRoYXQgbWFwcyBhIGZ1bmN0aW9uIHRvIGBrdm1feDg2X29wcy5mdW5jYC4gIFRoZSBjcnV4IG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhhdCBpZiBga3ZtX3g4Nl9vcHMuZnVuY2AgaXMgYE5VTExgLCB0aGVuIHRoZSBzdGF0aWMgY2FsbCBnZXRzIHVwZGF0ZWQgdG8gYE5VTExgLiBUaGUgaW1tZWRpYXRlIGlzc3VlIGhlcmUgaXMgdGhhdCAqY2FsbGluZyogYSBgTlVMTGAgZnVuY3Rpb24gaXMgYSBndWFyYW50ZWVkIGNyYXNoLCByaWdodD8gSXQmIzM5O3MgZWxlbWVudGFyeSwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBmb2xsb3dpbmcgdGhlIGxvZ2ljIGNvcnJlY3RseS4KCldhaXQgYSBzZWNvbmQsIHRoZXJlJiMzOTtzIGBLVk1fWDg2X09QX09QVElPTkFMX1JFVDBgLCB3aGljaCBzZWVtcyB0byBoYXZlIGEgZmFsbGJhY2sgbWVjaGFuaXNtIHRvIGBfX3N0YXRpY19jYWxsX3JldHVybjBgLiAgV2h5IGRvZXNuJiMzOTt0IGBLVk1fWDg2X09QX09QVElPTkFMYCBhbHNvIGhhdmUgYSBmYWxsYmFjaz8gVGhhdCBzZWVtcyBsaWtlIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIEl0IG1lYW5zIHRoZSBvcHRpb25hbCBpbnN0cnVjdGlvbiBwYXRoIGlzbiYjMzk7dCB0cnVseSBvcHRpb25hbCDigJMgaXQmIzM5O3MgbWFuZGF0b3J5LCB1bmxlc3MgdGhlIGRldmVsb3BlciB0YWtlcyBzcGVjaWZpYyBhY3Rpb25zIHRvIGhhbmRsZSB0aGUgbnVsbCBwb2ludGVyLiBUaGlzIGlzIHNvbWV0aGluZyBJJiMzOTtkIHdhbnQgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4KCkkgbmVlZCB0byBkaWcgaW50byB0aGUgYGFyY2gveDg2L2t2bS94ODYuY2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDY5NDksIHRvIHNlZSBpZiB0aGVyZSBpcyBzb21lIG9idmlvdXMgcmVhc29uaW5nIGhlcmUsIG9yIGlmIHRoaXMgaXMsIGFzIEkgc3VzcGVjdCwgYSBzdWJ0bGUgYnVnIHRoYXQgbmVlZHMgc29tZSBhdHRlbnRpb24uIExldCBtZSBjaGVjayB0aGUgcmVsYXRlZCBjb2RlIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY5NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Njk0MDpcdH1cbjY5NDE6XHRcbjY5NDI6XHRzdGF0aWMgaW5saW5lIHZvaWQga3ZtX29wc191cGRhdGUoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcylcbjY5NDM6XHR7XG42OTQ0Olx0XHRtZW1jcHkoXHUwMDI2a3ZtX3g4Nl9vcHMsIG9wcy1cdTAwM2VydW50aW1lX29wcywgc2l6ZW9mKGt2bV94ODZfb3BzKSk7XG42OTQ1Olx0XG42OTQ2Olx0I2RlZmluZSBfX0tWTV9YODZfT1AoZnVuYykgXFxcbjY5NDc6XHRcdHN0YXRpY19jYWxsX3VwZGF0ZShrdm1feDg2XyMjZnVuYywga3ZtX3g4Nl9vcHMuZnVuYyk7XG42OTQ4Olx0I2RlZmluZSBLVk1fWDg2X09QKGZ1bmMpIFxcXG42OTQ5Olx0XHRXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKTsgX19LVk1fWDg2X09QKGZ1bmMpXG42OTUwOlx0I2RlZmluZSBLVk1fWDg2X09QX09QVElPTkFMIF9fS1ZNX1g4Nl9PUFxuNjk1MTpcdCNkZWZpbmUgS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGZ1bmMpIFxcXG42OTUyOlx0XHRzdGF0aWNfY2FsbF91cGRhdGUoa3ZtX3g4Nl8jI2Z1bmMsICh2b2lkICopa3ZtX3g4Nl9vcHMuZnVuYyA/IDogXFxcbjY5NTM6XHRcdFx0XHRcdFx0ICAgKHZvaWQgKilfX3N0YXRpY19jYWxsX3JldHVybjApO1xuNjk1NDpcdCNpbmNsdWRlIFx1MDAzY2FzbS9rdm0teDg2LW9wcy5oXHUwMDNlXG42OTU1Olx0I3VuZGVmIF9fS1ZNX1g4Nl9PUFxuNjk1NjpcdFxuNjk1NzpcdFx0a3ZtX25lc3RlZF9vcHNfdXBkYXRlKG9wcy1cdTAwM2VuZXN0ZWRfb3BzKTtcbjY5NTg6XHRcbjY5NTk6XHRcdGt2bV9wbXVfb3BzX3VwZGF0ZShvcHMtXHUwMDNlcG11X29wcyk7XG42OTYwOlx0fVxuNjk2MTpcdFxuNjk2MjpcdHN0YXRpYyBpbnQga3ZtX3g4Nl9jaGVja19wcm9jZXNzb3JfY29tcGF0aWJpbGl0eSh2b2lkKVxuNjk2MzpcdHtcbjY5NjQ6XHRcdGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7XG42OTY1Olx0XHRzdHJ1Y3QgY3B1aW5mb194ODYgKmMgPSBcdTAwMjZjcHVfZGF0YShjcHUpO1xuNjk2NjpcdFxuNjk2NzpcdFx0LypcbjY5Njg6XHRcdCAqIENvbXBhdGliaWxpdHkgY2hlY2tzIGFyZSBkb25lIHdoZW4gbG9hZGluZyBLVk0gYW5kIHdoZW4gZW5hYmxpbmdcbjY5Njk6XHRcdCAqIGhhcmR3YXJlLCBlLmcuIGR1cmluZyBDUFUgaG90cGx1ZywgdG8gZW5zdXJlIGFsbCBvbmxpbmUgQ1BVcyBhcmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1NDcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gWDg2IE9wZXJhdGlvbnMgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIGBwaV91cGRhdGVfaXJ0ZWAgZnJvbSBhbiBvcHRpb25hbCBLVk0geDg2IG9wZXJhdGlvbiAoYEtWTV9YODZfT1BfT1BUSU9OQUxgKSB0byBhIHJlcXVpcmVkIG9uZSAoYEtWTV9YODZfT1BgKS4gVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgd2UmIzM5O2xsIG5vdyBnZXQgYSBgV0FSTl9PTmAgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiBpZiBga3ZtX3g4Nl9vcHMucGlfdXBkYXRlX2lydGVgIGlzIE5VTEwuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgZnVuY3Rpb24sIGBwaV91cGRhdGVfaXJ0ZWAsIGlzIGNvbnNpc3RlbnRseSBpbXBsZW1lbnRlZCBieSBib3RoIFZNWCAoSW50ZWwpIGFuZCBTVk0gKEFNRCkgaHlwZXJ2aXNvcnMuIFRoaXMgY2hhbmdlIGZlZWxzIHBvdGVudGlhbGx5IHJpc2t5IGlmIHRoZXJlJiMzOTtzIGV2ZW4gYSByZW1vdGUgY2hhbmNlIG9mIGl0ICpub3QqIGJlaW5nIGF2YWlsYWJsZS4KCkxldCBtZSBxdWlja2x5IHZlcmlmeSB0aGF0LiBJJiMzOTtsbCBjaGVjayBgYXJjaC94ODYva3ZtL3ZteC9tYWluLmNgIGFuZCBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AuIEFscmlnaHQsIEkgYWxyZWFkeSBoYXZlIHRoZSByZWxldmFudCBsaW5lcyBmcm9tIHRoZSBjb2RlOiBib3RoIFZNWCBhbmQgU1ZNIGhhdmUgYW4gaW1wbGVtZW50YXRpb246IGB2bXhfcGlfdXBkYXRlX2lydGVgIGFuZCBgYXZpY19waV91cGRhdGVfaXJ0ZWAsIHJlc3BlY3RpdmVseS4gR29vZC4gQnV0IHdhaXTigKYgbXkgbWluZCBxdWlja2x5IGp1bXBzIHRvIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLgoKSXMgaXQgcG9zc2libGUgdGhhdCBgQ09ORklHX0tWTV9BTURgIG9yIGBDT05GSUdfS1ZNX0lOVEVMYCBhcmUgKm5vdCogYnVpbHQgaW50byB0aGUga2VybmVsLCBhbmQgdGhlIGZ1bmN0aW9uIHdvdWxkICpub3QqIGJlIGNvbXBpbGVkIGluPyBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgYGF2aWNfcGlfdXBkYXRlX2lydGVgIGluIGBzdm0uY2AgaXMgYWx3YXlzIGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXZpY19waV91cGRhdGVfaXJ0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vYXZpYy5jPTkwMj1zdGF0aWMgdm9pZCBzdm1faXJfbGlzdF9kZWwoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTkxNC1cbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jOjkxNTppbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTkxNi1cdFx0XHR1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMTQ9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDE5LVx0LmRlbGl2ZXJfaW50ZXJydXB0ID0gc3ZtX2RlbGl2ZXJfaW50ZXJydXB0LFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1NDIwOlx0LnBpX3VwZGF0ZV9pcnRlID0gYXZpY19waV91cGRhdGVfaXJ0ZSxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQyMS1cdC5zZXR1cF9tY2UgPSBzdm1fc2V0dXBfbWNlLFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9OTU5PXZvaWQgYXZpY19yZWZyZXNoX2FwaWN2X2V4ZWNfY3RybChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo5NjA6aW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTk2MS1cdFx0XHR1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc2NjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgS1ZNL0FNRCBBVklDIEltcGxlbWVudGF0aW9uKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIHplcm8gaW4gb24gYGF2aWNfcGlfdXBkYXRlX2lydGVgLiBJIHJlY2FsbCB0aGF0JiMzOTtzIG5lc3RsZWQgd2l0aGluIGBhdmljLmNgLiAgQSBrZXkgcXVlc3Rpb24gaW1tZWRpYXRlbHkgcG9wcyB1cDogaXMgYGF2aWMuY2AgKmFsd2F5cyogY29tcGlsZWQgaW50byB0aGUga2VybmVsIHdoZW4gYENPTkZJR19LVk1fQU1EYCBpcyBlbmFibGVkPyBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIHRoaXMuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBLVk0gb24gQU1EIHN5c3RlbXMgbGV2ZXJhZ2VzIHRoZSBBZHZhbmNlZCBWaXJ0dWFsIEludGVycnVwdCBDb250cm9sbGVyIChBVklDKSwgYnV0IEkgbmVlZCB0byBkZWZpbml0aXZlbHkgZXN0YWJsaXNoIHRoZSBjb21waWxhdGlvbiBkZXBlbmRlbmN5LiBJZiBgYXZpYy5jYCBpc24mIzM5O3QgY29uc2lzdGVudGx5IGluY2x1ZGVkIHVuZGVyIGBDT05GSUdfS1ZNX0FNRGAsIHRoZW4gdGhlIGBhdmljX3BpX3VwZGF0ZV9pcnRlYCBmdW5jdGlvbiBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLCBhbmQgaXRzIHByZXNlbmNlIGluIHRoZSBrZXJuZWwgaXMgZGVwZW5kZW50IG9uIG1vcmUgdGhhbiBqdXN0IHRoZSBgQ09ORklHX0tWTV9BTURgIG9wdGlvbi4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRvIGNvbmZpcm0uIFRoaXMgaGFzIGltcGxpY2F0aW9ucyBmb3IgaG93IEFWSUMmIzM5O3MgZnVuY3Rpb25hbGl0aWVzIGFyZSBhY3RpdmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXZpY1xcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTY5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgS1ZNIHg4NiBNYWtlZmlsZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgcmlnaHQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIg4oCTIHRoZSBgYXJjaC94ODYva3ZtL01ha2VmaWxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBLVk0gbW9kdWxlcyBhbmQgcmVsZXZhbnQgeDg2LXNwZWNpZmljIGNvbXBvbmVudHMgYXJlIGJ1aWx0IGFuZCBsaW5rZWQgd2l0aGluIHRoZSBrZXJuZWwuIFRoaXMgTWFrZWZpbGUgaXMgZ29pbmcgdG8gYmUgdGhlIHJvYWRtYXAuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGtleSB2YXJpYWJsZXMsIGluY2x1ZGUgcGF0aHMsIHNvdXJjZSBmaWxlcywgYW5kIGFueSBzcGVjaWFsIGJ1aWxkIHJ1bGVzIHNwZWNpZmljIHRvIEtWTSB3aXRoaW4gdGhlIHg4NiBhcmNoaXRlY3R1cmUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgaW5mb3JtYXRpb24gYWJvdXQgaG93IEtWTSBpbnRlcmFjdHMgd2l0aCBmZWF0dXJlcyBsaWtlIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMgKFZULXggb3IgQU1ELVYpLCBtZW1vcnkgbWFuYWdlbWVudCwgYW5kIGludGVycnVwdCBoYW5kbGluZyBvbiB0aGUgeDg2IHBsYXRmb3JtLiBUaGUgZGVwZW5kZW5jaWVzIHdpbGwgbGlrZWx5IHJldmVhbCBob3cgaXQgaW50ZWdyYXRlcyBpbnRvIHRoZSBvdmVyYWxsIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQgdHJlYXN1cmVzIHRoaXMgTWFrZWZpbGUgaG9sZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F2aWNcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MjI9a3ZtLWludGVsLSQoQ09ORklHX0tWTV9JTlRFTF9URFgpXHQmIzQzOz0gdm14L3RkeC5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMjMtXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MjQ6a3ZtLWFtZC15XHRcdCYjNDM7PSBzdm0vc3ZtLm8gc3ZtL3ZtZW50ZXIubyBzdm0vcG11Lm8gc3ZtL25lc3RlZC5vIHN2bS9hdmljLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzNTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBDb21waWxhdGlvbiBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIHNvIGBzdm0vYXZpYy5vYC4uLiB0aGF0JiMzOTtzIGFsd2F5cyBidWlsdCwgbm8gcXVlc3Rpb24uIE5vdywgSSBuZWVkIHRvIGpvZyBteSBtZW1vcnkgYSBiaXQuIFdoZXJlIGRvZXMgYHZteF9waV91cGRhdGVfaXJ0ZWAgY29tZSBmcm9tPyBBaCwgdGhhdCYjMzk7cyByaWdodCwgaXQmIzM5O3MgYnVyaWVkIGluIGBwb3N0ZWRfaW50ci5jYC4gT2theSwgdGhhdCBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2hlY2sgdGhhdCBzcGVjaWZpYyBzb3VyY2UgZmlsZSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBidWlsZCBwcm9jZXNzLCB0byBzZWUgd2h5IEkmIzM5O20gYXNraW5nIHRoaXMgcXVlc3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Bvc3RlZF9pbnRyXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL01ha2VmaWxlPTE3PWt2bS1pbnRlbC15XHRcdCYjNDM7PSB2bXgvdm14Lm8gdm14L3ZtZW50ZXIubyB2bXgvcG11X2ludGVsLm8gdm14L3ZtY3MxMi5vIFxcXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MTg6XHRcdFx0ICAgdm14L25lc3RlZC5vIHZteC9wb3N0ZWRfaW50ci5vIHZteC9tYWluLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0xOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2NzgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgdGhlIGBwaV91cGRhdGVfaXJ0ZWAgQ29tcGlsYXRpb24qKgoKT2theSwgc28gYHZteC9wb3N0ZWRfaW50ci5vYCBpcyBhbHdheXMgY29tcGlsZWQsIHdoaWNoIG1lYW5zIGBwaV91cGRhdGVfaXJ0ZWAgaXMgKmFsd2F5cyogZ29pbmcgdG8gYmUgcHJlc2VudCBpbiBib3RoIGB2dF94ODZfb3BzYCBhbmQgYHN2bV94ODZfb3BzYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzLCB3aGF0IGhhcHBlbnMgaWYgYGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSlgIGdldHMgaW52b2tlZCB3aGVuIGBpcnFfYnlwYXNzYCBpc24mIzM5O3QgYWN0aXZlPyBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhIHN1YnRsZSBlcnJvciBjb25kaXRpb24uCgpBaCwgcmlnaHQsIHRoZSBwYXRjaCBqdXN0IG1vdmVzIGZyb20gYEtWTV9YODZfT1BfT1BUSU9OQUwocGlfdXBkYXRlX2lydGUpYCB0byBgS1ZNX1g4Nl9PUChwaV91cGRhdGVfaXJ0ZSlgLiBTbywgdGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiwgd2hlbiB0aGUgbW9kdWxlIGxvYWRzLCB3ZSYjMzk7cmUgZ29pbmcgdG8gaW50cm9kdWNlIGEgYFdBUk5fT04oIWt2bV94ODZfb3BzLmZ1bmMpYC4gQnV0IGJvdGggVk1YIGFuZCBTVk0gKmFsd2F5cyogc3VwcGx5IHRoaXMgZnVuY3Rpb24sIHNvIHRoYXQgYFdBUk5fT05gIHNob3VsZCBuZXZlciBhY3R1YWxseSB0cmlnZ2VyLiBXZSYjMzk7cmUgZWZmZWN0aXZlbHkgdHVybmluZyBhbiBvcHRpb25hbCBmdW5jdGlvbiBpbnRvIGEgbWFuZGF0b3J5IG9uZSwgd2hpY2ggaXMgc2FmZSBpbiB0aGlzIGNhc2UuCgpCdXQgaG9sZCBvbi4uLiBpcyB0aGVyZSBhbnkgb3RoZXIgbG9jYXRpb24gaW4gdGhlIGNvZGUgd2hlcmUgYGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSlgIGlzIHVzZWQsIGFuZCAqcHJldmlvdXNseSogdGhlcmUgd2FzIGEgY2hlY2sgdG8gc2VlIGlmIHRoZSBmdW5jdGlvbiB3YXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQ/IEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuIEkgbmVlZCB0byBzY2FuIGZvciBhbnkgaW5zdGFuY2VzIG9mIGBrdm1feDg2X2hhcyhwaV91cGRhdGVfaXJ0ZSlgIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgb3IgYXNzdW1wdGlvbnMgdGhhdCBjb3VsZCBiZSBicm9rZW4gYnkgdGhpcyBjaGFuZ2UuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGViYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV94ODZfaGFzXFwocGlfdXBkYXRlX2lydGVcXCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzNTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgYHBpX3VwZGF0ZV9pcnRlYCB2YXJpYWJsZS4qKiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8ga25vdyB3aGVyZSB0aGlzIHRoaW5nIGlzIGJlaW5nIHVzZWQuIElmIGl0JiMzOTtzIG5vdCBiZWluZyBjaGVja2VkIGFueXdoZXJlLCB0aGVuIGl0JiMzOTtzIGVmZmVjdGl2ZWx5IGRlYWQgY29kZSwgd2hpY2ggY291bGQgYmUgYSBzaW1wbGUgY2xlYW4tdXAuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiBpdCAqaXMqIGJlaW5nIGNoZWNrZWQsIEkgbmVlZCB0byBrbm93ICp3aGVyZSogYW5kICp3aHkqLiBJdHMgdXNhZ2Ugd2lsbCBkaWN0YXRlIGl0cyBpbXBvcnRhbmNlIGFuZCwgdGhlcmVmb3JlLCB0aGUgaW1wb3J0YW5jZSBvZiBhbnl0aGluZyByZWxhdGVkIHRvIGl0LiBVbmRlcnN0YW5kaW5nIGl0cyByb2xlIGlzIGtleSBiZWZvcmUgbWFraW5nIGFueSBqdWRnbWVudHMgb24gd2hhdCB0byBkbywgb3Igd2hldGhlciB0aGVyZSBpcyBhIGJ1Zy4gTGV0JiMzOTtzIHNlZSBpZiBJIGNhbiB0cmFjZSBpdHMgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BpX3VwZGF0ZV9pcnRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaXJxLmM9NDI2PXN0YXRpYyBib29sIGt2bV9pcnFfaXNfcG9zdGFibGUoc3RydWN0IGt2bV9sYXBpY19pcnEgKmlycSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDMyLVxuYXJjaC94ODYva3ZtL2lycS5jOjQzMzpzdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDM0LVx0XHRcdCAgICAgIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplbnRyeSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDY3LVxuYXJjaC94ODYva3ZtL2lycS5jOjQ2ODpcdHIgPSBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpKGlycWZkLCBpcnFmZC1cdTAwM2Vrdm0sIGhvc3RfaXJxLCBpcnFmZC1cdTAwM2Vnc2ksXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDY5LVx0XHRcdFx0XHQgdmNwdSwgaXJxLnZlY3Rvcik7XG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTQ4Mj1pbnQga3ZtX2FyY2hfaXJxX2J5cGFzc19hZGRfcHJvZHVjZXIoc3RydWN0IGlycV9ieXBhc3NfY29uc3VtZXIgKmNvbnMsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTQ5Ni1cdGlmIChpcnFmZC1cdTAwM2VpcnFfZW50cnkudHlwZSA9PSBLVk1fSVJRX1JPVVRJTkdfTVNJKSB7XG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDk3Olx0XHRyZXQgPSBrdm1fcGlfdXBkYXRlX2lydGUoaXJxZmQsIFx1MDAyNmlycWZkLVx1MDAzZWlycV9lbnRyeSk7XG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDk4LVx0XHRpZiAocmV0KSB7XG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTUwOD12b2lkIGt2bV9hcmNoX2lycV9ieXBhc3NfZGVsX3Byb2R1Y2VyKHN0cnVjdCBpcnFfYnlwYXNzX2NvbnN1bWVyICpjb25zLFxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy01MjctXHQgICAgV0FSTl9PTl9PTkNFKGlycWZkLVx1MDAzZWlycV9ieXBhc3NfdmNwdSkpIHtcbmFyY2gveDg2L2t2bS9pcnEuYzo1Mjg6XHRcdHJldCA9IGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgTlVMTCk7XG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTI5LVx0XHRpZiAocmV0KVxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYz01NDA9dm9pZCBrdm1fYXJjaF91cGRhdGVfaXJxZmRfcm91dGluZyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTU1Mi1cbmFyY2gveDg2L2t2bS9pcnEuYzo1NTM6XHRrdm1fcGlfdXBkYXRlX2lydGUoaXJxZmQsIG5ldyk7XG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTU0LX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYz05MDI9c3RhdGljIHZvaWQgc3ZtX2lyX2xpc3RfZGVsKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZClcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYy05MTQtXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYzo5MTU6aW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYy05MTYtXHRcdFx0dW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzE0PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQxOS1cdC5kZWxpdmVyX2ludGVycnVwdCA9IHN2bV9kZWxpdmVyX2ludGVycnVwdCxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQyMDpcdC5waV91cGRhdGVfaXJ0ZSA9IGF2aWNfcGlfdXBkYXRlX2lydGUsXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MjEtXHQuc2V0dXBfbWNlID0gc3ZtX3NldHVwX21jZSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTk1OT12b2lkIGF2aWNfcmVmcmVzaF9hcGljdl9leGVjX2N0cmwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6OTYwOmludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC05NjEtXHRcdFx0dW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTk3LVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6OTk4Olx0LnBpX3VwZGF0ZV9pcnRlID0gdm14X3BpX3VwZGF0ZV9pcnRlLFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTk5LVx0LnBpX3N0YXJ0X2J5cGFzcyA9IHZteF9waV9zdGFydF9ieXBhc3MsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jPTI5Nz12b2lkIHZteF9waV9zdGFydF9ieXBhc3Moc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYy0zMDQtXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmM6MzA1OmludCB2bXhfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMzA2LVx0XHQgICAgICAgdW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5oPTE2PWJvb2wgcGlfaGFzX3BlbmRpbmdfaW50ZXJydXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmg6MTc6aW50IHZteF9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaC0xOC1cdFx0ICAgICAgIHVuc2lnbmVkIGludCBob3N0X2lycSwgdWludDMyX3QgZ3Vlc3RfaXJxLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE0MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIERlZXAgaW50byBLVk0gSW50ZXJydXB0IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBga3ZtX3BpX3VwZGF0ZV9pcnRlYC4gSW50ZXJlc3RpbmcsIHRoaXMgZnVuY3Rpb24gc2VlbXMgbGlrZSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBpbnRlcnJ1cHQgbWFuYWdlbWVudCBwdXp6bGUsIGJ1dCB3YWl0Li4uaXQmIzM5O3Mgb25seSBjYWxsZWQgdW5kZXIgdmVyeSBzcGVjaWZpYyBjb25kaXRpb25zLCBuYW1lbHkgaWYgdGhlIGBpcnFjaGlwX2luX2tlcm5lbChrdm0pYCBjaGVjayBpcyB0cnVlIGFuZCBpZiBga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKWAgYWxzbyBldmFsdWF0ZXMgdG8gdHJ1ZS4gVGhhdCYjMzk7cyBhIGNydWNpYWwgYml0IG9mIGNvbmRpdGlvbmFsIGxvZ2ljIEkgbmVlZCB0byBiZSBhd2FyZSBvZiEgVG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY2FsbCBwYXRoLCBJIG5lZWQgdG8ga25vdyBleGFjdGx5IHdoYXQgYGt2bV9hcmNoX2hhc19pcnFfYnlwYXNzKClgIG1lYW5zLCBhbmQgd2hlcmUgaXQmIzM5O3MgYmVpbmcgdXNlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyBhbmQgd2hlcmUgaXQmIzM5O3MgZGVmaW5lZC4gVGltZSB0byBkcmlsbCBkb3duIG9uIHRoYXQgZnVuY3Rpb24hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX2hhc19pcnFfYnlwYXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaXJxLmM9NDMzPXN0YXRpYyBpbnQga3ZtX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDQxLVxuYXJjaC94ODYva3ZtL2lycS5jOjQ0MjpcdGlmIChXQVJOX09OX09OQ0UoIWlycWNoaXBfaW5fa2VybmVsKGt2bSkgfHwgIWt2bV9hcmNoX2hhc19pcnFfYnlwYXNzKCkpKVxuYXJjaC94ODYva3ZtL2lycS5jLTQ0My1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jPTE0Nz1zdGF0aWMgYm9vbCB2bXhfY2FuX3VzZV92dGRfcGkoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYy0xNTMtXHQgKi9cbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYzoxNTQ6XHRyZXR1cm4gaXJxY2hpcF9pbl9rZXJuZWwoa3ZtKSBcdTAwMjZcdTAwMjYga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKSBcdTAwMjZcdTAwMjZcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYy0xNTUtXHQgICAgICAgUkVBRF9PTkNFKGt2bS1cdTAwM2VhcmNoLm5yX3Bvc3NpYmxlX2J5cGFzc19pcnFzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3NDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS1ZNIElSUSBCeXBhc3MgTG9jYXRpb24gUXVhbmRhcnkqKgoKT2theSwgSSYjMzk7bSBqdXN0IHF1aWNrbHkgdHJ5aW5nIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoZXJlIGV4YWN0bHkgdGhhdCBga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKWAgZnVuY3Rpb24gaXMgZGVmaW5lZC4gSXMgaXQgdHVja2VkIGF3YXkgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AsIG9yIGlzIGl0IGRlY2xhcmVkIGluIHRoYXQgaGVhZGVyIGZpbGUsIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oYD8gSSAqa25vdyogSSYjMzk7dmUgd29ya2VkIHdpdGggaXQgYmVmb3JlLi4uIEl0JiMzOTtzIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgYmVjYXVzZSBJIGRvbiYjMzk7dCB3YW50IHRvIGNoYXNlIHRoZSB3cm9uZyBpbmNsdWRlIHBhdGggd2hlbiBJJiMzOTttIHRyYWNraW5nIHNvbWV0aGluZyBkb3duIG9yIGNoYW5naW5nIHRoZSBmdW5jdGlvbmFsaXR5IGFyb3VuZCB0aGUgYnlwYXNzLiBHb3R0YSBxdWlja2x5IHZlcmlmeSB0aGF0IGxvY2F0aW9uIHRvIGtlZXAgdGhpbmdzIGVmZmljaWVudC4gUmlnaHQsIGxldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0xODkyPXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fYXJjaF92Y3B1X3VuYmxvY2tpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTg5Ni1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTg5NzpzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3Modm9pZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTg5OC17XG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTQzMz1zdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTQ0MS1cbmFyY2gveDg2L2t2bS9pcnEuYzo0NDI6XHRpZiAoV0FSTl9PTl9PTkNFKCFpcnFjaGlwX2luX2tlcm5lbChrdm0pIHx8ICFrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpKSlcbmFyY2gveDg2L2t2bS9pcnEuYy00NDMtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYz0xNDc9c3RhdGljIGJvb2wgdm14X2Nhbl91c2VfdnRkX3BpKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMTUzLVx0ICovXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmM6MTU0Olx0cmV0dXJuIGlycWNoaXBfaW5fa2VybmVsKGt2bSkgXHUwMDI2XHUwMDI2IGt2bV9hcmNoX2hhc19pcnFfYnlwYXNzKCkgXHUwMDI2XHUwMDI2XG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMTU1LVx0ICAgICAgIFJFQURfT05DRShrdm0tXHUwMDNlYXJjaC5ucl9wb3NzaWJsZV9ieXBhc3NfaXJxcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDcxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBLVk0gSG9zdCBIZWFkZXIqKgoKT2theSwgSSBuZWVkIHRvIGludmVzdGlnYXRlIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSB4ODYgS1ZNIGhvc3QgaW1wbGVtZW50YXRpb24uIExldCYjMzk7cyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGEgbGlrZWx5IGFyZWEuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gcHJvdG90eXBlcyByZWxhdGVkIHRvIEtWTSYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBob3N0IENQVSBhcmUgb2Z0ZW4gZGVmaW5lZCBuZWFyIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgd2l0aGluIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oYC4gQW5kIGtub3dpbmcgdGhlIHByb2plY3QsIGxpbmVzIDE4OTctaXNoIHNob3VsZCBiZSBhIGdvb2QgcGxhY2UgdG8gYmVnaW4uIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB5b3UgZmluZCB0aGUgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byB0aGUgbW9yZSBhZHZhbmNlZCBDUFUgZmVhdHVyZXMgYW5kIHJlZ2lzdGVycyBhbmQgdGhlaXIgZW11bGF0aW9uIHdpdGhpbiBLVk0gb24geDg2LiBUaGlzIHdpbGwgZWl0aGVyIGJlIHRoZSBzb3VyY2Ugb3IgYW4gZW50cnkgcG9pbnQgdG8gdGhlIHNvdXJjZSBvZiB3aGF0ZXZlciBpdCBpcyBJIGFtIGFmdGVyLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4OTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTg5NTpcdH1cbjE4OTY6XHRcbjE4OTc6XHRzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3Modm9pZClcbjE4OTg6XHR7XG4xODk5Olx0XHRyZXR1cm4gZW5hYmxlX2RldmljZV9wb3N0ZWRfaXJxcztcbjE5MDA6XHR9XG4xOTAxOlx0XG4xOTAyOlx0I2VuZGlmIC8qIF9BU01fWDg2X0tWTV9IT1NUX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4NTIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIGBwaV91cGRhdGVfaXJ0ZWAqKgoKT2theSwgc28gYGt2bV9hcmNoX2hhc19pcnFfYnlwYXNzKClgIGhpbmdlcyBvbiBgZW5hYmxlX2RldmljZV9wb3N0ZWRfaXJxc2AsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgZWl0aGVyIGEgbW9kdWxlIHBhcmFtZXRlciBvciBhIGdsb2JhbCB2YXJpYWJsZS4gVGhpcyBwYXRjaCBtYWtlcyBgcGlfdXBkYXRlX2lydGVgIGEgbWFuZGF0b3J5IEtWTSB4ODYgb3BlcmF0aW9uLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyBhY3R1YWxseSAqZG8qIGFueXRoaW5nPwoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlcmUmIzM5O3Mgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBwYXRjaCByZW1vdmVzIHRoZSBmYWxsYmFjayB0byBgTlVMTGAgZm9yIGBwaV91cGRhdGVfaXJ0ZWAgaW4gYGt2bV94ODZfb3BzYC4gQnV0LCBpdCBzZWVtcyBsaWtlIGJvdGggVk1YIGFuZCBTVk0gYWx3YXlzIHByb3ZpZGVkIHRoaXMsIHNvIGl0IHdhcyBuZXZlciBgTlVMTGAgaW4gcHJhY3RpY2UuIFRoZSBgc3RhdGljX2NhbGxfdXBkYXRlYCB3b3VsZCBoYXZlIHNldCBpdCB0byBgTlVMTGAgb25seSBpZiB0aGUgaW1wbGVtZW50YXRpb24gZGlkbiYjMzk7dCBzdXBwbHkgaXQuCgpIYW5nIG9uLCB3aGF0IGFib3V0IHdoZW4gYGVuYWJsZV9kZXZpY2VfcG9zdGVkX2lycXNgIGlzIGZhbHNlPyBUaGVuIGBrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpYCBpcyBmYWxzZSwgYW5kIGBrdm1fcGlfdXBkYXRlX2lydGVgIHJldHVybnMgYC1FSU5WQUxgIGVhcmx5LCBieXBhc3NpbmcgdGhlIHdob2xlIGBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpYCBjYWxsLiBSaWdodC4gU28sIGl0IHJlYWxseSBqdXN0IHR3ZWFrcyB0aGUgZGVmaW5pdGlvbiBpbiBga3ZtLXg4Ni1vcHMuaGAuCgpEb2VzIGl0IGNoYW5nZSBiZWhhdmlvciB0aGVuPyBJZiBib3RoIFZNWCBhbmQgU1ZNICphbHdheXMqIHByb3ZpZGVkIGBwaV91cGRhdGVfaXJ0ZWAsIG1ha2luZyBpdCBtYW5kYXRvcnkgc2VlbXMgdG8ganVzdCBhZGQgYSBgV0FSTl9PTigha3ZtX3g4Nl9vcHMuZnVuYylgIGR1cmluZyBpbml0aWFsaXphdGlvbi4gQnV0IHRoYXQgYFdBUk5fT05gIHNob3VsZCBuZXZlciB0cmlnZ2VyLCBiZWNhdXNlIHRoZSBmdW5jdGlvbnMgYXJlIGFsd2F5cyBwcm92aWRlZC4gQW5kLCBhcyBmYXIgYXMgSSYjMzk7bSBhd2FyZSwgS1ZNIHg4NiAqb25seSogaGFzIFZNWCBhbmQgU1ZNLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQuLi4gTm8gb3RoZXIgYXJjaGl0ZWN0dXJlcyBhcmUgcmVsZXZhbnQuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggZm9yIG90aGVyIHVzZXMgb2YgYHBpX3VwZGF0ZV9pcnRlYC4uLiBObywgdGhlIGdyZXBzIGNhbWUgdXAgZW1wdHkuCgpTbywgdGhpcyBsb29rcyBsaWtlIGEgY2xlYW51cCBwYXRjaCwgZXNzZW50aWFsbHkgZGVjbGFyaW5nIGFuIG9wZXJhdGlvbiBtYW5kYXRvcnkgYmVjYXVzZSBhbGwgaW1wbGVtZW50YXRpb25zIGFscmVhZHkgcHJvdmlkZSBpdC4gSXQgc2VlbXMgdG8ganVzdCBiZSBtYWtpbmcgdGhlIG1hY3JvIGZyb20gYEtWTV9YODZfT1BfT1BUSU9OQUxgIHRvIGBLVk1fWDg2X09QYC4gIFNpbmNlIGJvdGggaW1wbGVtZW50YXRpb25zICphbHdheXMqIHByb3ZpZGVkIGl0LCB0aGVuIHRoZSBvbmx5IHJlYWwgY2hhbmdlIGlzIHRoZSBhZGRlZCBgV0FSTl9PTmAgZHVyaW5nIG1vZHVsZSBsb2FkLCBhbmQgdGhhdCBzaG91bGQgYmUgdW5yZWFjaGFibGUuCgpPa2F5LCBsZXQgbWUgZG91YmxlLWNoZWNrLiBJbiBgdnRfeDg2X29wc2AsIGl0JiMzOTtzIHNldCB0byBgdm14X3BpX3VwZGF0ZV9pcnRlYC4gSW4gYHN2bV94ODZfb3BzYCwgaXQmIzM5O3Mgc2V0IHRvIGBhdmljX3BpX3VwZGF0ZV9pcnRlYC4gQXJlIHRoZXNlIGluaXRpYWxpemF0aW9ucyBjb25kaXRpb25hbCBpbiBhbnkgd2F5PyBObywgdGhleSBhcHBlYXIgdG8gYmUgZGlyZWN0IGFzc2lnbm1lbnRzLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIGlzIGZ1enppbmcgaXQgZXZlbiB3b3J0aHdoaWxlPyBJdCBzZWVtcyBsaWtlIGEgdmVyeSBsb3ctaW1wYWN0IGNoYW5nZSB0aGF0IHJlYWxseSBvbmx5IGFmZmVjdHMgYSBgV0FSTl9PTmAgd2hpY2ggd2lsbCBuZXZlciBiZSBoaXQsIHNvIGl0JiMzOTtzIGEgcGFzcyBmb3IgZnV6emluZyB1bmxlc3MgdGhlcmUmIzM5O3Mgc29tZSBzdWJ0bGUgaW50ZXJhY3Rpb24gSSYjMzk7bSBtaXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtcXC5waV91cGRhdGVfaXJ0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzE0PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQxOS1cdC5kZWxpdmVyX2ludGVycnVwdCA9IHN2bV9kZWxpdmVyX2ludGVycnVwdCxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQyMDpcdC5waV91cGRhdGVfaXJ0ZSA9IGF2aWNfcGlfdXBkYXRlX2lydGUsXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MjEtXHQuc2V0dXBfbWNlID0gc3ZtX3NldHVwX21jZSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYz04ODA9c3RydWN0IGt2bV94ODZfb3BzIHZ0X3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTctXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzo5OTg6XHQucGlfdXBkYXRlX2lydGUgPSB2bXhfcGlfdXBkYXRlX2lydGUsXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTktXHQucGlfc3RhcnRfYnlwYXNzID0gdm14X3BpX3N0YXJ0X2J5cGFzcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ0MTUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYSBLVk0gQ29kZSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgS1ZNIGNvZGUgY2hhbmdlIHJlbGF0ZWQgdG8gYGt2bV94ODZfb3BzLnBpX3VwZGF0ZV9pcnRlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgdW5jb25kaXRpb25hbGx5IGluaXRpYWxpemVkIHdpdGhpbiB0aGUgc3RydWN0IGRlZmluaXRpb24uIFRoZXJlZm9yZSwgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgYGt2bV94ODZfb3BzLnBpX3VwZGF0ZV9pcnRlYCAqc2hvdWxkKiBuZXZlciBiZSBOVUxMLgoKQ29uc2VxdWVudGx5LCBzd2l0Y2hpbmcgZnJvbSBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgdG8gYEtWTV9YODZfT1BgIHNlZW1zIGxpa2UgaXQmIzM5O3MganVzdCBhIGNvc21ldGljIGNoYW5nZSDigJMgcHJpbWFyaWx5IG1vZGlmeWluZyB0aGUgc3RhdGljIGNhbGwgdXBkYXRlIG1hY3JvIHRvIGluY2x1ZGUgYSBgV0FSTl9PTigha3ZtX3g4Nl9vcHMuZnVuYylgLiBBbmQgc2luY2UgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaXMgKm5ldmVyKiBOVUxMLCB0aGlzIGBXQVJOX09OYCB3aWxsIGFsd2F5cyBiZSB1bnJlYWNoYWJsZS4gSW4gZXNzZW5jZSwgaXQgYXBwZWFycyB0aGVyZSYjMzk7cyBubyBhY3R1YWwgZnVuY3Rpb25hbCBkaWZmZXJlbmNlLiBUaGUgY29kZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYXQgcnVudGltZSByZW1haW5zIGV4YWN0bHkgdGhlIHNhbWUg4oCTIGp1c3QgYSBzdGF0aWMgY2FsbCB0byB0aGUgaW50ZW5kZWQgZnVuY3Rpb24uCgpCdXQsIGhhbmcgb24gYSBzZWNvbmQuLi4gaXMgdGhlcmUgZXZlbiBhICpwZXJmb3JtYW5jZSogZGlmZmVyZW5jZSwgc29tZSBzb3J0IG9mIG92ZXJoZWFkIGFzc29jaWF0ZWQgd2l0aCBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgY29tcGFyZWQgdG8ganVzdCBgS1ZNX1g4Nl9PUGA/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgYGFyY2gveDg2L2t2bS94ODYuY2AgYWdhaW4uIEkgaGF2ZSB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgc3VidGxlIGltcGFjdHMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2OTQ2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY5NDY6XHQjZGVmaW5lIF9fS1ZNX1g4Nl9PUChmdW5jKSBcXFxuNjk0NzpcdFx0c3RhdGljX2NhbGxfdXBkYXRlKGt2bV94ODZfIyNmdW5jLCBrdm1feDg2X29wcy5mdW5jKTtcbjY5NDg6XHQjZGVmaW5lIEtWTV9YODZfT1AoZnVuYykgXFxcbjY5NDk6XHRcdFdBUk5fT04oIWt2bV94ODZfb3BzLmZ1bmMpOyBfX0tWTV9YODZfT1AoZnVuYylcbjY5NTA6XHQjZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgX19LVk1fWDg2X09QXG42OTUxOlx0I2RlZmluZSBLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZnVuYykgXFxcbjY5NTI6XHRcdHN0YXRpY19jYWxsX3VwZGF0ZShrdm1feDg2XyMjZnVuYywgKHZvaWQgKilrdm1feDg2X29wcy5mdW5jID8gOiBcXFxuNjk1MzpcdFx0XHRcdFx0XHQgICAodm9pZCAqKV9fc3RhdGljX2NhbGxfcmV0dXJuMCk7XG42OTU0Olx0I2luY2x1ZGUgXHUwMDNjYXNtL2t2bS14ODYtb3BzLmhcdTAwM2VcbjY5NTU6XHQjdW5kZWYgX19LVk1fWDg2X09QXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MjMyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIFg4NiBPcGVyYXRpb25zIENvZGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgaXMsIGZvciBhbGwgaW50ZW50cyBhbmQgcHVycG9zZXMsICppZGVudGljYWwqIHRvIGBfX0tWTV9YODZfT1BgLiBUaGUgbGF0dGVyIGlzIGp1c3QgYSB3cmFwcGVyIGNvbnRhaW5pbmcgYFdBUk5fT04oIWt2bV94ODZfb3BzLmZ1bmMpOyBfX0tWTV9YODZfT1AoZnVuYylgLiBUaGUgb25seSByZWFsIHZhcmlhdGlvbiBhcmlzZXMgZHVyaW5nIGBrdm1fb3BzX3VwZGF0ZSgpYC4gSGVyZSwgdGhlIGBXQVJOX09OYCBjaGVjayBpcyBhcHBsaWVkLgoKQnV0IGhhbmcgb24sIHRoYXQgYFdBUk5fT05gIGlzIGFsbW9zdCBjZXJ0YWlubHkgYSBub24tZXZlbnQuIExvb2tpbmcgYXQgdGhlIGluaXRpYWxpemF0aW9uLCBga3ZtX3g4Nl9vcHMucGlfdXBkYXRlX2lydGVgIGlzIHN0YXRpY2FsbHkgc2V0IHRvIGEgdmFsaWQgZnVuY3Rpb24gcG9pbnRlciBpbiBib3RoIFZNWCBhbmQgU1ZNIGltcGxlbWVudGF0aW9ucy4gVGhhdCBtZWFucyB0aGUgd2FybmluZyBjb25kaXRpb24gaXMgdmlydHVhbGx5IGltcG9zc2libGUuCgpTbywgcmVhbGlzdGljYWxseSwgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IGFjdHVhbCBmdW5jdGlvbmFsIGFsdGVyYXRpb25zIHRoYXQgd291bGQgZXZlbiBiZSB3b3J0aCBmdXp6aW5nLiBJdCByZWFsbHkganVzdCBzZWVtcyBsaWtlIGEgc3RydWN0dXJhbCBjbGVhbnVwIG9yIGNvZGUgaHlnaWVuZSBraW5kIG9mIGNoYW5nZS4KCkJ1dCwgYXMgYSBnb29kIHByYWN0aWNlLCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2ssIGp1c3QgdG8gYmUgc3VyZSwgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBzbmVha3kgaW5zdGFuY2VzIHdoZXJlIHRoZXNlIG1hY3JvcyBhY3R1YWxseSBiZWhhdmUgZGlmZmVyZW50bHkuIE9uZSBmaW5hbCBzd2VlcCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S1ZNX1g4Nl9PUF9PUFRJT05BTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTItI2lmICFkZWZpbmVkKEtWTV9YODZfT1ApIHx8IFxcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM6ICAgICFkZWZpbmVkKEtWTV9YODZfT1BfT1BUSU9OQUwpIHx8IFxcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ6ICAgICFkZWZpbmVkKEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtNS0jZXJyb3IgTWlzc2luZyBvbmUgb3IgbW9yZSBLVk1fWDg2X09QICNkZWZpbmVzXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC03LS8qXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjg6ICogS1ZNX1g4Nl9PUCgpIGFuZCBLVk1fWDg2X09QX09QVElPTkFMKCkgYXJlIHVzZWQgdG8gaGVscCBnZW5lcmF0ZVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC05LSAqIGJvdGggREVDTEFSRS9ERUZJTkVfU1RBVElDX0NBTEwoKSBpbnZvY2F0aW9ucyBhbmRcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTExLSAqXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEyOiAqIEtWTV9YODZfT1BfT1BUSU9OQUwoKSBjYW4gYmUgdXNlZCBmb3IgdGhvc2UgZnVuY3Rpb25zIHRoYXQgY2FuIGhhdmVcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM6ICogYSBOVUxMIGRlZmluaXRpb24uICBLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoKSBjYW4gYmUgdXNlZCBsaWtld2lzZVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNC0gKiB0byBtYWtlIGEgZGVmaW5pdGlvbiBvcHRpb25hbCwgYnV0IGluIHRoaXMgY2FzZSB0aGUgZGVmYXVsdCB3aWxsXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD0yMz1LVk1fWDg2X09QKHZtX2luaXQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjI0OktWTV9YODZfT1BfT1BUSU9OQUwodm1fZGVzdHJveSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjU6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2bV9wcmVfZGVzdHJveSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHZjcHVfcHJlY3JlYXRlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0yNy1LVk1fWDg2X09QKHZjcHVfY3JlYXRlKVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9NDM9S1ZNX1g4Nl9PUChzZXRfY3IwKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo0NDpLVk1fWDg2X09QX09QVElPTkFMKHBvc3Rfc2V0X2NyMylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtNDUtS1ZNX1g4Nl9PUChpc192YWxpZF9jcjQpXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD01OT1LVk1fWDg2X09QKGZsdXNoX3RsYl9jdXJyZW50KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC02MC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSFlQRVJWKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2MTpLVk1fWDg2X09QX09QVElPTkFMKGZsdXNoX3JlbW90ZV90bGJzKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2MjpLVk1fWDg2X09QX09QVElPTkFMKGZsdXNoX3JlbW90ZV90bGJzX3JhbmdlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC02My0jZW5kaWZcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTY5PUtWTV9YODZfT1Aoc2tpcF9lbXVsYXRlZF9pbnN0cnVjdGlvbilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzA6S1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfZW11bGF0ZWRfaW5zdHJ1Y3Rpb24pXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTcxLUtWTV9YODZfT1Aoc2V0X2ludGVycnVwdF9zaGFkb3cpXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD03NT1LVk1fWDg2X09QKGluamVjdF9ubWkpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjc2OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChpc192bm1pX3BlbmRpbmcpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjc3OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChzZXRfdm5taV9wZW5kaW5nKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC03OC1LVk1fWDg2X09QKGluamVjdF9leGNlcHRpb24pXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD04NT1LVk1fWDg2X09QKGVuYWJsZV9pcnFfd2luZG93KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4NjpLVk1fWDg2X09QX09QVElPTkFMKHVwZGF0ZV9jcjhfaW50ZXJjZXB0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC04Ny1LVk1fWDg2X09QKHJlZnJlc2hfYXBpY3ZfZXhlY19jdHJsKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4ODpLVk1fWDg2X09QX09QVElPTkFMKGh3YXBpY19pc3JfdXBkYXRlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4OTpLVk1fWDg2X09QX09QVElPTkFMKGxvYWRfZW9pX2V4aXRtYXApXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjkwOktWTV9YODZfT1BfT1BUSU9OQUwoc2V0X3ZpcnR1YWxfYXBpY19tb2RlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5MTpLVk1fWDg2X09QX09QVElPTkFMKHNldF9hcGljX2FjY2Vzc19wYWdlX2FkZHIpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTkyLUtWTV9YODZfT1AoZGVsaXZlcl9pbnRlcnJ1cHQpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjkzOktWTV9YODZfT1BfT1BUSU9OQUwoc3luY19waXJfdG9faXJyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NDpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X3Rzc19hZGRyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NTpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X2lkZW50aXR5X21hcF9hZGRyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZ2V0X210X21hc2spXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjk3OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCh0ZHBfaGFzX3NtZXApXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTk4LUtWTV9YODZfT1AobG9hZF9tbXVfcGdkKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5OTpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X2V4dGVybmFsX3NwdGUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwMDpLVk1fWDg2X09QX09QVElPTkFMKGZyZWVfZXh0ZXJuYWxfc3B0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xMDEtS1ZNX1g4Nl9PUChoYXNfd2JpbnZkX2V4aXQpXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD0xMDk9S1ZNX1g4Nl9PUChoYW5kbGVfZXhpdF9pcnFvZmYpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExMDpLVk1fWDg2X09QX09QVElPTkFMKHVwZGF0ZV9jcHVfZGlydHlfbG9nZ2luZylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTExOktWTV9YODZfT1BfT1BUSU9OQUwodmNwdV9ibG9ja2luZylcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTEyOktWTV9YODZfT1BfT1BUSU9OQUwodmNwdV91bmJsb2NraW5nKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xMTMtS1ZNX1g4Nl9PUChwaV91cGRhdGVfaXJ0ZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE0OktWTV9YODZfT1BfT1BUSU9OQUwocGlfc3RhcnRfYnlwYXNzKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTU6S1ZNX1g4Nl9PUF9PUFRJT05BTChhcGljdl9wcmVfc3RhdGVfcmVzdG9yZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE2OktWTV9YODZfT1BfT1BUSU9OQUwoYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTc6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGR5X2FwaWN2X2hhc19wZW5kaW5nX2ludGVycnVwdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE4OktWTV9YODZfT1BfT1BUSU9OQUwocHJvdGVjdGVkX2FwaWNfaGFzX2ludGVycnVwdClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE5OktWTV9YODZfT1BfT1BUSU9OQUwoc2V0X2h2X3RpbWVyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjA6S1ZNX1g4Nl9PUF9PUFRJT05BTChjYW5jZWxfaHZfdGltZXIpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEyMS1LVk1fWDg2X09QKHNldHVwX21jZSlcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTEyNj1LVk1fWDg2X09QKGVuYWJsZV9zbWlfd2luZG93KVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xMjctI2VuZGlmXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEyODpLVk1fWDg2X09QX09QVElPTkFMKGRldl9nZXRfYXR0cilcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI5OktWTV9YODZfT1BfT1BUSU9OQUwobWVtX2VuY19pb2N0bClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTMwOktWTV9YODZfT1BfT1BUSU9OQUwodmNwdV9tZW1fZW5jX2lvY3RsKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzE6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2Y3B1X21lbV9lbmNfdW5sb2NrZWRfaW9jdGwpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzMjpLVk1fWDg2X09QX09QVElPTkFMKG1lbV9lbmNfcmVnaXN0ZXJfcmVnaW9uKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzM6S1ZNX1g4Nl9PUF9PUFRJT05BTChtZW1fZW5jX3VucmVnaXN0ZXJfcmVnaW9uKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzQ6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2bV9jb3B5X2VuY19jb250ZXh0X2Zyb20pXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzNTpLVk1fWDg2X09QX09QVElPTkFMKHZtX21vdmVfZW5jX2NvbnRleHRfZnJvbSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM2OktWTV9YODZfT1BfT1BUSU9OQUwoZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM3OktWTV9YODZfT1BfT1BUSU9OQUwocmVsb2FkX3Ztc2EpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEzOC1LVk1fWDg2X09QKGdldF9mZWF0dXJlX21zcilcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTE0MD1LVk1fWDg2X09QKGFwaWNfaW5pdF9zaWduYWxfYmxvY2tlZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQxOktWTV9YODZfT1BfT1BUSU9OQUwoZW5hYmxlX2wyX3RsYl9mbHVzaClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQyOktWTV9YODZfT1BfT1BUSU9OQUwobWlncmF0ZV90aW1lcnMpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE0My1LVk1fWDg2X09QKHJlY2FsY19pbnRlcmNlcHRzKVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9MTQ1PUtWTV9YODZfT1AodmNwdV9kZWxpdmVyX3NpcGlfdmVjdG9yKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHZjcHVfZ2V0X2FwaWN2X2luaGliaXRfcmVhc29ucyk7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0NzpLVk1fWDg2X09QX09QVElPTkFMKGdldF91bnRhZ2dlZF9hZGRyKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDg6S1ZNX1g4Nl9PUF9PUFRJT05BTChhbGxvY19hcGljX2JhY2tpbmdfcGFnZSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTQ5LSNpZmRlZiBDT05GSUdfSEFWRV9LVk1fQVJDSF9HTUVNX1BSRVBBUkVcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTUwOktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChnbWVtX3ByZXBhcmUpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE1MS0jZW5kaWZcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTUyOktWTV9YODZfT1BfT1BUSU9OQUwoZ21lbV9pbnZhbGlkYXRlKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTMtI2lmZGVmIENPTkZJR19IQVZFX0tWTV9BUkNIX0dNRU1fSU5WQUxJREFURVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNTQ6S1ZNX1g4Nl9PUF9PUFRJT05BTChnbWVtX2ludmFsaWRhdGVfcmFuZ2UpXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE1NS0jZW5kaWZcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTU2OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChnbWVtX21heF9tYXBwaW5nX2xldmVsKVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTctI2VuZGlmXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTktI3VuZGVmIEtWTV9YODZfT1BcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTYwOiN1bmRlZiBLVk1fWDg2X09QX09QVElPTkFMXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE2MTojdW5kZWYgS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0xNzg3PWV4dGVybiBzdHJ1Y3Qga3ZtX3g4Nl9uZXN0ZWRfb3BzIGt2bV9uZXN0ZWRfb3BzIF9fcmVhZF9tb3N0bHk7XG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNzkyLVx0REVDTEFSRV9TVEFUSUNfQ0FMTChrdm1feDg2XyMjZnVuYywgKigoKHN0cnVjdCBrdm1feDg2X29wcyAqKTApLVx1MDAzZWZ1bmMpKTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTc5MzojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgS1ZNX1g4Nl9PUFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoxNzk0OiNkZWZpbmUgS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwIEtWTV9YODZfT1BcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTc5NS0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtLXg4Ni1vcHMuaFx1MDAzZVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xNjY9c3RydWN0IGt2bV94ODZfbmVzdGVkX29wcyBrdm1fbmVzdGVkX29wcyBfX3JlYWRfbW9zdGx5O1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xNzAtXHRcdFx0XHQqKCgoc3RydWN0IGt2bV94ODZfb3BzICopMCktXHUwMDNlZnVuYykpO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjE3MTojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgS1ZNX1g4Nl9PUFxuYXJjaC94ODYva3ZtL3g4Ni5jOjE3MjojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCBLVk1fWDg2X09QXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTczLSNpbmNsdWRlIFx1MDAzY2FzbS9rdm0teDg2LW9wcy5oXHUwMDNlXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTY5NDI9c3RhdGljIGlubGluZSB2b2lkIGt2bV9vcHNfdXBkYXRlKHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTY5NDktXHRXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKTsgX19LVk1fWDg2X09QKGZ1bmMpXG5hcmNoL3g4Ni9rdm0veDg2LmM6Njk1MDojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgX19LVk1fWDg2X09QXG5hcmNoL3g4Ni9rdm0veDg2LmM6Njk1MTojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChmdW5jKSBcXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTY5NTItXHRzdGF0aWNfY2FsbF91cGRhdGUoa3ZtX3g4Nl8jI2Z1bmMsICh2b2lkICopa3ZtX3g4Nl9vcHMuZnVuYyA/IDogXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA0NzgKCQkJCQkJCW91dHB1dDogMTA3CgkJCQkJCQl0aG91Z2h0czogMjU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNX1g4Nl9PUF9PUFRJT05BTCBDaGFuZ2UqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgaXMganVzdCBhIG1hY3JvLCBlZmZlY3RpdmVseSBleHBhbmRpbmcgdG8gYHN0YXRpY19jYWxsX3VwZGF0ZWAsIHdoaWNoIGluIHR1cm4sIGlzIGNhbGxpbmcgYGt2bV94ODZfb3BzLmZ1bmNgLiAgVGhlIGtleSBoZXJlIGlzIHRoYXQgaWYgYGt2bV94ODZfb3BzLmZ1bmNgIGlzIE5VTEwsIHRoZW4gdGhlIHN0YXRpYyBjYWxsIGdldHMgdXBkYXRlZCB0byBOVUxMLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gYHBpX3VwZGF0ZV9pcnRlYCAqbmV2ZXIqIHNlZW1zIHRvIGJlIE5VTEwuIFRoZXJlZm9yZSwgdGhlIGNoYW5nZSB0byBgS1ZNX1g4Nl9PUGAgc2ltcGx5IHRocm93cyBpbiBhIGBXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKWAgY2hlY2suCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhIHN0cnVjdHVyYWwgY2hhbmdlLCBhbmQgbm90aGluZyBtb3JlLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBmb3JjaW5nIGFsbCBLVk0geDg2IGltcGxlbWVudGF0aW9ucyB0byBwcm92aWRlIHRoaXMgYHBpX3VwZGF0ZV9pcnRlYCBmdW5jdGlvbiwgYWRkaW5nIGFuIGVhcmx5IGNoZWNrIGF0IG1vZHVsZSBsb2FkIHRvIGVuc3VyZSBpdHMgcHJlc2VuY2UuIEhvd2V2ZXIsIHNpbmNlIGFsbCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSAqZG8qIHByb3ZpZGUgaXQsIHRoZSBhY3R1YWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbCByZW1haW5zIHVuY2hhbmdlZC4gVGhlcmUmIzM5O3Mgbm8gZGV0ZWN0YWJsZSBtb2RpZmljYXRpb24gdG8gYW55IGNvcmUga2VybmVsIGxvZ2ljIHJlYWNoYWJsZSB0aHJvdWdoIHN0YW5kYXJkIG1lYW5zLCBhbmQgc28gaXQgY2FuJiMzOTt0IGJlIGZ1enplZCBpbiBhbnkgbWVhbmluZ2Z1bCB3YXkuCgpHaXZlbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTttIGNvbmZpZGVudCBpbiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByYXRpb25hbGUgaXMgdGhhdCB0aGlzIGlzIHB1cmVseSBzdHJ1Y3R1cmFsLCBhIHNpbXBsZSBlbmZvcmNlbWVudCBvZiBhbiBleGlzdGluZyByZXF1aXJlbWVudC4gVGhpcyBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGNoYW5nZXMgb3IgZXhwb3NlIGFueSBuZXcgY29kZSBwYXRocyB0byBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGBwaV91cGRhdGVfaXJ0ZWAgS1ZNIHg4NiBvcGVyYXRpb24gZnJvbSBvcHRpb25hbCB0byBtYW5kYXRvcnkuIFRoaXMgb25seSBhZGRzIGEgYFdBUk5fT05gIGNoZWNrIGR1cmluZyBLVk0gbW9kdWxlIGluaXRpYWxpemF0aW9uIHRvIGVuc3VyZSB0aGUgZnVuY3Rpb24gcG9pbnRlciBpcyBwcm92aWRlZC4gU2luY2UgYm90aCBWTVggYW5kIFNWTSBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSB1bmNvbmRpdGlvbmFsbHkgcHJvdmlkZSB0aGlzIGZ1bmN0aW9uLCB0aGUgd2FybmluZyBpcyB1bnJlYWNoYWJsZSBhbmQgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgYHBpX3VwZGF0ZV9pcnRlYCBLVk0geDg2IG9wZXJhdGlvbiBmcm9tIG9wdGlvbmFsIHRvIG1hbmRhdG9yeS4gVGhpcyBvbmx5IGFkZHMgYSBgV0FSTl9PTmAgY2hlY2sgZHVyaW5nIEtWTSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gdG8gZW5zdXJlIHRoZSBmdW5jdGlvbiBwb2ludGVyIGlzIHByb3ZpZGVkLiBTaW5jZSBib3RoIFZNWCBhbmQgU1ZNIGltcGxlbWVudGF0aW9ucyBhbHJlYWR5IHVuY29uZGl0aW9uYWxseSBwcm92aWRlIHRoaXMgZnVuY3Rpb24sIHRoZSB3YXJuaW5nIGlzIHVucmVhY2hhYmxlIGFuZCB0aGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTc6MTEuODk0MTcwMDgxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3MDQxMjczMTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgcGlfdXBkYXRlX2lydGVgIEtWTSB4ODYgb3BlcmF0aW9uIGZyb20gb3B0aW9uYWwgdG8gbWFuZGF0b3J5LiBUaGlzIG9ubHkgYWRkcyBhIGBXQVJOX09OYCBjaGVjayBkdXJpbmcgS1ZNIG1vZHVsZSBpbml0aWFsaXphdGlvbiB0byBlbnN1cmUgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaXMgcHJvdmlkZWQuIFNpbmNlIGJvdGggVk1YIGFuZCBTVk0gaW1wbGVtZW50YXRpb25zIGFscmVhZHkgdW5jb25kaXRpb25hbGx5IHByb3ZpZGUgdGhpcyBmdW5jdGlvbiwgdGhlIHdhcm5pbmcgaXMgdW5yZWFjaGFibGUgYW5kIHRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCdzIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTc6MTEuODk0MTc1NjIxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDg0Njk2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxYzgzYmQzZTNhMzlkMjI3NjFjNjI5ZGNhMTkxMmY3MThiYWFkMTA5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDE1OjU3OjEwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXFxuaW5kZXggNzM2MTI5ZGIyNzJhYmMuLjBhY2ZlMTU2NDNlMWMwIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXFxuQEAgLTExMCw3ICsxMTAsNyBAQCBLVk1fWDg2X09QKGhhbmRsZV9leGl0X2lycW9mZilcXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfY3B1X2RpcnR5X2xvZ2dpbmcpXFxuIEtWTV9YODZfT1BfT1BUSU9OQUwodmNwdV9ibG9ja2luZylcXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTCh2Y3B1X3VuYmxvY2tpbmcpXFxuLUtWTV9YODZfT1BfT1BUSU9OQUwocGlfdXBkYXRlX2lydGUpXFxuK0tWTV9YODZfT1AocGlfdXBkYXRlX2lydGUpXFxuIEtWTV9YODZfT1BfT1BUSU9OQUwocGlfc3RhcnRfYnlwYXNzKVxcbiBLVk1fWDg2X09QX09QVElPTkFMKGFwaWN2X3ByZV9zdGF0ZV9yZXN0b3JlKVxcbiBLVk1fWDg2X09QX09QVElPTkFMKGFwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTc6MTIuNDQzNDg3OTY5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTY0OTE5NDg3MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGBwaV91cGRhdGVfaXJ0ZWAgS1ZNIHg4NiBvcGVyYXRpb24gZnJvbSBvcHRpb25hbCB0byBtYW5kYXRvcnkuIFRoaXMgb25seSBhZGRzIGEgYFdBUk5fT05gIGNoZWNrIGR1cmluZyBLVk0gbW9kdWxlIGluaXRpYWxpemF0aW9uIHRvIGVuc3VyZSB0aGUgZnVuY3Rpb24gcG9pbnRlciBpcyBwcm92aWRlZC4gU2luY2UgYm90aCBWTVggYW5kIFNWTSBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSB1bmNvbmRpdGlvbmFsbHkgcHJvdmlkZSB0aGlzIGZ1bmN0aW9uLCB0aGUgd2FybmluZyBpcyB1bnJlYWNoYWJsZSBhbmQgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFjODNiZDNlM2EzOWQyMjc2MWM2MjlkY2ExOTEyZjcxOGJhYWQxMDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxNTo1NzoxMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXG5pbmRleCA3MzYxMjlkYjI3MmFiYy4uMGFjZmUxNTY0M2UxYzAgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXG5AQCAtMTEwLDcgKzExMCw3IEBAIEtWTV9YODZfT1AoaGFuZGxlX2V4aXRfaXJxb2ZmKVxuIEtWTV9YODZfT1BfT1BUSU9OQUwodXBkYXRlX2NwdV9kaXJ0eV9sb2dnaW5nKVxuIEtWTV9YODZfT1BfT1BUSU9OQUwodmNwdV9ibG9ja2luZylcbiBLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfdW5ibG9ja2luZylcbi1LVk1fWDg2X09QX09QVElPTkFMKHBpX3VwZGF0ZV9pcnRlKVxuK0tWTV9YODZfT1AocGlfdXBkYXRlX2lydGUpXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTChwaV9zdGFydF9ieXBhc3MpXG4gS1ZNX1g4Nl9PUF9PUFRJT05BTChhcGljdl9wcmVfc3RhdGVfcmVzdG9yZSlcbiBLVk1fWDg2X09QX09QVElPTkFMKGFwaWN2X3Bvc3Rfc3RhdGVfcmVzdG9yZSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU3OjEyLjQ0MzQ4OTMzOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NzM4NDc2NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIHg4NiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbW9kaWZ5aW5nIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBjaGFuZ2luZyBgS1ZNX1g4Nl9PUF9PUFRJT05BTChwaV91cGRhdGVfaXJ0ZSlgIHRvIGp1c3QgYEtWTV9YODZfT1AocGlfdXBkYXRlX2lydGUpYC4gVGhhdCdzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZS4gQmFzaWNhbGx5LCB0aGV5J3JlIG1ha2luZyB0aGUgYHBpX3VwZGF0ZV9pcnRlYCBvcGVyYXRpb24gbWFuZGF0b3J5IGluc3RlYWQgb2Ygb3B0aW9uYWwgd2l0aGluIHRoZSBLVk0geDg2IG9wZXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdC5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBwaV91cGRhdGVfaXJ0ZWAgYWN0dWFsbHkgKmlzKi4gSXMgaXQgVk1YLXNwZWNpZmljPyBTVk0/IEJvdGg/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIEtWTSBhbmQgd2h5IHRoZXkncmUgZm9yY2luZyBpdHMgcHJlc2VuY2UuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gdG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuXG5cbkxldCdzIGdyZXAgdGhyb3VnaCBgYXJjaC94ODYva3ZtL2AgZm9yIGBwaV91cGRhdGVfaXJ0ZWAgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIGNvbnRleHRzIGluIHdoaWNoIGl0J3MgdXNlZC4gVGltZSB0byBnZXQgdG8gd29yayFcblxuXG4iLCJJbnB1dFRva2VucyI6MTk0NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU3OjE3LjAxNzMzOTMyMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzE1MjkwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaV91cGRhdGVfaXJ0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9pcnEuYz00MjY9c3RhdGljIGJvb2wga3ZtX2lycV9pc19wb3N0YWJsZShzdHJ1Y3Qga3ZtX2xhcGljX2lycSAqaXJxKVxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTQzMi1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDMzOnN0YXRpYyBpbnQga3ZtX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDM0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplbnRyeSlcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy00NjctXFxuYXJjaC94ODYva3ZtL2lycS5jOjQ2ODpcXHRyID0ga3ZtX3g4Nl9jYWxsKHBpX3VwZGF0ZV9pcnRlKShpcnFmZCwgaXJxZmQtXFx1MDAzZWt2bSwgaG9zdF9pcnEsIGlycWZkLVxcdTAwM2Vnc2ksXFxuYXJjaC94ODYva3ZtL2lycS5jLTQ2OS1cXHRcXHRcXHRcXHRcXHQgdmNwdSwgaXJxLnZlY3Rvcik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NDgyPWludCBrdm1fYXJjaF9pcnFfYnlwYXNzX2FkZF9wcm9kdWNlcihzdHJ1Y3QgaXJxX2J5cGFzc19jb25zdW1lciAqY29ucyxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy00OTYtXFx0aWYgKGlycWZkLVxcdTAwM2VpcnFfZW50cnkudHlwZSA9PSBLVk1fSVJRX1JPVVRJTkdfTVNJKSB7XFxuYXJjaC94ODYva3ZtL2lycS5jOjQ5NzpcXHRcXHRyZXQgPSBrdm1fcGlfdXBkYXRlX2lydGUoaXJxZmQsIFxcdTAwMjZpcnFmZC1cXHUwMDNlaXJxX2VudHJ5KTtcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDk4LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYz01MDg9dm9pZCBrdm1fYXJjaF9pcnFfYnlwYXNzX2RlbF9wcm9kdWNlcihzdHJ1Y3QgaXJxX2J5cGFzc19jb25zdW1lciAqY29ucyxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy01MjctXFx0ICAgIFdBUk5fT05fT05DRShpcnFmZC1cXHUwMDNlaXJxX2J5cGFzc192Y3B1KSkge1xcbmFyY2gveDg2L2t2bS9pcnEuYzo1Mjg6XFx0XFx0cmV0ID0ga3ZtX3BpX3VwZGF0ZV9pcnRlKGlycWZkLCBOVUxMKTtcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTI5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NTQwPXZvaWQga3ZtX2FyY2hfdXBkYXRlX2lycWZkX3JvdXRpbmcoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLFxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTU1Mi1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NTUzOlxcdGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgbmV3KTtcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTU0LX1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jPTkwMj1zdGF0aWMgdm9pZCBzdm1faXJfbGlzdF9kZWwoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9hdmljLmMtOTE0LVxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jOjkxNTppbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYy05MTYtXFx0XFx0XFx0dW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMTQ9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MTktXFx0LmRlbGl2ZXJfaW50ZXJydXB0ID0gc3ZtX2RlbGl2ZXJfaW50ZXJydXB0LFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQyMDpcXHQucGlfdXBkYXRlX2lydGUgPSBhdmljX3BpX3VwZGF0ZV9pcnRlLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQyMS1cXHQuc2V0dXBfbWNlID0gc3ZtX3NldHVwX21jZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9OTU5PXZvaWQgYXZpY19yZWZyZXNoX2FwaWN2X2V4ZWNfY3RybChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6OTYwOmludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTYxLVxcdFxcdFxcdHVuc2lnbmVkIGludCBob3N0X2lycSwgdWludDMyX3QgZ3Vlc3RfaXJxLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTctXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6OTk4OlxcdC5waV91cGRhdGVfaXJ0ZSA9IHZteF9waV91cGRhdGVfaXJ0ZSxcXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTktXFx0LnBpX3N0YXJ0X2J5cGFzcyA9IHZteF9waV9zdGFydF9ieXBhc3MsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmM9Mjk3PXZvaWQgdm14X3BpX3N0YXJ0X2J5cGFzcyhzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMzA0LVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYzozMDU6aW50IHZteF9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMzA2LVxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaD0xNj1ib29sIHBpX2hhc19wZW5kaW5nX2ludGVycnVwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaDoxNzppbnQgdm14X3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaC0xOC1cXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU3OjE3LjA4NDUwMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3MTEwNTk3OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2g6IE1ha2luZyBgcGlfdXBkYXRlX2lydGVgIE1hbmRhdG9yeSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbWFraW5nIGEgc2lnbmlmaWNhbnQgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgZHJvcHBpbmcgdGhlIGBPUFRJT05BTGAgcXVhbGlmaWVyIGZyb20gYEtWTV9YODZfT1BfT1BUSU9OQUwocGlfdXBkYXRlX2lydGUpYCwgdHVybmluZyBpdCBpbnRvIGp1c3QgYEtWTV9YODZfT1AocGlfdXBkYXRlX2lydGUpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgc28gdGhpcyBpcyBubyBsb25nZXIgYW4gb3B0aW9uYWwgb3BlcmF0aW9uLlwiIFRoYXQgaGFzIHByZXR0eSBiaWcgaW1wbGljYXRpb25zIGZvciBob3cgaXQncyBoYW5kbGVkLiBCZWZvcmUsIGlmIGl0IHdhc24ndCBpbXBsZW1lbnRlZCwgdGhlIEtWTSBjb2RlIHdvdWxkIG5lZWQgdG8gY2hlY2sgZm9yIGl0cyBleGlzdGVuY2UsIHByb2JhYmx5IHVzaW5nIHNvbWV0aGluZyBsaWtlIGBrdm1feDg2X2hhc2Agb3Igc2ltaWxhciBmdW5jdGlvbi4gTm93LCBpZiBpdCdzIG5vIGxvbmdlciBvcHRpb25hbCwgYW55IGNhbGxzIHRvIGl0LCBzdWNoIGFzIGBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpYCwgYXJlIGp1c3QgZ29pbmcgdG/igKYgY2FsbCBpdC4gTm8gY29uZGl0aW9uYWwgY2hlY2suIFRoaXMgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIG9mIGNvdXJzZSwgYmVjYXVzZSBhbiB1bmltcGxlbWVudGVkIGZ1bmN0aW9uIGNhbGwgaXMgYSBjcmFzaCBpbiB0aGUgbWFraW5nLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGluZGVlZCBob3cgYGt2bV94ODZfY2FsbGAgd29ya3Mgd2l0aCBgS1ZNX1g4Nl9PUGAuIEknbGwgbmVlZCB0byBsb29rIGF0IGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oYCBhbmQgdHJhY2UgaG93IGBLVk1fWDg2X09QYCBhbmQgcmVsYXRlZCBtYWNyb3MgYXJlIGFjdHVhbGx5IGRlZmluZWQgYW5kIHVzZWQgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucyBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBzdWJ0bGUgY29uc2VxdWVuY2VzIEknbSBtaXNzaW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXRhaWxzIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgbm93IGlzIGNyaXRpY2FsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTg1LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU3OjI0Ljc5NTU2MzU4NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA5MjQwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS1ZNX1g4Nl9PUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjojaWYgIWRlZmluZWQoS1ZNX1g4Nl9PUCkgfHwgXFxcXFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MzogICAgIWRlZmluZWQoS1ZNX1g4Nl9PUF9PUFRJT05BTCkgfHwgXFxcXFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDogICAgIWRlZmluZWQoS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTojZXJyb3IgTWlzc2luZyBvbmUgb3IgbW9yZSBLVk1fWDg2X09QICNkZWZpbmVzXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC02LSNlbHNlXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC03LS8qXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4OiAqIEtWTV9YODZfT1AoKSBhbmQgS1ZNX1g4Nl9PUF9PUFRJT05BTCgpIGFyZSB1c2VkIHRvIGhlbHAgZ2VuZXJhdGVcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTktICogYm90aCBERUNMQVJFL0RFRklORV9TVEFUSUNfQ0FMTCgpIGludm9jYXRpb25zIGFuZFxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xMS0gKlxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI6ICogS1ZNX1g4Nl9PUF9PUFRJT05BTCgpIGNhbiBiZSB1c2VkIGZvciB0aG9zZSBmdW5jdGlvbnMgdGhhdCBjYW4gaGF2ZVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM6ICogYSBOVUxMIGRlZmluaXRpb24uICBLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoKSBjYW4gYmUgdXNlZCBsaWtld2lzZVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTQtICogdG8gbWFrZSBhIGRlZmluaXRpb24gb3B0aW9uYWwsIGJ1dCBpbiB0aGlzIGNhc2UgdGhlIGRlZmF1bHQgd2lsbFxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNi0gKi9cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE3OktWTV9YODZfT1AoY2hlY2tfcHJvY2Vzc29yX2NvbXBhdGliaWxpdHkpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxODpLVk1fWDg2X09QKGVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxOTpLVk1fWDg2X09QKGRpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjA6S1ZNX1g4Nl9PUChoYXJkd2FyZV91bnNldHVwKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjE6S1ZNX1g4Nl9PUChoYXNfZW11bGF0ZWRfbXNyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjI6S1ZNX1g4Nl9PUCh2Y3B1X2FmdGVyX3NldF9jcHVpZClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjIzOktWTV9YODZfT1Aodm1faW5pdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjI0OktWTV9YODZfT1BfT1BUSU9OQUwodm1fZGVzdHJveSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjI1OktWTV9YODZfT1BfT1BUSU9OQUwodm1fcHJlX2Rlc3Ryb3kpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyNjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAodmNwdV9wcmVjcmVhdGUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyNzpLVk1fWDg2X09QKHZjcHVfY3JlYXRlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Mjg6S1ZNX1g4Nl9PUCh2Y3B1X2ZyZWUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyOTpLVk1fWDg2X09QKHZjcHVfcmVzZXQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozMDpLVk1fWDg2X09QKHByZXBhcmVfc3dpdGNoX3RvX2d1ZXN0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MzE6S1ZNX1g4Nl9PUCh2Y3B1X2xvYWQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozMjpLVk1fWDg2X09QKHZjcHVfcHV0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MzM6S1ZNX1g4Nl9PUCh1cGRhdGVfZXhjZXB0aW9uX2JpdG1hcClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM0OktWTV9YODZfT1AoZ2V0X21zcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM1OktWTV9YODZfT1Aoc2V0X21zcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM2OktWTV9YODZfT1AoZ2V0X3NlZ21lbnRfYmFzZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM3OktWTV9YODZfT1AoZ2V0X3NlZ21lbnQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozODpLVk1fWDg2X09QKGdldF9jcGwpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDozOTpLVk1fWDg2X09QKGdldF9jcGxfbm9fY2FjaGUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo0MDpLVk1fWDg2X09QKHNldF9zZWdtZW50KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDE6S1ZNX1g4Nl9PUChnZXRfY3NfZGJfbF9iaXRzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDI6S1ZNX1g4Nl9PUChpc192YWxpZF9jcjApXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo0MzpLVk1fWDg2X09QKHNldF9jcjApXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo0NDpLVk1fWDg2X09QX09QVElPTkFMKHBvc3Rfc2V0X2NyMylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ1OktWTV9YODZfT1AoaXNfdmFsaWRfY3I0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDY6S1ZNX1g4Nl9PUChzZXRfY3I0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDc6S1ZNX1g4Nl9PUChzZXRfZWZlcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ4OktWTV9YODZfT1AoZ2V0X2lkdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ5OktWTV9YODZfT1Aoc2V0X2lkdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjUwOktWTV9YODZfT1AoZ2V0X2dkdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjUxOktWTV9YODZfT1Aoc2V0X2dkdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjUyOktWTV9YODZfT1Aoc3luY19kaXJ0eV9kZWJ1Z19yZWdzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTM6S1ZNX1g4Nl9PUChzZXRfZHI3KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTQ6S1ZNX1g4Nl9PUChjYWNoZV9yZWcpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo1NTpLVk1fWDg2X09QKGdldF9yZmxhZ3MpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo1NjpLVk1fWDg2X09QKHNldF9yZmxhZ3MpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo1NzpLVk1fWDg2X09QKGdldF9pZl9mbGFnKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTg6S1ZNX1g4Nl9PUChmbHVzaF90bGJfYWxsKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NTk6S1ZNX1g4Nl9PUChmbHVzaF90bGJfY3VycmVudClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTYwLSNpZiBJU19FTkFCTEVEKENPTkZJR19IWVBFUlYpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2MTpLVk1fWDg2X09QX09QVElPTkFMKGZsdXNoX3JlbW90ZV90bGJzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NjI6S1ZNX1g4Nl9PUF9PUFRJT05BTChmbHVzaF9yZW1vdGVfdGxic19yYW5nZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTYzLSNlbmRpZlxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NjQ6S1ZNX1g4Nl9PUChmbHVzaF90bGJfZ3ZhKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NjU6S1ZNX1g4Nl9PUChmbHVzaF90bGJfZ3Vlc3QpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2NjpLVk1fWDg2X09QKHZjcHVfcHJlX3J1bilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjY3OktWTV9YODZfT1AodmNwdV9ydW4pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2ODpLVk1fWDg2X09QKGhhbmRsZV9leGl0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Njk6S1ZNX1g4Nl9PUChza2lwX2VtdWxhdGVkX2luc3RydWN0aW9uKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzA6S1ZNX1g4Nl9PUF9PUFRJT05BTCh1cGRhdGVfZW11bGF0ZWRfaW5zdHJ1Y3Rpb24pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3MTpLVk1fWDg2X09QKHNldF9pbnRlcnJ1cHRfc2hhZG93KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzI6S1ZNX1g4Nl9PUChnZXRfaW50ZXJydXB0X3NoYWRvdylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjczOktWTV9YODZfT1AocGF0Y2hfaHlwZXJjYWxsKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzQ6S1ZNX1g4Nl9PUChpbmplY3RfaXJxKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzU6S1ZNX1g4Nl9PUChpbmplY3Rfbm1pKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NzY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGlzX3ZubWlfcGVuZGluZylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjc3OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChzZXRfdm5taV9wZW5kaW5nKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Nzg6S1ZNX1g4Nl9PUChpbmplY3RfZXhjZXB0aW9uKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6Nzk6S1ZNX1g4Nl9PUChjYW5jZWxfaW5qZWN0aW9uKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODA6S1ZNX1g4Nl9PUChpbnRlcnJ1cHRfYWxsb3dlZClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjgxOktWTV9YODZfT1Aobm1pX2FsbG93ZWQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4MjpLVk1fWDg2X09QKGdldF9ubWlfbWFzaylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjgzOktWTV9YODZfT1Aoc2V0X25taV9tYXNrKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODQ6S1ZNX1g4Nl9PUChlbmFibGVfbm1pX3dpbmRvdylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjg1OktWTV9YODZfT1AoZW5hYmxlX2lycV93aW5kb3cpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4NjpLVk1fWDg2X09QX09QVElPTkFMKHVwZGF0ZV9jcjhfaW50ZXJjZXB0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODc6S1ZNX1g4Nl9PUChyZWZyZXNoX2FwaWN2X2V4ZWNfY3RybClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjg4OktWTV9YODZfT1BfT1BUSU9OQUwoaHdhcGljX2lzcl91cGRhdGUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4OTpLVk1fWDg2X09QX09QVElPTkFMKGxvYWRfZW9pX2V4aXRtYXApXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5MDpLVk1fWDg2X09QX09QVElPTkFMKHNldF92aXJ0dWFsX2FwaWNfbW9kZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjkxOktWTV9YODZfT1BfT1BUSU9OQUwoc2V0X2FwaWNfYWNjZXNzX3BhZ2VfYWRkcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjkyOktWTV9YODZfT1AoZGVsaXZlcl9pbnRlcnJ1cHQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5MzpLVk1fWDg2X09QX09QVElPTkFMKHN5bmNfcGlyX3RvX2lycilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjk0OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChzZXRfdHNzX2FkZHIpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NTpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X2lkZW50aXR5X21hcF9hZGRyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGdldF9tdF9tYXNrKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTc6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHRkcF9oYXNfc21lcClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjk4OktWTV9YODZfT1AobG9hZF9tbXVfcGdkKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTk6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHNldF9leHRlcm5hbF9zcHRlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTAwOktWTV9YODZfT1BfT1BUSU9OQUwoZnJlZV9leHRlcm5hbF9zcHQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDE6S1ZNX1g4Nl9PUChoYXNfd2JpbnZkX2V4aXQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDI6S1ZNX1g4Nl9PUChnZXRfbDJfdHNjX29mZnNldClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwMzpLVk1fWDg2X09QKGdldF9sMl90c2NfbXVsdGlwbGllcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwNDpLVk1fWDg2X09QKHdyaXRlX3RzY19vZmZzZXQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDU6S1ZNX1g4Nl9PUCh3cml0ZV90c2NfbXVsdGlwbGllcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwNjpLVk1fWDg2X09QKGdldF9leGl0X2luZm8pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDc6S1ZNX1g4Nl9PUChnZXRfZW50cnlfaW5mbylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwODpLVk1fWDg2X09QKGNoZWNrX2ludGVyY2VwdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEwOTpLVk1fWDg2X09QKGhhbmRsZV9leGl0X2lycW9mZilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExMDpLVk1fWDg2X09QX09QVElPTkFMKHVwZGF0ZV9jcHVfZGlydHlfbG9nZ2luZylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExMTpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfYmxvY2tpbmcpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTI6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2Y3B1X3VuYmxvY2tpbmcpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTM6S1ZNX1g4Nl9PUChwaV91cGRhdGVfaXJ0ZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExNDpLVk1fWDg2X09QX09QVElPTkFMKHBpX3N0YXJ0X2J5cGFzcylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExNTpLVk1fWDg2X09QX09QVElPTkFMKGFwaWN2X3ByZV9zdGF0ZV9yZXN0b3JlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE2OktWTV9YODZfT1BfT1BUSU9OQUwoYXBpY3ZfcG9zdF9zdGF0ZV9yZXN0b3JlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE3OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChkeV9hcGljdl9oYXNfcGVuZGluZ19pbnRlcnJ1cHQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTg6S1ZNX1g4Nl9PUF9PUFRJT05BTChwcm90ZWN0ZWRfYXBpY19oYXNfaW50ZXJydXB0KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE5OktWTV9YODZfT1BfT1BUSU9OQUwoc2V0X2h2X3RpbWVyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTIwOktWTV9YODZfT1BfT1BUSU9OQUwoY2FuY2VsX2h2X3RpbWVyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTIxOktWTV9YODZfT1Aoc2V0dXBfbWNlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTIyLSNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTIzOktWTV9YODZfT1Aoc21pX2FsbG93ZWQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjQ6S1ZNX1g4Nl9PUChlbnRlcl9zbW0pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjU6S1ZNX1g4Nl9PUChsZWF2ZV9zbW0pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjY6S1ZNX1g4Nl9PUChlbmFibGVfc21pX3dpbmRvdylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEyNy0jZW5kaWZcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEyODpLVk1fWDg2X09QX09QVElPTkFMKGRldl9nZXRfYXR0cilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEyOTpLVk1fWDg2X09QX09QVElPTkFMKG1lbV9lbmNfaW9jdGwpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzA6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2Y3B1X21lbV9lbmNfaW9jdGwpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzE6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2Y3B1X21lbV9lbmNfdW5sb2NrZWRfaW9jdGwpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzI6S1ZNX1g4Nl9PUF9PUFRJT05BTChtZW1fZW5jX3JlZ2lzdGVyX3JlZ2lvbilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzMzpLVk1fWDg2X09QX09QVElPTkFMKG1lbV9lbmNfdW5yZWdpc3Rlcl9yZWdpb24pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzQ6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2bV9jb3B5X2VuY19jb250ZXh0X2Zyb20pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzU6S1ZNX1g4Nl9PUF9PUFRJT05BTCh2bV9tb3ZlX2VuY19jb250ZXh0X2Zyb20pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzY6S1ZNX1g4Nl9PUF9PUFRJT05BTChndWVzdF9tZW1vcnlfcmVjbGFpbWVkKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM3OktWTV9YODZfT1BfT1BUSU9OQUwocmVsb2FkX3Ztc2EpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzg6S1ZNX1g4Nl9PUChnZXRfZmVhdHVyZV9tc3IpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzk6S1ZNX1g4Nl9PUChjaGVja19lbXVsYXRlX2luc3RydWN0aW9uKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQwOktWTV9YODZfT1AoYXBpY19pbml0X3NpZ25hbF9ibG9ja2VkKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQxOktWTV9YODZfT1BfT1BUSU9OQUwoZW5hYmxlX2wyX3RsYl9mbHVzaClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0MjpLVk1fWDg2X09QX09QVElPTkFMKG1pZ3JhdGVfdGltZXJzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQzOktWTV9YODZfT1AocmVjYWxjX2ludGVyY2VwdHMpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDQ6S1ZNX1g4Nl9PUChjb21wbGV0ZV9lbXVsYXRlZF9tc3IpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDU6S1ZNX1g4Nl9PUCh2Y3B1X2RlbGl2ZXJfc2lwaV92ZWN0b3IpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHZjcHVfZ2V0X2FwaWN2X2luaGliaXRfcmVhc29ucyk7XFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNDc6S1ZNX1g4Nl9PUF9PUFRJT05BTChnZXRfdW50YWdnZWRfYWRkcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0ODpLVk1fWDg2X09QX09QVElPTkFMKGFsbG9jX2FwaWNfYmFja2luZ19wYWdlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTQ5LSNpZmRlZiBDT05GSUdfSEFWRV9LVk1fQVJDSF9HTUVNX1BSRVBBUkVcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1MDpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZ21lbV9wcmVwYXJlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTUxLSNlbmRpZlxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTUyOktWTV9YODZfT1BfT1BUSU9OQUwoZ21lbV9pbnZhbGlkYXRlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTUzLSNpZmRlZiBDT05GSUdfSEFWRV9LVk1fQVJDSF9HTUVNX0lOVkFMSURBVEVcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1NDpLVk1fWDg2X09QX09QVElPTkFMKGdtZW1faW52YWxpZGF0ZV9yYW5nZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE1NS0jZW5kaWZcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1NjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZ21lbV9tYXhfbWFwcGluZ19sZXZlbClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE1Ny0jZW5kaWZcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTE1OC1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE1OTojdW5kZWYgS1ZNX1g4Nl9PUFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTYwOiN1bmRlZiBLVk1fWDg2X09QX09QVElPTkFMXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNjE6I3VuZGVmIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1NzoyNS4yNTY0OTQ0OTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTIyOTgwOTUwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgcGlfdXBkYXRlX2lydGVgIEtWTSBPcGVyYXRpb24qKlxuXG5Pa2F5LCBzbyBpdCBzZWVtcyBgcGlfdXBkYXRlX2lydGVgIGhhcyBiZWNvbWUgYSAqbWFuZGF0b3J5KiBLVk0geDg2IG9wZXJhdGlvbi4gVGhpcyBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgaWYgaXQncyBtYW5kYXRvcnksIHRoZW4gYm90aCBWTVggYW5kIFNWTSB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zICpoYXZlKiB0byBwcm92aWRlIGltcGxlbWVudGF0aW9ucyBmb3IgaXQuIExldCdzIHNlZS4uLiBhIHF1aWNrIGdyZXAgc2hvd3MgbWUgdGhhdCBgdm14X3BpX3VwZGF0ZV9pcnRlYCBpcyBpbmRlZWQgcmVzaWRpbmcgaW4gYGFyY2gveDg2L2t2bS92bXgvbWFpbi5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIHRoZSBJbnRlbCBzaWRlLCBhbmQgYGF2aWNfcGlfdXBkYXRlX2lydGVgIGlzIG92ZXIgaW4gYGFyY2gveDg2L2t2bS9zdm0vc3ZtLmNgLCB0YWtpbmcgY2FyZSBvZiB0aGUgQU1EIFNWTS5cblxuV2FpdCBhIHNlY29uZC4gTm93IEknbSBtZW50YWxseSBwYXJzaW5nIHRoaXMgLS0gd2hhdCBpZiBzb21lb25lJ3MgcnVubmluZyBLVk0gYnV0IGhhc24ndCBjb21waWxlZCBpbiBlaXRoZXIgU1ZNICpvciogVk1YIHN1cHBvcnQ/IEJ1dCBubywgS1ZNIHg4NiBvcGVyYXRpb25zIGFyZSBoYW5kbGVkIGJ5IHRoZSBtb2R1bGVzIHdoaWNoIGFyZSBsb2FkZWQsIGBrdm0taW50ZWxgIG9yIGBrdm0tYW1kYC4gVGhhdCBzb2x2ZXMgdGhhdC4gT2theSwgSSdtIGp1c3QgbWFraW5nIHN1cmUgaGVyZSwgYW5kIGFtIGdvaW5nIHRvIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBvdGhlciBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UgdG8gZ28gYmFjayB0byBgYXJjaC94ODYva3ZtL2lycS5jYCBhZ2Fpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExMTIsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTc6NDYuNDg2MzA2MTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE0Mzg3NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3g4Nl9jYWxsXFxcXChwaV91cGRhdGVfaXJ0ZVxcXFwpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL2lycS5jPTQzMz1zdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDY3LVxcbmFyY2gveDg2L2t2bS9pcnEuYzo0Njg6XFx0ciA9IGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSkoaXJxZmQsIGlycWZkLVxcdTAwM2Vrdm0sIGhvc3RfaXJxLCBpcnFmZC1cXHUwMDNlZ3NpLFxcbmFyY2gveDg2L2t2bS9pcnEuYy00NjktXFx0XFx0XFx0XFx0XFx0IHZjcHUsIGlycS52ZWN0b3IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1Nzo0Ni41Nzc3NDk1NThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM3NjAzMTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKlRoaW5raW5nIFRocm91Z2ggdGhlIGBrdm1fcGlfdXBkYXRlX2lydGVgIE1hbmRhdG9yeSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIGBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpYCBmdW5jdGlvbiBpcyAqbWFuZGF0b3J5KiBub3csIG1lYW5pbmcgaXQncyBnb2luZyB0byBiZSBjYWxsZWQgZGlyZWN0bHkuIFRoYXQncyBhIGtleSBkaXN0aW5jdGlvbi4gQmVmb3JlIHRoaXMgcGF0Y2gsIGBwaV91cGRhdGVfaXJ0ZWAgd2FzLCBpbiBlZmZlY3QsIG9wdGlvbmFsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IHJlcXVpcmVtZW50LlxuXG5NeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgaGF2ZSB0byBmaW5kIG91dCAqaG93KiBga3ZtX3BpX3VwZGF0ZV9pcnRlYCB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBgcGlfdXBkYXRlX2lydGVgIHdhcyBhY3R1YWxseSBwcmVzZW50IG9yIGltcGxlbWVudGVkLiBXaGF0IGxvZ2ljIHdhcyBlbXBsb3llZCwgYW5kIGhvdyBkb2VzIHRoaXMgY2hhbmdlIHRoZSBjb2RlJ3MgYmVoYXZpb3Igd2hlbiB0aGF0IG9wdGlvbmFsIGNoZWNrIGlzIG5vIGxvbmdlciBuZWVkZWQ/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgb2xkIGNvbmRpdGlvbmFsIHRoYXQgbWFuYWdlZCB0aGUgb3B0aW9uYWxpdHkgdG8gZ2F1Z2UgaG93IHRoZSBmdW5jdGlvbidzIGludGVybmFsIGZsb3cgaXMgc2hpZnRpbmcgYXMgYSByZXN1bHQgb2YgbWFraW5nIHRoZSB1cGRhdGUgbWFuZGF0b3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTc3MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU3OjUxLjAxNTM1NTUxM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxNzI1NTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9waV91cGRhdGVfaXJ0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9pcnEuYz00MjY9c3RhdGljIGJvb2wga3ZtX2lycV9pc19wb3N0YWJsZShzdHJ1Y3Qga3ZtX2xhcGljX2lycSAqaXJxKVxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTQzMi1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDMzOnN0YXRpYyBpbnQga3ZtX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDM0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplbnRyeSlcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYz00ODI9aW50IGt2bV9hcmNoX2lycV9ieXBhc3NfYWRkX3Byb2R1Y2VyKHN0cnVjdCBpcnFfYnlwYXNzX2NvbnN1bWVyICpjb25zLFxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTQ5Ni1cXHRpZiAoaXJxZmQtXFx1MDAzZWlycV9lbnRyeS50eXBlID09IEtWTV9JUlFfUk9VVElOR19NU0kpIHtcXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDk3OlxcdFxcdHJldCA9IGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgXFx1MDAyNmlycWZkLVxcdTAwM2VpcnFfZW50cnkpO1xcbmFyY2gveDg2L2t2bS9pcnEuYy00OTgtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jPTUwOD12b2lkIGt2bV9hcmNoX2lycV9ieXBhc3NfZGVsX3Byb2R1Y2VyKHN0cnVjdCBpcnFfYnlwYXNzX2NvbnN1bWVyICpjb25zLFxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTUyNy1cXHQgICAgV0FSTl9PTl9PTkNFKGlycWZkLVxcdTAwM2VpcnFfYnlwYXNzX3ZjcHUpKSB7XFxuYXJjaC94ODYva3ZtL2lycS5jOjUyODpcXHRcXHRyZXQgPSBrdm1fcGlfdXBkYXRlX2lydGUoaXJxZmQsIE5VTEwpO1xcbmFyY2gveDg2L2t2bS9pcnEuYy01MjktXFx0XFx0aWYgKHJldClcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYz01NDA9dm9pZCBrdm1fYXJjaF91cGRhdGVfaXJxZmRfcm91dGluZyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTUyLVxcbmFyY2gveDg2L2t2bS9pcnEuYzo1NTM6XFx0a3ZtX3BpX3VwZGF0ZV9pcnRlKGlycWZkLCBuZXcpO1xcbmFyY2gveDg2L2t2bS9pcnEuYy01NTQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1Nzo1MS40NDcwODc4NzRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg3MDk4ODYxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBLVk0gSW50ZXJydXB0IEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhpcyBhbGwgd29ya3MsIHNvIEknbSBnb2luZyB0byBzdGFydCBieSBmb2N1c2luZyBvbiBgYXJjaC94ODYva3ZtL2lycS5jYC4gSSBmaWd1cmUgbGluZSA0MzMgaXMgYSBnb29kIHBsYWNlIHRvIGJlZ2luLiBJdCdzIGxpa2VseSBhIGNyaXRpY2FsIGp1bmN0dXJlIGluIHRoZSBpbnRlcnJ1cHQgcGF0aCwgcG90ZW50aWFsbHkgcmVsYXRlZCB0byBpbmplY3Rpb24sIG1hc2tpbmcsIG9yIHNvbWUgYXNwZWN0IG9mIHZpcnR1YWxpemF0aW9uIHRoYXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIExldCdzIHNlZSB3aGF0IGludGVyZXN0aW5nIGNvZGUgbGl2ZXMgdGhlcmUuIFRpbWUgdG8gZGlnIGluIGFuZCBjb3JyZWxhdGUgd2hhdCBJIHNlZSB3aXRoIHRoZSBvdmVyYWxsIGludGVycnVwdCBmbG93LiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGtleSBsb2dpYyB0aGF0J3MgYmVpbmcgcGVyZm9ybWVkIGF0IHRoaXMgc3RhZ2UuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGludGVyYWN0aW9ucyBhbmQgaG93IEtWTSBtYW5hZ2VzIHRoZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNjc3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTc6NTYuMzE4MDc5NjA5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gveDg2L2t2bS9pcnEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MzAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MzA6XFx0XFx0XFx0aXJxLVxcdTAwM2VkZWxpdmVyeV9tb2RlID09IEFQSUNfRE1fTE9XRVNUKTtcXG4gNDMxOlxcdH1cXG4gNDMyOlxcdFxcbiA0MzM6XFx0c3RhdGljIGludCBrdm1fcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLFxcbiA0MzQ6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmVudHJ5KVxcbiA0MzU6XFx0e1xcbiA0MzY6XFx0XFx0dW5zaWduZWQgaW50IGhvc3RfaXJxID0gaXJxZmQtXFx1MDAzZXByb2R1Y2VyLVxcdTAwM2VpcnE7XFxuIDQzNzpcXHRcXHRzdHJ1Y3Qga3ZtICprdm0gPSBpcnFmZC1cXHUwMDNla3ZtO1xcbiA0Mzg6XFx0XFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1ID0gTlVMTDtcXG4gNDM5OlxcdFxcdHN0cnVjdCBrdm1fbGFwaWNfaXJxIGlycTtcXG4gNDQwOlxcdFxcdGludCByO1xcbiA0NDE6XFx0XFxuIDQ0MjpcXHRcXHRpZiAoV0FSTl9PTl9PTkNFKCFpcnFjaGlwX2luX2tlcm5lbChrdm0pIHx8ICFrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpKSlcXG4gNDQzOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA0NDQ6XFx0XFxuIDQ0NTpcXHRcXHRpZiAoZW50cnkgXFx1MDAyNlxcdTAwMjYgZW50cnktXFx1MDAzZXR5cGUgPT0gS1ZNX0lSUV9ST1VUSU5HX01TSSkge1xcbiA0NDY6XFx0XFx0XFx0a3ZtX21zaV90b19sYXBpY19pcnEoa3ZtLCBlbnRyeSwgXFx1MDAyNmlycSk7XFxuIDQ0NzpcXHRcXG4gNDQ4OlxcdFxcdFxcdC8qXFxuIDQ0OTpcXHRcXHRcXHQgKiBGb3JjZSByZW1hcHBlZCBtb2RlIGlmIGhhcmR3YXJlIGRvZXNuJ3Qgc3VwcG9ydCBwb3N0aW5nIHRoZVxcbiA0NTA6XFx0XFx0XFx0ICogdmlydHVhbCBpbnRlcnJ1cHQgdG8gYSB2Q1BVLiAgT25seSBJUlFzIGFyZSBwb3N0YWJsZSAoTk1JcyxcXG4gNDUxOlxcdFxcdFxcdCAqIFNNSXMsIGV0Yy4gYXJlIG5vdCksIGFuZCBuZWl0aGVyIEFNRCBub3IgSW50ZWwgSU9NTVVzIHN1cHBvcnRcXG4gNDUyOlxcdFxcdFxcdCAqIHBvc3RpbmcgbXVsdGljYXN0L2Jyb2FkY2FzdCBJUlFzLiAgSWYgdGhlIGludGVycnVwdCBjYW4ndCBiZVxcbiA0NTM6XFx0XFx0XFx0ICogcG9zdGVkLCB0aGUgZGV2aWNlIE1TSSBuZWVkcyB0byBiZSByb3V0ZWQgdG8gdGhlIGhvc3Qgc28gdGhhdFxcbiA0NTQ6XFx0XFx0XFx0ICogdGhlIGd1ZXN0J3MgZGVzaXJlZCBpbnRlcnJ1cHQgY2FuIGJlIHN5bnRoZXNpemVkIGJ5IEtWTS5cXG4gNDU1OlxcdFxcdFxcdCAqXFxuIDQ1NjpcXHRcXHRcXHQgKiBUaGlzIG1lYW5zIHRoYXQgS1ZNIGNhbiBvbmx5IHBvc3QgbG93ZXN0LXByaW9yaXR5IGludGVycnVwdHNcXG4gNDU3OlxcdFxcdFxcdCAqIGlmIHRoZXkgaGF2ZSBhIHNpbmdsZSBDUFUgYXMgdGhlIGRlc3RpbmF0aW9uLCBlLmcuIG9ubHkgaWZcXG4gNDU4OlxcdFxcdFxcdCAqIHRoZSBndWVzdCBoYXMgYWZmaW5lZCB0aGUgaW50ZXJydXB0IHRvIGEgc2luZ2xlIHZDUFUuXFxuIDQ1OTpcXHRcXHRcXHQgKi9cXG4gNDYwOlxcdFxcdFxcdGlmICgha3ZtX2ludHJfaXNfc2luZ2xlX3ZjcHUoa3ZtLCBcXHUwMDI2aXJxLCBcXHUwMDI2dmNwdSkgfHxcXG4gNDYxOlxcdFxcdFxcdCAgICAha3ZtX2lycV9pc19wb3N0YWJsZShcXHUwMDI2aXJxKSlcXG4gNDYyOlxcdFxcdFxcdFxcdHZjcHUgPSBOVUxMO1xcbiA0NjM6XFx0XFx0fVxcbiA0NjQ6XFx0XFxuIDQ2NTpcXHRcXHRpZiAoIWlycWZkLVxcdTAwM2VpcnFfYnlwYXNzX3ZjcHUgXFx1MDAyNlxcdTAwMjYgIXZjcHUpXFxuIDQ2NjpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNDY3OlxcdFxcbiA0Njg6XFx0XFx0ciA9IGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSkoaXJxZmQsIGlycWZkLVxcdTAwM2Vrdm0sIGhvc3RfaXJxLCBpcnFmZC1cXHUwMDNlZ3NpLFxcbiA0Njk6XFx0XFx0XFx0XFx0XFx0XFx0IHZjcHUsIGlycS52ZWN0b3IpO1xcbiA0NzA6XFx0XFx0aWYgKHIpIHtcXG4gNDcxOlxcdFxcdFxcdFdBUk5fT05fT05DRShpcnFmZC1cXHUwMDNlaXJxX2J5cGFzc192Y3B1IFxcdTAwMjZcXHUwMDI2ICF2Y3B1KTtcXG4gNDcyOlxcdFxcdFxcdGlycWZkLVxcdTAwM2VpcnFfYnlwYXNzX3ZjcHUgPSBOVUxMO1xcbiA0NzM6XFx0XFx0XFx0cmV0dXJuIHI7XFxuIDQ3NDpcXHRcXHR9XFxuIDQ3NTpcXHRcXG4gNDc2OlxcdFxcdGlycWZkLVxcdTAwM2VpcnFfYnlwYXNzX3ZjcHUgPSB2Y3B1O1xcbiA0Nzc6XFx0XFxuIDQ3ODpcXHRcXHR0cmFjZV9rdm1fcGlfaXJ0ZV91cGRhdGUoaG9zdF9pcnEsIHZjcHUsIGlycWZkLVxcdTAwM2Vnc2ksIGlycS52ZWN0b3IsICEhdmNwdSk7XFxuIDQ3OTpcXHRcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTc6NTYuMzE4MTY5OTc5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMzU0MjE3NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIElSUSBCeXBhc3MgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBrdm1fcGlfdXBkYXRlX2lydGVgIGZ1bmN0aW9uIGFuZCBzb21ldGhpbmcncyBub3QgcXVpdGUgY2xpY2tpbmcuIEl0IHNlZW1zIGxpa2UgYGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSlgIGlzIGNhbGxlZCAqdW5jb25kaXRpb25hbGx5KiB3aXRoaW4gdGhhdCBmdW5jdGlvbiwgYXMgbG9uZyBhcyBlaXRoZXIgYGlycWZkLVx1MDAzZWlycV9ieXBhc3NfdmNwdWAgb3IgYHZjcHVgIGlzbid0IG51bGwuIFRoZSB0aGluZyBpcywgYmVmb3JlIHRoaXMgcGF0Y2gsIGNhbGxpbmcgYHBpX3VwZGF0ZV9pcnRlYCBzZWVtZWQgKm9wdGlvbmFsKi4gXG5cblRoYXQncyB3aGVuIGl0IGhpdHMgbWU6IGlmIGBwaV91cGRhdGVfaXJ0ZWAgd2FzIG9wdGlvbmFsLCB0aGVuIGBrdm1feDg2X2NhbGwocGlfdXBkYXRlX2lydGUpYCB3b3VsZCBqdXN0IGJlIGEgY2FsbCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHJpZ2h0PyBBbmQgdGhhdCBmdW5jdGlvbiBwb2ludGVyIGNvdWxkIGhhdmUgdmVyeSB3ZWxsIGJlZW4gYE5VTExgLCBkZXBlbmRpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24uIElzIHRoYXQgd2hhdCdzIGdvaW5nIG9uPyBPciBkb2VzIGBrdm1feDg2X2NhbGxgIGRvIHNvbWV0aGluZyBtb3JlIGludm9sdmVkIHdoZW4gdGhlIGZ1bmN0aW9uIGl0J3Mgd3JhcHBpbmcgaXMgb3B0aW9uYWw/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaGFwcGVucyB3aGVuIHdlJ3JlIGRlYWxpbmcgd2l0aCBvcHRpb25hbCBmdW5jdGlvbnMgaW4gdGhpcyBga3ZtX3g4Nl9jYWxsYCBjb250ZXh0LlxuXG5JIG5lZWQgdG8gc2VlIHdoYXQncyBhY3R1YWxseSBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QuIFRpbWUgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCdzIGhlYWQgb3ZlciB0byBgYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaGAgYW5kIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGBrdm1feDg2X2NhbGxgIGlzIGRlZmluZWQgYW5kIGlmIGl0IGhhbmRsZXMgYE5VTExgIGZ1bmN0aW9uIHBvaW50ZXJzIGdyYWNlZnVsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2FsbCBmbG93IGNvbXBsZXRlbHkgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgYSBwcm9ibGVtIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODYxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTg6NDYuNjcyMzkwMjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MTg3MDQzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIGt2bV94ODZfY2FsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9pbmNsdWRlL2FzbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0xNzg3PWV4dGVybiBzdHJ1Y3Qga3ZtX3g4Nl9uZXN0ZWRfb3BzIGt2bV9uZXN0ZWRfb3BzIF9fcmVhZF9tb3N0bHk7XFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNzg4LVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTc4OTojZGVmaW5lIGt2bV94ODZfY2FsbChmdW5jKSBzdGF0aWNfY2FsbChrdm1feDg2XyMjZnVuYylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTE3OTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU4OjQ3LjA1NDI2NjU1MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDA3MTU1NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHN0YXRpY19jYWxsYCBhbmQgSXRzIEltcGxpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEkgc2VlIGEgYHN0YXRpY19jYWxsKGt2bV94ODZfcGlfdXBkYXRlX2lydGUpYCBjYWxsLiBUaGlzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSWYgaXQncyBhIGBzdGF0aWNfY2FsbGAsIGl0IGxpa2VseSBtZWFucyB0aGVyZSdzIGEgZGVncmVlIG9mIGNvbXBpbGUtdGltZSBvcHRpb25hYmlsaXR5IGludm9sdmVkLCBhbmQgdGhhdCByYWlzZXMgYSBmZXcgaW1tZWRpYXRlIHF1ZXN0aW9ucyBpbiBteSBtaW5kLiBTcGVjaWZpY2FsbHksIGlmIHRoaXMgZnVuY3Rpb24gY2FsbCBpcyBvcHRpb25hbCwgd2hhdOKAmXMgdGhlIGRlZmF1bHQgYmVoYXZpb3Igd2hlbiBpdCAqaXNuJ3QqIHVzZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZS4gSSBoYXZlIHRvIGxvb2sgYXQgaG93IGBrdm1feDg2X29wc2AgaXMgaW5pdGlhbGl6ZWQsIGFzIHRoYXQgbGlrZWx5IGhvbGRzIHRoZSBrZXkgdG8gdGhlIGRpc3BhdGNoIG1lY2hhbmlzbS4gVGhlIGZpbGUgdG8gc3RhcnQgd2l0aCBzaG91bGQgYmUgYGFyY2gveDg2L2t2bS94ODYuY2AsIG9yIHJlYWxseSwgd2hlcmV2ZXIgYGt2bV94ODZfb3BzYCBnZXRzIHBvcHVsYXRlZCB3aXRoIGl0cyBmdW5jdGlvbiBwb2ludGVycy4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYGt2bV94ODZfcGlfdXBkYXRlX2lydGVgIGlzIGFsd2F5cyBwcmVzZW50LCBvciBpZiB0aGVyZSdzIGEgZmFsbGJhY2sgb3IgYWx0ZXJuYXRpdmUgYmVoYXZpb3IuIFVuZGVyc3RhbmRpbmcgdGhpcyBpcyBjcnVjaWFsIGZvciBldmFsdWF0aW5nIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgb3IgY29tcGF0aWJpbGl0eSBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjAyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTg6NTQuMDYxNDI1MjQyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYwMjAyNTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktWTV9YODZfT1BfT1BUSU9OQUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9MTY2PXN0cnVjdCBrdm1feDg2X25lc3RlZF9vcHMga3ZtX25lc3RlZF9vcHMgX19yZWFkX21vc3RseTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0xNzAtXFx0XFx0XFx0XFx0KigoKHN0cnVjdCBrdm1feDg2X29wcyAqKTApLVxcdTAwM2VmdW5jKSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjE3MTojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgS1ZNX1g4Nl9PUFxcbmFyY2gveDg2L2t2bS94ODYuYzoxNzI6I2RlZmluZSBLVk1fWDg2X09QX09QVElPTkFMX1JFVDAgS1ZNX1g4Nl9PUFxcbmFyY2gveDg2L2t2bS94ODYuYy0xNzMtI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm0teDg2LW9wcy5oXFx1MDAzZVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTY5NDI9c3RhdGljIGlubGluZSB2b2lkIGt2bV9vcHNfdXBkYXRlKHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjk0OS1cXHRXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKTsgX19LVk1fWDg2X09QKGZ1bmMpXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjY5NTA6I2RlZmluZSBLVk1fWDg2X09QX09QVElPTkFMIF9fS1ZNX1g4Nl9PUFxcbmFyY2gveDg2L2t2bS94ODYuYzo2OTUxOiNkZWZpbmUgS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGZ1bmMpIFxcXFxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjk1Mi1cXHRzdGF0aWNfY2FsbF91cGRhdGUoa3ZtX3g4Nl8jI2Z1bmMsICh2b2lkICopa3ZtX3g4Nl9vcHMuZnVuYyA/IDogXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1ODo1NS40MjE2MzM4NjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQxMDE5OTU3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gSW5zdHJ1Y3Rpb24gT3B0aW1pemF0aW9uIENvbmNlcm5zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgbWFjcm8sIGFuZCBpdCdzIGVzc2VudGlhbGx5IGp1c3QgYW4gYWxpYXMgZm9yIGBfX0tWTV9YODZfT1BgLCB3aGljaCBleHBhbmRzIHRvIGEgYHN0YXRpY19jYWxsX3VwZGF0ZWAgdGhhdCBtYXBzIGEgZnVuY3Rpb24gdG8gYGt2bV94ODZfb3BzLmZ1bmNgLiAgVGhlIGNydXggb2YgdGhpcyBzZWVtcyB0byBiZSB0aGF0IGlmIGBrdm1feDg2X29wcy5mdW5jYCBpcyBgTlVMTGAsIHRoZW4gdGhlIHN0YXRpYyBjYWxsIGdldHMgdXBkYXRlZCB0byBgTlVMTGAuIFRoZSBpbW1lZGlhdGUgaXNzdWUgaGVyZSBpcyB0aGF0ICpjYWxsaW5nKiBhIGBOVUxMYCBmdW5jdGlvbiBpcyBhIGd1YXJhbnRlZWQgY3Jhc2gsIHJpZ2h0PyBJdCdzIGVsZW1lbnRhcnksIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIGxvZ2ljIGNvcnJlY3RseS5cblxuV2FpdCBhIHNlY29uZCwgdGhlcmUncyBgS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwYCwgd2hpY2ggc2VlbXMgdG8gaGF2ZSBhIGZhbGxiYWNrIG1lY2hhbmlzbSB0byBgX19zdGF0aWNfY2FsbF9yZXR1cm4wYC4gIFdoeSBkb2Vzbid0IGBLVk1fWDg2X09QX09QVElPTkFMYCBhbHNvIGhhdmUgYSBmYWxsYmFjaz8gVGhhdCBzZWVtcyBsaWtlIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIEl0IG1lYW5zIHRoZSBvcHRpb25hbCBpbnN0cnVjdGlvbiBwYXRoIGlzbid0IHRydWx5IG9wdGlvbmFsIOKAkyBpdCdzIG1hbmRhdG9yeSwgdW5sZXNzIHRoZSBkZXZlbG9wZXIgdGFrZXMgc3BlY2lmaWMgYWN0aW9ucyB0byBoYW5kbGUgdGhlIG51bGwgcG9pbnRlci4gVGhpcyBpcyBzb21ldGhpbmcgSSdkIHdhbnQgdG8gaW52ZXN0aWdhdGUgZnVydGhlci5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgYXJjaC94ODYva3ZtL3g4Ni5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNjk0OSwgdG8gc2VlIGlmIHRoZXJlIGlzIHNvbWUgb2J2aW91cyByZWFzb25pbmcgaGVyZSwgb3IgaWYgdGhpcyBpcywgYXMgSSBzdXNwZWN0LCBhIHN1YnRsZSBidWcgdGhhdCBuZWVkcyBzb21lIGF0dGVudGlvbi4gTGV0IG1lIGNoZWNrIHRoZSByZWxhdGVkIGNvZGUgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NDAxLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjAzLjgzMTgzNjEyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDc4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY5NDAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY5NDA6XFx0fVxcbjY5NDE6XFx0XFxuNjk0MjpcXHRzdGF0aWMgaW5saW5lIHZvaWQga3ZtX29wc191cGRhdGUoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcylcXG42OTQzOlxcdHtcXG42OTQ0OlxcdFxcdG1lbWNweShcXHUwMDI2a3ZtX3g4Nl9vcHMsIG9wcy1cXHUwMDNlcnVudGltZV9vcHMsIHNpemVvZihrdm1feDg2X29wcykpO1xcbjY5NDU6XFx0XFxuNjk0NjpcXHQjZGVmaW5lIF9fS1ZNX1g4Nl9PUChmdW5jKSBcXFxcXFxuNjk0NzpcXHRcXHRzdGF0aWNfY2FsbF91cGRhdGUoa3ZtX3g4Nl8jI2Z1bmMsIGt2bV94ODZfb3BzLmZ1bmMpO1xcbjY5NDg6XFx0I2RlZmluZSBLVk1fWDg2X09QKGZ1bmMpIFxcXFxcXG42OTQ5OlxcdFxcdFdBUk5fT04oIWt2bV94ODZfb3BzLmZ1bmMpOyBfX0tWTV9YODZfT1AoZnVuYylcXG42OTUwOlxcdCNkZWZpbmUgS1ZNX1g4Nl9PUF9PUFRJT05BTCBfX0tWTV9YODZfT1BcXG42OTUxOlxcdCNkZWZpbmUgS1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGZ1bmMpIFxcXFxcXG42OTUyOlxcdFxcdHN0YXRpY19jYWxsX3VwZGF0ZShrdm1feDg2XyMjZnVuYywgKHZvaWQgKilrdm1feDg2X29wcy5mdW5jID8gOiBcXFxcXFxuNjk1MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAodm9pZCAqKV9fc3RhdGljX2NhbGxfcmV0dXJuMCk7XFxuNjk1NDpcXHQjaW5jbHVkZSBcXHUwMDNjYXNtL2t2bS14ODYtb3BzLmhcXHUwMDNlXFxuNjk1NTpcXHQjdW5kZWYgX19LVk1fWDg2X09QXFxuNjk1NjpcXHRcXG42OTU3OlxcdFxcdGt2bV9uZXN0ZWRfb3BzX3VwZGF0ZShvcHMtXFx1MDAzZW5lc3RlZF9vcHMpO1xcbjY5NTg6XFx0XFxuNjk1OTpcXHRcXHRrdm1fcG11X29wc191cGRhdGUob3BzLVxcdTAwM2VwbXVfb3BzKTtcXG42OTYwOlxcdH1cXG42OTYxOlxcdFxcbjY5NjI6XFx0c3RhdGljIGludCBrdm1feDg2X2NoZWNrX3Byb2Nlc3Nvcl9jb21wYXRpYmlsaXR5KHZvaWQpXFxuNjk2MzpcXHR7XFxuNjk2NDpcXHRcXHRpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpO1xcbjY5NjU6XFx0XFx0c3RydWN0IGNwdWluZm9feDg2ICpjID0gXFx1MDAyNmNwdV9kYXRhKGNwdSk7XFxuNjk2NjpcXHRcXG42OTY3OlxcdFxcdC8qXFxuNjk2ODpcXHRcXHQgKiBDb21wYXRpYmlsaXR5IGNoZWNrcyBhcmUgZG9uZSB3aGVuIGxvYWRpbmcgS1ZNIGFuZCB3aGVuIGVuYWJsaW5nXFxuNjk2OTpcXHRcXHQgKiBoYXJkd2FyZSwgZS5nLiBkdXJpbmcgQ1BVIGhvdHBsdWcsIHRvIGVuc3VyZSBhbGwgb25saW5lIENQVXMgYXJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjAzLjgzMjI0NjcxM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzQ1NDk4MjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIFg4NiBPcGVyYXRpb25zIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIGBwaV91cGRhdGVfaXJ0ZWAgZnJvbSBhbiBvcHRpb25hbCBLVk0geDg2IG9wZXJhdGlvbiAoYEtWTV9YODZfT1BfT1BUSU9OQUxgKSB0byBhIHJlcXVpcmVkIG9uZSAoYEtWTV9YODZfT1BgKS4gVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgd2UnbGwgbm93IGdldCBhIGBXQVJOX09OYCBkdXJpbmcgS1ZNIGluaXRpYWxpemF0aW9uIGlmIGBrdm1feDg2X29wcy5waV91cGRhdGVfaXJ0ZWAgaXMgTlVMTC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbiwgYHBpX3VwZGF0ZV9pcnRlYCwgaXMgY29uc2lzdGVudGx5IGltcGxlbWVudGVkIGJ5IGJvdGggVk1YIChJbnRlbCkgYW5kIFNWTSAoQU1EKSBoeXBlcnZpc29ycy4gVGhpcyBjaGFuZ2UgZmVlbHMgcG90ZW50aWFsbHkgcmlza3kgaWYgdGhlcmUncyBldmVuIGEgcmVtb3RlIGNoYW5jZSBvZiBpdCAqbm90KiBiZWluZyBhdmFpbGFibGUuXG5cbkxldCBtZSBxdWlja2x5IHZlcmlmeSB0aGF0LiBJJ2xsIGNoZWNrIGBhcmNoL3g4Ni9rdm0vdm14L21haW4uY2AgYW5kIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYC4gQWxyaWdodCwgSSBhbHJlYWR5IGhhdmUgdGhlIHJlbGV2YW50IGxpbmVzIGZyb20gdGhlIGNvZGU6IGJvdGggVk1YIGFuZCBTVk0gaGF2ZSBhbiBpbXBsZW1lbnRhdGlvbjogYHZteF9waV91cGRhdGVfaXJ0ZWAgYW5kIGBhdmljX3BpX3VwZGF0ZV9pcnRlYCwgcmVzcGVjdGl2ZWx5LiBHb29kLiBCdXQgd2FpdOKApiBteSBtaW5kIHF1aWNrbHkganVtcHMgdG8gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uXG5cbklzIGl0IHBvc3NpYmxlIHRoYXQgYENPTkZJR19LVk1fQU1EYCBvciBgQ09ORklHX0tWTV9JTlRFTGAgYXJlICpub3QqIGJ1aWx0IGludG8gdGhlIGtlcm5lbCwgYW5kIHRoZSBmdW5jdGlvbiB3b3VsZCAqbm90KiBiZSBjb21waWxlZCBpbj8gSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIGBhdmljX3BpX3VwZGF0ZV9pcnRlYCBpbiBgc3ZtLmNgIGlzIGFsd2F5cyBhdmFpbGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTQ3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6MDkuMTc3NzQ3MjM4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzgwNjUwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXZpY19waV91cGRhdGVfaXJ0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYz05MDI9c3RhdGljIHZvaWQgc3ZtX2lyX2xpc3RfZGVsKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZClcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jLTkxNC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYzo5MTU6aW50IGF2aWNfcGlfdXBkYXRlX2lydGUoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLCBzdHJ1Y3Qga3ZtICprdm0sXFxuYXJjaC94ODYva3ZtL3N2bS9hdmljLmMtOTE2LVxcdFxcdFxcdHVuc2lnbmVkIGludCBob3N0X2lycSwgdWludDMyX3QgZ3Vlc3RfaXJxLFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzE0PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDE5LVxcdC5kZWxpdmVyX2ludGVycnVwdCA9IHN2bV9kZWxpdmVyX2ludGVycnVwdCxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjU0MjA6XFx0LnBpX3VwZGF0ZV9pcnRlID0gYXZpY19waV91cGRhdGVfaXJ0ZSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MjEtXFx0LnNldHVwX21jZSA9IHN2bV9zZXR1cF9tY2UsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTk1OT12b2lkIGF2aWNfcmVmcmVzaF9hcGljdl9leGVjX2N0cmwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oOjk2MDppbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTk2MS1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6MDkuNjU1ODIzMTQ4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMTQ3MTUyMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBLVk0vQU1EIEFWSUMgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIHplcm8gaW4gb24gYGF2aWNfcGlfdXBkYXRlX2lydGVgLiBJIHJlY2FsbCB0aGF0J3MgbmVzdGxlZCB3aXRoaW4gYGF2aWMuY2AuICBBIGtleSBxdWVzdGlvbiBpbW1lZGlhdGVseSBwb3BzIHVwOiBpcyBgYXZpYy5jYCAqYWx3YXlzKiBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgd2hlbiBgQ09ORklHX0tWTV9BTURgIGlzIGVuYWJsZWQ/IFRoYXQncyB0aGUgY3J1eCBvZiB0aGlzLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgS1ZNIG9uIEFNRCBzeXN0ZW1zIGxldmVyYWdlcyB0aGUgQWR2YW5jZWQgVmlydHVhbCBJbnRlcnJ1cHQgQ29udHJvbGxlciAoQVZJQyksIGJ1dCBJIG5lZWQgdG8gZGVmaW5pdGl2ZWx5IGVzdGFibGlzaCB0aGUgY29tcGlsYXRpb24gZGVwZW5kZW5jeS4gSWYgYGF2aWMuY2AgaXNuJ3QgY29uc2lzdGVudGx5IGluY2x1ZGVkIHVuZGVyIGBDT05GSUdfS1ZNX0FNRGAsIHRoZW4gdGhlIGBhdmljX3BpX3VwZGF0ZV9pcnRlYCBmdW5jdGlvbiBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLCBhbmQgaXRzIHByZXNlbmNlIGluIHRoZSBrZXJuZWwgaXMgZGVwZW5kZW50IG9uIG1vcmUgdGhhbiBqdXN0IHRoZSBgQ09ORklHX0tWTV9BTURgIG9wdGlvbi4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRvIGNvbmZpcm0uIFRoaXMgaGFzIGltcGxpY2F0aW9ucyBmb3IgaG93IEFWSUMncyBmdW5jdGlvbmFsaXRpZXMgYXJlIGFjdGl2YXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc2NjMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1OToxMi45NzA1NDA5MzdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMDQzNjA5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdmljXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9zdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1OToxMy4wNDA1OTMyOTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwNjA0MTkyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdDpcblxuKipEaXZpbmcgaW50byB0aGUgS1ZNIHg4NiBNYWtlZmlsZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzdGFydCBieSBuYXZpZ2F0aW5nIHJpZ2h0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIOKAkyB0aGUgYGFyY2gveDg2L2t2bS9NYWtlZmlsZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgS1ZNIG1vZHVsZXMgYW5kIHJlbGV2YW50IHg4Ni1zcGVjaWZpYyBjb21wb25lbnRzIGFyZSBidWlsdCBhbmQgbGlua2VkIHdpdGhpbiB0aGUga2VybmVsLiBUaGlzIE1ha2VmaWxlIGlzIGdvaW5nIHRvIGJlIHRoZSByb2FkbWFwLiBJJ20gbG9va2luZyBmb3IgdGhlIGtleSB2YXJpYWJsZXMsIGluY2x1ZGUgcGF0aHMsIHNvdXJjZSBmaWxlcywgYW5kIGFueSBzcGVjaWFsIGJ1aWxkIHJ1bGVzIHNwZWNpZmljIHRvIEtWTSB3aXRoaW4gdGhlIHg4NiBhcmNoaXRlY3R1cmUuIEknbSBleHBlY3RpbmcgdG8gZmluZCBpbmZvcm1hdGlvbiBhYm91dCBob3cgS1ZNIGludGVyYWN0cyB3aXRoIGZlYXR1cmVzIGxpa2UgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucyAoVlQteCBvciBBTUQtViksIG1lbW9yeSBtYW5hZ2VtZW50LCBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIG9uIHRoZSB4ODYgcGxhdGZvcm0uIFRoZSBkZXBlbmRlbmNpZXMgd2lsbCBsaWtlbHkgcmV2ZWFsIGhvdyBpdCBpbnRlZ3JhdGVzIGludG8gdGhlIG92ZXJhbGwga2VybmVsIGJ1aWxkIHByb2Nlc3MuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0cmVhc3VyZXMgdGhpcyBNYWtlZmlsZSBob2xkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5NjksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1OToxNi42NDY2Mzg0MThaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0ODQ1MDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF2aWNcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MjI9a3ZtLWludGVsLSQoQ09ORklHX0tWTV9JTlRFTF9URFgpXFx0Kz0gdm14L3RkeC5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTIzLVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyNDprdm0tYW1kLXlcXHRcXHQrPSBzdm0vc3ZtLm8gc3ZtL3ZtZW50ZXIubyBzdm0vcG11Lm8gc3ZtL25lc3RlZC5vIHN2bS9hdmljLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMjUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjE2LjcxMTQ4OTU3N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA0NTIwODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIENvbXBpbGF0aW9uIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBgc3ZtL2F2aWMub2AuLi4gdGhhdCdzIGFsd2F5cyBidWlsdCwgbm8gcXVlc3Rpb24uIE5vdywgSSBuZWVkIHRvIGpvZyBteSBtZW1vcnkgYSBiaXQuIFdoZXJlIGRvZXMgYHZteF9waV91cGRhdGVfaXJ0ZWAgY29tZSBmcm9tPyBBaCwgdGhhdCdzIHJpZ2h0LCBpdCdzIGJ1cmllZCBpbiBgcG9zdGVkX2ludHIuY2AuIE9rYXksIHRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2hlY2sgdGhhdCBzcGVjaWZpYyBzb3VyY2UgZmlsZSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBidWlsZCBwcm9jZXNzLCB0byBzZWUgd2h5IEknbSBhc2tpbmcgdGhpcyBxdWVzdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1OToyMS41MTYwMTI4MjRaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzY4OTg5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwb3N0ZWRfaW50clxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZT0xNz1rdm0taW50ZWwteVxcdFxcdCs9IHZteC92bXgubyB2bXgvdm1lbnRlci5vIHZteC9wbXVfaW50ZWwubyB2bXgvdm1jczEyLm8gXFxcXFxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZToxODpcXHRcXHRcXHQgICB2bXgvbmVzdGVkLm8gdm14L3Bvc3RlZF9pbnRyLm8gdm14L21haW4ub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0xOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6MjEuNjk5NzA4MzdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQzOTAwMzMwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiB0aGUgYHBpX3VwZGF0ZV9pcnRlYCBDb21waWxhdGlvbioqXG5cbk9rYXksIHNvIGB2bXgvcG9zdGVkX2ludHIub2AgaXMgYWx3YXlzIGNvbXBpbGVkLCB3aGljaCBtZWFucyBgcGlfdXBkYXRlX2lydGVgIGlzICphbHdheXMqIGdvaW5nIHRvIGJlIHByZXNlbnQgaW4gYm90aCBgdnRfeDg2X29wc2AgYW5kIGBzdm1feDg2X29wc2AuIFRoYXQncyB0aGUgYmFzZWxpbmUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzLCB3aGF0IGhhcHBlbnMgaWYgYGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSlgIGdldHMgaW52b2tlZCB3aGVuIGBpcnFfYnlwYXNzYCBpc24ndCBhY3RpdmU/IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYSBzdWJ0bGUgZXJyb3IgY29uZGl0aW9uLlxuXG5BaCwgcmlnaHQsIHRoZSBwYXRjaCBqdXN0IG1vdmVzIGZyb20gYEtWTV9YODZfT1BfT1BUSU9OQUwocGlfdXBkYXRlX2lydGUpYCB0byBgS1ZNX1g4Nl9PUChwaV91cGRhdGVfaXJ0ZSlgLiBTbywgdGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiwgd2hlbiB0aGUgbW9kdWxlIGxvYWRzLCB3ZSdyZSBnb2luZyB0byBpbnRyb2R1Y2UgYSBgV0FSTl9PTigha3ZtX3g4Nl9vcHMuZnVuYylgLiBCdXQgYm90aCBWTVggYW5kIFNWTSAqYWx3YXlzKiBzdXBwbHkgdGhpcyBmdW5jdGlvbiwgc28gdGhhdCBgV0FSTl9PTmAgc2hvdWxkIG5ldmVyIGFjdHVhbGx5IHRyaWdnZXIuIFdlJ3JlIGVmZmVjdGl2ZWx5IHR1cm5pbmcgYW4gb3B0aW9uYWwgZnVuY3Rpb24gaW50byBhIG1hbmRhdG9yeSBvbmUsIHdoaWNoIGlzIHNhZmUgaW4gdGhpcyBjYXNlLlxuXG5CdXQgaG9sZCBvbi4uLiBpcyB0aGVyZSBhbnkgb3RoZXIgbG9jYXRpb24gaW4gdGhlIGNvZGUgd2hlcmUgYGt2bV94ODZfY2FsbChwaV91cGRhdGVfaXJ0ZSlgIGlzIHVzZWQsIGFuZCAqcHJldmlvdXNseSogdGhlcmUgd2FzIGEgY2hlY2sgdG8gc2VlIGlmIHRoZSBmdW5jdGlvbiB3YXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQ/IEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuIEkgbmVlZCB0byBzY2FuIGZvciBhbnkgaW5zdGFuY2VzIG9mIGBrdm1feDg2X2hhcyhwaV91cGRhdGVfaXJ0ZSlgIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyBvciBhc3N1bXB0aW9ucyB0aGF0IGNvdWxkIGJlIGJyb2tlbiBieSB0aGlzIGNoYW5nZS4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlYmFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2NzgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6MjguMTM4NzE0MzEyWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjgwMTY1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3g4Nl9oYXNcXFxcKHBpX3VwZGF0ZV9pcnRlXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6MjguMjAxNTMwOTYxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NTQxMDEwODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgYHBpX3VwZGF0ZV9pcnRlYCB2YXJpYWJsZS4qKiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8ga25vdyB3aGVyZSB0aGlzIHRoaW5nIGlzIGJlaW5nIHVzZWQuIElmIGl0J3Mgbm90IGJlaW5nIGNoZWNrZWQgYW55d2hlcmUsIHRoZW4gaXQncyBlZmZlY3RpdmVseSBkZWFkIGNvZGUsIHdoaWNoIGNvdWxkIGJlIGEgc2ltcGxlIGNsZWFuLXVwLiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgaXQgKmlzKiBiZWluZyBjaGVja2VkLCBJIG5lZWQgdG8ga25vdyAqd2hlcmUqIGFuZCAqd2h5Ki4gSXRzIHVzYWdlIHdpbGwgZGljdGF0ZSBpdHMgaW1wb3J0YW5jZSBhbmQsIHRoZXJlZm9yZSwgdGhlIGltcG9ydGFuY2Ugb2YgYW55dGhpbmcgcmVsYXRlZCB0byBpdC4gVW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpcyBrZXkgYmVmb3JlIG1ha2luZyBhbnkganVkZ21lbnRzIG9uIHdoYXQgdG8gZG8sIG9yIHdoZXRoZXIgdGhlcmUgaXMgYSBidWcuIExldCdzIHNlZSBpZiBJIGNhbiB0cmFjZSBpdHMgdXNhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzU4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6MzEuMTU1NjM0ODk4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTUzMzY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaV91cGRhdGVfaXJ0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9pcnEuYz00MjY9c3RhdGljIGJvb2wga3ZtX2lycV9pc19wb3N0YWJsZShzdHJ1Y3Qga3ZtX2xhcGljX2lycSAqaXJxKVxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTQzMi1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDMzOnN0YXRpYyBpbnQga3ZtX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDM0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplbnRyeSlcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy00NjctXFxuYXJjaC94ODYva3ZtL2lycS5jOjQ2ODpcXHRyID0ga3ZtX3g4Nl9jYWxsKHBpX3VwZGF0ZV9pcnRlKShpcnFmZCwgaXJxZmQtXFx1MDAzZWt2bSwgaG9zdF9pcnEsIGlycWZkLVxcdTAwM2Vnc2ksXFxuYXJjaC94ODYva3ZtL2lycS5jLTQ2OS1cXHRcXHRcXHRcXHRcXHQgdmNwdSwgaXJxLnZlY3Rvcik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NDgyPWludCBrdm1fYXJjaF9pcnFfYnlwYXNzX2FkZF9wcm9kdWNlcihzdHJ1Y3QgaXJxX2J5cGFzc19jb25zdW1lciAqY29ucyxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy00OTYtXFx0aWYgKGlycWZkLVxcdTAwM2VpcnFfZW50cnkudHlwZSA9PSBLVk1fSVJRX1JPVVRJTkdfTVNJKSB7XFxuYXJjaC94ODYva3ZtL2lycS5jOjQ5NzpcXHRcXHRyZXQgPSBrdm1fcGlfdXBkYXRlX2lydGUoaXJxZmQsIFxcdTAwMjZpcnFmZC1cXHUwMDNlaXJxX2VudHJ5KTtcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDk4LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYz01MDg9dm9pZCBrdm1fYXJjaF9pcnFfYnlwYXNzX2RlbF9wcm9kdWNlcihzdHJ1Y3QgaXJxX2J5cGFzc19jb25zdW1lciAqY29ucyxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy01MjctXFx0ICAgIFdBUk5fT05fT05DRShpcnFmZC1cXHUwMDNlaXJxX2J5cGFzc192Y3B1KSkge1xcbmFyY2gveDg2L2t2bS9pcnEuYzo1Mjg6XFx0XFx0cmV0ID0ga3ZtX3BpX3VwZGF0ZV9pcnRlKGlycWZkLCBOVUxMKTtcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTI5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NTQwPXZvaWQga3ZtX2FyY2hfdXBkYXRlX2lycWZkX3JvdXRpbmcoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkLFxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTU1Mi1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NTUzOlxcdGt2bV9waV91cGRhdGVfaXJ0ZShpcnFmZCwgbmV3KTtcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTU0LX1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jPTkwMj1zdGF0aWMgdm9pZCBzdm1faXJfbGlzdF9kZWwoc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQgKmlycWZkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9hdmljLmMtOTE0LVxcbmFyY2gveDg2L2t2bS9zdm0vYXZpYy5jOjkxNTppbnQgYXZpY19waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL2F2aWMuYy05MTYtXFx0XFx0XFx0dW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMTQ9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MTktXFx0LmRlbGl2ZXJfaW50ZXJydXB0ID0gc3ZtX2RlbGl2ZXJfaW50ZXJydXB0LFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQyMDpcXHQucGlfdXBkYXRlX2lydGUgPSBhdmljX3BpX3VwZGF0ZV9pcnRlLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQyMS1cXHQuc2V0dXBfbWNlID0gc3ZtX3NldHVwX21jZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9OTU5PXZvaWQgYXZpY19yZWZyZXNoX2FwaWN2X2V4ZWNfY3RybChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6OTYwOmludCBhdmljX3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTYxLVxcdFxcdFxcdHVuc2lnbmVkIGludCBob3N0X2lycSwgdWludDMyX3QgZ3Vlc3RfaXJxLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTctXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6OTk4OlxcdC5waV91cGRhdGVfaXJ0ZSA9IHZteF9waV91cGRhdGVfaXJ0ZSxcXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05OTktXFx0LnBpX3N0YXJ0X2J5cGFzcyA9IHZteF9waV9zdGFydF9ieXBhc3MsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmM9Mjk3PXZvaWQgdm14X3BpX3N0YXJ0X2J5cGFzcyhzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMzA0LVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYzozMDU6aW50IHZteF9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsIHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0vdm14L3Bvc3RlZF9pbnRyLmMtMzA2LVxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgaG9zdF9pcnEsIHVpbnQzMl90IGd1ZXN0X2lycSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaD0xNj1ib29sIHBpX2hhc19wZW5kaW5nX2ludGVycnVwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaDoxNzppbnQgdm14X3BpX3VwZGF0ZV9pcnRlKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCwgc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuaC0xOC1cXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGhvc3RfaXJxLCB1aW50MzJfdCBndWVzdF9pcnEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjMxLjIxNzE3NzUxNloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTQ5MzE5NzM1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgRGVlcCBpbnRvIEtWTSBJbnRlcnJ1cHQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBga3ZtX3BpX3VwZGF0ZV9pcnRlYC4gSW50ZXJlc3RpbmcsIHRoaXMgZnVuY3Rpb24gc2VlbXMgbGlrZSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBpbnRlcnJ1cHQgbWFuYWdlbWVudCBwdXp6bGUsIGJ1dCB3YWl0Li4uaXQncyBvbmx5IGNhbGxlZCB1bmRlciB2ZXJ5IHNwZWNpZmljIGNvbmRpdGlvbnMsIG5hbWVseSBpZiB0aGUgYGlycWNoaXBfaW5fa2VybmVsKGt2bSlgIGNoZWNrIGlzIHRydWUgYW5kIGlmIGBrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpYCBhbHNvIGV2YWx1YXRlcyB0byB0cnVlLiBUaGF0J3MgYSBjcnVjaWFsIGJpdCBvZiBjb25kaXRpb25hbCBsb2dpYyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YhIFRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNhbGwgcGF0aCwgSSBuZWVkIHRvIGtub3cgZXhhY3RseSB3aGF0IGBrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpYCBtZWFucywgYW5kIHdoZXJlIGl0J3MgYmVpbmcgdXNlZC4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBkb2VzIGFuZCB3aGVyZSBpdCdzIGRlZmluZWQuIFRpbWUgdG8gZHJpbGwgZG93biBvbiB0aGF0IGZ1bmN0aW9uIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE0MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjQ2LjcxMDM3ODIzNFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyMjgwOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX2hhc19pcnFfYnlwYXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL2lycS5jPTQzMz1zdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDQxLVxcbmFyY2gveDg2L2t2bS9pcnEuYzo0NDI6XFx0aWYgKFdBUk5fT05fT05DRSghaXJxY2hpcF9pbl9rZXJuZWwoa3ZtKSB8fCAha3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKSkpXFxuYXJjaC94ODYva3ZtL2lycS5jLTQ0My1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYz0xNDc9c3RhdGljIGJvb2wgdm14X2Nhbl91c2VfdnRkX3BpKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYy0xNTMtXFx0ICovXFxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jOjE1NDpcXHRyZXR1cm4gaXJxY2hpcF9pbl9rZXJuZWwoa3ZtKSBcXHUwMDI2XFx1MDAyNiBrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jLTE1NS1cXHQgICAgICAgUkVBRF9PTkNFKGt2bS1cXHUwMDNlYXJjaC5ucl9wb3NzaWJsZV9ieXBhc3NfaXJxcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjQ3LjE2MjY2NDc4NVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE0MjI3NzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS1ZNIElSUSBCeXBhc3MgTG9jYXRpb24gUXVhbmRhcnkqKlxuXG5Pa2F5LCBJJ20ganVzdCBxdWlja2x5IHRyeWluZyB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGVyZSBleGFjdGx5IHRoYXQgYGt2bV9hcmNoX2hhc19pcnFfYnlwYXNzKClgIGZ1bmN0aW9uIGlzIGRlZmluZWQuIElzIGl0IHR1Y2tlZCBhd2F5IGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgLCBvciBpcyBpdCBkZWNsYXJlZCBpbiB0aGF0IGhlYWRlciBmaWxlLCBgYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaGA/IEkgKmtub3cqIEkndmUgd29ya2VkIHdpdGggaXQgYmVmb3JlLi4uIEl0J3MgaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBiZWNhdXNlIEkgZG9uJ3Qgd2FudCB0byBjaGFzZSB0aGUgd3JvbmcgaW5jbHVkZSBwYXRoIHdoZW4gSSdtIHRyYWNraW5nIHNvbWV0aGluZyBkb3duIG9yIGNoYW5naW5nIHRoZSBmdW5jdGlvbmFsaXR5IGFyb3VuZCB0aGUgYnlwYXNzLiBHb3R0YSBxdWlja2x5IHZlcmlmeSB0aGF0IGxvY2F0aW9uIHRvIGtlZXAgdGhpbmdzIGVmZmljaWVudC4gUmlnaHQsIGxldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTc0OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjUwLjY3Njg5NTE0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODAwNzMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYXJjaF9oYXNfaXJxX2J5cGFzc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0xODkyPXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fYXJjaF92Y3B1X3VuYmxvY2tpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xODk2LVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTg5NzpzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3Modm9pZClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTE4OTgte1xcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jPTQzMz1zdGF0aWMgaW50IGt2bV9waV91cGRhdGVfaXJ0ZShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDQxLVxcbmFyY2gveDg2L2t2bS9pcnEuYzo0NDI6XFx0aWYgKFdBUk5fT05fT05DRSghaXJxY2hpcF9pbl9rZXJuZWwoa3ZtKSB8fCAha3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKSkpXFxuYXJjaC94ODYva3ZtL2lycS5jLTQ0My1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYz0xNDc9c3RhdGljIGJvb2wgdm14X2Nhbl91c2VfdnRkX3BpKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvcG9zdGVkX2ludHIuYy0xNTMtXFx0ICovXFxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jOjE1NDpcXHRyZXR1cm4gaXJxY2hpcF9pbl9rZXJuZWwoa3ZtKSBcXHUwMDI2XFx1MDAyNiBrdm1fYXJjaF9oYXNfaXJxX2J5cGFzcygpIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3ZteC9wb3N0ZWRfaW50ci5jLTE1NS1cXHQgICAgICAgUkVBRF9PTkNFKGt2bS1cXHUwMDNlYXJjaC5ucl9wb3NzaWJsZV9ieXBhc3NfaXJxcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjU5OjUwLjc1NDkxMDkxOFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkzNjcyMzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIEtWTSBIb3N0IEhlYWRlcioqXG5cbk9rYXksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgeDg2IEtWTSBob3N0IGltcGxlbWVudGF0aW9uLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGEgbGlrZWx5IGFyZWEuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gcHJvdG90eXBlcyByZWxhdGVkIHRvIEtWTSdzIGludGVyYWN0aW9uIHdpdGggdGhlIGhvc3QgQ1BVIGFyZSBvZnRlbiBkZWZpbmVkIG5lYXIgdGhlIGludGVyZmFjZSBkZWZpbml0aW9ucyB3aXRoaW4gYGFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhgLiBBbmQga25vd2luZyB0aGUgcHJvamVjdCwgbGluZXMgMTg5Ny1pc2ggc2hvdWxkIGJlIGEgZ29vZCBwbGFjZSB0byBiZWdpbi4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgeW91IGZpbmQgdGhlIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gdGhlIG1vcmUgYWR2YW5jZWQgQ1BVIGZlYXR1cmVzIGFuZCByZWdpc3RlcnMgYW5kIHRoZWlyIGVtdWxhdGlvbiB3aXRoaW4gS1ZNIG9uIHg4Ni4gVGhpcyB3aWxsIGVpdGhlciBiZSB0aGUgc291cmNlIG9yIGFuIGVudHJ5IHBvaW50IHRvIHRoZSBzb3VyY2Ugb2Ygd2hhdGV2ZXIgaXQgaXMgSSBhbSBhZnRlci4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0J3MgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDcxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NTk6NTUuNDQ4NTg2MzA3WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4OTUsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE4OTU6XFx0fVxcbjE4OTY6XFx0XFxuMTg5NzpcXHRzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3Modm9pZClcXG4xODk4OlxcdHtcXG4xODk5OlxcdFxcdHJldHVybiBlbmFibGVfZGV2aWNlX3Bvc3RlZF9pcnFzO1xcbjE5MDA6XFx0fVxcbjE5MDE6XFx0XFxuMTkwMjpcXHQjZW5kaWYgLyogX0FTTV9YODZfS1ZNX0hPU1RfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo1OTo1NS40NDg3MTA3NTdaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI2MTk1MjkzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIGBwaV91cGRhdGVfaXJ0ZWAqKlxuXG5Pa2F5LCBzbyBga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKWAgaGluZ2VzIG9uIGBlbmFibGVfZGV2aWNlX3Bvc3RlZF9pcnFzYCwgd2hpY2gsIGFzIEkgcmVjYWxsLCBpcyBlaXRoZXIgYSBtb2R1bGUgcGFyYW1ldGVyIG9yIGEgZ2xvYmFsIHZhcmlhYmxlLiBUaGlzIHBhdGNoIG1ha2VzIGBwaV91cGRhdGVfaXJ0ZWAgYSBtYW5kYXRvcnkgS1ZNIHg4NiBvcGVyYXRpb24uIFRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGFjdHVhbGx5ICpkbyogYW55dGhpbmc/XG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXJlJ3Mgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBwYXRjaCByZW1vdmVzIHRoZSBmYWxsYmFjayB0byBgTlVMTGAgZm9yIGBwaV91cGRhdGVfaXJ0ZWAgaW4gYGt2bV94ODZfb3BzYC4gQnV0LCBpdCBzZWVtcyBsaWtlIGJvdGggVk1YIGFuZCBTVk0gYWx3YXlzIHByb3ZpZGVkIHRoaXMsIHNvIGl0IHdhcyBuZXZlciBgTlVMTGAgaW4gcHJhY3RpY2UuIFRoZSBgc3RhdGljX2NhbGxfdXBkYXRlYCB3b3VsZCBoYXZlIHNldCBpdCB0byBgTlVMTGAgb25seSBpZiB0aGUgaW1wbGVtZW50YXRpb24gZGlkbid0IHN1cHBseSBpdC5cblxuSGFuZyBvbiwgd2hhdCBhYm91dCB3aGVuIGBlbmFibGVfZGV2aWNlX3Bvc3RlZF9pcnFzYCBpcyBmYWxzZT8gVGhlbiBga3ZtX2FyY2hfaGFzX2lycV9ieXBhc3MoKWAgaXMgZmFsc2UsIGFuZCBga3ZtX3BpX3VwZGF0ZV9pcnRlYCByZXR1cm5zIGAtRUlOVkFMYCBlYXJseSwgYnlwYXNzaW5nIHRoZSB3aG9sZSBga3ZtX3g4Nl9jYWxsKHBpX3VwZGF0ZV9pcnRlKWAgY2FsbC4gUmlnaHQuIFNvLCBpdCByZWFsbHkganVzdCB0d2Vha3MgdGhlIGRlZmluaXRpb24gaW4gYGt2bS14ODYtb3BzLmhgLlxuXG5Eb2VzIGl0IGNoYW5nZSBiZWhhdmlvciB0aGVuPyBJZiBib3RoIFZNWCBhbmQgU1ZNICphbHdheXMqIHByb3ZpZGVkIGBwaV91cGRhdGVfaXJ0ZWAsIG1ha2luZyBpdCBtYW5kYXRvcnkgc2VlbXMgdG8ganVzdCBhZGQgYSBgV0FSTl9PTigha3ZtX3g4Nl9vcHMuZnVuYylgIGR1cmluZyBpbml0aWFsaXphdGlvbi4gQnV0IHRoYXQgYFdBUk5fT05gIHNob3VsZCBuZXZlciB0cmlnZ2VyLCBiZWNhdXNlIHRoZSBmdW5jdGlvbnMgYXJlIGFsd2F5cyBwcm92aWRlZC4gQW5kLCBhcyBmYXIgYXMgSSdtIGF3YXJlLCBLVk0geDg2ICpvbmx5KiBoYXMgVk1YIGFuZCBTVk0uIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdC4uLiBObyBvdGhlciBhcmNoaXRlY3R1cmVzIGFyZSByZWxldmFudC4gTGV0J3Mgc2VlLi4uIEknbSBnb2luZyB0byBzZWFyY2ggZm9yIG90aGVyIHVzZXMgb2YgYHBpX3VwZGF0ZV9pcnRlYC4uLiBObywgdGhlIGdyZXBzIGNhbWUgdXAgZW1wdHkuXG5cblNvLCB0aGlzIGxvb2tzIGxpa2UgYSBjbGVhbnVwIHBhdGNoLCBlc3NlbnRpYWxseSBkZWNsYXJpbmcgYW4gb3BlcmF0aW9uIG1hbmRhdG9yeSBiZWNhdXNlIGFsbCBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSBwcm92aWRlIGl0LiBJdCBzZWVtcyB0byBqdXN0IGJlIG1ha2luZyB0aGUgbWFjcm8gZnJvbSBgS1ZNX1g4Nl9PUF9PUFRJT05BTGAgdG8gYEtWTV9YODZfT1BgLiAgU2luY2UgYm90aCBpbXBsZW1lbnRhdGlvbnMgKmFsd2F5cyogcHJvdmlkZWQgaXQsIHRoZW4gdGhlIG9ubHkgcmVhbCBjaGFuZ2UgaXMgdGhlIGFkZGVkIGBXQVJOX09OYCBkdXJpbmcgbW9kdWxlIGxvYWQsIGFuZCB0aGF0IHNob3VsZCBiZSB1bnJlYWNoYWJsZS5cblxuT2theSwgbGV0IG1lIGRvdWJsZS1jaGVjay4gSW4gYHZ0X3g4Nl9vcHNgLCBpdCdzIHNldCB0byBgdm14X3BpX3VwZGF0ZV9pcnRlYC4gSW4gYHN2bV94ODZfb3BzYCwgaXQncyBzZXQgdG8gYGF2aWNfcGlfdXBkYXRlX2lydGVgLiBBcmUgdGhlc2UgaW5pdGlhbGl6YXRpb25zIGNvbmRpdGlvbmFsIGluIGFueSB3YXk/IE5vLCB0aGV5IGFwcGVhciB0byBiZSBkaXJlY3QgYXNzaWdubWVudHMuXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCBpcyBmdXp6aW5nIGl0IGV2ZW4gd29ydGh3aGlsZT8gSXQgc2VlbXMgbGlrZSBhIHZlcnkgbG93LWltcGFjdCBjaGFuZ2UgdGhhdCByZWFsbHkgb25seSBhZmZlY3RzIGEgYFdBUk5fT05gIHdoaWNoIHdpbGwgbmV2ZXIgYmUgaGl0LCBzbyBpdCdzIGEgcGFzcyBmb3IgZnV6emluZyB1bmxlc3MgdGhlcmUncyBzb21lIHN1YnRsZSBpbnRlcmFjdGlvbiBJJ20gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4NTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowMDowOC4wNjgyNDM0NDdaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMzYzNDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlxcXFwucGlfdXBkYXRlX2lydGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMTQ9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MTktXFx0LmRlbGl2ZXJfaW50ZXJydXB0ID0gc3ZtX2RlbGl2ZXJfaW50ZXJydXB0LFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQyMDpcXHQucGlfdXBkYXRlX2lydGUgPSBhdmljX3BpX3VwZGF0ZV9pcnRlLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQyMS1cXHQuc2V0dXBfbWNlID0gc3ZtX3NldHVwX21jZSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTg4MD1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgdnRfeDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTk3LVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjk5ODpcXHQucGlfdXBkYXRlX2lydGUgPSB2bXhfcGlfdXBkYXRlX2lydGUsXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTk5LVxcdC5waV9zdGFydF9ieXBhc3MgPSB2bXhfcGlfc3RhcnRfYnlwYXNzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowMDowOC4xMzg2MTIzNjZaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI5NjUyNjQ5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIEtWTSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgS1ZNIGNvZGUgY2hhbmdlIHJlbGF0ZWQgdG8gYGt2bV94ODZfb3BzLnBpX3VwZGF0ZV9pcnRlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyB1bmNvbmRpdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aGluIHRoZSBzdHJ1Y3QgZGVmaW5pdGlvbi4gVGhlcmVmb3JlLCB0aGUgZnVuY3Rpb24gcG9pbnRlciBga3ZtX3g4Nl9vcHMucGlfdXBkYXRlX2lydGVgICpzaG91bGQqIG5ldmVyIGJlIE5VTEwuXG5cbkNvbnNlcXVlbnRseSwgc3dpdGNoaW5nIGZyb20gYEtWTV9YODZfT1BfT1BUSU9OQUxgIHRvIGBLVk1fWDg2X09QYCBzZWVtcyBsaWtlIGl0J3MganVzdCBhIGNvc21ldGljIGNoYW5nZSDigJMgcHJpbWFyaWx5IG1vZGlmeWluZyB0aGUgc3RhdGljIGNhbGwgdXBkYXRlIG1hY3JvIHRvIGluY2x1ZGUgYSBgV0FSTl9PTigha3ZtX3g4Nl9vcHMuZnVuYylgLiBBbmQgc2luY2UgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaXMgKm5ldmVyKiBOVUxMLCB0aGlzIGBXQVJOX09OYCB3aWxsIGFsd2F5cyBiZSB1bnJlYWNoYWJsZS4gSW4gZXNzZW5jZSwgaXQgYXBwZWFycyB0aGVyZSdzIG5vIGFjdHVhbCBmdW5jdGlvbmFsIGRpZmZlcmVuY2UuIFRoZSBjb2RlIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhdCBydW50aW1lIHJlbWFpbnMgZXhhY3RseSB0aGUgc2FtZSDigJMganVzdCBhIHN0YXRpYyBjYWxsIHRvIHRoZSBpbnRlbmRlZCBmdW5jdGlvbi5cblxuQnV0LCBoYW5nIG9uIGEgc2Vjb25kLi4uIGlzIHRoZXJlIGV2ZW4gYSAqcGVyZm9ybWFuY2UqIGRpZmZlcmVuY2UsIHNvbWUgc29ydCBvZiBvdmVyaGVhZCBhc3NvY2lhdGVkIHdpdGggYEtWTV9YODZfT1BfT1BUSU9OQUxgIGNvbXBhcmVkIHRvIGp1c3QgYEtWTV9YODZfT1BgPyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBhcmNoL3g4Ni9rdm0veDg2LmNgIGFnYWluLiBJIGhhdmUgdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBpbXBhY3RzIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NDE1LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjAwOjE3LjQzNTE0MTc3OFoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTkxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY5NDYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY5NDY6XFx0I2RlZmluZSBfX0tWTV9YODZfT1AoZnVuYykgXFxcXFxcbjY5NDc6XFx0XFx0c3RhdGljX2NhbGxfdXBkYXRlKGt2bV94ODZfIyNmdW5jLCBrdm1feDg2X29wcy5mdW5jKTtcXG42OTQ4OlxcdCNkZWZpbmUgS1ZNX1g4Nl9PUChmdW5jKSBcXFxcXFxuNjk0OTpcXHRcXHRXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKTsgX19LVk1fWDg2X09QKGZ1bmMpXFxuNjk1MDpcXHQjZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgX19LVk1fWDg2X09QXFxuNjk1MTpcXHQjZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChmdW5jKSBcXFxcXFxuNjk1MjpcXHRcXHRzdGF0aWNfY2FsbF91cGRhdGUoa3ZtX3g4Nl8jI2Z1bmMsICh2b2lkICopa3ZtX3g4Nl9vcHMuZnVuYyA/IDogXFxcXFxcbjY5NTM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgKHZvaWQgKilfX3N0YXRpY19jYWxsX3JldHVybjApO1xcbjY5NTQ6XFx0I2luY2x1ZGUgXFx1MDAzY2FzbS9rdm0teDg2LW9wcy5oXFx1MDAzZVxcbjY5NTU6XFx0I3VuZGVmIF9fS1ZNX1g4Nl9PUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowMDoxNy40MzU1MDI0ODhaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAxOTE4Mzg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTSBYODYgT3BlcmF0aW9ucyBDb2RlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgYEtWTV9YODZfT1BfT1BUSU9OQUxgIGlzLCBmb3IgYWxsIGludGVudHMgYW5kIHB1cnBvc2VzLCAqaWRlbnRpY2FsKiB0byBgX19LVk1fWDg2X09QYC4gVGhlIGxhdHRlciBpcyBqdXN0IGEgd3JhcHBlciBjb250YWluaW5nIGBXQVJOX09OKCFrdm1feDg2X29wcy5mdW5jKTsgX19LVk1fWDg2X09QKGZ1bmMpYC4gVGhlIG9ubHkgcmVhbCB2YXJpYXRpb24gYXJpc2VzIGR1cmluZyBga3ZtX29wc191cGRhdGUoKWAuIEhlcmUsIHRoZSBgV0FSTl9PTmAgY2hlY2sgaXMgYXBwbGllZC5cblxuQnV0IGhhbmcgb24sIHRoYXQgYFdBUk5fT05gIGlzIGFsbW9zdCBjZXJ0YWlubHkgYSBub24tZXZlbnQuIExvb2tpbmcgYXQgdGhlIGluaXRpYWxpemF0aW9uLCBga3ZtX3g4Nl9vcHMucGlfdXBkYXRlX2lydGVgIGlzIHN0YXRpY2FsbHkgc2V0IHRvIGEgdmFsaWQgZnVuY3Rpb24gcG9pbnRlciBpbiBib3RoIFZNWCBhbmQgU1ZNIGltcGxlbWVudGF0aW9ucy4gVGhhdCBtZWFucyB0aGUgd2FybmluZyBjb25kaXRpb24gaXMgdmlydHVhbGx5IGltcG9zc2libGUuXG5cblNvLCByZWFsaXN0aWNhbGx5LCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBhY3R1YWwgZnVuY3Rpb25hbCBhbHRlcmF0aW9ucyB0aGF0IHdvdWxkIGV2ZW4gYmUgd29ydGggZnV6emluZy4gSXQgcmVhbGx5IGp1c3Qgc2VlbXMgbGlrZSBhIHN0cnVjdHVyYWwgY2xlYW51cCBvciBjb2RlIGh5Z2llbmUga2luZCBvZiBjaGFuZ2UuXG5cbkJ1dCwgYXMgYSBnb29kIHByYWN0aWNlLCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2ssIGp1c3QgdG8gYmUgc3VyZSwgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHNuZWFreSBpbnN0YW5jZXMgd2hlcmUgdGhlc2UgbWFjcm9zIGFjdHVhbGx5IGJlaGF2ZSBkaWZmZXJlbnRseS4gT25lIGZpbmFsIHN3ZWVwIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjMyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDA6MjIuNDU0NjkwMDEzWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzUzMDM5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJLVk1fWDg2X09QX09QVElPTkFMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTItI2lmICFkZWZpbmVkKEtWTV9YODZfT1ApIHx8IFxcXFxcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjM6ICAgICFkZWZpbmVkKEtWTV9YODZfT1BfT1BUSU9OQUwpIHx8IFxcXFxcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjQ6ICAgICFkZWZpbmVkKEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTUtI2Vycm9yIE1pc3Npbmcgb25lIG9yIG1vcmUgS1ZNX1g4Nl9PUCAjZGVmaW5lc1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC03LS8qXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo4OiAqIEtWTV9YODZfT1AoKSBhbmQgS1ZNX1g4Nl9PUF9PUFRJT05BTCgpIGFyZSB1c2VkIHRvIGhlbHAgZ2VuZXJhdGVcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTktICogYm90aCBERUNMQVJFL0RFRklORV9TVEFUSUNfQ0FMTCgpIGludm9jYXRpb25zIGFuZFxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xMS0gKlxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI6ICogS1ZNX1g4Nl9PUF9PUFRJT05BTCgpIGNhbiBiZSB1c2VkIGZvciB0aG9zZSBmdW5jdGlvbnMgdGhhdCBjYW4gaGF2ZVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM6ICogYSBOVUxMIGRlZmluaXRpb24uICBLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoKSBjYW4gYmUgdXNlZCBsaWtld2lzZVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTQtICogdG8gbWFrZSBhIGRlZmluaXRpb24gb3B0aW9uYWwsIGJ1dCBpbiB0aGlzIGNhc2UgdGhlIGRlZmF1bHQgd2lsbFxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD0yMz1LVk1fWDg2X09QKHZtX2luaXQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyNDpLVk1fWDg2X09QX09QVElPTkFMKHZtX2Rlc3Ryb3kpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoyNTpLVk1fWDg2X09QX09QVElPTkFMKHZtX3ByZV9kZXN0cm95KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MjY6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHZjcHVfcHJlY3JlYXRlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMjctS1ZNX1g4Nl9PUCh2Y3B1X2NyZWF0ZSlcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9NDM9S1ZNX1g4Nl9PUChzZXRfY3IwKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NDQ6S1ZNX1g4Nl9PUF9PUFRJT05BTChwb3N0X3NldF9jcjMpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC00NS1LVk1fWDg2X09QKGlzX3ZhbGlkX2NyNClcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9NTk9S1ZNX1g4Nl9PUChmbHVzaF90bGJfY3VycmVudClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTYwLSNpZiBJU19FTkFCTEVEKENPTkZJR19IWVBFUlYpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo2MTpLVk1fWDg2X09QX09QVElPTkFMKGZsdXNoX3JlbW90ZV90bGJzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6NjI6S1ZNX1g4Nl9PUF9PUFRJT05BTChmbHVzaF9yZW1vdGVfdGxic19yYW5nZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTYzLSNlbmRpZlxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaD02OT1LVk1fWDg2X09QKHNraXBfZW11bGF0ZWRfaW5zdHJ1Y3Rpb24pXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3MDpLVk1fWDg2X09QX09QVElPTkFMKHVwZGF0ZV9lbXVsYXRlZF9pbnN0cnVjdGlvbilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTcxLUtWTV9YODZfT1Aoc2V0X2ludGVycnVwdF9zaGFkb3cpXFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTc1PUtWTV9YODZfT1AoaW5qZWN0X25taSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjc2OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChpc192bm1pX3BlbmRpbmcpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo3NzpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X3ZubWlfcGVuZGluZylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTc4LUtWTV9YODZfT1AoaW5qZWN0X2V4Y2VwdGlvbilcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9ODU9S1ZNX1g4Nl9PUChlbmFibGVfaXJxX3dpbmRvdylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjg2OktWTV9YODZfT1BfT1BUSU9OQUwodXBkYXRlX2NyOF9pbnRlcmNlcHQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC04Ny1LVk1fWDg2X09QKHJlZnJlc2hfYXBpY3ZfZXhlY19jdHJsKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6ODg6S1ZNX1g4Nl9PUF9PUFRJT05BTChod2FwaWNfaXNyX3VwZGF0ZSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjg5OktWTV9YODZfT1BfT1BUSU9OQUwobG9hZF9lb2lfZXhpdG1hcClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjkwOktWTV9YODZfT1BfT1BUSU9OQUwoc2V0X3ZpcnR1YWxfYXBpY19tb2RlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTE6S1ZNX1g4Nl9PUF9PUFRJT05BTChzZXRfYXBpY19hY2Nlc3NfcGFnZV9hZGRyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtOTItS1ZNX1g4Nl9PUChkZWxpdmVyX2ludGVycnVwdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjkzOktWTV9YODZfT1BfT1BUSU9OQUwoc3luY19waXJfdG9faXJyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6OTQ6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKHNldF90c3NfYWRkcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjk1OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChzZXRfaWRlbnRpdHlfbWFwX2FkZHIpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZ2V0X210X21hc2spXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5NzpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAodGRwX2hhc19zbWVwKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtOTgtS1ZNX1g4Nl9PUChsb2FkX21tdV9wZ2QpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDo5OTpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoc2V0X2V4dGVybmFsX3NwdGUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMDA6S1ZNX1g4Nl9PUF9PUFRJT05BTChmcmVlX2V4dGVybmFsX3NwdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEwMS1LVk1fWDg2X09QKGhhc193YmludmRfZXhpdClcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9MTA5PUtWTV9YODZfT1AoaGFuZGxlX2V4aXRfaXJxb2ZmKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTEwOktWTV9YODZfT1BfT1BUSU9OQUwodXBkYXRlX2NwdV9kaXJ0eV9sb2dnaW5nKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTExOktWTV9YODZfT1BfT1BUSU9OQUwodmNwdV9ibG9ja2luZylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExMjpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfdW5ibG9ja2luZylcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTExMy1LVk1fWDg2X09QKHBpX3VwZGF0ZV9pcnRlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE0OktWTV9YODZfT1BfT1BUSU9OQUwocGlfc3RhcnRfYnlwYXNzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTE1OktWTV9YODZfT1BfT1BUSU9OQUwoYXBpY3ZfcHJlX3N0YXRlX3Jlc3RvcmUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTY6S1ZNX1g4Nl9PUF9PUFRJT05BTChhcGljdl9wb3N0X3N0YXRlX3Jlc3RvcmUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTc6S1ZNX1g4Nl9PUF9PUFRJT05BTF9SRVQwKGR5X2FwaWN2X2hhc19wZW5kaW5nX2ludGVycnVwdClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjExODpLVk1fWDg2X09QX09QVElPTkFMKHByb3RlY3RlZF9hcGljX2hhc19pbnRlcnJ1cHQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMTk6S1ZNX1g4Nl9PUF9PUFRJT05BTChzZXRfaHZfdGltZXIpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMjA6S1ZNX1g4Nl9PUF9PUFRJT05BTChjYW5jZWxfaHZfdGltZXIpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xMjEtS1ZNX1g4Nl9PUChzZXR1cF9tY2UpXFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTEyNj1LVk1fWDg2X09QKGVuYWJsZV9zbWlfd2luZG93KVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTI3LSNlbmRpZlxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI4OktWTV9YODZfT1BfT1BUSU9OQUwoZGV2X2dldF9hdHRyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTI5OktWTV9YODZfT1BfT1BUSU9OQUwobWVtX2VuY19pb2N0bClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzMDpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfbWVtX2VuY19pb2N0bClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzMTpLVk1fWDg2X09QX09QVElPTkFMKHZjcHVfbWVtX2VuY191bmxvY2tlZF9pb2N0bClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzMjpLVk1fWDg2X09QX09QVElPTkFMKG1lbV9lbmNfcmVnaXN0ZXJfcmVnaW9uKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTMzOktWTV9YODZfT1BfT1BUSU9OQUwobWVtX2VuY191bnJlZ2lzdGVyX3JlZ2lvbilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzNDpLVk1fWDg2X09QX09QVElPTkFMKHZtX2NvcHlfZW5jX2NvbnRleHRfZnJvbSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzNTpLVk1fWDg2X09QX09QVElPTkFMKHZtX21vdmVfZW5jX2NvbnRleHRfZnJvbSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjEzNjpLVk1fWDg2X09QX09QVElPTkFMKGd1ZXN0X21lbW9yeV9yZWNsYWltZWQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxMzc6S1ZNX1g4Nl9PUF9PUFRJT05BTChyZWxvYWRfdm1zYSlcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEzOC1LVk1fWDg2X09QKGdldF9mZWF0dXJlX21zcilcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9MTQwPUtWTV9YODZfT1AoYXBpY19pbml0X3NpZ25hbF9ibG9ja2VkKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQxOktWTV9YODZfT1BfT1BUSU9OQUwoZW5hYmxlX2wyX3RsYl9mbHVzaClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0MjpLVk1fWDg2X09QX09QVElPTkFMKG1pZ3JhdGVfdGltZXJzKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTQzLUtWTV9YODZfT1AocmVjYWxjX2ludGVyY2VwdHMpXFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTE0NT1LVk1fWDg2X09QKHZjcHVfZGVsaXZlcl9zaXBpX3ZlY3RvcilcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0NjpLVk1fWDg2X09QX09QVElPTkFMX1JFVDAodmNwdV9nZXRfYXBpY3ZfaW5oaWJpdF9yZWFzb25zKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE0NzpLVk1fWDg2X09QX09QVElPTkFMKGdldF91bnRhZ2dlZF9hZGRyKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTQ4OktWTV9YODZfT1BfT1BUSU9OQUwoYWxsb2NfYXBpY19iYWNraW5nX3BhZ2UpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNDktI2lmZGVmIENPTkZJR19IQVZFX0tWTV9BUkNIX0dNRU1fUFJFUEFSRVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTUwOktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChnbWVtX3ByZXBhcmUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTEtI2VuZGlmXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaDoxNTI6S1ZNX1g4Nl9PUF9PUFRJT05BTChnbWVtX2ludmFsaWRhdGUpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTMtI2lmZGVmIENPTkZJR19IQVZFX0tWTV9BUkNIX0dNRU1fSU5WQUxJREFURVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTU0OktWTV9YODZfT1BfT1BUSU9OQUwoZ21lbV9pbnZhbGlkYXRlX3JhbmdlKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTU1LSNlbmRpZlxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTU2OktWTV9YODZfT1BfT1BUSU9OQUxfUkVUMChnbWVtX21heF9tYXBwaW5nX2xldmVsKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTU3LSNlbmRpZlxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtLXg4Ni1vcHMuaC0xNTktI3VuZGVmIEtWTV9YODZfT1BcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oOjE2MDojdW5kZWYgS1ZNX1g4Nl9PUF9PUFRJT05BTFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTYxOiN1bmRlZiBLVk1fWDg2X09QX09QVElPTkFMX1JFVDBcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTc4Nz1leHRlcm4gc3RydWN0IGt2bV94ODZfbmVzdGVkX29wcyBrdm1fbmVzdGVkX29wcyBfX3JlYWRfbW9zdGx5O1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNzkyLVxcdERFQ0xBUkVfU1RBVElDX0NBTEwoa3ZtX3g4Nl8jI2Z1bmMsICooKChzdHJ1Y3Qga3ZtX3g4Nl9vcHMgKikwKS1cXHUwMDNlZnVuYykpO1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTc5MzojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgS1ZNX1g4Nl9PUFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTc5NDojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCBLVk1fWDg2X09QXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNzk1LSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtLXg4Ni1vcHMuaFxcdTAwM2VcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xNjY9c3RydWN0IGt2bV94ODZfbmVzdGVkX29wcyBrdm1fbmVzdGVkX29wcyBfX3JlYWRfbW9zdGx5O1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTE3MC1cXHRcXHRcXHRcXHQqKCgoc3RydWN0IGt2bV94ODZfb3BzICopMCktXFx1MDAzZWZ1bmMpKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTcxOiNkZWZpbmUgS1ZNX1g4Nl9PUF9PUFRJT05BTCBLVk1fWDg2X09QXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjE3MjojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUxfUkVUMCBLVk1fWDg2X09QXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTE3My0jaW5jbHVkZSBcXHUwMDNjYXNtL2t2bS14ODYtb3BzLmhcXHUwMDNlXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9Njk0Mj1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX29wc191cGRhdGUoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcylcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy02OTQ5LVxcdFdBUk5fT04oIWt2bV94ODZfb3BzLmZ1bmMpOyBfX0tWTV9YODZfT1AoZnVuYylcXG5hcmNoL3g4Ni9rdm0veDg2LmM6Njk1MDojZGVmaW5lIEtWTV9YODZfT1BfT1BUSU9OQUwgX19LVk1fWDg2X09QXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjY5NTE6I2RlZmluZSBLVk1fWDg2X09QX09QVElPTkFMX1JFVDAoZnVuYykgXFxcXFxcbmFyY2gveDg2L2t2bS94ODYuYy02OTUyLVxcdHN0YXRpY19jYWxsX3VwZGF0ZShrdm1feDg2XyMjZnVuYywgKHZvaWQgKilrdm1feDg2X29wcy5mdW5jID8gOiBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjAwOjIyLjUzMjIyNTg1MVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDAzMTg0MTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNX1g4Nl9PUF9PUFRJT05BTCBDaGFuZ2UqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIGBLVk1fWDg2X09QX09QVElPTkFMYCBpcyBqdXN0IGEgbWFjcm8sIGVmZmVjdGl2ZWx5IGV4cGFuZGluZyB0byBgc3RhdGljX2NhbGxfdXBkYXRlYCwgd2hpY2ggaW4gdHVybiwgaXMgY2FsbGluZyBga3ZtX3g4Nl9vcHMuZnVuY2AuICBUaGUga2V5IGhlcmUgaXMgdGhhdCBpZiBga3ZtX3g4Nl9vcHMuZnVuY2AgaXMgTlVMTCwgdGhlbiB0aGUgc3RhdGljIGNhbGwgZ2V0cyB1cGRhdGVkIHRvIE5VTEwuIEJ1dCwgaG9sZCBvbiBhIHNlY29uZC4uLiBgcGlfdXBkYXRlX2lydGVgICpuZXZlciogc2VlbXMgdG8gYmUgTlVMTC4gVGhlcmVmb3JlLCB0aGUgY2hhbmdlIHRvIGBLVk1fWDg2X09QYCBzaW1wbHkgdGhyb3dzIGluIGEgYFdBUk5fT04oIWt2bV94ODZfb3BzLmZ1bmMpYCBjaGVjay5cblxuRXNzZW50aWFsbHksIHRoaXMgaXMgYSBzdHJ1Y3R1cmFsIGNoYW5nZSwgYW5kIG5vdGhpbmcgbW9yZS4gSXQncyBlc3NlbnRpYWxseSBmb3JjaW5nIGFsbCBLVk0geDg2IGltcGxlbWVudGF0aW9ucyB0byBwcm92aWRlIHRoaXMgYHBpX3VwZGF0ZV9pcnRlYCBmdW5jdGlvbiwgYWRkaW5nIGFuIGVhcmx5IGNoZWNrIGF0IG1vZHVsZSBsb2FkIHRvIGVuc3VyZSBpdHMgcHJlc2VuY2UuIEhvd2V2ZXIsIHNpbmNlIGFsbCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSAqZG8qIHByb3ZpZGUgaXQsIHRoZSBhY3R1YWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbCByZW1haW5zIHVuY2hhbmdlZC4gVGhlcmUncyBubyBkZXRlY3RhYmxlIG1vZGlmaWNhdGlvbiB0byBhbnkgY29yZSBrZXJuZWwgbG9naWMgcmVhY2hhYmxlIHRocm91Z2ggc3RhbmRhcmQgbWVhbnMsIGFuZCBzbyBpdCBjYW4ndCBiZSBmdXp6ZWQgaW4gYW55IG1lYW5pbmdmdWwgd2F5LlxuXG5HaXZlbiB0aGlzIGFuYWx5c2lzLCBJJ20gY29uZmlkZW50IGluIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJhdGlvbmFsZSBpcyB0aGF0IHRoaXMgaXMgcHVyZWx5IHN0cnVjdHVyYWwsIGEgc2ltcGxlIGVuZm9yY2VtZW50IG9mIGFuIGV4aXN0aW5nIHJlcXVpcmVtZW50LiBUaGlzIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGV4cG9zZSBhbnkgbmV3IGNvZGUgcGF0aHMgdG8gZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0NzgsIk91dHB1dFRva2VucyI6MTA3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjAwOjI4LjkzNTQxMjMzN1oiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGBwaV91cGRhdGVfaXJ0ZWAgS1ZNIHg4NiBvcGVyYXRpb24gZnJvbSBvcHRpb25hbCB0byBtYW5kYXRvcnkuIFRoaXMgb25seSBhZGRzIGEgYFdBUk5fT05gIGNoZWNrIGR1cmluZyBLVk0gbW9kdWxlIGluaXRpYWxpemF0aW9uIHRvIGVuc3VyZSB0aGUgZnVuY3Rpb24gcG9pbnRlciBpcyBwcm92aWRlZC4gU2luY2UgYm90aCBWTVggYW5kIFNWTSBpbXBsZW1lbnRhdGlvbnMgYWxyZWFkeSB1bmNvbmRpdGlvbmFsbHkgcHJvdmlkZSB0aGlzIGZ1bmN0aW9uLCB0aGUgd2FybmluZyBpcyB1bnJlYWNoYWJsZSBhbmQgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgcGlfdXBkYXRlX2lydGVgIEtWTSB4ODYgb3BlcmF0aW9uIGZyb20gb3B0aW9uYWwgdG8gbWFuZGF0b3J5LiBUaGlzIG9ubHkgYWRkcyBhIGBXQVJOX09OYCBjaGVjayBkdXJpbmcgS1ZNIG1vZHVsZSBpbml0aWFsaXphdGlvbiB0byBlbnN1cmUgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaXMgcHJvdmlkZWQuIFNpbmNlIGJvdGggVk1YIGFuZCBTVk0gaW1wbGVtZW50YXRpb25zIGFscmVhZHkgdW5jb25kaXRpb25hbGx5IHByb3ZpZGUgdGhpcyBmdW5jdGlvbiwgdGhlIHdhcm5pbmcgaXMgdW5yZWFjaGFibGUgYW5kIHRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCdzIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowgv2zg[1] Phase: Running StartedAt: 2026-07-15 16:00:40 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgv2zg[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-15 16:00:40 +0000 UTC FinishedAt: 2026-07-15 16:00:46 +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,}