Name: series-workflowvv489 Phase: Failed StartedAt: 2026-08-10 14:33:06 +0000 UTC FinishedAt: 2026-08-10 14:37:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv489[0] Phase: Succeeded StartedAt: 2026-08-10 14:33:06 +0000 UTC FinishedAt: 2026-08-10 14:37:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv489[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 14:33:06 +0000 UTC FinishedAt: 2026-08-10 14:37:41 +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+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIE1UNzkxNSBQQ0llIFdpLUZpIGRyaXZlciAobXQ3OTE1KSB0byBmaXggYSB0aGVybWFsIHpvbmUgdW5yZWdpc3RyYXRpb24gaXNzdWUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0byBpbml0aWFsaXplIChlLmcuLCBwYXNzaW5nIGRyaXZlciBvd25lcnNoaXAgY2hlY2tzLCBmaXJtd2FyZSBsb2FkaW5nLCBhbmQgTUNVIGNvbW11bmljYXRpb24pLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbiBgbXQ3OTE1X3RoZXJtYWxfaW5pdGAgYW5kIGBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsYCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwZGU0MDIwMDFlZTZjZTViMzliYWNjOGU4NmFlYjlmZDBmYjY2MWVjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTQ6MzU6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jXG5pbmRleCBjYTQ2YTIwM2FhNDhiLi41ZmU3MGRjODIyZWJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmNcbkBAIC0yMDAsNiAmIzQzOzIwMCw5IEBAIHN0YXRpYyB2b2lkIG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbiB7XG4gXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gcGh5LVx1MDAzZW10NzYtXHUwMDNlaHctXHUwMDNld2lwaHk7XG4gXG4mIzQzO1x0aWYgKHBoeS1cdTAwM2V0em9uZSlcbiYjNDM7XHRcdGRldm1fdGhlcm1hbF9vZl96b25lX3VucmVnaXN0ZXIocGh5LVx1MDAzZWRldi1cdTAwM2VtdDc2LmRldiwgcGh5LVx1MDAzZXR6b25lKTtcbiYjNDM7XG4gXHRpZiAoIXBoeS1cdTAwM2VjZGV2KVxuIFx0XHRyZXR1cm47XG4gXG5AQCAtMjEzLDYgJiM0MzsyMTYsNyBAQCBzdGF0aWMgaW50IG10NzkxNV90aGVybWFsX2luaXQoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbiBcdHN0cnVjdCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlICpjZGV2O1xuIFx0c3RydWN0IGRldmljZSAqaHdtb247XG4gXHRjb25zdCBjaGFyICpuYW1lO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRuYW1lID0gZGV2bV9rYXNwcmludGYoXHUwMDI2d2lwaHktXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcJiMzNDttdDc5MTVfJXNcJiMzNDssXG4gXHRcdFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xuQEAgLTIzOCw4ICYjNDM7MjQyLDggQEAgc3RhdGljIGludCBtdDc5MTVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4gXHRpZiAoSVNfRVJSKHBoeS1cdTAwM2V0em9uZSkpIHtcbiBcdFx0aWYgKFBUUl9FUlIocGh5LVx1MDAzZXR6b25lKSAhPSAtRU5PREVWKVxuIFx0XHRcdGRldl93YXJuKHBoeS1cdTAwM2VkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4tXHRcdFx0XHQgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIHRoZXJtYWwgem9uZTogJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0IFBUUl9FUlIocGh5LVx1MDAzZXR6b25lKSk7XG4mIzQzO1x0XHRcdFx0IFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciB0aGVybWFsIHpvbmUgJWQ6ICVsZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgcGh5LVx1MDAzZW10NzYtXHUwMDNlYmFuZF9pZHgsIFBUUl9FUlIocGh5LVx1MDAzZXR6b25lKSk7XG4gXHRcdHBoeS1cdTAwM2V0em9uZSA9IE5VTEw7XG4gXHR9XG4gXG5AQCAtMjQ4LDcgJiM0MzsyNTIsMTEgQEAgc3RhdGljIGludCBtdDc5MTVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4gXG4gXHRod21vbiA9IGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzKFx1MDAyNndpcGh5LVx1MDAzZWRldiwgbmFtZSwgcGh5LFxuIFx0XHRcdFx0XHRcdCAgICAgICBtdDc5MTVfaHdtb25fZ3JvdXBzKTtcbi1cdHJldHVybiBQVFJfRVJSX09SX1pFUk8oaHdtb24pO1xuJiM0MztcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyhod21vbik7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwocGh5KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbXQ3OTE1X2xlZF9zZXRfY29uZmlnKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTE1IFBDSWUgV2ktRmkgZHJpdmVyIChtdDc5MTUpIHRvIGZpeCBhIHRoZXJtYWwgem9uZSB1bnJlZ2lzdHJhdGlvbiBpc3N1ZS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGluaXRpYWxpemUgKGUuZy4sIHBhc3NpbmcgZHJpdmVyIG93bmVyc2hpcCBjaGVja3MsIGZpcm13YXJlIGxvYWRpbmcsIGFuZCBNQ1UgY29tbXVuaWNhdGlvbikuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGluIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBhbmQgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBkZTQwMjAwMWVlNmNlNWIzOWJhY2M4ZTg2YWViOWZkMGZiNjYxZWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxMCAxNDozNTowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYwppbmRleCBjYTQ2YTIwM2FhNDhiLi41ZmU3MGRjODIyZWJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jCkBAIC0yMDAsNiAmIzQzOzIwMCw5IEBAIHN0YXRpYyB2b2lkIG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoc3RydWN0IG10NzkxNV9waHkgKnBoeSkKIHsKIAlzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gcGh5LSZndDttdDc2LSZndDtody0mZ3Q7d2lwaHk7CiAKJiM0MzsJaWYgKHBoeS0mZ3Q7dHpvbmUpCiYjNDM7CQlkZXZtX3RoZXJtYWxfb2Zfem9uZV91bnJlZ2lzdGVyKHBoeS0mZ3Q7ZGV2LSZndDttdDc2LmRldiwgcGh5LSZndDt0em9uZSk7CiYjNDM7CiAJaWYgKCFwaHktJmd0O2NkZXYpCiAJCXJldHVybjsKIApAQCAtMjEzLDYgJiM0MzsyMTYsNyBAQCBzdGF0aWMgaW50IG10NzkxNV90aGVybWFsX2luaXQoc3RydWN0IG10NzkxNV9waHkgKnBoeSkKIAlzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZSAqY2RldjsKIAlzdHJ1Y3QgZGV2aWNlICpod21vbjsKIAljb25zdCBjaGFyICpuYW1lOwomIzQzOwlpbnQgcmV0OwogCiAJbmFtZSA9IGRldm1fa2FzcHJpbnRmKCZhbXA7d2lwaHktJmd0O2RldiwgR0ZQX0tFUk5FTCwgJiMzNDttdDc5MTVfJXMmIzM0OywKIAkJCSAgICAgIHdpcGh5X25hbWUod2lwaHkpKTsKQEAgLTIzOCw4ICYjNDM7MjQyLDggQEAgc3RhdGljIGludCBtdDc5MTVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpCiAJaWYgKElTX0VSUihwaHktJmd0O3R6b25lKSkgewogCQlpZiAoUFRSX0VSUihwaHktJmd0O3R6b25lKSAhPSAtRU5PREVWKQogCQkJZGV2X3dhcm4ocGh5LSZndDtkZXYtJmd0O210NzYuZGV2LAotCQkJCSAmIzM0O2ZhaWxlZCB0byByZWdpc3RlciB0aGVybWFsIHpvbmU6ICVsZFxuJiMzNDssCi0JCQkJIFBUUl9FUlIocGh5LSZndDt0em9uZSkpOwomIzQzOwkJCQkgJiMzNDtmYWlsZWQgdG8gcmVnaXN0ZXIgdGhlcm1hbCB6b25lICVkOiAlbGRcbiYjMzQ7LAomIzQzOwkJCQkgcGh5LSZndDttdDc2LSZndDtiYW5kX2lkeCwgUFRSX0VSUihwaHktJmd0O3R6b25lKSk7CiAJCXBoeS0mZ3Q7dHpvbmUgPSBOVUxMOwogCX0KIApAQCAtMjQ4LDcgJiM0MzsyNTIsMTEgQEAgc3RhdGljIGludCBtdDc5MTVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpCiAKIAlod21vbiA9IGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzKCZhbXA7d2lwaHktJmd0O2RldiwgbmFtZSwgcGh5LAogCQkJCQkJICAgICAgIG10NzkxNV9od21vbl9ncm91cHMpOwotCXJldHVybiBQVFJfRVJSX09SX1pFUk8oaHdtb24pOwomIzQzOwlyZXQgPSBQVFJfRVJSX09SX1pFUk8oaHdtb24pOwomIzQzOwlpZiAocmV0KQomIzQzOwkJbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChwaHkpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZCBtdDc5MTVfbGVkX3NldF9jb25maWcoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2ktRmkgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jYC4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSB0aGVybWFsIG1hbmFnZW1lbnQsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyB1cGRhdGluZyB0aGUgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGZ1bmN0aW9uIHRvIHVucmVnaXN0ZXIgdGhlIHRoZXJtYWwgem9uZSAoYHBoeS0mZ3Q7dHpvbmVgKSB1c2luZyBgZGV2bV90aGVybWFsX29mX3pvbmVfdW5yZWdpc3RlcmAgaWYgdGhhdCB6b25lIGV4aXN0cy4gVGhhdCYjMzk7cyBnb29kIHByYWN0aWNlLiBBbmQgdGhlbiwgaW4gYG10NzkxNV90aGVybWFsX2luaXRgLCBpZiBgZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHNgIGZhaWxzLCBpdCBub3cgY2FsbHMgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwocGh5KWAuIE1ha2VzIHNlbnNlLCBjbGVhbnVwIGlzIGNydWNpYWwgb24gaW5pdGlhbGl6YXRpb24gZmFpbHVyZXMuIE9oLCBhbmQgaXQmIzM5O3MgYWxzbyB0d2Vha2luZyBhIHdhcm5pbmcgbWVzc2FnZSwgcHJvYmFibHkgZm9yIGJldHRlciBjbGFyaXR5LgoKQnV0IHdhaXQgYSBzZWNvbmQuLi4gYG10NzkxNWAuLi4gdGhhdCYjMzk7cyBhIE1lZGlhVGVrIFdpLUZpIGRyaXZlciwgaXNuJiMzOTt0IGl0PyBSaWdodCwgaXQmIzM5O3MgZm9yIHRob3NlIE1UNzkxNSwgTVQ3OTg2LCBNVDc5MTYsIGFuZCBNVDc5ODEgY2hpcHNldHMuIEkgc2VlbSB0byByZWNhbGwgaXQgYmVpbmcgYSBQQ0llIGRyaXZlci4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0LiBZZXMsIGl0JiMzOTtzIGEgUENJZSBkcml2ZXIuIFRoYXQgdGhyb3dzIHVwIGEgYml0IG9mIGEgZmxhZyBmb3IgZnV6emluZyBjb25zaWRlcmF0aW9ucy4gUENJZSBXaS1GaSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRoZSB2ZW5kb3Itc3BlY2lmaWMgb25lcyBsaWtlIHRoaXMsIGFyZW4mIzM5O3QgdXN1YWxseSB0aGUgZWFzaWVzdCB0byBmdXp6IGRpcmVjdGx5IGluIHNvbWV0aGluZyBsaWtlIFFFTVUuIFRoZXkgb2Z0ZW4gcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgdGhhdCBhcmUgdG91Z2ggdG8gZW11bGF0ZS4gVW5sZXNzIHRoZXkgaGF2ZSBzb21lIGRlZGljYXRlZCBlbXVsYXRpb24gc3VwcG9ydCwgb3IgaGFwcGVuIHRvIGJlIFVTQi9TRElPIGRyaXZlcnMgd2hpY2ggYXJlIGEgYml0IG1vcmUgYW1lbmFibGUgdG8gZW11bGF0aW9uLCBmdXp6aW5nIFBDSWUgZHJpdmVycyBpcyBhIGNoYWxsZW5nZS4gU28sIEkgbmVlZCB0byBjaGVjayBob3cgZXhhY3RseSBpdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgZGV2aWNlLCB0aGUgbmF0dXJlIG9mIHRoZSBpbnRlcmZhY2Ugd2lsbCBkZXRlcm1pbmUgYSBtb3JlIHN1aXRhYmxlIG1ldGhvZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU3MzEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5MTVFKSAmIzQzOz0gbXQ3OTE1ZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZS00LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGU6NTptdDc5MTVlLXkgOj0gcGNpLm8gaW5pdC5vIGRtYS5vIGVlcHJvbS5vIG1haW4ubyBtY3UubyBtYWMubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUtNi1cdCAgICAgZGVidWdmcy5vIG1taW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlOjg6bXQ3OTE1ZS0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGU6OTptdDc5MTVlLSQoQ09ORklHX01UNzk4WF9XTUFDKSAmIzQzOz0gc29jLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlOjEwOm10NzkxNWUtJChDT05GSUdfREVWX0NPUkVEVU1QKSAmIzQzOz0gY29yZWR1bXAub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MTI9TU9EVUxFX1BBUk1fREVTQyhjb3JlZHVtcF9tZW1kdW1wLCBcJiMzNDtPcHRpb25hbCBhYmlsaXR5IHRvIGR1bXAgZmlybXdhcmUgbWVtb3J5XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gbXQ3OTE1X21lbV9yZWdpb25zW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE1LVx0e1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gbXQ3OTE2X21lbV9yZWdpb25zW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIzLVx0e1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjU1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gbXQ3OTh4X21lbV9yZWdpb25zW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTU2LVx0e1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjg4OmNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6ODk6bXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHUzMiAqbnVtKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy05MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy05Mi1cdGNhc2UgMHg3OTE1OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo5MzpcdFx0Km51bSA9IEFSUkFZX1NJWkUobXQ3OTE1X21lbV9yZWdpb25zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6OTQ6XHRcdHJldHVybiBcdTAwMjZtdDc5MTVfbWVtX3JlZ2lvbnNbMF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTk1LVx0Y2FzZSAweDc5ODE6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjEwNzpzdGF0aWMgaW50IG10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX3NpemUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTA4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTA5Olx0Y29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uICptZW1fcmVnaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMTAtXHRzaXplX3Qgc2l6ZSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjExNDpcdG1lbV9yZWdpb24gPSBtdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoZGV2LCBcdTAwMjZudW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMTUtXHRpZiAoIW1lbV9yZWdpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMjMtXHQvKiByZXNlcnZlIHNwYWNlIGZvciB0aGUgaGVhZGVycyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMjQ6XHRzaXplICYjNDM7PSBudW0gKiBzaXplb2Yoc3RydWN0IG10NzkxNV9tZW1faGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTI1LVx0LyogbWFrZSBzdXJlIGl0IGlzIGFsaWduZWQgNCBieXRlcyBmb3IgZGVidWcgbWVzc2FnZSBwcmludCBvdXQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTMxOnN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqbXQ3OTE1X2NvcmVkdW1wX25ldyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMzM6XHRzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKmNyYXNoX2RhdGEgPSBkZXYtXHUwMDNlY29yZWR1bXAuY3Jhc2hfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTM0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MTQzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE0NDptdDc5MTVfY29yZWR1bXBfZndfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTQ1LVx0XHRcdCBib29sICpleGNlcHRpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNTAtXHRzdGF0ZSA9ICh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9GV19BU1NFUlRfU1RBVCwgR0VOTUFTSyg3LCAwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE1MTpcdGNvdW50ID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE1Mi1cdFx0KHUzMiltdDc2X2dldF9maWVsZChkZXYsIE1UX0ZXX0VYQ0VQVF9DT1VOVCwgR0VOTUFTSygxNSwgOCkpIDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTE2Nj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNjc6bXQ3OTE1X2NvcmVkdW1wX2Z3X3RyYWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE2OC1cdFx0XHQgYm9vbCBleGNlcHRpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE3NTpcdG4gPSBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTc2LVx0ICAgICh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBiYXNlLCBHRU5NQVNLKDcsIDApKSA6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xODAtXHRpcnEgPSBtdDc2X3JyKGRldiwgYmFzZSAmIzQzOyAweDgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxODE6XHRuID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE4Mi1cdCAgICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgaXJxKSA6IEZJRUxEX0dFVChHRU5NQVNLKDIzLCAxNiksIGlycSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xODUtXHRzY2ggPSBtdDc2X3JyKGRldiwgTVRfRldfU0NIRURfSU5GTyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE4NjpcdG4gPSBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTg3LVx0ICAgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCBzY2gpIDogRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCBzY2gpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTkzLVx0XHQvKiBzY2hlZCB0cmFjZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxOTQ6XHRcdG4gPSBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTk1LVx0XHQgICAgRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCBzY2gpIDogRklFTERfR0VUKEdFTk1BU0soNywgMCksIHNjaCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDEtXHRcdGZvciAoeSA9IGR1bXAtXHUwMDNlc2NoZWRfaW5mb19pZHgsIGkgPSAwOyBpIFx1MDAzYyBuOyBpJiM0MzsmIzQzOywgeSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjAyOlx0XHRcdG10NzkxNV9tZW1jcHlfZnJvbWlvKGRldiwgZHVtcC1cdTAwM2VzY2hlZCwgYmFzZSAmIzQzOyAweGMgJiM0MzsgeSAqIDEyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDMtXHRcdFx0XHRcdCAgICAgc2l6ZW9mKGR1bXAtXHUwMDNlc2NoZWQpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIwNy1cdFx0LyogaXJxIHRyYWNlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIwODpcdFx0biA9IGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgP1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDktXHRcdCAgICBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIGlycSkgOiBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgaXJxKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIxNS1cdFx0Zm9yICh5ID0gZHVtcC1cdTAwM2VpcnFfaW5mb19pZHgsIGkgPSAwOyBpIFx1MDAzYyBuOyBpJiM0MzsmIzQzOywgeSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjE2Olx0XHRcdG10NzkxNV9tZW1jcHlfZnJvbWlvKGRldiwgZHVtcC1cdTAwM2VpcnEsIGJhc2UgJiM0MzsgMHg0ICYjNDM7IHkgKiAxNixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjE3LVx0XHRcdFx0XHQgICAgIHNpemVvZihkdW1wLVx1MDAzZWlycSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MjIzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIyNDptdDc5MTVfY29yZWR1bXBfZndfc3RhY2soc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjI1LVx0XHRcdCBib29sIGV4Y2VwdGlvbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTI0ND1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyNDU6bXQ3OTE1X2NvcmVkdW1wX2Z3X3Rhc2soc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjQ2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjQ3Olx0dTMyIG9mZnMgPSBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID8gMHhlMCA6IDB4MTcwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz0yNjg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjY5Om10NzkxNV9jb3JlZHVtcF9md19jb250ZXh0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTI3MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjI4MDpcdFx0aWR4ID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTI4MS1cdFx0ICAgICAgKHUzMiltdDc2X2dldF9maWVsZChkZXYsIE1UX0ZXX0NJUlFfSURYLCBHRU5NQVNLKDMxLCAxNikpIDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzAyOnN0YXRpYyBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICptdDc5MTVfY29yZWR1bXBfYnVpbGQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzAzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzA0Olx0c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICpjcmFzaF9kYXRhID0gZGV2LVx1MDAzZWNvcmVkdW1wLmNyYXNoX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMwNTpcdHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMwNjpcdHN0cnVjdCBtdDc5MTVfY29yZWR1bXBfbWVtICpkdW1wX21lbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzA3LVx0c2l6ZV90IGxlbiwgc29mYXIgPSAwLCBoZHJfbGVuID0gc2l6ZW9mKCpkdW1wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzI3Olx0ZHVtcCA9IChzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICopKGJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMyOC1cdGR1bXAtXHUwMDNlbGVuID0gbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDE6XHRtdDc5MTVfY29yZWR1bXBfZndfc3RhdGUoZGV2LCBkdW1wLCBcdTAwMjZleGNlcHRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDI6XHRtdDc5MTVfY29yZWR1bXBfZndfdHJhY2UoZGV2LCBkdW1wLCBleGNlcHRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDM6XHRtdDc5MTVfY29yZWR1bXBfZndfdGFzayhkZXYsIGR1bXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDQ6XHRtdDc5MTVfY29yZWR1bXBfZndfY29udGV4dChkZXYsIGR1bXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDU6XHRtdDc5MTVfY29yZWR1bXBfZndfc3RhY2soZGV2LCBkdW1wLCBleGNlcHRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM0Ny1cdC8qIGdhdGhlciBtZW1vcnkgY29udGVudCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDg6XHRkdW1wX21lbSA9IChzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wX21lbSAqKShidWYgJiM0Mzsgc29mYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNDktXHRkdW1wX21lbS1cdTAwM2VsZW4gPSBjcmFzaF9kYXRhLVx1MDAzZW1lbWR1bXBfYnVmX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzU5OmludCBtdDc5MTVfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM2MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM2MTpcdHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzYzOlx0ZHVtcCA9IG10NzkxNV9jb3JlZHVtcF9idWlsZChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNjQtXHRpZiAoIWR1bXApIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6Mzc0OmludCBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzc1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6Mzc2Olx0c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICpjcmFzaF9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNzctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zODQtXHRpZiAoY29yZWR1bXBfbWVtZHVtcCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozODU6XHRcdGNyYXNoX2RhdGEtXHUwMDNlbWVtZHVtcF9idWZfbGVuID0gbXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fc2l6ZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zODYtXHRcdGlmICghY3Jhc2hfZGF0YS1cdTAwM2VtZW1kdW1wX2J1Zl9sZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjQwMDp2b2lkIG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTQwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDo3OiNpbmNsdWRlIFwmIzM0O210NzkxNS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oPTk9c3RydWN0IHRyYWNlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxNDpzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTUtXHRjaGFyIG1hZ2ljWzE2XTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDo4MDpzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wX21lbSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTgxLVx0dTMyIGxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDo4NTpzdHJ1Y3QgbXQ3OTE1X21lbV9oZHIge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC04Ni1cdHUzMiBzdGFydDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDo5MTpzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC05Mi1cdHUzMiBzdGFydDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDA6Y29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTAxOm10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgKm51bSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwMjpzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKm10NzkxNV9jb3JlZHVtcF9uZXcoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwMzppbnQgbXQ3OTE1X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTA0OmludCBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwNTp2b2lkIG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMDYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwOTpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjExMDptdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyICpudW0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTExMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjExNTpzdGF0aWMgaW5saW5lIGludCBtdDc5MTVfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTExNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEyMDpzdGF0aWMgaW5saW5lIHN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqbXQ3OTE1X2NvcmVkdW1wX25ldyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMjU6c3RhdGljIGlubGluZSBpbnQgbXQ3OTE1X2NvcmVkdW1wX3JlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEyNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEzMDpzdGF0aWMgaW5saW5lIHZvaWQgbXQ3OTE1X2NvcmVkdW1wX3VucmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTMxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNC0jaW5jbHVkZSBcdTAwM2NsaW51eC9yZWxheS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTojaW5jbHVkZSBcJiMzNDttdDc5MTUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTYtI2luY2x1ZGUgXCYjMzQ7ZWVwcm9tLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIyOm10NzkxNV9pbXBsaWNpdF90eGJmX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNDpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzozMTpcdHJldHVybiBtdDc5MTVfbWN1X3NldF90eGJmKGRldiwgTVRfQkZfVFlQRV9VUERBVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTMyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MzQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjM1Om10NzkxNV9pbXBsaWNpdF90eGJmX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Mzc6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfaW1wbGljaXRfdHhiZiwgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ1Olx0XHRcdCBtdDc5MTVfaW1wbGljaXRfdHhiZl9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz00OD1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ5Om10NzkxNV9zeXNfcmVjb3Zlcnlfc2V0KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTAtXHRcdFx0c2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUyOlx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUzOlx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTQtXHRib29sIGJhbmQgPSBwaHktXHUwMDNlbXQ3Ni1cdTAwM2ViYW5kX2lkeDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzQtXHRjYXNlIFNFUl9RVUVSWTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3NTpcdFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgMCwgMCwgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzYtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04Mi1cdGNhc2UgU0VSX1NFVF9SRUNPVkVSX0wzX0JGOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgzOlx0XHRyZXQgPSBtdDc5MTVfbWN1X3NldF9zZXIoZGV2LCBTRVJfRU5BQkxFLCBCSVQodmFsKSwgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODQtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjg3Olx0XHRyZXQgPSBtdDc5MTVfbWN1X3NldF9zZXIoZGV2LCBTRVJfUkVDT1ZFUiwgdmFsLCBiYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04OC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkyLVx0XHRtdDc2X3NldChkZXYsIE1UX1dGRE1BMF9NQ1VfSE9TVF9JTlRfRU5BLCBNVF9NQ1VfQ01EX1dEVF9NQVNLKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5MzpcdFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgMSwgMywgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTQtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk3LVx0XHRkZXYtXHUwMDNlcmVjb3Zlcnkuc3RhdGUgfD0gTVRfTUNVX0NNRF9XRFRfTUFTSztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5ODpcdFx0bXQ3OTE1X3Jlc2V0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0xMTM9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMTQ6bXQ3OTE1X3N5c19yZWNvdmVyeV9nZXQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMTUtXHRcdFx0c2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTE2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMTc6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTE4Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTE5LVx0Y2hhciAqYnVmZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjE5MzpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBtdDc5MTVfc3lzX3JlY292ZXJ5X29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxOTQ6XHQud3JpdGUgPSBtdDc5MTVfc3lzX3JlY292ZXJ5X3NldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxOTU6XHQucmVhZCA9IG10NzkxNV9zeXNfcmVjb3ZlcnlfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTE5Ni1cdC5vcGVuID0gc2ltcGxlX29wZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTIwMD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjAxOm10NzkxNV9yYWRhcl90cmlnZ2VyKHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjAyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjA0LSNkZWZpbmUgUkFEQVJfQkFDS0dST1VORFx0MlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIwNTpcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIwNjpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIwNy1cdGludCByZGRfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjE3Olx0cmRkX2lkeCA9IG10NzkxNV9nZXRfcmRkX2lkeChwaHksIHZhbCA9PSBSQURBUl9CQUNLR1JPVU5EKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMTgtXHRpZiAocmRkX2lkeCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0yMjc9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfdHJpZ2dlciwgTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMjg6XHRcdFx0IG10NzkxNV9yYWRhcl90cmlnZ2VyLCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjMwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMzE6bXQ3OTE1X211cnVfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjMyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMzM6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjM1LVx0ZGV2LVx1MDAzZW11cnVfZGVidWcgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjM2Olx0bXQ3OTE1X21jdV9tdXJ1X2RlYnVnX3NldChkZXYsIGRldi1cdTAwM2VtdXJ1X2RlYnVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMzctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTI0MT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQyOm10NzkxNV9tdXJ1X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNDMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI0NDpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI0NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1MTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19tdXJ1X2RlYnVnLCBtdDc5MTVfbXVydV9kZWJ1Z19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjUyOlx0XHRcdCBtdDc5MTVfbXVydV9kZWJ1Z19zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNTQ6c3RhdGljIGludCBtdDc5MTVfbXVydV9zdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1NjpcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjU3Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjU4LVx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBkbF9ub25faGVfdHlwZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjgxOlx0cmV0ID0gbXQ3OTE1X21jdV9tdXJ1X2RlYnVnX2dldChwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI4Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQzOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDQwOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfbXVydV9zdGF0cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTQ0Mj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDQzOm10NzkxNV9yZGRfbW9uaXRvcihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDQ0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NDU6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXHUwMDNlcHJpdmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDQ2LVx0c3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmID0gXHUwMDI2ZGV2LVx1MDAzZXJkZDJfY2hhbmRlZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ1MjpcdGlmICghbXQ3OTE1X2VlcHJvbV9oYXNfYmFja2dyb3VuZF9yYWRhcihkZXYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDUzLVx0XHRzZXFfcHV0cyhzLCBcJiMzNDtubyBiYWNrZ3JvdW5kIHJhZGFyIGNhcGFiaWxpdHlcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz00OTQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ5NTptdDc5MTVfZndfZGVidWdfd21fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDk2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0OTc6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00OTgtXHRlbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUxOTpcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV00sIHZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTIwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUyOTpcdFx0cmV0ID0gbXQ3OTE1X21jdV9md19kYmdfY3RybChkZXYsIGRlYnVnLCB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUzMC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NTQ4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NDk6bXQ3OTE1X2Z3X2RlYnVnX3dtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU1MTpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU1Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU1ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193bSwgbXQ3OTE1X2Z3X2RlYnVnX3dtX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NTk6XHRcdFx0IG10NzkxNV9md19kZWJ1Z193bV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01NjE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU2MjptdDc5MTVfZndfZGVidWdfd2Ffc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTYzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NjQ6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NjUtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTY5Olx0cmV0ID0gbXQ3OTE1X21jdV9md19sb2dfMl9ob3N0KGRldiwgTUNVX0ZXX0xPR19XQSwgZGV2LVx1MDAzZWZ3LmRlYnVnX3dhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTczOlx0cmV0ID0gbXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKFNFVCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTc0LVx0XHRcdFx0TUNVX1dBX1BBUkFNX1BETUFfUlgsICEhZGV2LVx1MDAzZWZ3LmRlYnVnX3dhLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NTgyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1ODM6bXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01ODQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU4NTpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU4Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU5MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193YSwgbXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1OTM6XHRcdFx0IG10NzkxNV9md19kZWJ1Z193YV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU5NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjE5PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2MjA6bXQ3OTE1X2Z3X2RlYnVnX2Jpbl9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MjUtXHR9O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjYyNjpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTYyNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjYzODpcdHJldHVybiBtdDc5MTVfZndfZGVidWdfd21fc2V0KGRldiwgZGV2LVx1MDAzZWZ3LmRlYnVnX3dtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MzktfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02NDE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY0MjptdDc5MTVfZndfZGVidWdfYmluX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NDMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY0NDpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY0NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY1MTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z19iaW4sIG10NzkxNV9md19kZWJ1Z19iaW5fZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY1MjpcdFx0XHQgbXQ3OTE1X2Z3X2RlYnVnX2Jpbl9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02NTQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY1NTptdDc5MTVfZndfdXRpbF93bV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY1NzpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjU4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjczOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfZndfdXRpbF93bSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTY3NT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Njc2Om10NzkxNV9md191dGlsX3dhX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY3Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Njc4Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGZpbGUtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY4Mi1cdGlmIChkZXYtXHUwMDNlZncuZGVidWdfd2EpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjgzOlx0XHRyZXR1cm4gbXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKFFVRVJZKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02ODQtXHRcdFx0XHRcdCBNQ1VfV0FfUEFSQU1fQ1BVX1VUSUwsIDAsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02ODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Njg5OkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfZndfdXRpbF93YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTY5MT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY5MjptdDc5MTVfYW1wZHVfc3RhdF9yZWFkX3BoeShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY5My1cdFx0XHQgICBzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjk0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2OTU6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTYtXHRib29sIGV4dF9waHkgPSBwaHkgIT0gXHUwMDI2ZGV2LVx1MDAzZXBoeTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NzIyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzIzOm10NzkxNV90eGJmX3N0YXRfcmVhZF9waHkoc3RydWN0IG10NzkxNV9waHkgKnBoeSwgc3RydWN0IHNlcV9maWxlICpzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTcyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTc2OT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzcwOm10NzkxNV90eF9zdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03NzEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc3MjpcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzczOlx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzc0LVx0c3RydWN0IG10NzZfbWliX3N0YXRzICptaWIgPSBcdTAwMjZwaHktXHUwMDNlbWliO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03NzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Nzc5Olx0bXQ3OTE1X2FtcGR1X3N0YXRfcmVhZF9waHkocGh5LCBmaWxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3ODA6XHRtdDc5MTVfbWFjX3VwZGF0ZV9zdGF0cyhwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc4MTpcdG10NzkxNV90eGJmX3N0YXRfcmVhZF9waHkocGh5LCBmaWxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03ODItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTc5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MDA6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV90eF9zdGF0cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTgwMj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgwMzptdDc5MTVfaHdfcXVldWVfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHUzMiBzaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgwNC1cdFx0ICAgICBjb25zdCBzdHJ1Y3QgaHdfcXVldWVfbWFwICptYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODA1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MDY6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgwNzpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgwOC1cdHUzMiBpLCB2YWw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTgzMz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgzNDptdDc5MTVfc3RhX2h3X3F1ZXVlX3JlYWQodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MzUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgzNjpcdHN0cnVjdCBtdDc5MTVfc3RhICptc3RhID0gKHN0cnVjdCBtdDc5MTVfc3RhICopc3RhLVx1MDAzZWRydl9wcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgzNzpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBtc3RhLVx1MDAzZXZpZi1cdTAwM2VwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgzOC1cdHN0cnVjdCBzZXFfZmlsZSAqcyA9IGRhdGE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTg2MT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODYyOm10NzkxNV9od19xdWV1ZXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODYzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NjQ6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjg2NTpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTg2Ni1cdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaHdfcXVldWVfbWFwIHBsZV9xdWV1ZV9tYXBbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTE0LVx0c2VxX3B1dHMoZmlsZSwgXCYjMzQ7UExFIG5vbi1lbXB0eSBxdWV1ZSBpbmZvOlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6OTE1Olx0bXQ3OTE1X2h3X3F1ZXVlX3JlYWQoZmlsZSwgQVJSQVlfU0laRShwbGVfcXVldWVfbWFwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05MTYtXHRcdFx0ICAgICBcdTAwMjZwbGVfcXVldWVfbWFwWzBdKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTE5LVx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKHBoeS1cdTAwM2VtdDc2LVx1MDAzZWh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkyMDpcdFx0XHRcdFx0ICBtdDc5MTVfc3RhX2h3X3F1ZXVlX3JlYWQsIGZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkyMS1cdC8qIHBzZSBxdWV1ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkyMi1cdHNlcV9wdXRzKGZpbGUsIFwmIzM0O1BTRSBub24tZW1wdHkgcXVldWUgaW5mbzpcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkyMzpcdG10NzkxNV9od19xdWV1ZV9yZWFkKGZpbGUsIEFSUkFZX1NJWkUocHNlX3F1ZXVlX21hcCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTI0LVx0XHRcdCAgICAgXHUwMDI2cHNlX3F1ZXVlX21hcFswXSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5Mjk6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV9od19xdWV1ZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz05MzE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkzMjptdDc5MTVfeG1pdF9xdWV1ZXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTMzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5MzQ6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkzNTpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkzNi1cdHN0cnVjdCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5NjI6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV94bWl0X3F1ZXVlcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjk2NDojZGVmaW5lIG10NzkxNV90eHBvd2VyX3B1dHMocmF0ZSlcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk2NS0oe1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDE0CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNzY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFdvcnRoaW5lc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGFuZCB0aGUgZmlyc3QgdGhpbmcgSSBub3RpY2UgaXMgdGhhdCBpdCYjMzk7cyBjbGVhcmx5IHJlbGF0ZWQgdG8gdGhlIHRoZXJtYWwgbWFuYWdlbWVudCB3aXRoaW4gdGhlIGBtdDc5MTVgIFBDSWUgZHJpdmVyLiAgVGhlIG91dHB1dCBpbmRpY2F0ZXMgdGhhdCBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBgbXQ3OTE1ZS15YCBtb2R1bGUsIHNvIGl0IGlzIGEgUENJZSBkcml2ZXIuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGFuIGVycm9yIGhhbmRsaW5nIHBhdGgsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZXJtYWwgem9uZSByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uLiAgSXQgbG9va3MgbGlrZSB0aGVyZSB3YXMgYSBwb3RlbnRpYWwgcmVzb3VyY2UgbGVhayBpZiB0aGUgdGhlcm1hbCB6b25lIHJlZ2lzdHJhdGlvbiBmYWlsZWQsIGFuZCB0aGlzIHBhdGNoIGFpbXMgdG8gY2xlYW4gdXAgcHJvcGVybHkgaW4gdGhhdCBzY2VuYXJpby4KCk5vdywgbXkgaW5pdGlhbCB0aG91Z2h0IGdvZXMgdG8gZnV6emluZy4gIENvdWxkIHRoaXMgYmUgYSBwb3RlbnRpYWwgYXJlYSBmb3IgZnV6emluZz8gSSBzZWUgdGhhdCBpdCYjMzk7cyBhIE1lZGlhVGVrIFdpLUZpIGRyaXZlciwgc28gaXQgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyLiAgVGhlbiB0aGUgcXVlc3Rpb24gaXMgY2FuIHRoaXMgZHJpdmVyIGJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/IExldCYjMzk7cyBjb25zdWx0IHRoZSBndWlkZWxpbmVzOiAgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAtIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKU2luY2UgYG10NzkxNWAgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBXaS1GaSBkcml2ZXIsIGFuZCwgdG8gbXkga25vd2xlZGdlLCByZXF1aXJlcyBhY3R1YWwgaGFyZHdhcmUgSSB0aGluayBJIHdpbGwgbmVlZCB0byBleGNsdWRlIGl0IGZyb20gZnV6emluZywgdW5sZXNzIEkgY2FuIGZpbmQgc29tZSBzb2Z0d2FyZSBlbXVsYXRpb24uICBJJiMzOTtsbCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBtZW50aW9uIG9mIHNvZnR3YXJlIGVtdWxhdGlvbiwgYnV0IEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIG5vdCBmdXp6aW5nIHRoaXMgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTE6I2luY2x1ZGUgXCYjMzQ7bXQ3OTE1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEyLSNpbmNsdWRlIFwmIzM0O21hYy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM9MTc9c3RhdGljIHUzMiBoaWZfaWR4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbXQ3OTE1X3BjaV9kZXZpY2VfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIwLVx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUVESUFURUssIDB4NzkxNSkgfSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjI1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc5MTVfaGlmX2RldmljZV90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjYtXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3OTE2KSB9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MzE6c3RhdGljIHN0cnVjdCBtdDc5MTVfaGlmICptdDc5MTVfcGNpX2dldF9oaWYyKHUzMiBpZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0zMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzozMzpcdHN0cnVjdCBtdDc5MTVfaGlmICpoaWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0zNC1cdHUzMiB2YWw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzo1NjpzdGF0aWMgdm9pZCBtdDc5MTVfcHV0X2hpZjIoc3RydWN0IG10NzkxNV9oaWYgKmhpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTU3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy02My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjY0OnN0YXRpYyBzdHJ1Y3QgbXQ3OTE1X2hpZiAqbXQ3OTE1X3BjaV9pbml0X2hpZjIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy02NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzo4MTpcdHJldHVybiBtdDc5MTVfcGNpX2dldF9oaWYyKGhpZl9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtODItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzo4NDpzdGF0aWMgaW50IG10NzkxNV9wY2lfaGlmMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTg1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjg2Olx0c3RydWN0IG10NzkxNV9oaWYgKmhpZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjEwMzpzdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMDQtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEwNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMDY6XHRzdHJ1Y3QgbXQ3OTE1X2hpZiAqaGlmMiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMDc6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTA4LVx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEyOC1cdGlmIChpZC1cdTAwM2VkZXZpY2UgPT0gMHg3OTE2IHx8IGlkLVx1MDAzZWRldmljZSA9PSAweDc5MGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMjk6XHRcdHJldHVybiBtdDc5MTVfcGNpX2hpZjJfcHJvYmUocGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMzE6XHRkZXYgPSBtdDc5MTVfbW1pb19wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGNpbV9pb21hcF90YWJsZShwZGV2KVswXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEzMi1cdFx0XHRcdGlkLVx1MDAzZWRldmljZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTM2LVx0bWRldiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTM3Olx0bXQ3OTE1X3dmc3lzX3Jlc2V0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMzk6XHRyZXQgPSBtdDc5MTVfbW1pb193ZWRfaW5pdChkZXYsIHBkZXYsIHRydWUsIFx1MDAyNmlycSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNDAtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE0My1cdGlmICghcmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNDQ6XHRcdGhpZjIgPSBtdDc5MTVfcGNpX2luaXRfaGlmMihwZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE0NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNDctXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE0ODpcdFx0XHRtdDc5MTVfcHV0X2hpZjIoaGlmMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNDktXHRcdFx0Z290byBmcmVlX2RldmljZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNTU6XHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXHUwMDNlZGV2LCBpcnEsIG10NzkxNV9pcnFfaGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE1Ni1cdFx0XHQgICAgICAgSVJRRl9TSEFSRUQsIEtCVUlMRF9NT0ROQU1FLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU3LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTU4Olx0XHRtdDc5MTVfcHV0X2hpZjIoaGlmMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNTktXHRcdGdvdG8gZnJlZV93ZWRfb3JfaXJxX3ZlY3Rvcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNjktXHRcdC8qIG1hc3RlciBzd2l0Y2ggb2YgUENJZSB0bnRlcnJ1cHQgZW5hYmxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNzA6XHRcdGlmIChpc19tdDc5MTUobWRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzEtXHRcdFx0bXQ3Nl93cihkZXYsIE1UX1BDSUUxX01BQ19JTlRfRU5BQkxFLCAweGZmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzUtXHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cdTAwM2VkZXYsIGRldi1cdTAwM2VoaWYyLVx1MDAzZWlycSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE3NjpcdFx0XHRcdCAgICAgICBtdDc5MTVfaXJxX2hhbmRsZXIsIElSUUZfU0hBUkVELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTc3LVx0XHRcdFx0ICAgICAgIEtCVUlMRF9NT0ROQU1FIFwmIzM0Oy1oaWZcJiMzNDssIGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTgyOlx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMDY6c3RhdGljIHZvaWQgbXQ3OTE1X2hpZl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjA4Olx0c3RydWN0IG10NzkxNV9oaWYgKmhpZiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIwOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMTM6c3RhdGljIHZvaWQgbXQ3OTE1X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjE1LVx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjE2Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIxOC1cdG1kZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMTk6XHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkxNV9kZXYsIG10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjIwOlx0bXQ3OTE1X3B1dF9oaWYyKGRldi1cdTAwM2VoaWYyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyMTpcdG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjIyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyNDpzdHJ1Y3QgcGNpX2RyaXZlciBtdDc5MTVfaGlmX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIyNS1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUgXCYjMzQ7X2hpZlwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyNjpcdC5pZF90YWJsZVx0PSBtdDc5MTVfaGlmX2RldmljZV90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyNzpcdC5wcm9iZVx0XHQ9IG10NzkxNV9wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMjg6XHQucmVtb3ZlXHRcdD0gbXQ3OTE1X2hpZl9yZW1vdmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMjktfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIzMTpzdHJ1Y3QgcGNpX2RyaXZlciBtdDc5MTVfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIzMi1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMzM6XHQuaWRfdGFibGVcdD0gbXQ3OTE1X3BjaV9kZXZpY2VfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMzQ6XHQucHJvYmVcdFx0PSBtdDc5MTVfcGNpX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjM1Olx0LnJlbW92ZVx0XHQ9IG10NzkxNV9wY2lfcmVtb3ZlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjM2LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMzg6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG10NzkxNV9wY2lfZGV2aWNlX3RhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIzOTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbXQ3OTE1X2hpZl9kZXZpY2VfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjQwLU1PRFVMRV9GSVJNV0FSRShNVDc5MTVfRklSTVdBUkVfV0EpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1Mjk2CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMzA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVmlydHVhbGl6YXRpb24gb2YgdGhlIG10NzkxNSBXaS1GaSBEcml2ZXIqKgoKT2theSwgc28gdGhlIHByb21wdCBpcyBhYm91dCB0aGUgYG10NzkxNWAgZHJpdmVyLCBhbmQgZnJvbSB0aGUgc291bmQgb2YgaXQsIHRoZSBjaGFsbGVuZ2UgaXMgZ2V0dGluZyBpdCB0byBmdW5jdGlvbiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBQQ0llIGRyaXZlciwgcmlnaHQ/IFB1cmVseSBQQ0ksIGFuZCB0aGF0IGltbWVkaWF0ZWx5IHJpbmdzIGFsYXJtIGJlbGxzLCBiZWNhdXNlIGlmIGl0JiMzOTtzIGRlcGVuZGVudCBvbiBhIHBoeXNpY2FsIFBDSWUgY2FyZCwgbGlrZSB0aG9zZSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyBmb3IgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzICh0aGluZ3MgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgb3IgYGFtZGdwdWApLCBzdGFuZGFyZCBRRU1VIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGVtdWxhdGUgaXQgZGlyZWN0bHkuCgpXYWl0LCBgbXQ3OTE1YCBpcyBhIFdpLUZpIGRyaXZlciwgc28gaXQmIzM5O3MgYSBNZWRpYVRlayBQQ0llIFdpLUZpIGRyaXZlci4gQW5kIGl04oCZcyBub3QgUUVNVSB0aGF0IGVtdWxhdGVzIHRoaXMuIFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIGlzIHRoZXJlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgaXQ/IExpa2UsIGlzIHRoZXJlIHNvbWV0aGluZyBzaW1pbGFyIHRvIGBtYWM4MDIxMV9od3NpbWA/IEFoLCByaWdodCwgdGhhdCYjMzk7cyBqdXN0IGEgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBgbWFjODAyMTFgLCBub3QgYSBoYXJkd2FyZSBlbXVsYXRvciBmb3IgdGhlIGBtdDc5MTVgLiBTbywgZ2l2ZW4gbXkgdW5kZXJzdGFuZGluZywgdGhlIGNvZGUgcGF0aHMgd2l0aGluIGBtdDc5MTVgIGFyZSBsaWtlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgc2V0dXBzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUsIGF0IGxlYXN0IG5vdCB3aXRob3V0IHNvbWUgY2xldmVyIHdvcmthcm91bmRzLgoKQnV0LCBob2xkIG9uLCB0aGVyZSBtaWdodCBiZSBhIHdvcmthcm91bmQuIFdoYXQgaWYgd2UgY291bGQgc29tZWhvdyBwcm9iZSB0aGUgZHJpdmVyIHVzaW5nIGEgZmFrZSBQQ0kgZGV2aWNlPyBTeXprYWxsZXIgaGFzIGBzeXpfcGNpX2RldmljZV9hZGRgLCB3aGljaCBjYW4gaW5qZWN0IFBDSSBjb25maWcgc3BhY2UsIGJ1dCB0aGF04oCZcyBub3QgdHJ1ZSBoYXJkd2FyZSBlbXVsYXRpb24uIEluIG1vc3QgY2FzZXMsIHRoZXNlIGRyaXZlcnMgZmFpbCBlYXJseSBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGVzcGVjaWFsbHkgd2hlbiB0aGV5IHRyeSB0byByZWFkIG9yIHdyaXRlIHRvIE1NSU8gcmVnaXN0ZXJzIG9yIHdhaXQgZm9yIGZpcm13YXJlLgoKU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIExldCYjMzk7cyBzZWUgaWYgdGhlIGZ1bmN0aW9uIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyBjYWxsZWQgZHVyaW5nIHByb2JlLiBUaGlzIGNvdWxkIGJlIGEgZ29vZCBwb2ludCB0byBzdGFydCBmaWd1cmluZyBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IGNoYW5jZSBvZiB0cmlja2luZyBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfdGhlcm1hbF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xOTk9c3RhdGljIHZvaWQgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0yMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MjEzOnN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTIxNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTczMD1tdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NzYyOlx0cmV0ID0gbXQ3OTE1X3RoZXJtYWxfaW5pdChwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc2My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTEyNTg9aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMjk3Olx0cmV0ID0gbXQ3OTE1X3RoZXJtYWxfaW5pdChcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjk4LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjU5NAoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTWVkaWFUZWsgV2ktRmkgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMgTWVkaWFUZWsgUENJZSBXaS1GaSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEZyb20gd2hhdCBJIHNlZSwgYG10NzkxNV90aGVybWFsX2luaXRgIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGFuZCBgbXQ3OTE1X3JlZ2lzdGVyX2V4dF9waHlgLiBOb3csIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBpdHNlbGYgaXMgb25seSBjYWxsZWQgZnJvbSBgbXQ3OTE1X3BjaV9wcm9iZWAuIENvbnNpZGVyaW5nIHRoaXMgaXMgYSBNZWRpYVRlayBQQ0llIFdpLUZpIGRyaXZlciwgSSYjMzk7bSBwcmV0dHkgY2VydGFpbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcGh5c2ljYWwgaGFyZHdhcmUgZGVwZW5kZW5jeSByaWdodCBmcm9tIHRoZSBzdGFydC4gV2UmIzM5O3JlIGdvaW5nIHRvIG5lZWQgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nIHRvIGV2ZW4gZ2V0IHBhc3QgdGhlIGVhcmx5IE1NSU8gc2V0dXAgYW5kIGZpcm13YXJlIGxvYWRpbmcgc3RhZ2VzLiBUaGUgcHJvYmluZyBjYW4mIzM5O3QgaGFwcGVuIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBjb2RlIHRvIGNvbmZpcm0gaWYgdGhlIGZpcm13YXJlIGxvYWRpbmcgb2NjdXJzIGJlZm9yZSBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgaXMgY2FsbGVkLiBUaGF0IHdpbGwgYmUgbXkgZmlyc3QgYXJlYSB0byBmb2N1cyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTE1X3JlZ2lzdGVyX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTI0Nz1zdGF0aWMgdm9pZCBtdDc5MTVfc3RvcF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEyNTg6aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaD00NTM9dTMyIG10NzkxNV93ZWRfaW5pdF9idWYodm9pZCAqcHRyLCBkbWFfYWRkcl90IHBoeXMsIGludCB0b2tlbl9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo0NTU6aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NTYtdm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM9MTAzPXN0YXRpYyBpbnQgbXQ3OTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxODI6XHRyZXQgPSBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xODMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyMjA9c3RhdGljIGludCBtdDc5OHhfd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjY0Olx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI2NS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzAzCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGlnZ2luZyBEZWVwZXIgaW50byB0aGUgTVQ3OTE1IFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgbWludXRlLiBJIGp1c3Qgc2F3IHRoYXQgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIGBtdDc5OHhfd21hY19wcm9iZWAgaW4gYHNvYy5jYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBjb25uZWN0aW9uIG1vcmUgdGhvcm91Z2hseS4gTXkgaW5pdGlhbCBmb2N1cyB3YXMgb24gdGhlIGZ1bmN0aW9uJiMzOTtzIGluZGl2aWR1YWwgYmVoYXZpb3IsIGJ1dCBub3cgSSYjMzk7bSBzZWVpbmcgaXQmIzM5O3MgaW50ZWdyYXRlZCB3aXRoIGEgYmlnZ2VyIHBpY3R1cmUgdGhyb3VnaCB0aGF0IGBzb2MuY2AgZmlsZS4gUmlnaHQsIGxldOKAmXMgZ28gY2hlY2sgdGhhdCBzcGVjaWZpYyBgc29jLmNgIGZpbGUgdG8gc2VlIHRoZSBjb250ZXh0IG9mIHRoYXQgY2FsbCBhbmQgaG93IHRoZSBwcm9iZSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIFRpbWUgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTh4X3dtYWNfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM9MTE5MD1zdGF0aWMgaW50IG10Nzk4eF93bWFjX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM6MTIyMDpzdGF0aWMgaW50IG10Nzk4eF93bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjIxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYz0xMjk1PXN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXQ3OTh4X3dtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyOTktXHR9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM6MTMwMDpcdC5wcm9iZSA9IG10Nzk4eF93bWFjX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTMwMS1cdC5yZW1vdmUgPSBtdDc5OHhfd21hY19yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4Mjg4CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbXQ3OTh4X3dtYWNfcHJvYmUgRnVuY3Rpb24qKgoKT2theSwgc28gYG10Nzk4eF93bWFjX3Byb2JlYCBpcyB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIHRoZSBgbXQ3OTh4X3dtYWNfZHJpdmVyYCDigJMgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gZnV6emluZyBvcHBvcnR1bml0aWVzLiBDYW4gdGhpcyBwbGF0Zm9ybSBkcml2ZXIsIGxpa2UgbWFueSBvdGhlcnMsIGJlIGEgdGFyZ2V0IGZvciBmdXp6aW5nPyBTeXprYWxsZXIgKnNob3VsZCogYmUgYWJsZSB0byBoYW5kbGUgaXQgaWYgaXQgY2FuIGJlIGJyb3VnaHQgdXAgdGhyb3VnaCBkZXZpY2UgdHJlZSBvciBzb21lIHNpbWlsYXIgaW5pdGlhbGl6YXRpb24gbWV0aG9kLCBhbmQgYSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0LiBIb3dldmVyLCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdmVuZG9yLXNwZWNpZmljIFdpLUZpIHBsYXRmb3JtIGRyaXZlcnMgb2Z0ZW4gcHJlc2VudCBhIGNoYWxsZW5nZS4gVGhleSB0ZW5kIHRvIGhhdmUgdGhvc2UgdGlnaHQgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlIHJlZ2lzdGVycyBhbmQgdGhlIHJpZ2h0IGZpcm13YXJlIHRvIGFjdHVhbGx5IGluaXRpYWxpemUgYW5kIHdvcmsgY29ycmVjdGx5LgoKUmlnaHQsIHRpbWUgdG8gZGlnIGluLiBMZXQmIzM5O3Mgc2VlIGV4YWN0bHkgd2hhdCBgbXQ3OTh4X3dtYWNfcHJvYmVgIGlzIGRvaW5nIGFuZCB3aGF0IGl0cyBrZXkgYWN0aW9ucyBhcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQgZXhwZWN0cyBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBiZWZvcmUgSSBjYW4gYXNzZXNzIHRoZSBmZWFzaWJpbGl0eSBvZiBlZmZlY3RpdmUgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTh4X3dtYWNfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYz0xMTkwPXN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjIwOnN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyMjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyOTU9c3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdDc5OHhfd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI5OS1cdH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMzAwOlx0LnByb2JlID0gbXQ3OTh4X3dtYWNfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMzAxLVx0LnJlbW92ZSA9IG10Nzk4eF93bWFjX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwMDMKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBgbXQ3OTh4X3dtYWNfcHJvYmVgLiBJJiMzOTttIGdvaW5nIHRvIGFwcHJvYWNoIHRoaXMgd2l0aCBteSB1c3VhbCBtZXRob2RpY2FsIHByb2Nlc3MuIEZpcnN0LCBJIHdhbnQgdG8gZ2V0IGEgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nLiBXaGF0JiMzOTtzIHRoZSBtYWluIGZ1bmN0aW9uJiMzOTtzIHB1cnBvc2U/IEkmIzM5O20gYmV0dGluZyBpdCYjMzk7cyB0aGUgY29yZSBwcm9iZSBmdW5jdGlvbiBmb3IgYSBNZWRpYVRlayBXaS1GaSBjaGlwLCBnaXZlbiB0aGUgbmFtZS4gT2theSwgbGV0JiMzOTtzIHNjYW4gdGhlIGZ1bmN0aW9uJiMzOTtzIGRlZmluaXRpb24uIFJpZ2h0LCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciB0aGUgaW5pdGlhbCBkZXZpY2Ugc2V0dXAgd2hlbiBhIG5ldyBNVDc5OHgtc2VyaWVzIHdpcmVsZXNzIE1BQyBkZXZpY2UgaXMgZGlzY292ZXJlZCBvciBsb2FkZWQuIEl0IHdpbGwgcHJvYmFibHkgaGFuZGxlIHJlc291cmNlIGFsbG9jYXRpb24sIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCBhbmQgZHJpdmVyIHJlZ2lzdHJhdGlvbiB3aXRoIHRoZSBrZXJuZWwuIEkgZXhwZWN0IGl0IHRvIGFsc28gcGVyZm9ybSBzb21lIGtpbmQgb2YgZGV0ZWN0aW9uIG9yIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gdGhlIHNwZWNpZmljIGhhcmR3YXJlIHZhcmlhbnQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIG1lbW9yeSBtYXBwaW5nLCBJUlEgc2V0dXAsIGFuZCBwZXJoYXBzIHNvbWUgZmlybXdhcmUgbG9hZGluZy4gSSB3YW50IHRvIGNoZWNrIGhvdyBlcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZC4gSXMgaXQgcm9idXN0PyBEb2VzIGl0IHByb3ZpZGUgYWRlcXVhdGUgZXJyb3IgbWVzc2FnZXMgZm9yIGRlYnVnZ2luZz8gSSYjMzk7bGwgYWxzbyBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgdXNlcywgZXNwZWNpYWxseSBhbnl0aGluZyByZWxhdGVkIHRvIHRoZSBkZXZpY2UgY29udGV4dCBvciBjb25maWd1cmF0aW9uLCBhbmQgaG93IHRoZXNlIGFyZSBpbml0aWFsaXplZCBhbmQgcGFzc2VkIGFyb3VuZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjaGlwIGludGVyYWN0cyB3aXRoIHRoZSBQQ0kgb3IgU0RJTyBidXMuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHJhY2UgY29uZGl0aW9ucy4gRmluYWxseSwgYWZ0ZXIgdGhpcyBpbml0aWFsIHNjYW4sIEkmIzM5O2xsIGdvIHRocm91Z2ggdGhlIGNvZGUgc3RlcC1ieS1zdGVwLCBtYWtpbmcgbm90ZSBvZiBhbnkgaW50ZXJlc3Rpbmcgb3IgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgc2VjdGlvbnMsIHRoaW5raW5nIG9mIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgd2lyZWxlc3MgZHJpdmVyIHN0YWNrLiBUaGlzIHNob3VsZCBnZXQgbWUgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyMTU6XHRcbjEyMTY6XHRcdGRldi1cdTAwM2Vyc3RjID0gZGV2bV9yZXNldF9jb250cm9sX2dldChwZGV2LCBcJiMzNDtjb25zeXNcJiMzNDspO1xuMTIxNzpcdFx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhkZXYtXHUwMDNlcnN0Yyk7XG4xMjE4Olx0fVxuMTIxOTpcdFxuMTIyMDpcdHN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbjEyMjE6XHR7XG4xMjIyOlx0XHR2b2lkIF9faW9tZW0gKm1lbV9iYXNlO1xuMTIyMzpcdFx0c3RydWN0IG10NzkxNV9kZXYgKmRldjtcbjEyMjQ6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldjtcbjEyMjU6XHRcdGludCBpcnEsIHJldDtcbjEyMjY6XHRcdHUzMiBjaGlwX2lkO1xuMTIyNzpcdFxuMTIyODpcdFx0Y2hpcF9pZCA9ICh1aW50cHRyX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbjEyMjk6XHRcbjEyMzA6XHRcdG1lbV9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xuMTIzMTpcdFx0aWYgKElTX0VSUihtZW1fYmFzZSkpIHtcbjEyMzI6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGdldCBtZW1vcnkgcmVzb3VyY2VcXG5cJiMzNDspO1xuMTIzMzpcdFx0XHRyZXR1cm4gUFRSX0VSUihtZW1fYmFzZSk7XG4xMjM0Olx0XHR9XG4xMjM1Olx0XG4xMjM2Olx0XHRkZXYgPSBtdDc5MTVfbW1pb19wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgbWVtX2Jhc2UsIGNoaXBfaWQpO1xuMTIzNzpcdFx0aWYgKElTX0VSUihkZXYpKVxuMTIzODpcdFx0XHRyZXR1cm4gUFRSX0VSUihkZXYpO1xuMTIzOTpcdFxuMTI0MDpcdFx0bWRldiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2O1xuMTI0MTpcdFx0cmV0ID0gbXQ3OTE1X21taW9fd2VkX2luaXQoZGV2LCBwZGV2LCBmYWxzZSwgXHUwMDI2aXJxKTtcbjEyNDI6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMjQzOlx0XHRcdGdvdG8gZnJlZV9kZXZpY2U7XG4xMjQ0Olx0XG4xMjQ1Olx0XHRpZiAoIXJldCkge1xuMTI0NjpcdFx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApO1xuMTI0NzpcdFx0XHRpZiAoaXJxIFx1MDAzYyAwKSB7XG4xMjQ4Olx0XHRcdFx0cmV0ID0gaXJxO1xuMTI0OTpcdFx0XHRcdGdvdG8gZnJlZV9kZXZpY2U7XG4xMjUwOlx0XHRcdH1cbjEyNTE6XHRcdH1cbjEyNTI6XHRcbjEyNTM6XHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cdTAwM2VkZXYsIGlycSwgbXQ3OTE1X2lycV9oYW5kbGVyLFxuMTI1NDpcdFx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XG4xMjU1Olx0XHRpZiAocmV0KVxuMTI1NjpcdFx0XHRnb3RvIGZyZWVfZGV2aWNlO1xuMTI1NzpcdFxuMTI1ODpcdFx0cmV0ID0gbXQ3OTh4X3dtYWNfaW5pdChkZXYpO1xuMTI1OTpcdFx0aWYgKHJldClcbjEyNjA6XHRcdFx0Z290byBmcmVlX2lycTtcbjEyNjE6XHRcbjEyNjI6XHRcdG10NzkxNV93ZnN5c19yZXNldChkZXYpO1xuMTI2MzpcdFxuMTI2NDpcdFx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpO1xuMTI2NTpcdFx0aWYgKHJldClcbjEyNjY6XHRcdFx0Z290byBmcmVlX2lycTtcbjEyNjc6XHRcbjEyNjg6XHRcdHJldHVybiAwO1xuMTI2OTpcdFxuMTI3MDpcdGZyZWVfaXJxOlxuMTI3MTpcdFx0ZGV2bV9mcmVlX2lycShtZGV2LVx1MDAzZWRldiwgaXJxLCBkZXYpO1xuMTI3MjpcdGZyZWVfZGV2aWNlOlxuMTI3MzpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSlcbjEyNzQ6XHRcdFx0bXRrX3dlZF9kZXZpY2VfZGV0YWNoKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpO1xuMTI3NTpcdFx0bXQ3Nl9mcmVlX2RldmljZShtZGV2KTtcbjEyNzY6XHRcbjEyNzc6XHRcdHJldHVybiByZXQ7XG4xMjc4Olx0fVxuMTI3OTpcdFxuMTI4MDpcdHN0YXRpYyB2b2lkIG10Nzk4eF93bWFjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuMTI4MTpcdHtcbjEyODI6XHRcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbjEyODM6XHRcbjEyODQ6XHRcdG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShkZXYpO1xuMTI4NTpcdH1cbjEyODY6XHRcbjEyODc6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDc5OHhfd21hY19vZl9tYXRjaFtdID0ge1xuMTI4ODpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21lZGlhdGVrLG10Nzk4MS13bWFjXCYjMzQ7LCAuZGF0YSA9ICh1MzIgKikweDc5ODEgfSxcbjEyODk6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttZWRpYXRlayxtdDc5ODYtd21hY1wmIzM0OywgLmRhdGEgPSAodTMyICopMHg3OTg2IH0sXG4xMjkwOlx0XHR7fSxcbjEyOTE6XHR9O1xuMTI5MjpcdFxuMTI5MzpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10Nzk4eF93bWFjX29mX21hdGNoKTtcbjEyOTQ6XHRcbjEyOTU6XHRzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10Nzk4eF93bWFjX2RyaXZlciA9IHtcbjEyOTY6XHRcdC5kcml2ZXIgPSB7XG4xMjk3Olx0XHRcdC5uYW1lID0gXCYjMzQ7bXQ3OTh4LXdtYWNcJiMzNDssXG4xMjk4Olx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IG10Nzk4eF93bWFjX29mX21hdGNoLFxuMTI5OTpcdFx0fSxcbjEzMDA6XHRcdC5wcm9iZSA9IG10Nzk4eF93bWFjX3Byb2JlLFxuMTMwMTpcdFx0LnJlbW92ZSA9IG10Nzk4eF93bWFjX3JlbW92ZSxcbjEzMDI6XHR9O1xuMTMwMzpcdFxuMTMwNDpcdE1PRFVMRV9GSVJNV0FSRShNVDc5ODZfRklSTVdBUkVfV0EpO1xuMTMwNTpcdE1PRFVMRV9GSVJNV0FSRShNVDc5ODZfRklSTVdBUkVfV00pO1xuMTMwNjpcdE1PRFVMRV9GSVJNV0FSRShNVDc5ODZfRklSTVdBUkVfV01fTVQ3OTc1KTtcbjEzMDc6XHRNT0RVTEVfRklSTVdBUkUoTVQ3OTg2X1JPTV9QQVRDSCk7XG4xMzA4Olx0TU9EVUxFX0ZJUk1XQVJFKE1UNzk4Nl9ST01fUEFUQ0hfTVQ3OTc1KTtcbjEzMDk6XHRcbjEzMTA6XHRNT0RVTEVfRklSTVdBUkUoTVQ3OTgxX0ZJUk1XQVJFX1dBKTtcbjEzMTE6XHRNT0RVTEVfRklSTVdBUkUoTVQ3OTgxX0ZJUk1XQVJFX1dNKTtcbjEzMTI6XHRNT0RVTEVfRklSTVdBUkUoTVQ3OTgxX1JPTV9QQVRDSCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTk0CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIFdpLUZpIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwbGF0Zm9ybSBkcml2ZXIsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgaXQgcmVsaWVzIG9uIGRldmljZSB0cmVlIGluc3RhbnRpYXRpb24g4oCTIHNwZWNpZmljYWxseSBmb3IgdGhlIGBtZWRpYXRlayxtdDc5ODEtd21hY2Agb3IgYG1lZGlhdGVrLG10Nzk4Ni13bWFjYCBjb25maWd1cmF0aW9ucy4gVGhhdCBtYWtlcyBzZW5zZSwgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIG1vZGVybiBlbWJlZGRlZCBzeXN0ZW1zLiBXaGF0JiMzOTtzIG1vcmUgaW50ZXJlc3RpbmcgaXMgdGhhdCBpdCB0aGVuIGNhbGxzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKGRldilgLiBUaGlzIGZ1bmN0aW9uIGNhbGwgaXMga2V5IGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCByZWdpc3RyYXRpb24gZW50YWlscy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGluIGBpbml0LmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBpbml0aWFsaXphdGlvbiBsb2dpYyBzaG91bGQgYmUsIHJpZ2h0PyBMZXQmIzM5O3MgZ28gdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgYW5kIHNlZSB3aGF0IGl0IGRvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI1OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTI1ODpcdGludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4xMjU5Olx0e1xuMTI2MDpcdFx0c3RydWN0IG10NzkxNV9waHkgKnBoeTI7XG4xMjYxOlx0XHRpbnQgcmV0O1xuMTI2MjpcdFxuMTI2MzpcdFx0ZGV2LVx1MDAzZXBoeS5kZXYgPSBkZXY7XG4xMjY0Olx0XHRkZXYtXHUwMDNlcGh5Lm10NzYgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5waHk7XG4xMjY1Olx0XHRkZXYtXHUwMDNlbXQ3Ni5waHkucHJpdiA9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4xMjY2Olx0XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXJjX3dvcmssIG10NzkxNV9tYWNfc3RhX3JjX3dvcmspO1xuMTI2NzpcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1waHkubWFjX3dvcmssIG10NzkxNV9tYWNfd29yayk7XG4xMjY4Olx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZkZXYtXHUwMDNlc3RhX3JjX2xpc3QpO1xuMTI2OTpcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2ZGV2LVx1MDAzZXR3dF9saXN0KTtcbjEyNzA6XHRcbjEyNzE6XHRcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dhaXQpO1xuMTI3MjpcdFx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2VyZXNldF93b3JrLCBtdDc5MTVfbWFjX3Jlc2V0X3dvcmspO1xuMTI3MzpcdFx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2VkdW1wX3dvcmssIG10NzkxNV9tYWNfZHVtcF93b3JrKTtcbjEyNzQ6XHRcdG11dGV4X2luaXQoXHUwMDI2ZGV2LVx1MDAzZWR1bXBfbXV0ZXgpO1xuMTI3NTpcdFxuMTI3NjpcdFx0ZGV2LVx1MDAzZWRiZGNfc3VwcG9ydCA9IG10NzkxNV9iYW5kX2NvbmZpZyhkZXYpO1xuMTI3NzpcdFxuMTI3ODpcdFx0cGh5MiA9IG10NzkxNV9hbGxvY19leHRfcGh5KGRldik7XG4xMjc5Olx0XHRpZiAoSVNfRVJSKHBoeTIpKVxuMTI4MDpcdFx0XHRyZXR1cm4gUFRSX0VSUihwaHkyKTtcbjEyODE6XHRcbjEyODI6XHRcdHJldCA9IG10NzkxNV9pbml0X2hhcmR3YXJlKGRldiwgcGh5Mik7XG4xMjgzOlx0XHRpZiAocmV0KVxuMTI4NDpcdFx0XHRnb3RvIGZyZWVfcGh5MjtcbjEyODU6XHRcbjEyODY6XHRcdG10NzkxNV9pbml0X3dpcGh5KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuMTI4NzpcdFxuMTI4ODpcdCNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxuMTI4OTpcdFx0ZGV2LVx1MDAzZW10NzYudGVzdF9vcHMgPSBcdTAwMjZtdDc5MTVfdGVzdG1vZGVfb3BzO1xuMTI5MDpcdCNlbmRpZlxuMTI5MTpcdFxuMTI5MjpcdFx0cmV0ID0gbXQ3Nl9yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHRydWUsIG10NzZfcmF0ZXMsXG4xMjkzOlx0XHRcdFx0XHQgICBBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTtcbjEyOTQ6XHRcdGlmIChyZXQpXG4xMjk1Olx0XHRcdGdvdG8gc3RvcF9odztcbjEyOTY6XHRcbjEyOTc6XHRcdHJldCA9IG10NzkxNV90aGVybWFsX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4xMjk4Olx0XHRpZiAocmV0KVxuMTI5OTpcdFx0XHRnb3RvIHVucmVnX2RldjtcbjEzMDA6XHRcbjEzMDE6XHRcdGlmIChwaHkyKSB7XG4xMzAyOlx0XHRcdHJldCA9IG10NzkxNV9yZWdpc3Rlcl9leHRfcGh5KGRldiwgcGh5Mik7XG4xMzAzOlx0XHRcdGlmIChyZXQpXG4xMzA0Olx0XHRcdFx0Z290byB1bnJlZ190aGVybWFsO1xuMTMwNTpcdFx0fVxuMTMwNjpcdFxuMTMwNzpcdFx0aWVlZTgwMjExX3F1ZXVlX3dvcmsobXQ3Nl9odyhkZXYpLCBcdTAwMjZkZXYtXHUwMDNlaW5pdF93b3JrKTtcbjEzMDg6XHRcbjEzMDk6XHRcdGRldi1cdTAwM2VyZWNvdmVyeS5od19pbml0X2RvbmUgPSB0cnVlO1xuMTMxMDpcdFxuMTMxMTpcdFx0cmV0ID0gbXQ3OTE1X2luaXRfZGVidWdmcyhcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbjEzMTI6XHRcdGlmIChyZXQpXG4xMzEzOlx0XHRcdGdvdG8gdW5yZWdfZXh0X3BoeTtcbjEzMTQ6XHRcbjEzMTU6XHRcdHJldCA9IG10NzkxNV9jb3JlZHVtcF9yZWdpc3RlcihkZXYpO1xuMTMxNjpcdFx0aWYgKHJldClcbjEzMTc6XHRcdFx0Z290byB1bnJlZ19leHRfcGh5O1xuMTMxODpcdFxuMTMxOTpcdFx0cmV0dXJuIDA7XG4xMzIwOlx0XG4xMzIxOlx0dW5yZWdfZXh0X3BoeTpcbjEzMjI6XHRcdGlmIChwaHkyKSB7XG4xMzIzOlx0XHRcdG10NzkxNV91bnJlZ2lzdGVyX2V4dF9waHkoZGV2KTtcbjEzMjQ6XHRcdFx0cGh5MiA9IE5VTEw7XG4xMzI1Olx0XHR9XG4xMzI2Olx0dW5yZWdfdGhlcm1hbDpcbjEzMjc6XHRcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4xMzI4Olx0dW5yZWdfZGV2OlxuMTMyOTpcdFx0bXQ3Nl91bnJlZ2lzdGVyX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4xMzMwOlx0c3RvcF9odzpcbjEzMzE6XHRcdG10NzkxNV9zdG9wX2hhcmR3YXJlKGRldik7XG4xMzMyOlx0ZnJlZV9waHkyOlxuMTMzMzpcdFx0aWYgKHBoeTIpXG4xMzM0Olx0XHRcdGllZWU4MDIxMV9mcmVlX2h3KHBoeTItXHUwMDNlbXQ3Ni1cdTAwM2Vodyk7XG4xMzM1Olx0XHRyZXR1cm4gcmV0O1xuMTMzNjpcdH1cbjEzMzc6XHRcbjEzMzg6XHR2b2lkIG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMTMzOTpcdHtcbjEzNDA6XHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZWR1bXBfd29yayk7XG4xMzQxOlx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VyZXNldF93b3JrKTtcbjEzNDI6XHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZXJjX3dvcmspO1xuMTM0MzpcdFx0bXQ3OTE1X3VucmVnaXN0ZXJfZXh0X3BoeShkZXYpO1xuMTM0NDpcdFx0bXQ3OTE1X2NvcmVkdW1wX3VucmVnaXN0ZXIoZGV2KTtcbjEzNDU6XHRcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4xMzQ2Olx0XHRtdDc2X3VucmVnaXN0ZXJfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjEzNDc6XHRcdG10NzkxNV9zdG9wX2hhcmR3YXJlKGRldik7XG4xMzQ4Olx0XG4xMzQ5Olx0XHRtdDc2X2ZyZWVfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjEzNTA6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNzc4CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgcHJvY2VzcywgZm9jdXNpbmcgb24gdGhlIGtleSBhY3Rpb25zOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTE1IEhhcmR3YXJlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBoYXMga2lja2VkIG9mZiwgYW5kIGFzIEkgZXhwZWN0ZWQsIGl0JiMzOTtzIGNhbGxlZCBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIHdpdGggdGhlIGRldmljZSBhbmQgcGh5MiBhcyBhcmd1bWVudHMuIE15IG5leHQgaW1tZWRpYXRlIGFjdGlvbiBpcyB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBpbml0aWFsaXphdGlvbiBpcyBiZWluZyBoYW5kbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHN0ZXBzIGl0IGlzIHRha2luZyB3aXRoIHRoZSBoYXJkd2FyZSEgVGltZSB0byBkaWcgaW4gYW5kIGV4YW1pbmUgdGhlIGlubmVyIHdvcmtpbmdzIG9mIGBtdDc5MTVfaW5pdF9oYXJkd2FyZWAhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9pbml0X2hhcmR3YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz04NjU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjg2NjptdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04Njcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjU4PWludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI4MjpcdHJldCA9IG10NzkxNV9pbml0X2hhcmR3YXJlKGRldiwgcGh5Mik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI4My1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMzE2CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYG10NzkxNV9pbml0X2hhcmR3YXJlYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMsIHN0ZXAtYnktc3RlcCwgYXQgYSBoaWdoIGxldmVsLiBTaW5jZSBJJiMzOTttIGZhbWlsaWFyIHdpdGggdGhpcyBhcmNoaXRlY3R1cmUsIEkga25vdyBpdCBsaWtlbHkgaW52b2x2ZXMgdGhpbmdzIGxpa2UgcmVnaXN0ZXIgd3JpdGVzIHRvIGluaXRpYWxpemUgdGhlIHJhZGlvLCBQSFkgY29uZmlndXJhdGlvbiwgcG9zc2libHkgRE1BIHNldHVwLCBhbmQgaW50ZXJydXB0IGVuYWJsaW5nLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGVzdGFibGlzaCB0aGUgZnVuZGFtZW50YWwgaGFyZHdhcmUgc3RhdGUgZm9yIHRoZSBNVDc5MTUgY2hpcHNldCB0byBvcGVyYXRlLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnM7IGRlcGVuZGVuY2llcyBhcmUgY3J1Y2lhbCwgZXNwZWNpYWxseSB3aXRoIGNvbXBsZXggaGFyZHdhcmUgbGlrZSB0aGlzLiBBcmUgdGhlcmUgYW55IHBhcnRpY3VsYXIgc2VjdGlvbnMgdGhhdCBzZWVtIGltbWVkaWF0ZWx5IHJlbGV2YW50IHRvIHBvd2VyIG1hbmFnZW1lbnQgb3Igc2VjdXJpdHk/IFRoYXQgbWlnaHQgb2ZmZXIgaW5zaWdodHMgaW50byBsYXRlciBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MuIEkmIzM5O2xsIHdhdGNoIGZvciBob3cgdGhlIGNvZGUgc2V0cyB1cCB0aGUgY2xvY2sgc291cmNlcyB0b28sIGJlY2F1c2UgdGhhdCYjMzk7cyBhbHdheXMgYSBjcml0aWNhbCBhc3BlY3QsIGFuZCBjYW4gYmUgc3VidGxlIGluIGl0cyBpbXBsaWNhdGlvbnMgb24gbGF0ZXIgYmVoYXZpb3IuIFVuZGVyc3RhbmRpbmcgdGhlIGhhcmR3YXJlJiMzOTtzIHJlc2V0IHN0YXRlIGlzIGFsc28gaW1wb3J0YW50IHNvIEkgd2lsbCBwYXkgYXR0ZW50aW9uIHRvIHRoYXQuIEkgZXhwZWN0IHRoZXJlIG1pZ2h0IGJlIGNoZWNrcyBmb3IgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNhcGFiaWxpdGllczsgSSBuZWVkIHRvIHJlY29nbml6ZSBpZiBpdCBoYXMgYSB3YXkgdG8gZGVhbCB3aXRoIGRpZmZlcmVudCBjaGlwIHZlcnNpb25zLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIG9mIGFueSBhc3NvY2lhdGVkIGNvLXByb2Nlc3NvcnMgYXMgd2VsbDsgdGhvc2UgYXJlIHNvIGNvbW1vbiB3aXRoIHRoaXMga2luZCBvZiBzeXN0ZW0tb24tY2hpcC4gRmluYWxseSwgSSYjMzk7bGwgbmVlZCB0byB0cmFjayBhbnkgcmV0dXJuIHZhbHVlcyBvciBzdGF0dXMgZmxhZ3MsIGJlY2F1c2UgdGhlc2Ugd2lsbCBsaWtlbHkgY29tbXVuaWNhdGUgdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB2YXJpb3VzIGluaXRpYWxpemF0aW9uIHN0YWdlcy4gVW5kZXJzdGFuZGluZyB0aGVzZSByZXR1cm4gdmFsdWVzIHdpbGwgYmUga2V5IHRvIGZhdWx0IHRvbGVyYW5jZSBmdXJ0aGVyIGRvd24gdGhlIGxpbmUuIEkmIzM5O2xsIHN0YXJ0IHJlYWRpbmcsIHdpdGggdGhlc2UgYXNwZWN0cyBpbiBtaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg2NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDg2NTpcdHN0YXRpYyBpbnRcbiA4NjY6XHRtdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcbiA4Njc6XHR7XG4gODY4Olx0XHRpbnQgcmV0LCBpZHg7XG4gODY5Olx0XG4gODcwOlx0XHRtdDc2X3dyKGRldiwgTVRfSU5UX01BU0tfQ1NSLCAwKTtcbiA4NzE6XHRcdG10NzZfd3IoZGV2LCBNVF9JTlRfU09VUkNFX0NTUiwgfjApO1xuIDg3MjpcdFxuIDg3MzpcdFx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmssIG10NzkxNV9pbml0X3dvcmspO1xuIDg3NDpcdFxuIDg3NTpcdFx0cmV0ID0gbXQ3OTE1X2RtYV9pbml0KGRldiwgcGh5Mik7XG4gODc2Olx0XHRpZiAocmV0KVxuIDg3NzpcdFx0XHRyZXR1cm4gcmV0O1xuIDg3ODpcdFxuIDg3OTpcdFx0c2V0X2JpdChNVDc2X1NUQVRFX0lOSVRJQUxJWkVELCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4gODgwOlx0XG4gODgxOlx0XHRyZXQgPSBtdDc5MTVfbWN1X2luaXQoZGV2KTtcbiA4ODI6XHRcdGlmIChyZXQpXG4gODgzOlx0XHRcdHJldHVybiByZXQ7XG4gODg0Olx0XG4gODg1Olx0XHRyZXQgPSBtdDc5MTVfZWVwcm9tX2luaXQoZGV2KTtcbiA4ODY6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gODg3Olx0XHRcdHJldHVybiByZXQ7XG4gODg4Olx0XG4gODg5Olx0XHRpZiAoZGV2LVx1MDAzZWNhbCkge1xuIDg5MDpcdFx0XHRyZXQgPSBtdDc5MTVfbWN1X2FwcGx5X2dyb3VwX2NhbChkZXYpO1xuIDg5MTpcdFx0XHRpZiAocmV0KVxuIDg5MjpcdFx0XHRcdHJldHVybiByZXQ7XG4gODkzOlx0XHR9XG4gODk0Olx0XG4gODk1Olx0XHQvKiBCZWFjb24gYW5kIG1nbXQgZnJhbWVzIHNob3VsZCBvY2N1cHkgd2NpZCAwICovXG4gODk2Olx0XHRpZHggPSBtdDc2X3djaWRfYWxsb2MoZGV2LVx1MDAzZW10NzYud2NpZF9tYXNrLCBNVDc5MTVfV1RCTF9TVEEpO1xuIDg5NzpcdFx0aWYgKGlkeClcbiA4OTg6XHRcdFx0cmV0dXJuIC1FTk9TUEM7XG4gODk5Olx0XG4gOTAwOlx0XHRkZXYtXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZC5pZHggPSBpZHg7XG4gOTAxOlx0XHRkZXYtXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZC5od19rZXlfaWR4ID0gLTE7XG4gOTAyOlx0XHRkZXYtXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZC50eF9pbmZvIHw9IE1UX1dDSURfVFhfSU5GT19TRVQ7XG4gOTAzOlx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVx1MDAzZW10NzYud2NpZFtpZHhdLCBcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZCk7XG4gOTA0Olx0XG4gOTA1Olx0XHRyZXR1cm4gMDtcbiA5MDY6XHR9XG4gOTA3Olx0XG4gOTA4Olx0dm9pZCBtdDc5MTVfc2V0X3N0cmVhbV92aHRfdHhiZl9jYXBzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4gOTA5Olx0e1xuIDkxMDpcdFx0aW50IHN0cztcbiA5MTE6XHRcdHUzMiAqY2FwO1xuIDkxMjpcdFxuIDkxMzpcdFx0aWYgKCFwaHktXHUwMDNlbXQ3Ni1cdTAwM2VjYXAuaGFzXzVnaHopXG4gOTE0Olx0XHRcdHJldHVybjtcbiA5MTU6XHRcbiA5MTY6XHRcdHN0cyA9IGh3ZWlnaHQ4KHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNoYWlubWFzayk7XG4gOTE3Olx0XHRjYXAgPSBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzYmFuZF81Zy5zYmFuZC52aHRfY2FwLmNhcDtcbiA5MTg6XHRcbiA5MTk6XHRcdCpjYXAgfD0gSUVFRTgwMjExX1ZIVF9DQVBfU1VfQkVBTUZPUk1FRV9DQVBBQkxFIHxcbiA5MjA6XHRcdFx0SUVFRTgwMjExX1ZIVF9DQVBfTVVfQkVBTUZPUk1FRV9DQVBBQkxFIHxcbiA5MjE6XHRcdFx0RklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9CRUFNRk9STUVFX1NUU19NQVNLLFxuIDkyMjpcdFx0XHRcdCAgIHN0cyAtIDEpO1xuIDkyMzpcdFxuIDkyNDpcdFx0KmNhcCBcdTAwMjY9IH4oSUVFRTgwMjExX1ZIVF9DQVBfU09VTkRJTkdfRElNRU5TSU9OU19NQVNLIHxcbiA5MjU6XHRcdFx0ICBJRUVFODAyMTFfVkhUX0NBUF9TVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxuIDkyNjpcdFx0XHQgIElFRUU4MDIxMV9WSFRfQ0FQX01VX0JFQU1GT1JNRVJfQ0FQQUJMRSk7XG4gOTI3Olx0XG4gOTI4Olx0XHRpZiAoc3RzIFx1MDAzYyAyKVxuIDkyOTpcdFx0XHRyZXR1cm47XG4gOTMwOlx0XG4gOTMxOlx0XHQqY2FwIHw9IElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XG4gOTMyOlx0XHRcdElFRUU4MDIxMV9WSFRfQ0FQX01VX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XG4gOTMzOlx0XHRcdEZJRUxEX1BSRVAoSUVFRTgwMjExX1ZIVF9DQVBfU09VTkRJTkdfRElNRU5TSU9OU19NQVNLLFxuIDkzNDpcdFx0XHRcdCAgIHN0cyAtIDEpO1xuIDkzNTpcdH1cbiA5MzY6XHRcbiA5Mzc6XHRzdGF0aWMgdm9pZFxuIDkzODpcdG10NzkxNV9zZXRfc3RyZWFtX2hlX3R4YmZfY2FwcyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LFxuIDkzOTpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YV9oZV9jYXAgKmhlX2NhcCwgaW50IHZpZilcbiA5NDA6XHR7XG4gOTQxOlx0XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVx1MDAzZWRldjtcbiA5NDI6XHRcdHN0cnVjdCBpZWVlODAyMTFfaGVfY2FwX2VsZW0gKmVsZW0gPSBcdTAwMjZoZV9jYXAtXHUwMDNlaGVfY2FwX2VsZW07XG4gOTQzOlx0XHRpbnQgc3RzID0gaHdlaWdodDgocGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhaW5tYXNrKTtcbiA5NDQ6XHRcdHU4IGMsIHN0c18xNjAgPSBzdHM7XG4gOTQ1Olx0XG4gOTQ2Olx0XHQvKiBDYW4gZG8gMS8yIG9mIFNUUyBpbiAxNjBNaHogbW9kZSBmb3IgbXQ3OTE1ICovXG4gOTQ3Olx0XHRpZiAoaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuIDk0ODpcdFx0XHRpZiAoIWRldi1cdTAwM2VkYmRjX3N1cHBvcnQpXG4gOTQ5Olx0XHRcdFx0c3RzXzE2MCAvPSAyO1xuIDk1MDpcdFx0XHRlbHNlXG4gOTUxOlx0XHRcdFx0c3RzXzE2MCA9IDA7XG4gOTUyOlx0XHR9XG4gOTUzOlx0XG4gOTU0Olx0I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG4gOTU1Olx0XHRpZiAodmlmID09IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQpXG4gOTU2Olx0XHRcdHJldHVybjtcbiA5NTc6XHQjZW5kaWZcbiA5NTg6XHRcbiA5NTk6XHRcdGVsZW0tXHUwMDNlcGh5X2NhcF9pbmZvWzNdIFx1MDAyNj0gfklFRUU4MDIxMV9IRV9QSFlfQ0FQM19TVV9CRUFNRk9STUVSO1xuIDk2MDpcdFx0ZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bNF0gXHUwMDI2PSB+SUVFRTgwMjExX0hFX1BIWV9DQVA0X01VX0JFQU1GT1JNRVI7XG4gOTYxOlx0XG4gOTYyOlx0XHRjID0gSUVFRTgwMjExX0hFX1BIWV9DQVA1X0JFQU1GT1JNRUVfTlVNX1NORF9ESU1fVU5ERVJfODBNSFpfTUFTSztcbiA5NjM6XHRcdGlmIChzdHNfMTYwKVxuIDk2NDpcdFx0XHRjIHw9IElFRUU4MDIxMV9IRV9QSFlfQ0FQNV9CRUFNRk9STUVFX05VTV9TTkRfRElNX0FCT1ZFXzgwTUhaX01BU0s7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NTA2CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMjA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSYjMzk7bSBzZWVpbmcsIGBtdDc5MTVfaW5pdF9oYXJkd2FyZWAgaXMgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50LCBhbmQgaXQgY2FsbHMgYG10NzkxNV9tY3VfaW5pdGAgd2l0aCB0aGUgZGV2aWNlIGNvbnRleHQuICBUaGF0JiMzOTtzIHdoZXJlIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBNQ1UgaW5pdGlhbGl6YXRpb24gaGFwcGVuLiAgTWFrZXMgc2Vuc2UsIHRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZmlyc3QgaGFyZHdhcmUgc3RlcC4KCk5vdywgaWYgYG10NzkxNV9tY3VfaW5pdGAgZmFpbHMg4oCTIGJlY2F1c2UsIHNheSwgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBwcmVzZW50IG9yIHRoZSBoYXJkd2FyZSBkb2VzbiYjMzk7dCByZXNwb25kIGFzIGV4cGVjdGVkIOKAkyB3ZSYjMzk7cmUgZ29pbmcgdG8gZ2V0IGEgZmFpbHVyZSBhdCB0aGF0IHBvaW50LiBUaGlzLCBsb2dpY2FsbHksIHdpbGwgcHJvcGFnYXRlIHVwIHRvIGEgZmFpbHVyZSBpbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAuIEFuZCBoZXJlJiMzOTtzIHRoZSBraWNrZXI6IGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyBjYWxsZWQgKmFmdGVyKiBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIHdpdGhpbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAuIFNvLCBhbnkgZmFpbHVyZSBpbiB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc3RhZ2UgKGxpa2UgdGhlIGZpcm13YXJlIGZhaWxpbmcgdG8gbG9hZCkgKmRlZmluaXRlbHkqIHByZXZlbnRzIHVzIGZyb20gZXZlbiByZWFjaGluZyB0aGUgdGhlcm1hbCBpbml0aWFsaXphdGlvbi4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyB5b3UgY2FuJiMzOTt0IG1hbmFnZSB0aGVybWFsIGNoYXJhY3RlcmlzdGljcyBpZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBwcm9wZXJseSBpbml0aWFsaXplZC4KClNwZWNpZmljYWxseSwgaW4gUUVNVSwgd2l0aG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgYG10NzkxNV9tY3VfaW5pdGAgaXMgKmd1YXJhbnRlZWQqIHRvIGZhaWwuIE5vIGhhcmR3YXJlLCBubyBmaXJtd2FyZSByZXNwb25zZS4gV2UgbmVlZCB0byB2ZXJpZnkgdGhpcyBhc3N1bXB0aW9uIGJ5IGV4YW1pbmluZyBgbXQ3OTE1X21jdV9pbml0YCBmdW5jdGlvbiBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9tY3VfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9ODY2PW10NzkxNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04ODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6ODgxOlx0cmV0ID0gbXQ3OTE1X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODgyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xMjkwPW10NzkxNV9tYWNfcmVzdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTEzNzYtXHQvKiBsb2FkIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxMzc3Olx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xMzc4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzIyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIzMjM6bXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzMjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIzODc9c3RhdGljIGludCBtdDc5MTVfbWN1X3NldF9yZWQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCBlbmFibGVkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDEwOmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDU4Olx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDY1OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDc3Olx0cmV0dXJuIG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ3OC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NDczPWludCBtdDc5MTVfcnVuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3NDppbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDc1OmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NzYtaW50IG10NzkxNV9tY3VfdHd0X2FncnRfdXBkYXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MzAyCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc5MTUgTUNVIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIGBtdDc5MTVfbWN1X2luaXRgIGlzIHRoZSBlbnRyeSBwb2ludCwgbmF0dXJhbGx5LiBBbmQsIGFzIGV4cGVjdGVkLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjYWxsaW5nIGBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgbWFnaWMgbGlrZWx5IGhhcHBlbnMsIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsIHNldHVwIG9mIHRoZSBNQ1UsIEkgcHJlc3VtZS4gTXkgbmV4dCBzdGVwIGlzIGNsZWFybHkgdG8gZGl2ZSBkZWVwZXIgaW50byBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmaXJtd2FyZSBpcyBoYW5kbGVkIGluIG9yZGVyIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhpcyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgZnVuY3Rpb24gaXMgZG9pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNDEwOlx0aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMjQxMTpcdHtcbjI0MTI6XHRcdGludCByZXQ7XG4yNDEzOlx0XG4yNDE0Olx0XHQvKiBmb3JjZSBmaXJtd2FyZSBvcGVyYXRpb24gbW9kZSBpbnRvIG5vcm1hbCBzdGF0ZSxcbjI0MTU6XHRcdCAqIHdoaWNoIHNob3VsZCBiZSBzZXQgYmVmb3JlIGZpcm13YXJlIGRvd25sb2FkIHN0YWdlLlxuMjQxNjpcdFx0ICovXG4yNDE3Olx0XHRtdDc2X3dyKGRldiwgTVRfU1dERUZfTU9ERSwgTVRfU1dERUZfTk9STUFMX01PREUpO1xuMjQxODpcdFxuMjQxOTpcdFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAwKTtcbjI0MjA6XHRcdGlmIChyZXQpXG4yNDIxOlx0XHRcdHJldHVybiByZXQ7XG4yNDIyOlx0XHQvKiBzZXQgZHJpdmVyIG93biBmb3IgYmFuZDEgd2hlbiB0d28gaGlmIGV4aXN0ICovXG4yNDIzOlx0XHRpZiAoZGV2LVx1MDAzZWhpZjIpIHtcbjI0MjQ6XHRcdFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcbjI0MjU6XHRcdFx0aWYgKHJldClcbjI0MjY6XHRcdFx0XHRyZXR1cm4gcmV0O1xuMjQyNzpcdFx0fVxuMjQyODpcdFxuMjQyOTpcdFx0cmV0ID0gbXQ3OTE1X2xvYWRfZmlybXdhcmUoZGV2KTtcbjI0MzA6XHRcdGlmIChyZXQpXG4yNDMxOlx0XHRcdHJldHVybiByZXQ7XG4yNDMyOlx0XG4yNDMzOlx0XHRzZXRfYml0KE1UNzZfU1RBVEVfTUNVX1JVTk5JTkcsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbjI0MzQ6XHRcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV00sIDApO1xuMjQzNTpcdFx0aWYgKHJldClcbjI0MzY6XHRcdFx0cmV0dXJuIHJldDtcbjI0Mzc6XHRcbjI0Mzg6XHRcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV0EsIDApO1xuMjQzOTpcdFx0aWYgKHJldClcbjI0NDA6XHRcdFx0cmV0dXJuIHJldDtcbjI0NDE6XHRcbjI0NDI6XHRcdG10NzZfY29ubmFjX21jdV9kZWxfd3RibF9hbGwoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuMjQ0MzpcdFxuMjQ0NDpcdFx0aWYgKChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuMjQ0NTpcdFx0ICAgICBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB8fFxuMjQ0NjpcdFx0ICAgICFtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSlcbjI0NDc6XHRcdFx0bXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKENBUEFCSUxJVFkpLCAwLCAwLCAwKTtcbjI0NDg6XHRcbjI0NDk6XHRcdHJldCA9IG10NzkxNV9tY3Vfc2V0X213ZHMoZGV2LCAxKTtcbjI0NTA6XHRcdGlmIChyZXQpXG4yNDUxOlx0XHRcdHJldHVybiByZXQ7XG4yNDUyOlx0XG4yNDUzOlx0XHRyZXQgPSBtdDc5MTVfbWN1X3NldF9tdXJ1X2N0cmwoZGV2LCBNVVJVX1NFVF9QTEFURk9STV9UWVBFLFxuMjQ1NDpcdFx0XHRcdFx0ICAgICAgIE1VUlVfUExBVEZPUk1fVFlQRV9QRVJGX0xFVkVMXzIpO1xuMjQ1NTpcdFx0aWYgKHJldClcbjI0NTY6XHRcdFx0cmV0dXJuIHJldDtcbjI0NTc6XHRcbjI0NTg6XHRcdHJldCA9IG10NzkxNV9tY3VfaW5pdF9yeF9haXJ0aW1lKGRldik7XG4yNDU5Olx0XHRpZiAocmV0KVxuMjQ2MDpcdFx0XHRyZXR1cm4gcmV0O1xuMjQ2MTpcdFxuMjQ2MjpcdFx0cmV0dXJuIG10NzkxNV9tY3Vfc2V0X3JlZChkZXYsIG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpO1xuMjQ2MzpcdH1cbjI0NjQ6XHRcbjI0NjU6XHRpbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4yNDY2Olx0e1xuMjQ2NzpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X21jdV9vcHMgbXQ3OTE1X21jdV9vcHMgPSB7XG4yNDY4Olx0XHRcdC5tYXhfcmV0cnkgPSAxLFxuMjQ2OTpcdFx0XHQuaGVhZHJvb20gPSBzaXplb2Yoc3RydWN0IG10NzZfY29ubmFjMl9tY3VfdHhkKSxcbjI0NzA6XHRcdFx0Lm1jdV9za2JfcHJlcGFyZV9tc2cgPSBtdDc2X2Nvbm5hYzJfbWN1X2ZpbGxfbWVzc2FnZSxcbjI0NzE6XHRcdFx0Lm1jdV9za2Jfc2VuZF9tc2cgPSBtdDc5MTVfbWN1X3NlbmRfbWVzc2FnZSxcbjI0NzI6XHRcdFx0Lm1jdV9wYXJzZV9yZXNwb25zZSA9IG10NzkxNV9tY3VfcGFyc2VfcmVzcG9uc2UsXG4yNDczOlx0XHR9O1xuMjQ3NDpcdFxuMjQ3NTpcdFx0ZGV2LVx1MDAzZW10NzYubWN1X29wcyA9IFx1MDAyNm10NzkxNV9tY3Vfb3BzO1xuMjQ3NjpcdFxuMjQ3NzpcdFx0cmV0dXJuIG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShkZXYpO1xuMjQ3ODpcdH1cbjI0Nzk6XHRcbjI0ODA6XHR2b2lkIG10NzkxNV9tY3VfZXhpdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMjQ4MTpcdHtcbjI0ODI6XHRcdG10NzZfY29ubmFjX21jdV9yZXN0YXJ0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjI0ODM6XHRcdGlmIChtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCBmYWxzZSkpIHtcbjI0ODQ6XHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0ZhaWxlZCB0byBleGl0IG1jdVxcblwmIzM0Oyk7XG4yNDg1Olx0XHRcdGdvdG8gb3V0O1xuMjQ4NjpcdFx0fVxuMjQ4NzpcdFxuMjQ4ODpcdFx0bXQ3Nl93cihkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORCgwKSwgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV04pO1xuMjQ4OTpcdFx0aWYgKGRldi1cdTAwM2VoaWYyKVxuMjQ5MDpcdFx0XHRtdDc2X3dyKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKDEpLFxuMjQ5MTpcdFx0XHRcdE1UX1RPUF9MUENSX0hPU1RfRldfT1dOKTtcbjI0OTI6XHRvdXQ6XG4yNDkzOlx0XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYubWN1LnJlc19xKTtcbjI0OTQ6XHR9XG4yNDk1Olx0XG4yNDk2Olx0c3RhdGljIGludFxuMjQ5NzpcdG10NzkxNV9tY3Vfc2V0X3J4X2hkcl90cmFuc19ibGFja2xpc3Qoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgaW50IGJhbmQpXG4yNDk4Olx0e1xuMjQ5OTpcdFx0c3RydWN0IHtcbjI1MDA6XHRcdFx0dTggb3BlcmF0aW9uO1xuMjUwMTpcdFx0XHR1OCBjb3VudDtcbjI1MDI6XHRcdFx0dTggX3JzdlsyXTtcbjI1MDM6XHRcdFx0dTggaW5kZXg7XG4yNTA0Olx0XHRcdHU4IGVuYWJsZTtcbjI1MDU6XHRcdFx0X19sZTE2IGV0eXBlO1xuMjUwNjpcdFx0fSByZXEgPSB7XG4yNTA3Olx0XHRcdC5vcGVyYXRpb24gPSAxLFxuMjUwODpcdFx0XHQuY291bnQgPSAxLFxuMjUwOTpcdFx0XHQuZW5hYmxlID0gMSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyNzgKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqRGl2aW5nIGludG8gdGhlIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAgaXMgY2FsbGluZyBgbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAwKWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB3aHkuIFRoaXMgbG9va3MgbGlrZSBhIHN0YW5kYXJkIGhhcmR3YXJlIGNoZWNrIGZvciBvd25lcnNoaXAsIHByb2JhYmx5IHRvIGVuc3VyZSB0aGVyZSBpc24mIzM5O3QgYW5vdGhlciBkcml2ZXIgb3IgcHJvY2VzcyBhbHJlYWR5IGNvbnRyb2xsaW5nIHRoaXMgcGllY2Ugb2YgaGFyZHdhcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBgbXQ3OTE1X2RyaXZlcl9vd25gIGZ1bmN0aW9uIGlzIHJlYWxseSBkb2luZzsgbXkgc3VzcGljaW9uIGlzIHNvbWUga2luZCBvZiByZWdpc3RlciBwb2xsaW5nIG1lY2hhbmlzbSwgYnV0IEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LiBMZXQmIzM5O3MgZGlnIGludG8gYG10NzkxNV9kcml2ZXJfb3duYCBpdHNlbGYgYW5kIHNlZSB3aGF0JiMzOTtzIHJlYWxseSBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9kcml2ZXJfb3duJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIwNTc9aW50IG10NzkxNV9tY3VfYWRkX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjExMjpzdGF0aWMgaW50IG10NzkxNV9kcml2ZXJfb3duKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGJhbmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTEzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yNDEwPWludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQxOTpcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDIwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDIzLVx0aWYgKGRldi1cdTAwM2VoaWYyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDI0Olx0XHRyZXQgPSBtdDc5MTVfZHJpdmVyX293bihkZXYsIDEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyNS1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwNTYKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhhdCBmaWxlLCBgbXQ3OTE1X2RyaXZlcl9vd25gOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTE1IERyaXZlciBPd25lcnNoaXAqKgoKQWxyaWdodCwgSSYjMzk7bSBkaWdnaW5nIGludG8gYG10NzkxNV9kcml2ZXJfb3duYC4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIGNyaXRpY2FsIHNlY3Rpb24gd2l0aGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyLCBsaWtlbHkgZGVhbGluZyB3aXRoIHJlc291cmNlIGFsbG9jYXRpb24sIGFjY2VzcyBjb250cm9sLCBhbmQgcG90ZW50aWFsbHkgbWVtb3J5IG1hbmFnZW1lbnQgcmVsYXRlZCB0byB0aGUgaGFyZHdhcmUgaXRzZWxmLiBUaGUgJiMzNDtvd24mIzM0OyBzdWdnZXN0cyB3ZSBhcmUgZXhwbG9yaW5nIGhvdyB0aGUgZHJpdmVyIHRha2VzIG93bmVyc2hpcCBvZiBoYXJkd2FyZSByZXNvdXJjZXMgYW5kIHdoYXQgcHJvdGVjdGlvbnMgYXJlIGluIHBsYWNlIHRvIHByZXZlbnQgY29uZmxpY3RzIG9yIHJhY2UgY29uZGl0aW9ucy4KCknigJltIGV4cGVjdGluZyB0byBzZWUgc3RydWN0dXJlcyByZWxhdGVkIHRvIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UsIGludGVycnVwdCBoYW5kbGluZywgYW5kIGxpa2VseSBzb21lIHNvcnQgb2YgbG9jayBvciBzZW1hcGhvcmUgbWVjaGFuaXNtIHRvIG1hbmFnZSBjb25jdXJyZW50IGFjY2Vzcy4gVGhlICYjMzQ7b3duJiMzNDsgbWlnaHQgcmVmZXIgdG8gdGhlIGRyaXZlciYjMzk7cyBvd25lcnNoaXAgb2YgdGhpbmdzIGxpa2UgRE1BIGNoYW5uZWxzLCByZWdpc3RlcnMsIGFuZCBtZW1vcnkgYnVmZmVycyB1c2VkIGZvciB0cmFuc21pdHRpbmcgYW5kIHJlY2VpdmluZyBkYXRhLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb21tZW50cyB0aGF0IGV4cGxhaW4gdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlc2Ugb3duZXJzaGlwIHNjaGVtZXMgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIG9yIGVycm9yIHNjZW5hcmlvcyBpdCBoYW5kbGVzLgoKSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyB0aGF0IHRoaXMgc2VjdGlvbiBpcyBjcnVjaWFsIGZvciBtYWludGFpbmluZyB0aGUgaW50ZWdyaXR5IG9mIHRoZSB3aXJlbGVzcyBpbnRlcmZhY2UsIHByZXZlbnRpbmcgY3Jhc2hlcywgYW5kIGVuc3VyaW5nIHJvYnVzdCBwZXJmb3JtYW5jZS4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGluZ3MgbGlrZSBob3cgaXQgaGFuZGxlcyBtdWx0aXBsZSBhY2Nlc3MgcG9pbnRzLCBzdGF0aW9uIGNvbmN1cnJlbmN5LCBvciBwZXJoYXBzIGhvdyBpdCBkZWFscyB3aXRoIHBvd2VyLXNhdmluZyBzdGF0ZXMgb2YgdGhlIFdpLUZpIGNoaXAuIEFueSByZWZlcmVuY2VzIHRvIERNQSBjb25maWd1cmF0aW9uIGFuZCBidWZmZXIgbWFuYWdlbWVudCBhcmUgZ29pbmcgdG8gYmUgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLiBJJiMzOTtsbCBhbHNvIGJlIGZvY3VzaW5nIG9uIGFueSB1c2Ugb2YgYXRvbWljIG9wZXJhdGlvbnMgb3IgbXV0ZXhlcyBhbmQgY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVpciB1c2FnZSBmb3IgcGVyZm9ybWFuY2UuIEnigJltIGFsc28gZ29pbmcgdG8gYmUgbG9va2luZyBhdCBob3cgYW55IG9mIHRoaXMgcmVsYXRlcyB0byBmaXJtd2FyZSBsb2FkaW5nIGFuZCBleGVjdXRpb24sIHNpbmNlIHRoZSBNVDc5MTUgbGlrZWx5IGhhcyBmaXJtd2FyZSBvbi1jaGlwLgoKTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGluIHRoZXJlLiBJJiMzOTttIHJlYWR5IHRvIGdldCBkb3duIHRvIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjExMiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTEyOlx0c3RhdGljIGludCBtdDc5MTVfZHJpdmVyX293bihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1OCBiYW5kKVxuMjExMzpcdHtcbjIxMTQ6XHRcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTik7XG4yMTE1Olx0XHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLFxuMjExNjpcdFx0XHRcdCAgICBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFULCAwLCA1MDApKSB7XG4yMTE3Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtUaW1lb3V0IGZvciBkcml2ZXIgb3duXFxuXCYjMzQ7KTtcbjIxMTg6XHRcdFx0cmV0dXJuIC1FSU87XG4yMTE5Olx0XHR9XG4yMTIwOlx0XG4yMTIxOlx0XHQvKiBjbGVhciBpcnEgd2hlbiB0aGUgZHJpdmVyIG93biBzdWNjZXNzICovXG4yMTIyOlx0XHRtdDc2X3dyKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EX0lSUV9TVEFUKGJhbmQpLFxuMjEyMzpcdFx0XHRNVF9UT1BfTFBDUl9IT1NUX0JBTkRfU1RBVCk7XG4yMTI0Olx0XG4yMTI1Olx0XHRyZXR1cm4gMDtcbjIxMjY6XHR9XG4yMTI3Olx0XG4yMTI4Olx0c3RhdGljIGludFxuMjEyOTpcdG10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxuMjEzMDpcdHtcbjIxMzE6XHRcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTAwCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBRRU1VIENyYXNoIFNjZW5hcmlvKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc5MTVfZHJpdmVyX293bmAgZnVuY3Rpb24gYW5kIEkgc2VlIGl0JiMzOTtzIHBvbGxpbmcgYSBoYXJkd2FyZSByZWdpc3Rlci4gSW4gUUVNVSwgd2l0aG91dCBhbnkgcmVhbCBoYXJkd2FyZSwgdGhhdCBwb2xsIGlzIGp1c3QgZ29pbmcgdG8gdGltZW91dCBhbmQgaW1tZWRpYXRlbHkgcmV0dXJuIGFuIGAtRUlPYCBlcnJvci4gUmlnaHQsIG1ha2VzIHNlbnNlLiBBbmQgYmVjYXVzZSBvZiB0aGF0IGluaXRpYWwgZmFpbHVyZSwgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAsIGBtdDc5MTVfbWN1X2luaXRgLCBhbmQgdGhlbiBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIGFsbCByZXR1cm4gYC1FSU9gIGluIGEgY2FzY2FkZSBlZmZlY3QuIFVsdGltYXRlbHksIHRoaXMgbGVhZHMgdG8gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGZhaWxpbmcgYmVmb3JlIGl0IGV2ZW4gZ2V0cyB0byBjYWxsIGBtdDc5MTVfdGhlcm1hbF9pbml0YC4gU28sIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyBuZXZlciBldmVuIGdvaW5nIHRvIGJlIHJlYWNoZWQgd2hlbiBydW5uaW5nIGluIFFFTVUgdW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMuCgpCdXQuLi4gaGFuZyBvbiBhIG1pbnV0ZS4gV2hhdCBpZiBzeXprYWxsZXIgaXMgYmVpbmcgdXNlZD8gU3BlY2lmaWNhbGx5LCB3aGF0IGlmIGl0JiMzOTtzIHVzaW5nIGBzeXpfcGNpX2RldmljZV9hZGRgPyBUaGF0IGNhbiBtYXAgZmFrZSBNTUlPIG1lbW9yeS4gTm93LCB0aGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEJlY2F1c2UgYG10NzZfcG9sbF9tc2VjYCBpcyByZWFkaW5nIGZyb20gdGhhdCBwb3RlbnRpYWxseSBmYWtlIE1NSU8gbWVtb3J5LiBJZiB0aGUgZmFrZSBtZW1vcnkgaXMganVzdCB6ZXJvLWluaXRpYWxpemVkLCB0aGF0IG1lYW5zIGBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFUYCwgd2hpY2ggSSYjMzk7bSBwcmV0dHkgc3VyZSBpcyBhIGJpdG1hc2ssICpjb3VsZCogYmUgemVyby4gQW5kIGlmIGl0JiMzOTtzIHplcm8sIGBtdDc2X3BvbGxfbXNlY2AgY291bGQgYWN0dWFsbHkgc3VjY2VlZCEgVGhpcyBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGEgc2NlbmFyaW8gd2hlcmUgdGhlIGluaXRpYWxpemF0aW9uIGNvbnRpbnVlcyBldmVuIHRob3VnaCBpdCBzaG91bGQgaGF2ZSBmYWlsZWQsIGFuZCB0aGF0IGNvdWxkIHRyaWdnZXIgYSBjcmFzaCBkb3duIHRoZSBsaW5lLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gY2hlY2sgd2hhdCBgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVGAgYWN0dWFsbHkgaG9sZHMuIFRoaXMgd2FycmFudHMgYSBjbG9zZXIgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTEyPXN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTE1LVx0aWYgKCFtdDc2X3BvbGxfbXNlYyhkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORChiYW5kKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxMTY6XHRcdFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMTctXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtUaW1lb3V0IGZvciBkcml2ZXIgb3duXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdzLmg9NTA9ZW51bSBvZmZzX3JldiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oLTExMDEtI2RlZmluZSBNVF9UT1BfTFBDUl9IT1NUX0RSVl9PV05cdEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oOjExMDI6I2RlZmluZSBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFUXHRCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3JlZ3MuaC0xMTAzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjAyMQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERyaXZlciYjMzk7cyBJbml0aWFsaXphdGlvbiBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciB0aGUgbXQ3OTE1IGRyaXZlciwgYW5kIHNvbWV0aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQuIElmIHRoaXMgJiMzNDtmYWtlIE1NSU8gbWVtb3J5JiMzNDsgaXMgaW5pdGlhbGl6ZWQgdG8gemVybywgdGhlbiB0aGUgYE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVRgIGJpdCwgd2hpY2ggaXMgYml0IDIsIHdpbGwgYWxzbyBiZSB6ZXJvLiBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBgbXQ3Nl9wb2xsX21zZWNgIGlzIGJlaW5nIHVzZWQsIHdoaWNoIGlzIGVzc2VudGlhbGx5IGNoZWNraW5nIGEgY29uZGl0aW9uIHVzaW5nIGEgcmVhZC1tb2RpZnktY29tcGFyZSBvcGVyYXRpb24uIFNwZWNpZmljYWxseSwgaXQgdGVzdHMgd2hldGhlciB0aGUgcmVzdWx0IG9mIGAocmVhZGwoYWRkcikgJmFtcDsgbWFzaykgPT0gdmFsYC4gSW4gb3VyIGNhc2UsIHRoZSBgbWFza2AgaXMgdGhhdCBgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVGAgYml0LCBhbmQgdGhlIGRlc2lyZWQgYHZhbGAgaXMgemVyby4KClRoZXJlZm9yZSwgaWYgdGhpcyBmYWtlIE1NSU8gaXMgemVybywgdGhlbiB3ZSYjMzk7cmUgcGVyZm9ybWluZyBhIGJpdHdpc2UgQU5EIGJldHdlZW4gemVybyBhbmQgYml0IDIsIHdoaWNoIHdpbGwgaW5ldml0YWJseSByZXN1bHQgaW4gemVyby4gQ29uc2VxdWVudGx5LCB0aGUgY2hlY2sgYCgwICZhbXA7IEJJVCgyKSkgPT0gMGAgaXMgdHJ1ZSEgSXQgKmFsd2F5cyogc3VjY2VlZHMuIFRoaXMgY291bGQgbWVhbiBgbXQ3OTE1X2RyaXZlcl9vd25gIG1pZ2h0IHRoaW5rIGl0JiMzOTtzIHN1Y2Nlc3NmdWxseSBjbGFpbWVkIG93bmVyc2hpcCB3aGVuIGluIHJlYWxpdHksIHNvbWV0aGluZyBpcyBmdW5kYW1lbnRhbGx5IHdyb25nIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gVGhhdCYjMzk7cyBhIGh1Z2UgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkhIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGltcGxpY2F0aW9uIG9mIHRoaXMuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB3aGF0IGhhcHBlbnMgaW4gYG10NzkxNV9sb2FkX2Zpcm13YXJlKGRldilgLiBMZXQmIzM5O3Mgc2VlIGlmIHRoYXQgYWxzbyBhc3N1bWVzIGV2ZXJ5dGhpbmcgaXMgZmluZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfbG9hZF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTI5PW10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTQyOnN0YXRpYyBpbnQgbXQ3OTE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxNDMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI0MTA9aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDI5Olx0cmV0ID0gbXQ3OTE1X2xvYWRfZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MzAtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjkwMwoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYG10NzkxNV9sb2FkX2Zpcm13YXJlYCBmdW5jdGlvbi4gSSBzZWUgdGhpcyBhIGxvdCwgZXNwZWNpYWxseSB3aXRoIG5ld2VyIFdpRmkgY2hpcHNldHM7IGZpcm13YXJlIGxvYWRpbmcgaXMgYWx3YXlzIGEgY3JpdGljYWwgcGllY2UuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBoaWdoLWxldmVsIGFyY2hpdGVjdHVyZTogaXMgdGhpcyBhIHNpbXBsZSB0cmFuc2ZlciwgYSBtb3JlIGNvbXBsZXggYm9vdCBwcm9jZXNzLCBvciBzb21ldGhpbmcgaW4gYmV0d2Vlbj8gV2hhdCBraW5kIG9mIG1lbW9yeSBhY2Nlc3MgYXJlIHdlIHRhbGtpbmcgYWJvdXQ/CgpOZXh0LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgb2J2aW91czogZXJyb3IgaGFuZGxpbmcuIEZpcm13YXJlIGxvYWRpbmcgaXMgbm90b3Jpb3VzbHkgc2Vuc2l0aXZlLiBJIHdhbnQgdG8gc2VlIGhvdyByb2J1c3QgdGhlIGVycm9yIGNoZWNrcyBhcmUsIHdoYXQga2luZCBvZiByZXRyeSBtZWNoYW5pc21zIGFyZSBpbiBwbGFjZSAoaWYgYW55KSwgYW5kIGhvdyBpdCBkZWFscyB3aXRoIGNvbW1vbiBmYWlsdXJlIHNjZW5hcmlvcyBsaWtlIGNoZWNrc3VtIGVycm9ycyBvciBjb21tdW5pY2F0aW9uIHRpbWVvdXRzLiBBcmUgdGhlcmUgZGV0YWlsZWQgZXJyb3IgY29kZXM/IEFyZSB0aGV5IG1lYW5pbmdmdWw/CgpUaGVuLCBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgb3IgaW5pdGlhbGl6YXRpb24gc3RlcHMgYmVmb3JlIHRoZSBhY3R1YWwgZmlybXdhcmUgZG93bmxvYWQuIEFyZSB0aGVyZSBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgcmVnaXN0ZXIgd3JpdGVzIGludm9sdmVkPyBBbnkgaW5pdGlhbCBwb3dlci11cCBzZXF1ZW5jZXMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkZXZpY2Ugc3RhdGUgYmVmb3JlIHRoZSBmaXJtd2FyZSB0YWtlcyBvdmVyLgoKSSYjMzk7bGwgYmUgYXNzZXNzaW5nIHRoZSBtZXRob2Qgb2YgZGF0YSB0cmFuc2ZlciwgaXMgdGhpcyBETUEsIG9yIFBJTz8gSG93IGlzIHRoZSBjb21tdW5pY2F0aW9uIHByb3RvY29sIGltcGxlbWVudGVkPyBJcyB0aGlzIGEgc3RhbmRhcmQgaW50ZXJmYWNlLCBvciBhIHByb3ByaWV0YXJ5IG9uZT8gVW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyBkYXRhIHRyYW5zZmVyIG1lY2hhbmlzbSB3aWxsIGJlIGNyaXRpY2FsIGZvciBkZWJ1Z2dpbmcgcG90ZW50aWFsIGlzc3Vlcy4KCkZpbmFsbHksIEkmIzM5O2xsIGJlIGNoZWNraW5nIGZvciBhbnkgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMuIEFyZSB0aGVyZSBhbnkgY2hlY2tzIGZvciBzaWduZWQgZmlybXdhcmU/IEFueSBhbnRpLXJvbGxiYWNrIG1lY2hhbmlzbXM/IFNlY3VyZSBib290IGNvbnNpZGVyYXRpb25zPyBGaXJtd2FyZSB1cGRhdGVzIGNhbiBiZSBhIHByaW1lIGF0dGFjayB2ZWN0b3IuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyB0aGF0LiBCYXNpY2FsbHksIEkgd2FudCB0byBzZWUgaWYgdGhpcyBpcyByb2J1c3QgYW5kIHNlY3VyZSwgb3IgaWYgaXQmIzM5O3MgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhcmVhcyB3aGVyZSBJIGNhbiBpbnRyb2R1Y2UgYSBmdXp6aW5nIGF0dGFjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxNDIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIxNDI6XHRzdGF0aWMgaW50IG10NzkxNV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4yMTQzOlx0e1xuMjE0NDpcdFx0aW50IHJldDtcbjIxNDU6XHRcbjIxNDY6XHRcdC8qIFJlbGVhc2UgU2VtYXBob3JlIGlmIHRha2VuIGJ5IHByZXZpb3VzIGZhaWxlZCBhdHRlbXB0ICovXG4yMTQ3Olx0XHRyZXQgPSBtdDc2X2Nvbm5hY19tY3VfcGF0Y2hfc2VtX2N0cmwoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIGZhbHNlKTtcbjIxNDg6XHRcdGlmIChyZXQgIT0gUEFUQ0hfUkVMX1NFTV9TVUNDRVNTKSB7XG4yMTQ5Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtDb3VsZCBub3QgcmVsZWFzZSBzZW1hcGhvcmVcXG5cJiMzNDspO1xuMjE1MDpcdFx0XHQvKiBDb250aW51ZSBhbnl3YXlzICovXG4yMTUxOlx0XHR9XG4yMTUyOlx0XG4yMTUzOlx0XHQvKiBBbHdheXMgcmVzdGFydCBNQ1UgZmlybXdhcmUgKi9cbjIxNTQ6XHRcdG10NzZfY29ubmFjX21jdV9yZXN0YXJ0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjIxNTU6XHRcbjIxNTY6XHRcdC8qIENoZWNrIGlmIE1DVSBpcyByZWFkeSAqL1xuMjE1NzpcdFx0cmV0ID0gbXQ3OTE1X2Zpcm13YXJlX3N0YXRlKGRldiwgZmFsc2UpO1xuMjE1ODpcdFx0aWYgKHJldCkge1xuMjE1OTpcdFx0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7RmlybXdhcmUgZGlkIG5vdCBlbnRlciBkb3dubG9hZCBzdGF0ZVxcblwmIzM0Oyk7XG4yMTYwOlx0XHRcdHJldHVybiByZXQ7XG4yMTYxOlx0XHR9XG4yMTYyOlx0XG4yMTYzOlx0XHRyZXQgPSBtdDc2X2Nvbm5hYzJfbG9hZF9wYXRjaChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgZndfbmFtZV92YXIoZGV2LCBST01fUEFUQ0gpKTtcbjIxNjQ6XHRcdGlmIChyZXQpXG4yMTY1Olx0XHRcdHJldHVybiByZXQ7XG4yMTY2Olx0XG4yMTY3Olx0XHRyZXQgPSBtdDc2X2Nvbm5hYzJfbG9hZF9yYW0oXHUwMDI2ZGV2LVx1MDAzZW10NzYsIGZ3X25hbWVfdmFyKGRldiwgRklSTVdBUkVfV00pLFxuMjE2ODpcdFx0XHRcdFx0ICAgIGZ3X25hbWUoZGV2LCBGSVJNV0FSRV9XQSkpO1xuMjE2OTpcdFx0aWYgKHJldClcbjIxNzA6XHRcdFx0cmV0dXJuIHJldDtcbjIxNzE6XHRcbjIxNzI6XHRcdHJldCA9IG10NzkxNV9maXJtd2FyZV9zdGF0ZShkZXYsIHRydWUpO1xuMjE3MzpcdFx0aWYgKHJldClcbjIxNzQ6XHRcdFx0cmV0dXJuIHJldDtcbjIxNzU6XHRcbjIxNzY6XHRcdG10NzZfcXVldWVfdHhfY2xlYW51cChkZXYsIGRldi1cdTAwM2VtdDc2LnFfbWN1W01UX01DVVFfRldETF0sIGZhbHNlKTtcbjIxNzc6XHRcbjIxNzg6XHRcdGRldl9kYmcoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGaXJtd2FyZSBpbml0IGRvbmVcXG5cJiMzNDspO1xuMjE3OTpcdFxuMjE4MDpcdFx0cmV0dXJuIDA7XG4yMTgxOlx0fVxuMjE4MjpcdFxuMjE4MzpcdGludCBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3Qoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggdHlwZSwgdTggY3RybClcbjIxODQ6XHR7XG4yMTg1Olx0XHRzdHJ1Y3Qge1xuMjE4NjpcdFx0XHR1OCBjdHJsX3ZhbDtcbjIxODc6XHRcdFx0dTggcGFkWzNdO1xuMjE4ODpcdFx0fSBkYXRhID0ge1xuMjE4OTpcdFx0XHQuY3RybF92YWwgPSBjdHJsXG4yMTkwOlx0XHR9O1xuMjE5MTpcdFxuMjE5MjpcdFx0aWYgKHR5cGUgPT0gTUNVX0ZXX0xPR19XQSlcbjIxOTM6XHRcdFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV0FfRVhUX0NNRChGV19MT0dfMl9IT1NUKSxcbjIxOTQ6XHRcdFx0XHRcdFx0IFx1MDAyNmRhdGEsIHNpemVvZihkYXRhKSwgdHJ1ZSk7XG4yMTk1Olx0XG4yMTk2Olx0XHRyZXR1cm4gbXQ3Nl9tY3Vfc2VuZF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKEZXX0xPR18yX0hPU1QpLCBcdTAwMjZkYXRhLFxuMjE5NzpcdFx0XHRcdFx0IHNpemVvZihkYXRhKSwgdHJ1ZSk7XG4yMTk4Olx0fVxuMjE5OTpcdFxuMjIwMDpcdGludCBtdDc5MTVfbWN1X2Z3X2RiZ19jdHJsKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHUzMiBtb2R1bGUsIHU4IGxldmVsKVxuMjIwMTpcdHtcbjIyMDI6XHRcdHN0cnVjdCB7XG4yMjAzOlx0XHRcdHU4IHZlcjtcbjIyMDQ6XHRcdFx0dTggcGFkO1xuMjIwNTpcdFx0XHRfX2xlMTYgbGVuO1xuMjIwNjpcdFx0XHR1OCBsZXZlbDtcbjIyMDc6XHRcdFx0dTggcnN2WzNdO1xuMjIwODpcdFx0XHRfX2xlMzIgbW9kdWxlX2lkeDtcbjIyMDk6XHRcdH0gZGF0YSA9IHtcbjIyMTA6XHRcdFx0Lm1vZHVsZV9pZHggPSBjcHVfdG9fbGUzMihtb2R1bGUpLFxuMjIxMTpcdFx0XHQubGV2ZWwgPSBsZXZlbCxcbjIyMTI6XHRcdH07XG4yMjEzOlx0XG4yMjE0Olx0XHRyZXR1cm4gbXQ3Nl9tY3Vfc2VuZF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKEZXX0RCR19DVFJMKSwgXHUwMDI2ZGF0YSxcbjIyMTU6XHRcdFx0XHRcdCBzaXplb2YoZGF0YSksIGZhbHNlKTtcbjIyMTY6XHR9XG4yMjE3Olx0XG4yMjE4Olx0aW50IG10NzkxNV9tY3VfbXVydV9kZWJ1Z19zZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCBlbmFibGVkKVxuMjIxOTpcdHtcbjIyMjA6XHRcdHN0cnVjdCB7XG4yMjIxOlx0XHRcdF9fbGUzMiBjbWQ7XG4yMjIyOlx0XHRcdHU4IGVuYWJsZTtcbjIyMjM6XHRcdH0gZGF0YSA9IHtcbjIyMjQ6XHRcdFx0LmNtZCA9IGNwdV90b19sZTMyKE1VUlVfU0VUX1RYQ19UWF9TVEFUU19FTiksXG4yMjI1Olx0XHRcdC5lbmFibGUgPSBlbmFibGVkLFxuMjIyNjpcdFx0fTtcbjIyMjc6XHRcbjIyMjg6XHRcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX0VYVF9DTUQoTVVSVV9DVFJMKSwgXHUwMDI2ZGF0YSxcbjIyMjk6XHRcdFx0XHRcdHNpemVvZihkYXRhKSwgZmFsc2UpO1xuMjIzMDpcdH1cbjIyMzE6XHRcbjIyMzI6XHRpbnQgbXQ3OTE1X21jdV9tdXJ1X2RlYnVnX2dldChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuMjIzMzpcdHtcbjIyMzQ6XHRcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuMjIzNTpcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbjIyMzY6XHRcdHN0cnVjdCBtdDc5MTVfbWN1X211cnVfc3RhdHMgKm11X3N0YXRzO1xuMjIzNzpcdFx0aW50IHJldDtcbjIyMzg6XHRcbjIyMzk6XHRcdHN0cnVjdCB7XG4yMjQwOlx0XHRcdF9fbGUzMiBjbWQ7XG4yMjQxOlx0XHRcdHU4IGJhbmRfaWR4O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDkwMQoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipGaXJtd2FyZSBMb2FkaW5nIFNlcXVlbmNlIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgZ2V0dGluZyB0aGUgZmlybXdhcmUgb250byB0aGUgTVQ3OTE1IGRldmljZS4gSSBzZWUgdGhhdCBpdCBraWNrcyB0aGluZ3Mgb2ZmIHdpdGggYSBjYWxsIHRvIGBtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCBmYWxzZSlgLiBOYXR1cmFsbHksIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGBtdDc5MTVfZmlybXdhcmVfc3RhdGVgIGZ1bmN0aW9uICpkb2VzKi4gSSBuZWVkIHRvIHNlZSBpZiBpdCBzZXRzIHVwIGFueSBwcmVjb25kaXRpb25zLCBpbml0aWFsaXplcyBhbnkgaGFyZHdhcmUgcmVnaXN0ZXJzLCBvciBtYXliZSBldmVuIGF0dGVtcHRzIGEgYmFzaWMgaGFuZHNoYWtlIHdpdGggdGhlIGRldmljZSBiZWZvcmUgdGhlIG1vcmUgaW52b2x2ZWQgbG9hZGluZyBwcm9jZXNzIHN0YXJ0cy4gVGhlIGBmYWxzZWAgYXJndW1lbnQgaXMgaW50ZXJlc3RpbmcgdG9vOyBpdCYjMzk7cyBsaWtlbHkgaW5kaWNhdGluZyBhIHBhcnRpY3VsYXIgc3RhdGUgdG8gYmUgc2V0IGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGZ1bmN0aW9uLiBJIHdvdWxkIGJlIGN1cmlvdXMgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgZW50YWlscy4gVGhpcyB3aWxsIGRlZmluaXRlbHkgZ2l2ZSBtZSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgZHVyaW5nIHRoZSBmaXJtd2FyZSBsb2FkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEyOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTI4Olx0c3RhdGljIGludFxuMjEyOTpcdG10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxuMjEzMDpcdHtcbjIxMzE6XHRcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXG4yMTMyOlx0XHRcdFx0ICAgICAgIHdhID8gRldfU1RBVEVfUkRZIDogRldfU1RBVEVfRldfRE9XTkxPQUQpO1xuMjEzMzpcdFxuMjEzNDpcdFx0aWYgKCFtdDc2X3BvbGxfbXNlYyhkZXYsIE1UX1RPUF9NSVNDLCBNVF9UT1BfTUlTQ19GV19TVEFURSxcbjIxMzU6XHRcdFx0XHQgICAgc3RhdGUsIDEwMDApKSB7XG4yMTM2Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtUaW1lb3V0IGZvciBpbml0aWFsaXppbmcgZmlybXdhcmVcXG5cJiMzNDspO1xuMjEzNzpcdFx0XHRyZXR1cm4gLUVJTztcbjIxMzg6XHRcdH1cbjIxMzk6XHRcdHJldHVybiAwO1xuMjE0MDpcdH1cbjIxNDE6XHRcbjIxNDI6XHRzdGF0aWMgaW50IG10NzkxNV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDgzCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIHRoZSBGaXJtd2FyZSBEb3dubG9hZCBTdGF0ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSBgbXQ3OTE1X2Zpcm13YXJlX3N0YXRlYCBmdW5jdGlvbiBkZXRlcm1pbmVzIGlmIHRoZSBmaXJtd2FyZSBoYXMgYmVlbiBkb3dubG9hZGVkLiBUaGUgY29kZSBpcyBwZXJpb2RpY2FsbHkgY2hlY2tpbmcgdGhlIGBNVF9UT1BfTUlTQ2AgcmVnaXN0ZXIsIHNwZWNpZmljYWxseSB0aGUgYE1UX1RPUF9NSVNDX0ZXX1NUQVRFYCBmaWVsZCB3aXRoaW4gaXQuIEl0JiMzOTtzIHN1cHBvc2VkIHRvIGJlIGNvbXBhcmluZyB0aGlzIHZhbHVlIHRvIGEgdGFyZ2V0IGBzdGF0ZWAsIGFuZCBpZGVhbGx5LCB0aGlzIHdvdWxkIHRlbGwgdXMgaWYgdGhlIGRvd25sb2FkIGlzIGNvbXBsZXRlLgoKSG93ZXZlciwgdGhlcmUmIzM5O3MgYSBwb3RlbnRpYWwgZ290Y2hhIGhlcmUuIFRoZSBjb2RlIG1lbnRpb25zIHRoYXQgaWYgdGhlIGZha2UgTU1JTyBtZW1vcnkgcmVnaW9uIGlzIHNldCB0byB6ZXJvLCB0aGVuIHRoZSBgTVRfVE9QX01JU0NfRldfU1RBVEVgIHdpbGwgYWxzbyBldmFsdWF0ZSB0byB6ZXJvLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgd2UgbmVlZCB0byBjb25zaWRlciB3aGF0IHRoZSBleHBlY3RlZCB2YWx1ZSwgdGhlIHRhcmdldCBzdGF0ZSwgYWN0dWFsbHkgKmlzKi4gVGhlIGNvZGUgaXMgZXhwbGljaXRseSBjb21wYXJpbmcgdG8gYHN0YXRlYCwgd2hpY2ggaXMgZGVmaW5lZCB1c2luZyBgRklFTERfUFJFUGAsIHNwZWNpZmljYWxseSB1c2luZyBgRldfU1RBVEVfRldfRE9XTkxPQURgLiBTbywgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBGV19TVEFURV9GV19ET1dOTE9BRGAgaXMgd2hhdCB3ZSAqZXhwZWN0KiB0byBzZWUgZHVyaW5nIHRoZSBmaXJtd2FyZSBkb3dubG9hZCBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtGV19TVEFURV9GV19ET1dOTE9BRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTI5PW10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzEtXHR1MzIgc3RhdGUgPSBGSUVMRF9QUkVQKE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjEzMjpcdFx0XHQgICAgICAgd2EgPyBGV19TVEFURV9SRFkgOiBGV19TVEFURV9GV19ET1dOTE9BRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjA3NAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBGV19TVEFURV9GV19ET1dOTE9BRGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgcmlnaHQgaW4uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgYEZXX1NUQVRFX0ZXX0RPV05MT0FEYCBkZWZpbml0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mICpwcmVjaXNlbHkqIHdoYXQgdGhpcyBzdGF0ZSBzaWduaWZpZXMgd2l0aGluIHRoZSBmaXJtd2FyZSBkb3dubG9hZCBwcm9jZXNzLiBJIG5lZWQgdG8gYmUgc3VyZSBJIGhhdmUgYSBjbGVhciBhbmQgYWNjdXJhdGUgbWVudGFsIG1vZGVsLiBXaGF0IGFzc3VtcHRpb25zIGFyZSBiYWtlZCBpbnRvIHRoaXMgc3RhdGU/IEFyZSB0aGVyZSBhbnkgc3VidGxlIG51YW5jZXMgaW4gaXRzIGltcGxlbWVudGF0aW9uIHRoYXQgSSBtaWdodCBoYXZlIG92ZXJsb29rZWQgZHVyaW5nIHRoZSBpbml0aWFsIHJldmlldz8gQXJlIHRoZXJlIHBvdGVudGlhbCBhcmVhcyBvZiB2dWxuZXJhYmlsaXR5IEkgY2FuIHF1aWNrbHkgaWRlbnRpZnkgdGhyb3VnaCBhIGRlZmluaXRpb24gcmV2aWV3LiBJIGhhdmUgdG8gbWFrZSBzdXJlIG15IHVuZGVyc3RhbmRpbmcgbWF0Y2hlcyB0aGUgaW1wbGVtZW50YXRpb24uIFNvLCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGRldGFpbHMsIGFuZCBtYWtlIHN1cmUgbXkgbWluZCBpcyB3b3JraW5nIHdpdGggdGhpcyBzcGVjaWZpYyBjb250ZXh0IGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RldfU1RBVEVfRldfRE9XTkxPQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjEyOT1tdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMxLVx0dTMyIHN0YXRlID0gRklFTERfUFJFUChNVF9UT1BfTUlTQ19GV19TVEFURSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxMzI6XHRcdFx0ICAgICAgIHdhID8gRldfU1RBVEVfUkRZIDogRldfU1RBVEVfRldfRE9XTkxPQUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjEzMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY1MDYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgRmlybXdhcmUgRG93bmxvYWQgU3RhdGVzKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGZpcm13YXJlIGRvd25sb2FkIHByb2Nlc3MgaXMgYmVoYXZpbmcsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBtdDc2YCBhbmQgYG10NzkxNWAgZHJpdmVycy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBgRldfU1RBVEVfRldfRE9XTkxPQURgIHN0YXRlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aGVuIHRoYXQgc3BlY2lmaWMgc3RhdGUgaXMgYWN0aXZlLiBXaGF0IHRyaWdnZXJzIGl0PyBXaGF0IGFjdGlvbnMgZG9lcyBpdCBkaWN0YXRlPyBXaGF0IGFyZSB0aGUgcG9zc2libGUgZXJyb3IgY29uZGl0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdGF0ZSwgYW5kIGhvdyBhcmUgdGhleSBoYW5kbGVkPyBJdCYjMzk7cyBhbGwgYWJvdXQgZW5zdXJpbmcgdGhlIGZpcm13YXJlIHVwZGF0ZXMgYXJlIHJvYnVzdCBhbmQgcmVsaWFibGUsIHNvIGdldHRpbmcgYSBzb2xpZCBncmFzcCBvbiB0aGF0IHBhcnRpY3VsYXIgZmxhZyBpcyBjcnVjaWFsLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RldfU1RBVEVfRldfRE9XTkxPQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xNDMzPXN0YXRpYyBpbnQgbXQ3NjE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNDM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM6MTQ0MDpcdGlmICh2YWwgIT0gRldfU1RBVEVfRldfRE9XTkxPQUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NDEtXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGaXJtd2FyZSBpcyBub3QgcmVhZHkgZm9yIGRvd25sb2FkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xNDYzPXN0YXRpYyBpbnQgbXQ3NjIyX2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNDcwLVx0dmFsID0gbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9UT1BfT0ZGX1JTViwgTVRfVE9QX09GRl9SU1ZfRldfU1RBVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM6MTQ3MTpcdGlmICh2YWwgIT0gRldfU1RBVEVfRldfRE9XTkxPQUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NzItXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGaXJtd2FyZSBpcyBub3QgcmVhZHkgZm9yIGRvd25sb2FkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oPTExNDQ9ZW51bSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oLTExNDUtXHRGV19TVEFURV9JTklUSUFMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaDoxMTQ2Olx0RldfU1RBVEVfRldfRE9XTkxPQUQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oLTExNDctXHRGV19TVEFURV9OT1JNQUxfT1BFUkFUSU9OLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIxMjk9bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjEzMS1cdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTMyOlx0XHRcdCAgICAgICB3YSA/IEZXX1NUQVRFX1JEWSA6IEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9MzU3Nz1zdGF0aWMgaW50IG10Nzk5Nl9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4Mi1cdC8qIG1ha2Ugc3VyZSBmdyBpcyBkb3dubG9hZCBzdGF0ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzU4MzpcdGlmIChtdDc5OTZfZmlybXdhcmVfc3RhdGUoZGV2LCBGV19TVEFURV9GV19ET1dOTE9BRCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM1ODQtXHRcdC8qIHJlc3RhcnQgZmlybXdhcmUgb25jZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4NS1cdFx0bXQ3OTk2X21jdV9yZXN0YXJ0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM1ODY6XHRcdHJldCA9IG10Nzk5Nl9maXJtd2FyZV9zdGF0ZShkZXYsIEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM1ODctXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz0zNzcyPXZvaWQgbXQ3OTk2X21jdV9leGl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzc3NC1cdG10Nzk5Nl9tY3VfcmVzdGFydChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzozNzc1Olx0aWYgKG10Nzk5Nl9maXJtd2FyZV9zdGF0ZShkZXYsIEZXX1NUQVRFX0ZXX0RPV05MT0FEKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzc3Ni1cdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0ZhaWxlZCB0byBleGl0IG1jdVxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MDMwCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNjU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVW5yZWFjaGFiaWxpdHkgb2YgbXQ3OTE1X3RoZXJtYWxfaW5pdCBpbiBRRU1VKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGlmIGBGV19TVEFURV9GV19ET1dOTE9BRGAgaXMgc2V0IHRvIDEsIHRoZW4gdGhlIGBGSUVMRF9QUkVQYCBtYWNybyB3aWxsIHByb2R1Y2UgYSBub24temVybyB2YWx1ZS4gSG93ZXZlciwgdGhlIGNyaXRpY2FsIGlzc3VlIHNlZW1zIHRvIGJlIHdpdGggdGhlIGZha2UgTU1JTyBtZW1vcnkgaW4gUUVNVS4gSWYgdGhhdCBtZW1vcnkgaXMgaW5pdGlhbGl6ZWQgdG8gMCwgdGhlIGBtdDc2X3BvbGxfbXNlY2AgZnVuY3Rpb24gd2lsbCBpbmV2aXRhYmx5IHRpbWVvdXQgYmVjYXVzZSBpdCYjMzk7cyBsb29raW5nIGZvciBhIG5vbi16ZXJvIHN0YXRlLgoKVGhpcyB0aW1lb3V0IGxlYWRzIHRvIGEgY2FzY2FkaW5nIHNlcmllcyBvZiBmYWlsdXJlczogYG10NzkxNV9maXJtd2FyZV9zdGF0ZWAgcmV0dXJucyBgLUVJT2AsIGZvbGxvd2VkIGJ5IGBtdDc5MTVfbG9hZF9maXJtd2FyZWAsIGBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmVgLCBgbXQ3OTE1X21jdV9pbml0YCwgYG10NzkxNV9pbml0X2hhcmR3YXJlYCwgYW5kIGZpbmFsbHkgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGFsbCBmYWlsaW5nLiBUaGUgZmFpbHVyZSBpbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgaXMgdGhlIGtleSDigJMgaXQgcHJldmVudHMgdGhlIGNhbGwgdG8gYG10NzkxNV90aGVybWFsX2luaXRgLiBUaHVzLCBJIGNhbiBjb25maWRlbnRseSBzdGF0ZSB0aGF0IGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyB1bnJlYWNoYWJsZSBpbiB0aGlzIHNjZW5hcmlvLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIGFsdGVybmF0aXZlOiB3aGF0IGlmIHRoZSBmYWtlIE1NSU8gKmlzbiYjMzk7dCogemVybz8gU3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpX2RldmljZV9hZGRgIGRvZXNuJiMzOTt0IGdpdmUgdXMgZHluYW1pYyBjb250cm9sIG92ZXIgTU1JTyByZWFkcy4gU3VyZSwgaXQgY2FuIG1hcCBtZW1vcnksIGFuZCB3ZSBjYW4gKndyaXRlKiB0byBpdCwgYnV0IHRoZSBkcml2ZXIgKnJlYWRzKiBmcm9tIGl0LiBJZiB0aGUgZHJpdmVyIHJlYWRzIGJlZm9yZSBhbnkgd3JpdGVzIGZyb20gU3l6a2FsbGVyIG9jY3VyLCB3ZSYjMzk7cmUgYmFjayB0byB6ZXJvLiBTeXprYWxsZXIgY2FuIHdyaXRlIHZhbHVlcyB0byB0aGUgZmFrZSBNTUlPIG1lbW9yeSwgYnV0IGl0IGRvZXNuJiMzOTt0IGtub3cgd2hpY2ggYWRkcmVzcyB0byB3cml0ZSB3aGF0IHRvIHBhc3MgdGhlIHBvbGxpbmcuIEl0JiMzOTtzIGltcHJvYmFibGUgdGhhdCBTeXprYWxsZXIgY291bGQgbWFuYWdlIHRvIHNhdGlzZnkgYWxsIHRoZSBkcml2ZXImIzM5O3MgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gY2hlY2tzLCBmaXJtd2FyZSBzdGF0ZSBjaGVja3MsIGFuZCBldmVyeXRoaW5nIGVsc2UsIGp1c3QgYnkgcmFuZG9tIHdyaXRlcy4KCkZ1cnRoZXJtb3JlLCBgbXQ3Nl9jb25uYWMyX2xvYWRfcGF0Y2hgIGFuZCBgbXQ3Nl9jb25uYWMyX2xvYWRfcmFtYCBkZW1hbmQgdGhlIHByZXNlbmNlIG9mIGxlZ2l0aW1hdGUgZmlybXdhcmUgZmlsZXMuIFdoaWxlIFN5emthbGxlciBtaWdodCBoYXZlIHNvbWUgZHVtbXkgZmlsZXMsIHRoZXkgYXJlIHVubGlrZWx5IHRvIGJlIHZhbGlkIGVub3VnaCB0byByZXNwb25kIHRvIE1DVSBjb21tYW5kcywgZXNwZWNpYWxseSB3aGVuIGNvbnNpZGVyaW5nIGFsbCB0aGUgc3RhdGVzIHRoZSBmaXJtd2FyZSBoYXMgdG8gYmUuCgpBZnRlciB0aGUgZmlybXdhcmUgaXMgbG9hZGVkLCBgbXQ3OTE1X2Zpcm13YXJlX3N0YXRlKGRldiwgdHJ1ZSlgIGNoZWNrcyBmb3IgYEZXX1NUQVRFX1JEWWAgKHdoaWNoIGlzIDMpLiBBc3N1bWluZyB3ZSBzb21laG93IGdldCBwYXN0IHRoYXQsIHRoZSBkcml2ZXIgc3RhcnRzIHNlbmRpbmcgTUNVIGNvbW1hbmRzIHZpYSBgbXQ3Nl9tY3Vfc2VuZF9tc2dgLCBjb21tYW5kcyBsaWtlIGBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3RgLCBgbXQ3OTE1X21jdV9zZXRfbXdkc2AsIGBtdDc5MTVfbWN1X3NldF9tdXJ1X2N0cmxgLCBhbmQgYG10NzkxNV9tY3VfaW5pdF9yeF9haXJ0aW1lYCwgd2hpY2ggYWxsIHJlbHkgb24gRE1BIHJpbmdzIG9yIE1NSU8gZm9yIHJlc3BvbnNlcy4gV2l0aCBubyByZWFsIE1DVSBwcmVzZW50LCB0aGlzIHdpbGwgdW5kb3VidGVkbHkgdGltZW91dCBhbmQgZmFpbCwgZW5zdXJpbmcgdGhhdCBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYCBmYWlscyBhZ2Fpbi4KClRoZXJlZm9yZSwgd2hldGhlciB0aGUgZmFrZSBNTUlPIGlzIGluaXRpYWxpemVkIHRvIDAgb3Igc29tZXRoaW5nIGVsc2UsIHRoZSBmaW5hbCBjb25jbHVzaW9uIGlzIHN0aWxsIHRoYXQgYG10NzkxNV90aGVybWFsX2luaXRgIGlzIG5vdCByZWFjaGFibGUgaW4gUUVNVS4KTGV0IG1lIHF1aWNrbHkgY2hlY2sgaWYgYG10NzkxNV90aGVybWFsX2luaXRgIGlzIGNhbGxlZCBhbnl3aGVyZSBlbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfdGhlcm1hbF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xOTk9c3RhdGljIHZvaWQgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0yMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MjEzOnN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTIxNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTczMD1tdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NzYyOlx0cmV0ID0gbXQ3OTE1X3RoZXJtYWxfaW5pdChwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc2My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTEyNTg9aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMjk3Olx0cmV0ID0gbXQ3OTE1X3RoZXJtYWxfaW5pdChcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjk4LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk5OTgKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIHRoZSBtdDc5MTUgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKClJpZ2h0LCBzbyB0aGVzZSBgbXQ3OTE1X3JlZ2lzdGVyX2V4dF9waHlgIGFuZCBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgZnVuY3Rpb25zLi4uIHRoZSB0ZXh0IGluZGljYXRlcyB0aGV5JiMzOTtyZSBvbmx5IGNhbGxlZCB3aXRoaW4gYG10NzkxNV9yZWdpc3Rlcl9leHRfcGh5YCBhbmQgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLiBUaGV5JiMzOTtyZSBib3RoIGNhbGxlZCBkdXJpbmcgdGhlIGRldmljZSBwcm9iZSwgYW5kIGNydWNpYWxseSwgKmFmdGVyKiBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgLiBUaGF0IHRlbGxzIG1lIHRoZXNlIGFyZW4mIzM5O3QgcGFydCBvZiB0aGUgaW5pdGlhbCBoYXJkd2FyZSBzZXR1cCBpdHNlbGYuIFRoZXkgc2VlbSB0byBiZSByZWdpc3RlcmluZyBzb21ldGhpbmcsIGxpa2VseSByZXNvdXJjZXMgb3IgY2FwYWJpbGl0aWVzLCB3aXRoIHRoZSBrZXJuZWwgYWZ0ZXIgdGhlIGhhcmR3YXJlIGlzIGluaXRpYWxpemVkLiBUaGUgaW1wbGljYXRpb24gYmVpbmcgdGhleSBhcmUgcHJvYmFibHkgcGFydCBvZiBhIGxhdGUtc3RhZ2UgcmVnaXN0ZXIgb3BlcmF0aW9uLiBTaW5jZSB0aGV5JiMzOTtyZSBvbmx5IGNhbGxlZCBpbiBwcm9iZSBhbmQgb25seSBhZnRlciBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiwgdGhleSB3b3VsZCBiZSB1bnJlYWNoYWJsZSBpbiBRRU1VIGJlY2F1c2UgdGhlIGRldmljZSBwcm9iZSBpc24mIzM5O3QgcnVubmluZy4KCkhvbGQgb24gYSBzZWNvbmQuLi4gd2hhdCBhYm91dCBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGA/IEkgaGF2ZSB0byBjb25zaWRlciBpdHMgcGxhY2VtZW50IGFuZCB0aW1pbmcgaW4gdGhlIGxpZmVjeWNsZSwgb3RoZXJ3aXNlIHRoZXJlIGlzIG5vIHRydWUgYXNzZXNzbWVudCBvZiB0aGUgaW1wYWN0LiBUaGUgZm9jdXMgb24gJiMzNDtyZWdpc3RlciYjMzQ7IGltcGxpZXMgaXQgbWlnaHQgYmUgcmVsYXRlZCB0byAmIzM0O3VucmVnaXN0ZXImIzM0OywgYW5kIGl0cyBjb250ZXh0IGluIHRoZSBwcm9iZSBvciByZW1vdmFsIHBoYXNlcyBpcyBhbHNvIGltcG9ydGFudCB0byBkZXRlcm1pbmUgaXRzIHJlYWNoIGluIFFFTVUuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUgSSBuZWVkIHRvIGV4cGxvcmUgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZV9vcHMgbXQ3OTE1X3R6X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjE5OTpzdGF0aWMgdm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMjAwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MjEzPXN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0yNTYtXHRpZiAocmV0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjI1NzpcdFx0bXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTI1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTIzND1zdGF0aWMgdm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI0MjpcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjQzLVx0bXQ3Nl91bnJlZ2lzdGVyX3BoeShtcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTI1OD1pbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMzI2LXVucmVnX3RoZXJtYWw6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTMyNzpcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTMyOC11bnJlZ19kZXY6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTEzMzg9dm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTM0NC1cdG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTM0NTpcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTM0Ni1cdG10NzZfdW5yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTI1OQoJCQkJCQkJb3V0cHV0OiAxNDYKCQkJCQkJCXRob3VnaHRzOiAzNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIG10NzkxNSBUaGVybWFsIFVucmVnaXN0cmF0aW9uIFBhdGhzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoZSBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGAgZnVuY3Rpb24gaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgdW5kZXIgdGhlIGNvbmRpdGlvbnMgd2UmIzM5O3JlIGNvbmNlcm5lZCBhYm91dCwgcGFydGljdWxhcmx5IHdpdGhpbiBhIFFFTVUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpIZXJlJiMzOTtzIG15IHJlYXNvbmluZzogaXQgbG9va3MgbGlrZSBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGAgZ2V0cyBjYWxsZWQgdW5kZXIgc2V2ZXJhbCBjaXJjdW1zdGFuY2VzOiBlcnJvciBwYXRocyB3aXRoaW4gYG10NzkxNV90aGVybWFsX2luaXRgIGFuZCBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAsIGFuZCBhbHNvIGZyb20gYG10NzkxNV91bnJlZ2lzdGVyX2V4dF9waHlgIGFuZCBgbXQ3OTE1X3VucmVnaXN0ZXJfZGV2aWNlYC4gVGhlIGlzc3VlIGlzLCBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgY2FuIGZhaWwgZWFybHkuIElmIHRoaXMgaGFwcGVucywgdGhlIGNvZGUgZmxvdyBsaWtlbHkganVtcHMgdG8gYSBjbGVhbnVwIHJvdXRpbmUgbGlrZSBgZnJlZV9waHkyYCBvciBgc3RvcF9od2AsIHdoaWNoIGJ5cGFzc2VzIHRoZSBjYWxsIHRvIGBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsYCBlbnRpcmVseS4gRnVydGhlcm1vcmUsIGBtdDc5MTVfdW5yZWdpc3Rlcl9kZXZpY2VgIGlzIG5vcm1hbGx5IGNhbGxlZCBmcm9tIGBtdDc5MTVfcGNpX3JlbW92ZWAgb3IgYG10Nzk4eF93bWFjX3JlbW92ZWAsIGJ1dCBiZWNhdXNlIG9mIHRoZSBpbml0aWFsIGZhaWx1cmUgb2YgYG10NzkxNV9wY2lfcHJvYmVgLCBgbXQ3OTE1X3BjaV9yZW1vdmVgIGlzIG5ldmVyIGV4ZWN1dGVkLiBDb25zZXF1ZW50bHksIHRoaXMgbWFrZXMgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIHVucmVhY2hhYmxlLgoKU2luY2UgdGhlc2UgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBRRU1VLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gd2UmIzM5O3JlIGNvbnNpZGVyaW5nLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgcmVxdWlyZW1lbnRzLCBqdXN0IHRvIG1ha2Ugc3VyZS4gT2theSwgdGhlIGluc3RydWN0aW9ucyBzdGF0ZSB0aGF0IHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIGNvZGUgd2l0aGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIGEgcGVyZmVjdCBmaXQhIGBtdDc5MTVgIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgV2ktRmkgZHJpdmVyLCBhbmQgaXQgcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkIGluIFFFTVUuIEdpdmVuIHRoaXMgYW5kIHRoYXQgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB0aGlzIGRyaXZlciwgaXQmIzM5O3MgY2xlYXI6IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSByaWdodCBjYWxsIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIE1UNzkxNSBQQ0llIFdpLUZpIGRyaXZlciAobXQ3OTE1KSB0byBmaXggYSB0aGVybWFsIHpvbmUgdW5yZWdpc3RyYXRpb24gaXNzdWUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0byBpbml0aWFsaXplIChlLmcuLCBwYXNzaW5nIGRyaXZlciBvd25lcnNoaXAgY2hlY2tzLCBmaXJtd2FyZSBsb2FkaW5nLCBhbmQgTUNVIGNvbW11bmljYXRpb24pLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbiBgbXQ3OTE1X3RoZXJtYWxfaW5pdGAgYW5kIGBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsYCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBNVDc5MTUgUENJZSBXaS1GaSBkcml2ZXIgKG10NzkxNSkgdG8gZml4IGEgdGhlcm1hbCB6b25lIHVucmVnaXN0cmF0aW9uIGlzc3VlLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgdG8gaW5pdGlhbGl6ZSAoZS5nLiwgcGFzc2luZyBkcml2ZXIgb3duZXJzaGlwIGNoZWNrcywgZmlybXdhcmUgbG9hZGluZywgYW5kIE1DVSBjb21tdW5pY2F0aW9uKS4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW4gYG10NzkxNV90aGVybWFsX2luaXRgIGFuZCBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGAgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzU6MDkuMTEwNjYxNDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDEwOTcyODgwMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTE1IFBDSWUgV2ktRmkgZHJpdmVyIChtdDc5MTUpIHRvIGZpeCBhIHRoZXJtYWwgem9uZSB1bnJlZ2lzdHJhdGlvbiBpc3N1ZS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGluaXRpYWxpemUgKGUuZy4sIHBhc3NpbmcgZHJpdmVyIG93bmVyc2hpcCBjaGVja3MsIGZpcm13YXJlIGxvYWRpbmcsIGFuZCBNQ1UgY29tbXVuaWNhdGlvbikuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGluIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBhbmQgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzU6MDkuMTEwNjY2NzRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4OTk5MDMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBkZTQwMjAwMWVlNmNlNWIzOWJhY2M4ZTg2YWViOWZkMGZiNjYxZWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTQ6MzU6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jXFxuaW5kZXggY2E0NmEyMDNhYTQ4Yi4uNWZlNzBkYzgyMmViYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmNcXG5AQCAtMjAwLDYgKzIwMCw5IEBAIHN0YXRpYyB2b2lkIG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4ge1xcbiBcXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gcGh5LVxcdTAwM2VtdDc2LVxcdTAwM2Vody1cXHUwMDNld2lwaHk7XFxuIFxcbitcXHRpZiAocGh5LVxcdTAwM2V0em9uZSlcXG4rXFx0XFx0ZGV2bV90aGVybWFsX29mX3pvbmVfdW5yZWdpc3RlcihwaHktXFx1MDAzZWRldi1cXHUwMDNlbXQ3Ni5kZXYsIHBoeS1cXHUwMDNldHpvbmUpO1xcbitcXG4gXFx0aWYgKCFwaHktXFx1MDAzZWNkZXYpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuQEAgLTIxMyw2ICsyMTYsNyBAQCBzdGF0aWMgaW50IG10NzkxNV90aGVybWFsX2luaXQoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4gXFx0c3RydWN0IHRoZXJtYWxfY29vbGluZ19kZXZpY2UgKmNkZXY7XFxuIFxcdHN0cnVjdCBkZXZpY2UgKmh3bW9uO1xcbiBcXHRjb25zdCBjaGFyICpuYW1lO1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0bmFtZSA9IGRldm1fa2FzcHJpbnRmKFxcdTAwMjZ3aXBoeS1cXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcXFwibXQ3OTE1XyVzXFxcIixcXG4gXFx0XFx0XFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xcbkBAIC0yMzgsOCArMjQyLDggQEAgc3RhdGljIGludCBtdDc5MTVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXFxuIFxcdGlmIChJU19FUlIocGh5LVxcdTAwM2V0em9uZSkpIHtcXG4gXFx0XFx0aWYgKFBUUl9FUlIocGh5LVxcdTAwM2V0em9uZSkgIT0gLUVOT0RFVilcXG4gXFx0XFx0XFx0ZGV2X3dhcm4ocGh5LVxcdTAwM2VkZXYtXFx1MDAzZW10NzYuZGV2LFxcbi1cXHRcXHRcXHRcXHQgXFxcImZhaWxlZCB0byByZWdpc3RlciB0aGVybWFsIHpvbmU6ICVsZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0IFBUUl9FUlIocGh5LVxcdTAwM2V0em9uZSkpO1xcbitcXHRcXHRcXHRcXHQgXFxcImZhaWxlZCB0byByZWdpc3RlciB0aGVybWFsIHpvbmUgJWQ6ICVsZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlYmFuZF9pZHgsIFBUUl9FUlIocGh5LVxcdTAwM2V0em9uZSkpO1xcbiBcXHRcXHRwaHktXFx1MDAzZXR6b25lID0gTlVMTDtcXG4gXFx0fVxcbiBcXG5AQCAtMjQ4LDcgKzI1MiwxMSBAQCBzdGF0aWMgaW50IG10NzkxNV90aGVybWFsX2luaXQoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4gXFxuIFxcdGh3bW9uID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMoXFx1MDAyNndpcGh5LVxcdTAwM2VkZXYsIG5hbWUsIHBoeSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIG10NzkxNV9od21vbl9ncm91cHMpO1xcbi1cXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcXG4rXFx0cmV0ID0gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0bXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChwaHkpO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbXQ3OTE1X2xlZF9zZXRfY29uZmlnKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTowOS41MDE1MDM1N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE0MDcwNjQzMjIzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIE1UNzkxNSBQQ0llIFdpLUZpIGRyaXZlciAobXQ3OTE1KSB0byBmaXggYSB0aGVybWFsIHpvbmUgdW5yZWdpc3RyYXRpb24gaXNzdWUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0byBpbml0aWFsaXplIChlLmcuLCBwYXNzaW5nIGRyaXZlciBvd25lcnNoaXAgY2hlY2tzLCBmaXJtd2FyZSBsb2FkaW5nLCBhbmQgTUNVIGNvbW11bmljYXRpb24pLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbiBgbXQ3OTE1X3RoZXJtYWxfaW5pdGAgYW5kIGBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsYCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBkZTQwMjAwMWVlNmNlNWIzOWJhY2M4ZTg2YWViOWZkMGZiNjYxZWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxNDozNTowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuY1xuaW5kZXggY2E0NmEyMDNhYTQ4Yi4uNWZlNzBkYzgyMmViYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jXG5AQCAtMjAwLDYgKzIwMCw5IEBAIHN0YXRpYyB2b2lkIG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbiB7XG4gXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gcGh5LVx1MDAzZW10NzYtXHUwMDNlaHctXHUwMDNld2lwaHk7XG4gXG4rXHRpZiAocGh5LVx1MDAzZXR6b25lKVxuK1x0XHRkZXZtX3RoZXJtYWxfb2Zfem9uZV91bnJlZ2lzdGVyKHBoeS1cdTAwM2VkZXYtXHUwMDNlbXQ3Ni5kZXYsIHBoeS1cdTAwM2V0em9uZSk7XG4rXG4gXHRpZiAoIXBoeS1cdTAwM2VjZGV2KVxuIFx0XHRyZXR1cm47XG4gXG5AQCAtMjEzLDYgKzIxNiw3IEBAIHN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuIFx0c3RydWN0IHRoZXJtYWxfY29vbGluZ19kZXZpY2UgKmNkZXY7XG4gXHRzdHJ1Y3QgZGV2aWNlICpod21vbjtcbiBcdGNvbnN0IGNoYXIgKm5hbWU7XG4rXHRpbnQgcmV0O1xuIFxuIFx0bmFtZSA9IGRldm1fa2FzcHJpbnRmKFx1MDAyNndpcGh5LVx1MDAzZWRldiwgR0ZQX0tFUk5FTCwgXCJtdDc5MTVfJXNcIixcbiBcdFx0XHQgICAgICB3aXBoeV9uYW1lKHdpcGh5KSk7XG5AQCAtMjM4LDggKzI0Miw4IEBAIHN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuIFx0aWYgKElTX0VSUihwaHktXHUwMDNldHpvbmUpKSB7XG4gXHRcdGlmIChQVFJfRVJSKHBoeS1cdTAwM2V0em9uZSkgIT0gLUVOT0RFVilcbiBcdFx0XHRkZXZfd2FybihwaHktXHUwMDNlZGV2LVx1MDAzZW10NzYuZGV2LFxuLVx0XHRcdFx0IFwiZmFpbGVkIHRvIHJlZ2lzdGVyIHRoZXJtYWwgem9uZTogJWxkXFxuXCIsXG4tXHRcdFx0XHQgUFRSX0VSUihwaHktXHUwMDNldHpvbmUpKTtcbitcdFx0XHRcdCBcImZhaWxlZCB0byByZWdpc3RlciB0aGVybWFsIHpvbmUgJWQ6ICVsZFxcblwiLFxuK1x0XHRcdFx0IHBoeS1cdTAwM2VtdDc2LVx1MDAzZWJhbmRfaWR4LCBQVFJfRVJSKHBoeS1cdTAwM2V0em9uZSkpO1xuIFx0XHRwaHktXHUwMDNldHpvbmUgPSBOVUxMO1xuIFx0fVxuIFxuQEAgLTI0OCw3ICsyNTIsMTEgQEAgc3RhdGljIGludCBtdDc5MTVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4gXG4gXHRod21vbiA9IGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzKFx1MDAyNndpcGh5LVx1MDAzZWRldiwgbmFtZSwgcGh5LFxuIFx0XHRcdFx0XHRcdCAgICAgICBtdDc5MTVfaHdtb25fZ3JvdXBzKTtcbi1cdHJldHVybiBQVFJfRVJSX09SX1pFUk8oaHdtb24pO1xuK1x0cmV0ID0gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcbitcdGlmIChyZXQpXG4rXHRcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwocGh5KTtcbitcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG10NzkxNV9sZWRfc2V0X2NvbmZpZyhzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldixcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM1OjA5LjUwMTUwNDk0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY5MDM5NjQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaS1GaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBpdCdzIG1vZGlmeWluZyB0aGUgdGhlcm1hbCBtYW5hZ2VtZW50LCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIFNwZWNpZmljYWxseSwgaXQncyB1cGRhdGluZyB0aGUgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGZ1bmN0aW9uIHRvIHVucmVnaXN0ZXIgdGhlIHRoZXJtYWwgem9uZSAoYHBoeS1cdTAwM2V0em9uZWApIHVzaW5nIGBkZXZtX3RoZXJtYWxfb2Zfem9uZV91bnJlZ2lzdGVyYCBpZiB0aGF0IHpvbmUgZXhpc3RzLiBUaGF0J3MgZ29vZCBwcmFjdGljZS4gQW5kIHRoZW4sIGluIGBtdDc5MTVfdGhlcm1hbF9pbml0YCwgaWYgYGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzYCBmYWlscywgaXQgbm93IGNhbGxzIGBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKHBoeSlgLiBNYWtlcyBzZW5zZSwgY2xlYW51cCBpcyBjcnVjaWFsIG9uIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzLiBPaCwgYW5kIGl0J3MgYWxzbyB0d2Vha2luZyBhIHdhcm5pbmcgbWVzc2FnZSwgcHJvYmFibHkgZm9yIGJldHRlciBjbGFyaXR5LlxuXG5CdXQgd2FpdCBhIHNlY29uZC4uLiBgbXQ3OTE1YC4uLiB0aGF0J3MgYSBNZWRpYVRlayBXaS1GaSBkcml2ZXIsIGlzbid0IGl0PyBSaWdodCwgaXQncyBmb3IgdGhvc2UgTVQ3OTE1LCBNVDc5ODYsIE1UNzkxNiwgYW5kIE1UNzk4MSBjaGlwc2V0cy4gSSBzZWVtIHRvIHJlY2FsbCBpdCBiZWluZyBhIFBDSWUgZHJpdmVyLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQuIFllcywgaXQncyBhIFBDSWUgZHJpdmVyLiBUaGF0IHRocm93cyB1cCBhIGJpdCBvZiBhIGZsYWcgZm9yIGZ1enppbmcgY29uc2lkZXJhdGlvbnMuIFBDSWUgV2ktRmkgZHJpdmVycywgZXNwZWNpYWxseSB0aGUgdmVuZG9yLXNwZWNpZmljIG9uZXMgbGlrZSB0aGlzLCBhcmVuJ3QgdXN1YWxseSB0aGUgZWFzaWVzdCB0byBmdXp6IGRpcmVjdGx5IGluIHNvbWV0aGluZyBsaWtlIFFFTVUuIFRoZXkgb2Z0ZW4gcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgdGhhdCBhcmUgdG91Z2ggdG8gZW11bGF0ZS4gVW5sZXNzIHRoZXkgaGF2ZSBzb21lIGRlZGljYXRlZCBlbXVsYXRpb24gc3VwcG9ydCwgb3IgaGFwcGVuIHRvIGJlIFVTQi9TRElPIGRyaXZlcnMgd2hpY2ggYXJlIGEgYml0IG1vcmUgYW1lbmFibGUgdG8gZW11bGF0aW9uLCBmdXp6aW5nIFBDSWUgZHJpdmVycyBpcyBhIGNoYWxsZW5nZS4gU28sIEkgbmVlZCB0byBjaGVjayBob3cgZXhhY3RseSBpdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgZGV2aWNlLCB0aGUgbmF0dXJlIG9mIHRoZSBpbnRlcmZhY2Ugd2lsbCBkZXRlcm1pbmUgYSBtb3JlIHN1aXRhYmxlIG1ldGhvZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5NSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM1OjE2LjE5MTkwMzQzNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mjk3OTgyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTczMSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUtMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5MTVFKSArPSBtdDc5MTVlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZS00LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlOjU6bXQ3OTE1ZS15IDo9IHBjaS5vIGluaXQubyBkbWEubyBlZXByb20ubyBtYWluLm8gbWN1Lm8gbWFjLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlLTYtXFx0ICAgICBkZWJ1Z2ZzLm8gbW1pby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZTo4Om10NzkxNWUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlOjk6bXQ3OTE1ZS0kKENPTkZJR19NVDc5OFhfV01BQykgKz0gc29jLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZToxMDptdDc5MTVlLSQoQ09ORklHX0RFVl9DT1JFRFVNUCkgKz0gY29yZWR1bXAub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz0xMj1NT0RVTEVfUEFSTV9ERVNDKGNvcmVkdW1wX21lbWR1bXAsIFxcXCJPcHRpb25hbCBhYmlsaXR5IHRvIGR1bXAgZmlybXdhcmUgbWVtb3J5XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gbXQ3OTE1X21lbV9yZWdpb25zW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNS1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjI6c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiBtdDc5MTZfbWVtX3JlZ2lvbnNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIzLVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo1NTpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uIG10Nzk4eF9tZW1fcmVnaW9uc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtNTYtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjg4OmNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjg5Om10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgKm51bSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtOTItXFx0Y2FzZSAweDc5MTU6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo5MzpcXHRcXHQqbnVtID0gQVJSQVlfU0laRShtdDc5MTVfbWVtX3JlZ2lvbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6OTQ6XFx0XFx0cmV0dXJuIFxcdTAwMjZtdDc5MTVfbWVtX3JlZ2lvbnNbMF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy05NS1cXHRjYXNlIDB4Nzk4MTpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTA3OnN0YXRpYyBpbnQgbXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fc2l6ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTA4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjEwOTpcXHRjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gKm1lbV9yZWdpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMTAtXFx0c2l6ZV90IHNpemUgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMTQ6XFx0bWVtX3JlZ2lvbiA9IG10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChkZXYsIFxcdTAwMjZudW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTE1LVxcdGlmICghbWVtX3JlZ2lvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTIzLVxcdC8qIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBoZWFkZXJzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMjQ6XFx0c2l6ZSArPSBudW0gKiBzaXplb2Yoc3RydWN0IG10NzkxNV9tZW1faGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEyNS1cXHQvKiBtYWtlIHN1cmUgaXQgaXMgYWxpZ25lZCA0IGJ5dGVzIGZvciBkZWJ1ZyBtZXNzYWdlIHByaW50IG91dCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMzE6c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICptdDc5MTVfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMzIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTMzOlxcdHN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YSA9IGRldi1cXHUwMDNlY29yZWR1bXAuY3Jhc2hfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MTQzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNDQ6bXQ3OTE1X2NvcmVkdW1wX2Z3X3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNDUtXFx0XFx0XFx0IGJvb2wgKmV4Y2VwdGlvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTUwLVxcdHN0YXRlID0gKHUzMiltdDc2X2dldF9maWVsZChkZXYsIE1UX0ZXX0FTU0VSVF9TVEFULCBHRU5NQVNLKDcsIDApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE1MTpcXHRjb3VudCA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNTItXFx0XFx0KHUzMiltdDc2X2dldF9maWVsZChkZXYsIE1UX0ZXX0VYQ0VQVF9DT1VOVCwgR0VOTUFTSygxNSwgOCkpIDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MTY2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNjc6bXQ3OTE1X2NvcmVkdW1wX2Z3X3RyYWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNjgtXFx0XFx0XFx0IGJvb2wgZXhjZXB0aW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNzU6XFx0biA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNzYtXFx0ICAgICh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBiYXNlLCBHRU5NQVNLKDcsIDApKSA6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE4MC1cXHRpcnEgPSBtdDc2X3JyKGRldiwgYmFzZSArIDB4OCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxODE6XFx0biA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xODItXFx0ICAgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCBpcnEpIDogRklFTERfR0VUKEdFTk1BU0soMjMsIDE2KSwgaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTg1LVxcdHNjaCA9IG10NzZfcnIoZGV2LCBNVF9GV19TQ0hFRF9JTkZPKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE4NjpcXHRuID0gaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE4Ny1cXHQgICAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIHNjaCkgOiBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHNjaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE5My1cXHRcXHQvKiBzY2hlZCB0cmFjZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTk0OlxcdFxcdG4gPSBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTk1LVxcdFxcdCAgICBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHNjaCkgOiBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgc2NoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjAxLVxcdFxcdGZvciAoeSA9IGR1bXAtXFx1MDAzZXNjaGVkX2luZm9faWR4LCBpID0gMDsgaSBcXHUwMDNjIG47IGkrKywgeSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyMDI6XFx0XFx0XFx0bXQ3OTE1X21lbWNweV9mcm9taW8oZGV2LCBkdW1wLVxcdTAwM2VzY2hlZCwgYmFzZSArIDB4YyArIHkgKiAxMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIwMy1cXHRcXHRcXHRcXHRcXHQgICAgIHNpemVvZihkdW1wLVxcdTAwM2VzY2hlZCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDctXFx0XFx0LyogaXJxIHRyYWNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyMDg6XFx0XFx0biA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDktXFx0XFx0ICAgIEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgaXJxKSA6IEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCBpcnEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMTUtXFx0XFx0Zm9yICh5ID0gZHVtcC1cXHUwMDNlaXJxX2luZm9faWR4LCBpID0gMDsgaSBcXHUwMDNjIG47IGkrKywgeSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyMTY6XFx0XFx0XFx0bXQ3OTE1X21lbWNweV9mcm9taW8oZGV2LCBkdW1wLVxcdTAwM2VpcnEsIGJhc2UgKyAweDQgKyB5ICogMTYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMTctXFx0XFx0XFx0XFx0XFx0ICAgICBzaXplb2YoZHVtcC1cXHUwMDNlaXJxKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTIyMz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjI0Om10NzkxNV9jb3JlZHVtcF9md19zdGFjayhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjI1LVxcdFxcdFxcdCBib29sIGV4Y2VwdGlvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MjQ0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyNDU6bXQ3OTE1X2NvcmVkdW1wX2Z3X3Rhc2soc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTI0Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyNDc6XFx0dTMyIG9mZnMgPSBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPyAweGUwIDogMHgxNzA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTI2OD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjY5Om10NzkxNV9jb3JlZHVtcF9md19jb250ZXh0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyODA6XFx0XFx0aWR4ID0gaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTI4MS1cXHRcXHQgICAgICAodTMyKW10NzZfZ2V0X2ZpZWxkKGRldiwgTVRfRldfQ0lSUV9JRFgsIEdFTk1BU0soMzEsIDE2KSkgOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMDI6c3RhdGljIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKm10NzkxNV9jb3JlZHVtcF9idWlsZChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzAzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMwNDpcXHRzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKmNyYXNoX2RhdGEgPSBkZXYtXFx1MDAzZWNvcmVkdW1wLmNyYXNoX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMDU6XFx0c3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMwNjpcXHRzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wX21lbSAqZHVtcF9tZW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zMDctXFx0c2l6ZV90IGxlbiwgc29mYXIgPSAwLCBoZHJfbGVuID0gc2l6ZW9mKCpkdW1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzI3OlxcdGR1bXAgPSAoc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqKShidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzI4LVxcdGR1bXAtXFx1MDAzZWxlbiA9IGxlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQxOlxcdG10NzkxNV9jb3JlZHVtcF9md19zdGF0ZShkZXYsIGR1bXAsIFxcdTAwMjZleGNlcHRpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQyOlxcdG10NzkxNV9jb3JlZHVtcF9md190cmFjZShkZXYsIGR1bXAsIGV4Y2VwdGlvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDM6XFx0bXQ3OTE1X2NvcmVkdW1wX2Z3X3Rhc2soZGV2LCBkdW1wKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM0NDpcXHRtdDc5MTVfY29yZWR1bXBfZndfY29udGV4dChkZXYsIGR1bXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQ1OlxcdG10NzkxNV9jb3JlZHVtcF9md19zdGFjayhkZXYsIGR1bXAsIGV4Y2VwdGlvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNDctXFx0LyogZ2F0aGVyIG1lbW9yeSBjb250ZW50ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDg6XFx0ZHVtcF9tZW0gPSAoc3RydWN0IG10NzkxNV9jb3JlZHVtcF9tZW0gKikoYnVmICsgc29mYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQ5LVxcdGR1bXBfbWVtLVxcdTAwM2VsZW4gPSBjcmFzaF9kYXRhLVxcdTAwM2VtZW1kdW1wX2J1Zl9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM1OTppbnQgbXQ3OTE1X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzYwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM2MTpcXHRzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzYzOlxcdGR1bXAgPSBtdDc5MTVfY29yZWR1bXBfYnVpbGQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM2NC1cXHRpZiAoIWR1bXApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6Mzc0OmludCBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM3NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNzY6XFx0c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICpjcmFzaF9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzc3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zODQtXFx0aWYgKGNvcmVkdW1wX21lbWR1bXApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM4NTpcXHRcXHRjcmFzaF9kYXRhLVxcdTAwM2VtZW1kdW1wX2J1Zl9sZW4gPSBtdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9zaXplKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zODYtXFx0XFx0aWYgKCFjcmFzaF9kYXRhLVxcdTAwM2VtZW1kdW1wX2J1Zl9sZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjQwMDp2b2lkIG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy00MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6NzojaW5jbHVkZSBcXFwibXQ3OTE1LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC04LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg9OT1zdHJ1Y3QgdHJhY2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjE0OnN0cnVjdCBtdDc5MTVfY29yZWR1bXAge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTUtXFx0Y2hhciBtYWdpY1sxNl07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6ODA6c3RydWN0IG10NzkxNV9jb3JlZHVtcF9tZW0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtODEtXFx0dTMyIGxlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDo4NTpzdHJ1Y3QgbXQ3OTE1X21lbV9oZHIge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtODYtXFx0dTMyIHN0YXJ0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC05MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjkxOnN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC05Mi1cXHR1MzIgc3RhcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTAwOmNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDE6bXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHUzMiAqbnVtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwMjpzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKm10NzkxNV9jb3JlZHVtcF9uZXcoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDM6aW50IG10NzkxNV9jb3JlZHVtcF9zdWJtaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDQ6aW50IG10NzkxNV9jb3JlZHVtcF9yZWdpc3RlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwNTp2b2lkIG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDk6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTEwOm10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgKm51bSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTExMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTExNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjExNTpzdGF0aWMgaW5saW5lIGludCBtdDc5MTVfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKm10NzkxNV9jb3JlZHVtcF9uZXcoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEyMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEyNTpzdGF0aWMgaW5saW5lIGludCBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEyNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEzMDpzdGF0aWMgaW5saW5lIHZvaWQgbXQ3OTE1X2NvcmVkdW1wX3VucmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEzMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvcmVsYXkuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTojaW5jbHVkZSBcXFwibXQ3OTE1LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTYtI2luY2x1ZGUgXFxcImVlcHJvbS5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTIxPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjI6bXQ3OTE1X2ltcGxpY2l0X3R4YmZfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQ6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzozMTpcXHRyZXR1cm4gbXQ3OTE1X21jdV9zZXRfdHhiZihkZXYsIE1UX0JGX1RZUEVfVVBEQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMzItfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTM0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MzU6bXQ3OTE1X2ltcGxpY2l0X3R4YmZfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zNi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjM3OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfaW1wbGljaXRfdHhiZiwgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NTpcXHRcXHRcXHQgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTQ4PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ5Om10NzkxNV9zeXNfcmVjb3Zlcnlfc2V0KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUwLVxcdFxcdFxcdHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUyOlxcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUzOlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTQtXFx0Ym9vbCBiYW5kID0gcGh5LVxcdTAwM2VtdDc2LVxcdTAwM2ViYW5kX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03NC1cXHRjYXNlIFNFUl9RVUVSWTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzU6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgMCwgMCwgYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTc2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgyLVxcdGNhc2UgU0VSX1NFVF9SRUNPVkVSX0wzX0JGOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MzpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X3NldF9zZXIoZGV2LCBTRVJfRU5BQkxFLCBCSVQodmFsKSwgYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTg0LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjg3OlxcdFxcdHJldCA9IG10NzkxNV9tY3Vfc2V0X3NlcihkZXYsIFNFUl9SRUNPVkVSLCB2YWwsIGJhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04OC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05Mi1cXHRcXHRtdDc2X3NldChkZXYsIE1UX1dGRE1BMF9NQ1VfSE9TVF9JTlRfRU5BLCBNVF9NQ1VfQ01EX1dEVF9NQVNLKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6OTM6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgMSwgMywgYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk0LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTctXFx0XFx0ZGV2LVxcdTAwM2VyZWNvdmVyeS5zdGF0ZSB8PSBNVF9NQ1VfQ01EX1dEVF9NQVNLO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5ODpcXHRcXHRtdDc5MTVfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTktXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MTEzPXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjExNDptdDc5MTVfc3lzX3JlY292ZXJ5X2dldChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMTUtXFx0XFx0XFx0c2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTExNi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjExNzpcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMTg6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMTktXFx0Y2hhciAqYnVmZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjE5MzpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBtdDc5MTVfc3lzX3JlY292ZXJ5X29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTk0OlxcdC53cml0ZSA9IG10NzkxNV9zeXNfcmVjb3Zlcnlfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxOTU6XFx0LnJlYWQgPSBtdDc5MTVfc3lzX3JlY292ZXJ5X2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTk2LVxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjAwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjAxOm10NzkxNV9yYWRhcl90cmlnZ2VyKHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIwMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjA0LSNkZWZpbmUgUkFEQVJfQkFDS0dST1VORFxcdDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjA1OlxcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMDY6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMDctXFx0aW50IHJkZF9pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMTc6XFx0cmRkX2lkeCA9IG10NzkxNV9nZXRfcmRkX2lkeChwaHksIHZhbCA9PSBSQURBUl9CQUNLR1JPVU5EKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjE4LVxcdGlmIChyZGRfaWR4IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTIyNz1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yYWRhcl90cmlnZ2VyLCBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMjg6XFx0XFx0XFx0IG10NzkxNV9yYWRhcl90cmlnZ2VyLCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjMwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjMxOm10NzkxNV9tdXJ1X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMzIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMzM6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjM1LVxcdGRldi1cXHUwMDNlbXVydV9kZWJ1ZyA9IHZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjM2OlxcdG10NzkxNV9tY3VfbXVydV9kZWJ1Z19zZXQoZGV2LCBkZXYtXFx1MDAzZW11cnVfZGVidWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMzctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjQxPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQyOm10NzkxNV9tdXJ1X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjQzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQ0OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNTE6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfbXVydV9kZWJ1ZywgbXQ3OTE1X211cnVfZGVidWdfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNTI6XFx0XFx0XFx0IG10NzkxNV9tdXJ1X2RlYnVnX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1NDpzdGF0aWMgaW50IG10NzkxNV9tdXJ1X3N0YXRzX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNTY6XFx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1NzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI1OC1cXHRzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRsX25vbl9oZV90eXBlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyODE6XFx0cmV0ID0gbXQ3OTE1X21jdV9tdXJ1X2RlYnVnX2dldChwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yODItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00MzktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NDA6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV9tdXJ1X3N0YXRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz00NDI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NDM6bXQ3OTE1X3JkZF9tb25pdG9yKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDQ0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDQ1OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ0Ni1cXHRzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmNoYW5kZWYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VyZGQyX2NoYW5kZWY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NTI6XFx0aWYgKCFtdDc5MTVfZWVwcm9tX2hhc19iYWNrZ3JvdW5kX3JhZGFyKGRldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDUzLVxcdFxcdHNlcV9wdXRzKHMsIFxcXCJubyBiYWNrZ3JvdW5kIHJhZGFyIGNhcGFiaWxpdHlcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTQ5ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ5NTptdDc5MTVfZndfZGVidWdfd21fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ5Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ5NzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDk4LVxcdGVudW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTE5OlxcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV00sIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUyMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTI5OlxcdFxcdHJldCA9IG10NzkxNV9tY3VfZndfZGJnX2N0cmwoZGV2LCBkZWJ1ZywgdmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTMwLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NTQ4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTQ5Om10NzkxNV9md19kZWJ1Z193bV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU1MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU1MTpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTU4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX3dtLCBtdDc5MTVfZndfZGVidWdfd21fZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NTk6XFx0XFx0XFx0IG10NzkxNV9md19kZWJ1Z193bV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01NjE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NjI6bXQ3OTE1X2Z3X2RlYnVnX3dhX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NjMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NjQ6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU2NS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTY5OlxcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV0EsIGRldi1cXHUwMDNlZncuZGVidWdfd2EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU3MzpcXHRyZXQgPSBtdDc5MTVfbWN1X3dhX2NtZChkZXYsIE1DVV9XQV9QQVJBTV9DTUQoU0VUKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTc0LVxcdFxcdFxcdFxcdE1DVV9XQV9QQVJBTV9QRE1BX1JYLCAhIWRldi1cXHUwMDNlZncuZGVidWdfd2EsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTU4Mj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU4MzptdDc5MTVfZndfZGVidWdfd2FfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01ODQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1ODU6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU5MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193YSwgbXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTkzOlxcdFxcdFxcdCBtdDc5MTVfZndfZGVidWdfd2Ffc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02MTk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2MjA6bXQ3OTE1X2Z3X2RlYnVnX2Jpbl9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MjUtXFx0fTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjI2OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2Mzg6XFx0cmV0dXJuIG10NzkxNV9md19kZWJ1Z193bV9zZXQoZGV2LCBkZXYtXFx1MDAzZWZ3LmRlYnVnX3dtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjM5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02NDE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NDI6bXQ3OTE1X2Z3X2RlYnVnX2Jpbl9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY0My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY0NDpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjUxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX2JpbiwgbXQ3OTE1X2Z3X2RlYnVnX2Jpbl9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY1MjpcXHRcXHRcXHQgbXQ3OTE1X2Z3X2RlYnVnX2Jpbl9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02NTQ9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NTU6bXQ3OTE1X2Z3X3V0aWxfd21fc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY1NzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjczOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfZndfdXRpbF93bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9Njc1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Njc2Om10NzkxNV9md191dGlsX3dhX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02Nzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2Nzg6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02ODItXFx0aWYgKGRldi1cXHUwMDNlZncuZGVidWdfd2EpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY4MzpcXHRcXHRyZXR1cm4gbXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKFFVRVJZKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjg0LVxcdFxcdFxcdFxcdFxcdCBNQ1VfV0FfUEFSQU1fQ1BVX1VUSUwsIDAsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Njg5OkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfZndfdXRpbF93YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjkxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY5MjptdDc5MTVfYW1wZHVfc3RhdF9yZWFkX3BoeShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTMtXFx0XFx0XFx0ICAgc3RydWN0IHNlcV9maWxlICpmaWxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2OTU6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTYtXFx0Ym9vbCBleHRfcGh5ID0gcGh5ICE9IFxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz03MjI9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzIzOm10NzkxNV90eGJmX3N0YXRfcmVhZF9waHkoc3RydWN0IG10NzkxNV9waHkgKnBoeSwgc3RydWN0IHNlcV9maWxlICpzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03MjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTc2OT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc3MDptdDc5MTVfdHhfc3RhdHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTc3MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc3MjpcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzczOlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzc0LVxcdHN0cnVjdCBtdDc2X21pYl9zdGF0cyAqbWliID0gXFx1MDAyNnBoeS1cXHUwMDNlbWliO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTc3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Nzc5OlxcdG10NzkxNV9hbXBkdV9zdGF0X3JlYWRfcGh5KHBoeSwgZmlsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc4MDpcXHRtdDc5MTVfbWFjX3VwZGF0ZV9zdGF0cyhwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3ODE6XFx0bXQ3OTE1X3R4YmZfc3RhdF9yZWFkX3BoeShwaHksIGZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03ODItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MDA6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV90eF9zdGF0cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9ODAyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgwMzptdDc5MTVfaHdfcXVldWVfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHUzMiBzaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MDQtXFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgaHdfcXVldWVfbWFwICptYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgwNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgwNjpcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODA3OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODA4LVxcdHUzMiBpLCB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9ODMzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgzNDptdDc5MTVfc3RhX2h3X3F1ZXVlX3JlYWQodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODM1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODM2OlxcdHN0cnVjdCBtdDc5MTVfc3RhICptc3RhID0gKHN0cnVjdCBtdDc5MTVfc3RhICopc3RhLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODM3OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBtc3RhLVxcdTAwM2V2aWYtXFx1MDAzZXBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MzgtXFx0c3RydWN0IHNlcV9maWxlICpzID0gZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz04NjE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NjI6bXQ3OTE1X2h3X3F1ZXVlc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODYzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODY0OlxcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBmaWxlLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NjU6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04NjYtXFx0c3RhdGljIGNvbnN0IHN0cnVjdCBod19xdWV1ZV9tYXAgcGxlX3F1ZXVlX21hcFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkxNC1cXHRzZXFfcHV0cyhmaWxlLCBcXFwiUExFIG5vbi1lbXB0eSBxdWV1ZSBpbmZvOlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkxNTpcXHRtdDc5MTVfaHdfcXVldWVfcmVhZChmaWxlLCBBUlJBWV9TSVpFKHBsZV9xdWV1ZV9tYXApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05MTYtXFx0XFx0XFx0ICAgICBcXHUwMDI2cGxlX3F1ZXVlX21hcFswXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTE5LVxcdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhwaHktXFx1MDAzZW10NzYtXFx1MDAzZWh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5MjA6XFx0XFx0XFx0XFx0XFx0ICBtdDc5MTVfc3RhX2h3X3F1ZXVlX3JlYWQsIGZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05MjEtXFx0LyogcHNlIHF1ZXVlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkyMi1cXHRzZXFfcHV0cyhmaWxlLCBcXFwiUFNFIG5vbi1lbXB0eSBxdWV1ZSBpbmZvOlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkyMzpcXHRtdDc5MTVfaHdfcXVldWVfcmVhZChmaWxlLCBBUlJBWV9TSVpFKHBzZV9xdWV1ZV9tYXApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05MjQtXFx0XFx0XFx0ICAgICBcXHUwMDI2cHNlX3F1ZXVlX21hcFswXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5Mjk6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV9od19xdWV1ZXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05MzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTkzMT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkzMjptdDc5MTVfeG1pdF9xdWV1ZXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkzMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkzNDpcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6OTM1OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTM2LVxcdHN0cnVjdCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5NjI6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV94bWl0X3F1ZXVlcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6OTY0OiNkZWZpbmUgbXQ3OTE1X3R4cG93ZXJfcHV0cyhyYXRlKVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTY1LSh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNToxNi4yNDQ4OTMxMDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzkxMjIwMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBhbmQgdGhlIGZpcnN0IHRoaW5nIEkgbm90aWNlIGlzIHRoYXQgaXQncyBjbGVhcmx5IHJlbGF0ZWQgdG8gdGhlIHRoZXJtYWwgbWFuYWdlbWVudCB3aXRoaW4gdGhlIGBtdDc5MTVgIFBDSWUgZHJpdmVyLiAgVGhlIG91dHB1dCBpbmRpY2F0ZXMgdGhhdCBpdCdzIHBhcnQgb2YgdGhlIGBtdDc5MTVlLXlgIG1vZHVsZSwgc28gaXQgaXMgYSBQQ0llIGRyaXZlci4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlcm1hbCB6b25lIHJlZ2lzdHJhdGlvbiBhbmQgdW5yZWdpc3RyYXRpb24uICBJdCBsb29rcyBsaWtlIHRoZXJlIHdhcyBhIHBvdGVudGlhbCByZXNvdXJjZSBsZWFrIGlmIHRoZSB0aGVybWFsIHpvbmUgcmVnaXN0cmF0aW9uIGZhaWxlZCwgYW5kIHRoaXMgcGF0Y2ggYWltcyB0byBjbGVhbiB1cCBwcm9wZXJseSBpbiB0aGF0IHNjZW5hcmlvLlxuXG5Ob3csIG15IGluaXRpYWwgdGhvdWdodCBnb2VzIHRvIGZ1enppbmcuICBDb3VsZCB0aGlzIGJlIGEgcG90ZW50aWFsIGFyZWEgZm9yIGZ1enppbmc/IEkgc2VlIHRoYXQgaXQncyBhIE1lZGlhVGVrIFdpLUZpIGRyaXZlciwgc28gaXQgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyLiAgVGhlbiB0aGUgcXVlc3Rpb24gaXMgY2FuIHRoaXMgZHJpdmVyIGJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/IExldCdzIGNvbnN1bHQgdGhlIGd1aWRlbGluZXM6ICBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiXG5cblNpbmNlIGBtdDc5MTVgIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgV2ktRmkgZHJpdmVyLCBhbmQsIHRvIG15IGtub3dsZWRnZSwgcmVxdWlyZXMgYWN0dWFsIGhhcmR3YXJlIEkgdGhpbmsgSSB3aWxsIG5lZWQgdG8gZXhjbHVkZSBpdCBmcm9tIGZ1enppbmcsIHVubGVzcyBJIGNhbiBmaW5kIHNvbWUgc29mdHdhcmUgZW11bGF0aW9uLiAgSSdsbCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBtZW50aW9uIG9mIHNvZnR3YXJlIGVtdWxhdGlvbiwgYnV0IEknbSBsZWFuaW5nIHRvd2FyZHMgbm90IGZ1enppbmcgdGhpcyBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDE0LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM1OjI1LjYzNjExNTYyMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc0NjUwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTE6I2luY2x1ZGUgXFxcIm10NzkxNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEyLSNpbmNsdWRlIFxcXCJtYWMuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTE3PXN0YXRpYyB1MzIgaGlmX2lkeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbXQ3OTE1X3BjaV9kZXZpY2VfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMC1cXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3OTE1KSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjU6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG10NzkxNV9oaWZfZGV2aWNlX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjYtXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUVESUFURUssIDB4NzkxNikgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjMxOnN0YXRpYyBzdHJ1Y3QgbXQ3OTE1X2hpZiAqbXQ3OTE1X3BjaV9nZXRfaGlmMih1MzIgaWR4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzozMzpcXHRzdHJ1Y3QgbXQ3OTE1X2hpZiAqaGlmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTM0LVxcdHUzMiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzo1NjpzdGF0aWMgdm9pZCBtdDc5MTVfcHV0X2hpZjIoc3RydWN0IG10NzkxNV9oaWYgKmhpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy01Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzo2NDpzdGF0aWMgc3RydWN0IG10NzkxNV9oaWYgKm10NzkxNV9wY2lfaW5pdF9oaWYyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjgxOlxcdHJldHVybiBtdDc5MTVfcGNpX2dldF9oaWYyKGhpZl9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTgyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy04My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzo4NDpzdGF0aWMgaW50IG10NzkxNV9wY2lfaGlmMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy04NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6ODY6XFx0c3RydWN0IG10NzkxNV9oaWYgKmhpZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy04Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMDM6c3RhdGljIGludCBtdDc5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEwNC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEwNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTA2OlxcdHN0cnVjdCBtdDc5MTVfaGlmICpoaWYyID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMDc6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMDgtXFx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTI4LVxcdGlmIChpZC1cXHUwMDNlZGV2aWNlID09IDB4NzkxNiB8fCBpZC1cXHUwMDNlZGV2aWNlID09IDB4NzkwYSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMjk6XFx0XFx0cmV0dXJuIG10NzkxNV9wY2lfaGlmMl9wcm9iZShwZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTMxOlxcdGRldiA9IG10NzkxNV9tbWlvX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBjaW1faW9tYXBfdGFibGUocGRldilbMF0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTMyLVxcdFxcdFxcdFxcdGlkLVxcdTAwM2VkZXZpY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTM2LVxcdG1kZXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjEzNzpcXHRtdDc5MTVfd2ZzeXNfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTM5OlxcdHJldCA9IG10NzkxNV9tbWlvX3dlZF9pbml0KGRldiwgcGRldiwgdHJ1ZSwgXFx1MDAyNmlycSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTQwLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTQzLVxcdGlmICghcmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTQ0OlxcdFxcdGhpZjIgPSBtdDc5MTVfcGNpX2luaXRfaGlmMihwZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNDctXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNDg6XFx0XFx0XFx0bXQ3OTE1X3B1dF9oaWYyKGhpZjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE0OS1cXHRcXHRcXHRnb3RvIGZyZWVfZGV2aWNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE1NTpcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXFx1MDAzZWRldiwgaXJxLCBtdDc5MTVfaXJxX2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU2LVxcdFxcdFxcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNTg6XFx0XFx0bXQ3OTE1X3B1dF9oaWYyKGhpZjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE1OS1cXHRcXHRnb3RvIGZyZWVfd2VkX29yX2lycV92ZWN0b3I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNjktXFx0XFx0LyogbWFzdGVyIHN3aXRjaCBvZiBQQ0llIHRudGVycnVwdCBlbmFibGUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNzA6XFx0XFx0aWYgKGlzX210NzkxNShtZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzEtXFx0XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1BDSUUxX01BQ19JTlRfRU5BQkxFLCAweGZmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE3NS1cXHRcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXFx1MDAzZWRldiwgZGV2LVxcdTAwM2VoaWYyLVxcdTAwM2VpcnEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTc2OlxcdFxcdFxcdFxcdCAgICAgICBtdDc5MTVfaXJxX2hhbmRsZXIsIElSUUZfU0hBUkVELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE3Ny1cXHRcXHRcXHRcXHQgICAgICAgS0JVSUxEX01PRE5BTUUgXFxcIi1oaWZcXFwiLCBkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE4MjpcXHRyZXQgPSBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjA2OnN0YXRpYyB2b2lkIG10NzkxNV9oaWZfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIwNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjA4OlxcdHN0cnVjdCBtdDc5MTVfaGlmICpoaWYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjA5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIxMzpzdGF0aWMgdm9pZCBtdDc5MTVfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIxNS1cXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjE2OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIxOC1cXHRtZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIxOTpcXHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkxNV9kZXYsIG10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyMDpcXHRtdDc5MTVfcHV0X2hpZjIoZGV2LVxcdTAwM2VoaWYyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMjE6XFx0bXQ3OTE1X3VucmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjIyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjI0OnN0cnVjdCBwY2lfZHJpdmVyIG10NzkxNV9oaWZfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIyNS1cXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUgXFxcIl9oaWZcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyNjpcXHQuaWRfdGFibGVcXHQ9IG10NzkxNV9oaWZfZGV2aWNlX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyNzpcXHQucHJvYmVcXHRcXHQ9IG10NzkxNV9wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjI4OlxcdC5yZW1vdmVcXHRcXHQ9IG10NzkxNV9oaWZfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIyOS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMzE6c3RydWN0IHBjaV9kcml2ZXIgbXQ3OTE1X3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjMyLVxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMzM6XFx0LmlkX3RhYmxlXFx0PSBtdDc5MTVfcGNpX2RldmljZV90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMzQ6XFx0LnByb2JlXFx0XFx0PSBtdDc5MTVfcGNpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIzNTpcXHQucmVtb3ZlXFx0XFx0PSBtdDc5MTVfcGNpX3JlbW92ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMzYtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjM4Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtdDc5MTVfcGNpX2RldmljZV90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjM5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtdDc5MTVfaGlmX2RldmljZV90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjQwLU1PRFVMRV9GSVJNV0FSRShNVDc5MTVfRklSTVdBUkVfV0EpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNToyNS42ODU4NzA2MTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTE2MDA3MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVmlydHVhbGl6YXRpb24gb2YgdGhlIG10NzkxNSBXaS1GaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgcHJvbXB0IGlzIGFib3V0IHRoZSBgbXQ3OTE1YCBkcml2ZXIsIGFuZCBmcm9tIHRoZSBzb3VuZCBvZiBpdCwgdGhlIGNoYWxsZW5nZSBpcyBnZXR0aW5nIGl0IHRvIGZ1bmN0aW9uIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBhIFBDSWUgZHJpdmVyLCByaWdodD8gUHVyZWx5IFBDSSwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgcmluZ3MgYWxhcm0gYmVsbHMsIGJlY2F1c2UgaWYgaXQncyBkZXBlbmRlbnQgb24gYSBwaHlzaWNhbCBQQ0llIGNhcmQsIGxpa2UgdGhvc2UgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgZm9yIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVcyAodGhpbmdzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIG9yIGBhbWRncHVgKSwgc3RhbmRhcmQgUUVNVSB3b24ndCBiZSBhYmxlIHRvIGVtdWxhdGUgaXQgZGlyZWN0bHkuXG5cbldhaXQsIGBtdDc5MTVgIGlzIGEgV2ktRmkgZHJpdmVyLCBzbyBpdCdzIGEgTWVkaWFUZWsgUENJZSBXaS1GaSBkcml2ZXIuIEFuZCBpdOKAmXMgbm90IFFFTVUgdGhhdCBlbXVsYXRlcyB0aGlzLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBpcyB0aGVyZSBhbnkgc29mdHdhcmUgZW11bGF0aW9uIG9mIGl0PyBMaWtlLCBpcyB0aGVyZSBzb21ldGhpbmcgc2ltaWxhciB0byBgbWFjODAyMTFfaHdzaW1gPyBBaCwgcmlnaHQsIHRoYXQncyBqdXN0IGEgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBgbWFjODAyMTFgLCBub3QgYSBoYXJkd2FyZSBlbXVsYXRvciBmb3IgdGhlIGBtdDc5MTVgLiBTbywgZ2l2ZW4gbXkgdW5kZXJzdGFuZGluZywgdGhlIGNvZGUgcGF0aHMgd2l0aGluIGBtdDc5MTVgIGFyZSBsaWtlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgc2V0dXBzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUsIGF0IGxlYXN0IG5vdCB3aXRob3V0IHNvbWUgY2xldmVyIHdvcmthcm91bmRzLlxuXG5CdXQsIGhvbGQgb24sIHRoZXJlIG1pZ2h0IGJlIGEgd29ya2Fyb3VuZC4gV2hhdCBpZiB3ZSBjb3VsZCBzb21laG93IHByb2JlIHRoZSBkcml2ZXIgdXNpbmcgYSBmYWtlIFBDSSBkZXZpY2U/IFN5emthbGxlciBoYXMgYHN5el9wY2lfZGV2aWNlX2FkZGAsIHdoaWNoIGNhbiBpbmplY3QgUENJIGNvbmZpZyBzcGFjZSwgYnV0IHRoYXTigJlzIG5vdCB0cnVlIGhhcmR3YXJlIGVtdWxhdGlvbi4gSW4gbW9zdCBjYXNlcywgdGhlc2UgZHJpdmVycyBmYWlsIGVhcmx5IGR1cmluZyBpbml0aWFsaXphdGlvbiwgZXNwZWNpYWxseSB3aGVuIHRoZXkgdHJ5IHRvIHJlYWQgb3Igd3JpdGUgdG8gTU1JTyByZWdpc3RlcnMgb3Igd2FpdCBmb3IgZmlybXdhcmUuXG5cblNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBMZXQncyBzZWUgaWYgdGhlIGZ1bmN0aW9uIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyBjYWxsZWQgZHVyaW5nIHByb2JlLiBUaGlzIGNvdWxkIGJlIGEgZ29vZCBwb2ludCB0byBzdGFydCBmaWd1cmluZyBvdXQgaWYgdGhlcmUncyBhbnkgY2hhbmNlIG9mIHRyaWNraW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTI5NiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTozMi44MDE4ODAxOTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgwNTQzMTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkxNV90aGVybWFsX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xOTk9c3RhdGljIHZvaWQgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTIxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MjEzOnN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0yMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTczMD1tdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NzYyOlxcdHJldCA9IG10NzkxNV90aGVybWFsX2luaXQocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNzYzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTI1OD1pbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEyOTc6XFx0cmV0ID0gbXQ3OTE1X3RoZXJtYWxfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjk4LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM1OjMzLjA4MjQyOTU2NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MDgxNTE2MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYVRlayBXaS1GaSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoaXMgTWVkaWFUZWsgUENJZSBXaS1GaSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEZyb20gd2hhdCBJIHNlZSwgYG10NzkxNV90aGVybWFsX2luaXRgIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQncyBjYWxsZWQgZnJvbSBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgYW5kIGBtdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeWAuIE5vdywgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBmcm9tIGBtdDc5MTVfcGNpX3Byb2JlYC4gQ29uc2lkZXJpbmcgdGhpcyBpcyBhIE1lZGlhVGVrIFBDSWUgV2ktRmkgZHJpdmVyLCBJJ20gcHJldHR5IGNlcnRhaW4gd2UncmUgZGVhbGluZyB3aXRoIGEgcGh5c2ljYWwgaGFyZHdhcmUgZGVwZW5kZW5jeSByaWdodCBmcm9tIHRoZSBzdGFydC4gV2UncmUgZ29pbmcgdG8gbmVlZCBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudCBhbmQgZnVuY3Rpb25pbmcgdG8gZXZlbiBnZXQgcGFzdCB0aGUgZWFybHkgTU1JTyBzZXR1cCBhbmQgZmlybXdhcmUgbG9hZGluZyBzdGFnZXMuIFRoZSBwcm9iaW5nIGNhbid0IGhhcHBlbiBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBjb2RlIHRvIGNvbmZpcm0gaWYgdGhlIGZpcm13YXJlIGxvYWRpbmcgb2NjdXJzIGJlZm9yZSBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgaXMgY2FsbGVkLiBUaGF0IHdpbGwgYmUgbXkgZmlyc3QgYXJlYSB0byBmb2N1cyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1OTQsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzU6MzkuNTkwNTgzMTY5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzk1MzE3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTI0Nz1zdGF0aWMgdm9pZCBtdDc5MTVfc3RvcF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEyNTg6aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI1OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaD00NTM9dTMyIG10NzkxNV93ZWRfaW5pdF9idWYodm9pZCAqcHRyLCBkbWFfYWRkcl90IHBoeXMsIGludCB0b2tlbl9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgtNDU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ1NTppbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NTYtdm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYz0xMDM9c3RhdGljIGludCBtdDc5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE4MjpcXHRyZXQgPSBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYz0xMjIwPXN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM6MTI2NDpcXHRyZXQgPSBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI2NS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTozOS42MzQ1NDQwNjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA3ODYxNTYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaWdnaW5nIERlZXBlciBpbnRvIHRoZSBNVDc5MTUgUmVnaXN0cmF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIG1pbnV0ZS4gSSBqdXN0IHNhdyB0aGF0IGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBmdW5jdGlvbiBjYWxsZWQgZnJvbSBgbXQ3OTh4X3dtYWNfcHJvYmVgIGluIGBzb2MuY2AuIFRoYXQncyBpbnRlcmVzdGluZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBjb25uZWN0aW9uIG1vcmUgdGhvcm91Z2hseS4gTXkgaW5pdGlhbCBmb2N1cyB3YXMgb24gdGhlIGZ1bmN0aW9uJ3MgaW5kaXZpZHVhbCBiZWhhdmlvciwgYnV0IG5vdyBJJ20gc2VlaW5nIGl0J3MgaW50ZWdyYXRlZCB3aXRoIGEgYmlnZ2VyIHBpY3R1cmUgdGhyb3VnaCB0aGF0IGBzb2MuY2AgZmlsZS4gUmlnaHQsIGxldOKAmXMgZ28gY2hlY2sgdGhhdCBzcGVjaWZpYyBgc29jLmNgIGZpbGUgdG8gc2VlIHRoZSBjb250ZXh0IG9mIHRoYXQgY2FsbCBhbmQgaG93IHRoZSBwcm9iZSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIFRpbWUgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc3MDMsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTo0My43MTMxNjE2MTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODk2NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk4eF93bWFjX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYz0xMTkwPXN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTIxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjIwOnN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyOTU9c3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdDc5OHhfd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjk5LVxcdH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM6MTMwMDpcXHQucHJvYmUgPSBtdDc5OHhfd21hY19wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMzAxLVxcdC5yZW1vdmUgPSBtdDc5OHhfd21hY19yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM1OjQzLjc1ODA2MjQ4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njk0NzI3MDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbXQ3OTh4X3dtYWNfcHJvYmUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgbXQ3OTh4X3dtYWNfcHJvYmVgIGlzIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIGBtdDc5OHhfd21hY19kcml2ZXJgIOKAkyB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcgb3Bwb3J0dW5pdGllcy4gQ2FuIHRoaXMgcGxhdGZvcm0gZHJpdmVyLCBsaWtlIG1hbnkgb3RoZXJzLCBiZSBhIHRhcmdldCBmb3IgZnV6emluZz8gU3l6a2FsbGVyICpzaG91bGQqIGJlIGFibGUgdG8gaGFuZGxlIGl0IGlmIGl0IGNhbiBiZSBicm91Z2h0IHVwIHRocm91Z2ggZGV2aWNlIHRyZWUgb3Igc29tZSBzaW1pbGFyIGluaXRpYWxpemF0aW9uIG1ldGhvZCwgYW5kIGEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdC4gSG93ZXZlciwgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHZlbmRvci1zcGVjaWZpYyBXaS1GaSBwbGF0Zm9ybSBkcml2ZXJzIG9mdGVuIHByZXNlbnQgYSBjaGFsbGVuZ2UuIFRoZXkgdGVuZCB0byBoYXZlIHRob3NlIHRpZ2h0IGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBoYXJkd2FyZSByZWdpc3RlcnMgYW5kIHRoZSByaWdodCBmaXJtd2FyZSB0byBhY3R1YWxseSBpbml0aWFsaXplIGFuZCB3b3JrIGNvcnJlY3RseS5cblxuUmlnaHQsIHRpbWUgdG8gZGlnIGluLiBMZXQncyBzZWUgZXhhY3RseSB3aGF0IGBtdDc5OHhfd21hY19wcm9iZWAgaXMgZG9pbmcgYW5kIHdoYXQgaXRzIGtleSBhY3Rpb25zIGFyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBleHBlY3RzIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIGJlZm9yZSBJIGNhbiBhc3Nlc3MgdGhlIGZlYXNpYmlsaXR5IG9mIGVmZmVjdGl2ZSBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODI4OCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTo0OC40NTI3OTE5OThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTkxNzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk4eF93bWFjX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTExOTA9c3RhdGljIGludCBtdDc5OHhfd21hY19pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jOjEyMjA6c3RhdGljIGludCBtdDc5OHhfd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM9MTI5NT1zdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10Nzk4eF93bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyOTktXFx0fSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMzAwOlxcdC5wcm9iZSA9IG10Nzk4eF93bWFjX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEzMDEtXFx0LnJlbW92ZSA9IG10Nzk4eF93bWFjX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzU6NDguNDk3Nzg3ODEzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMjIxMTMwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byBgbXQ3OTh4X3dtYWNfcHJvYmVgLiBJJ20gZ29pbmcgdG8gYXBwcm9hY2ggdGhpcyB3aXRoIG15IHVzdWFsIG1ldGhvZGljYWwgcHJvY2Vzcy4gRmlyc3QsIEkgd2FudCB0byBnZXQgYSBoaWdoLWxldmVsIHVuZGVyc3RhbmRpbmcuIFdoYXQncyB0aGUgbWFpbiBmdW5jdGlvbidzIHB1cnBvc2U/IEknbSBiZXR0aW5nIGl0J3MgdGhlIGNvcmUgcHJvYmUgZnVuY3Rpb24gZm9yIGEgTWVkaWFUZWsgV2ktRmkgY2hpcCwgZ2l2ZW4gdGhlIG5hbWUuIE9rYXksIGxldCdzIHNjYW4gdGhlIGZ1bmN0aW9uJ3MgZGVmaW5pdGlvbi4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgaXQncyByZXNwb25zaWJsZSBmb3IgdGhlIGluaXRpYWwgZGV2aWNlIHNldHVwIHdoZW4gYSBuZXcgTVQ3OTh4LXNlcmllcyB3aXJlbGVzcyBNQUMgZGV2aWNlIGlzIGRpc2NvdmVyZWQgb3IgbG9hZGVkLiBJdCB3aWxsIHByb2JhYmx5IGhhbmRsZSByZXNvdXJjZSBhbGxvY2F0aW9uLCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiwgYW5kIGRyaXZlciByZWdpc3RyYXRpb24gd2l0aCB0aGUga2VybmVsLiBJIGV4cGVjdCBpdCB0byBhbHNvIHBlcmZvcm0gc29tZSBraW5kIG9mIGRldGVjdGlvbiBvciBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSB2YXJpYW50LiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIG1lbW9yeSBtYXBwaW5nLCBJUlEgc2V0dXAsIGFuZCBwZXJoYXBzIHNvbWUgZmlybXdhcmUgbG9hZGluZy4gSSB3YW50IHRvIGNoZWNrIGhvdyBlcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZC4gSXMgaXQgcm9idXN0PyBEb2VzIGl0IHByb3ZpZGUgYWRlcXVhdGUgZXJyb3IgbWVzc2FnZXMgZm9yIGRlYnVnZ2luZz8gSSdsbCBhbHNvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyBpdCB1c2VzLCBlc3BlY2lhbGx5IGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGRldmljZSBjb250ZXh0IG9yIGNvbmZpZ3VyYXRpb24sIGFuZCBob3cgdGhlc2UgYXJlIGluaXRpYWxpemVkIGFuZCBwYXNzZWQgYXJvdW5kLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNoaXAgaW50ZXJhY3RzIHdpdGggdGhlIFBDSSBvciBTRElPIGJ1cy4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyByYWNlIGNvbmRpdGlvbnMuIEZpbmFsbHksIGFmdGVyIHRoaXMgaW5pdGlhbCBzY2FuLCBJJ2xsIGdvIHRocm91Z2ggdGhlIGNvZGUgc3RlcC1ieS1zdGVwLCBtYWtpbmcgbm90ZSBvZiBhbnkgaW50ZXJlc3Rpbmcgb3IgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgc2VjdGlvbnMsIHRoaW5raW5nIG9mIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgd2lyZWxlc3MgZHJpdmVyIHN0YWNrLiBUaGlzIHNob3VsZCBnZXQgbWUgc3RhcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkwMDMsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTo1Mi44MTk5MDM3MDNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMTUsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjE1OlxcdFxcbjEyMTY6XFx0XFx0ZGV2LVxcdTAwM2Vyc3RjID0gZGV2bV9yZXNldF9jb250cm9sX2dldChwZGV2LCBcXFwiY29uc3lzXFxcIik7XFxuMTIxNzpcXHRcXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGRldi1cXHUwMDNlcnN0Yyk7XFxuMTIxODpcXHR9XFxuMTIxOTpcXHRcXG4xMjIwOlxcdHN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4xMjIxOlxcdHtcXG4xMjIyOlxcdFxcdHZvaWQgX19pb21lbSAqbWVtX2Jhc2U7XFxuMTIyMzpcXHRcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2O1xcbjEyMjQ6XFx0XFx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xcbjEyMjU6XFx0XFx0aW50IGlycSwgcmV0O1xcbjEyMjY6XFx0XFx0dTMyIGNoaXBfaWQ7XFxuMTIyNzpcXHRcXG4xMjI4OlxcdFxcdGNoaXBfaWQgPSAodWludHB0cl90KW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4xMjI5OlxcdFxcbjEyMzA6XFx0XFx0bWVtX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7XFxuMTIzMTpcXHRcXHRpZiAoSVNfRVJSKG1lbV9iYXNlKSkge1xcbjEyMzI6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGdldCBtZW1vcnkgcmVzb3VyY2VcXFxcblxcXCIpO1xcbjEyMzM6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWVtX2Jhc2UpO1xcbjEyMzQ6XFx0XFx0fVxcbjEyMzU6XFx0XFxuMTIzNjpcXHRcXHRkZXYgPSBtdDc5MTVfbW1pb19wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBtZW1fYmFzZSwgY2hpcF9pZCk7XFxuMTIzNzpcXHRcXHRpZiAoSVNfRVJSKGRldikpXFxuMTIzODpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihkZXYpO1xcbjEyMzk6XFx0XFxuMTI0MDpcXHRcXHRtZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3NjtcXG4xMjQxOlxcdFxcdHJldCA9IG10NzkxNV9tbWlvX3dlZF9pbml0KGRldiwgcGRldiwgZmFsc2UsIFxcdTAwMjZpcnEpO1xcbjEyNDI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTI0MzpcXHRcXHRcXHRnb3RvIGZyZWVfZGV2aWNlO1xcbjEyNDQ6XFx0XFxuMTI0NTpcXHRcXHRpZiAoIXJldCkge1xcbjEyNDY6XFx0XFx0XFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTtcXG4xMjQ3OlxcdFxcdFxcdGlmIChpcnEgXFx1MDAzYyAwKSB7XFxuMTI0ODpcXHRcXHRcXHRcXHRyZXQgPSBpcnE7XFxuMTI0OTpcXHRcXHRcXHRcXHRnb3RvIGZyZWVfZGV2aWNlO1xcbjEyNTA6XFx0XFx0XFx0fVxcbjEyNTE6XFx0XFx0fVxcbjEyNTI6XFx0XFxuMTI1MzpcXHRcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXFx1MDAzZWRldiwgaXJxLCBtdDc5MTVfaXJxX2hhbmRsZXIsXFxuMTI1NDpcXHRcXHRcXHRcXHQgICAgICAgSVJRRl9TSEFSRUQsIEtCVUlMRF9NT0ROQU1FLCBkZXYpO1xcbjEyNTU6XFx0XFx0aWYgKHJldClcXG4xMjU2OlxcdFxcdFxcdGdvdG8gZnJlZV9kZXZpY2U7XFxuMTI1NzpcXHRcXG4xMjU4OlxcdFxcdHJldCA9IG10Nzk4eF93bWFjX2luaXQoZGV2KTtcXG4xMjU5OlxcdFxcdGlmIChyZXQpXFxuMTI2MDpcXHRcXHRcXHRnb3RvIGZyZWVfaXJxO1xcbjEyNjE6XFx0XFxuMTI2MjpcXHRcXHRtdDc5MTVfd2ZzeXNfcmVzZXQoZGV2KTtcXG4xMjYzOlxcdFxcbjEyNjQ6XFx0XFx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbjEyNjU6XFx0XFx0aWYgKHJldClcXG4xMjY2OlxcdFxcdFxcdGdvdG8gZnJlZV9pcnE7XFxuMTI2NzpcXHRcXG4xMjY4OlxcdFxcdHJldHVybiAwO1xcbjEyNjk6XFx0XFxuMTI3MDpcXHRmcmVlX2lycTpcXG4xMjcxOlxcdFxcdGRldm1fZnJlZV9pcnEobWRldi1cXHUwMDNlZGV2LCBpcnEsIGRldik7XFxuMTI3MjpcXHRmcmVlX2RldmljZTpcXG4xMjczOlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG4xMjc0OlxcdFxcdFxcdG10a193ZWRfZGV2aWNlX2RldGFjaChcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpO1xcbjEyNzU6XFx0XFx0bXQ3Nl9mcmVlX2RldmljZShtZGV2KTtcXG4xMjc2OlxcdFxcbjEyNzc6XFx0XFx0cmV0dXJuIHJldDtcXG4xMjc4OlxcdH1cXG4xMjc5OlxcdFxcbjEyODA6XFx0c3RhdGljIHZvaWQgbXQ3OTh4X3dtYWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuMTI4MTpcXHR7XFxuMTI4MjpcXHRcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuMTI4MzpcXHRcXG4xMjg0OlxcdFxcdG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShkZXYpO1xcbjEyODU6XFx0fVxcbjEyODY6XFx0XFxuMTI4NzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDc5OHhfd21hY19vZl9tYXRjaFtdID0ge1xcbjEyODg6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtZWRpYXRlayxtdDc5ODEtd21hY1xcXCIsIC5kYXRhID0gKHUzMiAqKTB4Nzk4MSB9LFxcbjEyODk6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtZWRpYXRlayxtdDc5ODYtd21hY1xcXCIsIC5kYXRhID0gKHUzMiAqKTB4Nzk4NiB9LFxcbjEyOTA6XFx0XFx0e30sXFxuMTI5MTpcXHR9O1xcbjEyOTI6XFx0XFxuMTI5MzpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdDc5OHhfd21hY19vZl9tYXRjaCk7XFxuMTI5NDpcXHRcXG4xMjk1OlxcdHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXQ3OTh4X3dtYWNfZHJpdmVyID0ge1xcbjEyOTY6XFx0XFx0LmRyaXZlciA9IHtcXG4xMjk3OlxcdFxcdFxcdC5uYW1lID0gXFxcIm10Nzk4eC13bWFjXFxcIixcXG4xMjk4OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG10Nzk4eF93bWFjX29mX21hdGNoLFxcbjEyOTk6XFx0XFx0fSxcXG4xMzAwOlxcdFxcdC5wcm9iZSA9IG10Nzk4eF93bWFjX3Byb2JlLFxcbjEzMDE6XFx0XFx0LnJlbW92ZSA9IG10Nzk4eF93bWFjX3JlbW92ZSxcXG4xMzAyOlxcdH07XFxuMTMwMzpcXHRcXG4xMzA0OlxcdE1PRFVMRV9GSVJNV0FSRShNVDc5ODZfRklSTVdBUkVfV0EpO1xcbjEzMDU6XFx0TU9EVUxFX0ZJUk1XQVJFKE1UNzk4Nl9GSVJNV0FSRV9XTSk7XFxuMTMwNjpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3OTg2X0ZJUk1XQVJFX1dNX01UNzk3NSk7XFxuMTMwNzpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3OTg2X1JPTV9QQVRDSCk7XFxuMTMwODpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3OTg2X1JPTV9QQVRDSF9NVDc5NzUpO1xcbjEzMDk6XFx0XFxuMTMxMDpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3OTgxX0ZJUk1XQVJFX1dBKTtcXG4xMzExOlxcdE1PRFVMRV9GSVJNV0FSRShNVDc5ODFfRklSTVdBUkVfV00pO1xcbjEzMTI6XFx0TU9EVUxFX0ZJUk1XQVJFKE1UNzk4MV9ST01fUEFUQ0gpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTo1Mi44MjAwMTE0OTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzMTE3ODMwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgV2ktRmkgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwbGF0Zm9ybSBkcml2ZXIsIGFuZCBpdCdzIHByZXR0eSBjbGVhciBpdCByZWxpZXMgb24gZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiDigJMgc3BlY2lmaWNhbGx5IGZvciB0aGUgYG1lZGlhdGVrLG10Nzk4MS13bWFjYCBvciBgbWVkaWF0ZWssbXQ3OTg2LXdtYWNgIGNvbmZpZ3VyYXRpb25zLiBUaGF0IG1ha2VzIHNlbnNlLCBzdGFuZGFyZCBwcmFjdGljZSBmb3IgbW9kZXJuIGVtYmVkZGVkIHN5c3RlbXMuIFdoYXQncyBtb3JlIGludGVyZXN0aW5nIGlzIHRoYXQgaXQgdGhlbiBjYWxscyBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpYC4gVGhpcyBmdW5jdGlvbiBjYWxsIGlzIGtleSBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgcmVnaXN0cmF0aW9uIGVudGFpbHMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBpbiBgaW5pdC5jYC4gVGhhdCdzIHdoZXJlIHRoZSBpbml0aWFsaXphdGlvbiBsb2dpYyBzaG91bGQgYmUsIHJpZ2h0PyBMZXQncyBnbyB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBhbmQgc2VlIHdoYXQgaXQgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5OTQsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM1OjU3LjE1MTE5MjY5M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI2MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyNTgsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjU4OlxcdGludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuMTI1OTpcXHR7XFxuMTI2MDpcXHRcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MjtcXG4xMjYxOlxcdFxcdGludCByZXQ7XFxuMTI2MjpcXHRcXG4xMjYzOlxcdFxcdGRldi1cXHUwMDNlcGh5LmRldiA9IGRldjtcXG4xMjY0OlxcdFxcdGRldi1cXHUwMDNlcGh5Lm10NzYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnBoeTtcXG4xMjY1OlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5waHkucHJpdiA9IFxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG4xMjY2OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VyY193b3JrLCBtdDc5MTVfbWFjX3N0YV9yY193b3JrKTtcXG4xMjY3OlxcdFxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkubWFjX3dvcmssIG10NzkxNV9tYWNfd29yayk7XFxuMTI2ODpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2ZGV2LVxcdTAwM2VzdGFfcmNfbGlzdCk7XFxuMTI2OTpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2ZGV2LVxcdTAwM2V0d3RfbGlzdCk7XFxuMTI3MDpcXHRcXG4xMjcxOlxcdFxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNmRldi1cXHUwMDNlcmVzZXRfd2FpdCk7XFxuMTI3MjpcXHRcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcmVzZXRfd29yaywgbXQ3OTE1X21hY19yZXNldF93b3JrKTtcXG4xMjczOlxcdFxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VkdW1wX3dvcmssIG10NzkxNV9tYWNfZHVtcF93b3JrKTtcXG4xMjc0OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmRldi1cXHUwMDNlZHVtcF9tdXRleCk7XFxuMTI3NTpcXHRcXG4xMjc2OlxcdFxcdGRldi1cXHUwMDNlZGJkY19zdXBwb3J0ID0gbXQ3OTE1X2JhbmRfY29uZmlnKGRldik7XFxuMTI3NzpcXHRcXG4xMjc4OlxcdFxcdHBoeTIgPSBtdDc5MTVfYWxsb2NfZXh0X3BoeShkZXYpO1xcbjEyNzk6XFx0XFx0aWYgKElTX0VSUihwaHkyKSlcXG4xMjgwOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHBoeTIpO1xcbjEyODE6XFx0XFxuMTI4MjpcXHRcXHRyZXQgPSBtdDc5MTVfaW5pdF9oYXJkd2FyZShkZXYsIHBoeTIpO1xcbjEyODM6XFx0XFx0aWYgKHJldClcXG4xMjg0OlxcdFxcdFxcdGdvdG8gZnJlZV9waHkyO1xcbjEyODU6XFx0XFxuMTI4NjpcXHRcXHRtdDc5MTVfaW5pdF93aXBoeShcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbjEyODc6XFx0XFxuMTI4ODpcXHQjaWZkZWYgQ09ORklHX05MODAyMTFfVEVTVE1PREVcXG4xMjg5OlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni50ZXN0X29wcyA9IFxcdTAwMjZtdDc5MTVfdGVzdG1vZGVfb3BzO1xcbjEyOTA6XFx0I2VuZGlmXFxuMTI5MTpcXHRcXG4xMjkyOlxcdFxcdHJldCA9IG10NzZfcmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHRydWUsIG10NzZfcmF0ZXMsXFxuMTI5MzpcXHRcXHRcXHRcXHRcXHQgICBBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTtcXG4xMjk0OlxcdFxcdGlmIChyZXQpXFxuMTI5NTpcXHRcXHRcXHRnb3RvIHN0b3BfaHc7XFxuMTI5NjpcXHRcXG4xMjk3OlxcdFxcdHJldCA9IG10NzkxNV90aGVybWFsX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG4xMjk4OlxcdFxcdGlmIChyZXQpXFxuMTI5OTpcXHRcXHRcXHRnb3RvIHVucmVnX2RldjtcXG4xMzAwOlxcdFxcbjEzMDE6XFx0XFx0aWYgKHBoeTIpIHtcXG4xMzAyOlxcdFxcdFxcdHJldCA9IG10NzkxNV9yZWdpc3Rlcl9leHRfcGh5KGRldiwgcGh5Mik7XFxuMTMwMzpcXHRcXHRcXHRpZiAocmV0KVxcbjEzMDQ6XFx0XFx0XFx0XFx0Z290byB1bnJlZ190aGVybWFsO1xcbjEzMDU6XFx0XFx0fVxcbjEzMDY6XFx0XFxuMTMwNzpcXHRcXHRpZWVlODAyMTFfcXVldWVfd29yayhtdDc2X2h3KGRldiksIFxcdTAwMjZkZXYtXFx1MDAzZWluaXRfd29yayk7XFxuMTMwODpcXHRcXG4xMzA5OlxcdFxcdGRldi1cXHUwMDNlcmVjb3ZlcnkuaHdfaW5pdF9kb25lID0gdHJ1ZTtcXG4xMzEwOlxcdFxcbjEzMTE6XFx0XFx0cmV0ID0gbXQ3OTE1X2luaXRfZGVidWdmcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbjEzMTI6XFx0XFx0aWYgKHJldClcXG4xMzEzOlxcdFxcdFxcdGdvdG8gdW5yZWdfZXh0X3BoeTtcXG4xMzE0OlxcdFxcbjEzMTU6XFx0XFx0cmV0ID0gbXQ3OTE1X2NvcmVkdW1wX3JlZ2lzdGVyKGRldik7XFxuMTMxNjpcXHRcXHRpZiAocmV0KVxcbjEzMTc6XFx0XFx0XFx0Z290byB1bnJlZ19leHRfcGh5O1xcbjEzMTg6XFx0XFxuMTMxOTpcXHRcXHRyZXR1cm4gMDtcXG4xMzIwOlxcdFxcbjEzMjE6XFx0dW5yZWdfZXh0X3BoeTpcXG4xMzIyOlxcdFxcdGlmIChwaHkyKSB7XFxuMTMyMzpcXHRcXHRcXHRtdDc5MTVfdW5yZWdpc3Rlcl9leHRfcGh5KGRldik7XFxuMTMyNDpcXHRcXHRcXHRwaHkyID0gTlVMTDtcXG4xMzI1OlxcdFxcdH1cXG4xMzI2OlxcdHVucmVnX3RoZXJtYWw6XFxuMTMyNzpcXHRcXHRtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuMTMyODpcXHR1bnJlZ19kZXY6XFxuMTMyOTpcXHRcXHRtdDc2X3VucmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjEzMzA6XFx0c3RvcF9odzpcXG4xMzMxOlxcdFxcdG10NzkxNV9zdG9wX2hhcmR3YXJlKGRldik7XFxuMTMzMjpcXHRmcmVlX3BoeTI6XFxuMTMzMzpcXHRcXHRpZiAocGh5MilcXG4xMzM0OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX2h3KHBoeTItXFx1MDAzZW10NzYtXFx1MDAzZWh3KTtcXG4xMzM1OlxcdFxcdHJldHVybiByZXQ7XFxuMTMzNjpcXHR9XFxuMTMzNzpcXHRcXG4xMzM4OlxcdHZvaWQgbXQ3OTE1X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuMTMzOTpcXHR7XFxuMTM0MDpcXHRcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZWR1bXBfd29yayk7XFxuMTM0MTpcXHRcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmspO1xcbjEzNDI6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VyY193b3JrKTtcXG4xMzQzOlxcdFxcdG10NzkxNV91bnJlZ2lzdGVyX2V4dF9waHkoZGV2KTtcXG4xMzQ0OlxcdFxcdG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKGRldik7XFxuMTM0NTpcXHRcXHRtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuMTM0NjpcXHRcXHRtdDc2X3VucmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjEzNDc6XFx0XFx0bXQ3OTE1X3N0b3BfaGFyZHdhcmUoZGV2KTtcXG4xMzQ4OlxcdFxcbjEzNDk6XFx0XFx0bXQ3Nl9mcmVlX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4xMzUwOlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzU6NTcuMTUxMzA3MTQyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMjA0OTYyOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBmb2N1c2luZyBvbiB0aGUga2V5IGFjdGlvbnM6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBIYXJkd2FyZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBoYXMga2lja2VkIG9mZiwgYW5kIGFzIEkgZXhwZWN0ZWQsIGl0J3MgY2FsbGVkIGBtdDc5MTVfaW5pdF9oYXJkd2FyZWAgd2l0aCB0aGUgZGV2aWNlIGFuZCBwaHkyIGFzIGFyZ3VtZW50cy4gTXkgbmV4dCBpbW1lZGlhdGUgYWN0aW9uIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgaW5pdGlhbGl6YXRpb24gaXMgYmVpbmcgaGFuZGxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzdGVwcyBpdCBpcyB0YWtpbmcgd2l0aCB0aGUgaGFyZHdhcmUhIFRpbWUgdG8gZGlnIGluIGFuZCBleGFtaW5lIHRoZSBpbm5lciB3b3JraW5ncyBvZiBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIVxuXG5cbiIsIklucHV0VG9rZW5zIjozMjc3OCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6MDIuMTcxODA1NjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTIxNzk4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfaW5pdF9oYXJkd2FyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTg2NT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjg2NjptdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjU4PWludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI4MjpcXHRyZXQgPSBtdDc5MTVfaW5pdF9oYXJkd2FyZShkZXYsIHBoeTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjgzLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM2OjAyLjMyNzAyODEzNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU5ODg4Nzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gYG10NzkxNV9pbml0X2hhcmR3YXJlYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMsIHN0ZXAtYnktc3RlcCwgYXQgYSBoaWdoIGxldmVsLiBTaW5jZSBJJ20gZmFtaWxpYXIgd2l0aCB0aGlzIGFyY2hpdGVjdHVyZSwgSSBrbm93IGl0IGxpa2VseSBpbnZvbHZlcyB0aGluZ3MgbGlrZSByZWdpc3RlciB3cml0ZXMgdG8gaW5pdGlhbGl6ZSB0aGUgcmFkaW8sIFBIWSBjb25maWd1cmF0aW9uLCBwb3NzaWJseSBETUEgc2V0dXAsIGFuZCBpbnRlcnJ1cHQgZW5hYmxpbmcuIFRoZSBnb2FsIGhlcmUgaXMgdG8gZXN0YWJsaXNoIHRoZSBmdW5kYW1lbnRhbCBoYXJkd2FyZSBzdGF0ZSBmb3IgdGhlIE1UNzkxNSBjaGlwc2V0IHRvIG9wZXJhdGUuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zOyBkZXBlbmRlbmNpZXMgYXJlIGNydWNpYWwsIGVzcGVjaWFsbHkgd2l0aCBjb21wbGV4IGhhcmR3YXJlIGxpa2UgdGhpcy4gQXJlIHRoZXJlIGFueSBwYXJ0aWN1bGFyIHNlY3Rpb25zIHRoYXQgc2VlbSBpbW1lZGlhdGVseSByZWxldmFudCB0byBwb3dlciBtYW5hZ2VtZW50IG9yIHNlY3VyaXR5PyBUaGF0IG1pZ2h0IG9mZmVyIGluc2lnaHRzIGludG8gbGF0ZXIgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLiBJJ2xsIHdhdGNoIGZvciBob3cgdGhlIGNvZGUgc2V0cyB1cCB0aGUgY2xvY2sgc291cmNlcyB0b28sIGJlY2F1c2UgdGhhdCdzIGFsd2F5cyBhIGNyaXRpY2FsIGFzcGVjdCwgYW5kIGNhbiBiZSBzdWJ0bGUgaW4gaXRzIGltcGxpY2F0aW9ucyBvbiBsYXRlciBiZWhhdmlvci4gVW5kZXJzdGFuZGluZyB0aGUgaGFyZHdhcmUncyByZXNldCBzdGF0ZSBpcyBhbHNvIGltcG9ydGFudCBzbyBJIHdpbGwgcGF5IGF0dGVudGlvbiB0byB0aGF0LiBJIGV4cGVjdCB0aGVyZSBtaWdodCBiZSBjaGVja3MgZm9yIGhhcmR3YXJlIHJldmlzaW9ucyBvciBjYXBhYmlsaXRpZXM7IEkgbmVlZCB0byByZWNvZ25pemUgaWYgaXQgaGFzIGEgd2F5IHRvIGRlYWwgd2l0aCBkaWZmZXJlbnQgY2hpcCB2ZXJzaW9ucy4gSSdsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIG9mIGFueSBhc3NvY2lhdGVkIGNvLXByb2Nlc3NvcnMgYXMgd2VsbDsgdGhvc2UgYXJlIHNvIGNvbW1vbiB3aXRoIHRoaXMga2luZCBvZiBzeXN0ZW0tb24tY2hpcC4gRmluYWxseSwgSSdsbCBuZWVkIHRvIHRyYWNrIGFueSByZXR1cm4gdmFsdWVzIG9yIHN0YXR1cyBmbGFncywgYmVjYXVzZSB0aGVzZSB3aWxsIGxpa2VseSBjb21tdW5pY2F0ZSB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHZhcmlvdXMgaW5pdGlhbGl6YXRpb24gc3RhZ2VzLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHJldHVybiB2YWx1ZXMgd2lsbCBiZSBrZXkgdG8gZmF1bHQgdG9sZXJhbmNlIGZ1cnRoZXIgZG93biB0aGUgbGluZS4gSSdsbCBzdGFydCByZWFkaW5nLCB3aXRoIHRoZXNlIGFzcGVjdHMgaW4gbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzMTYsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjowNi4yODY5MTk5NzJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NjUsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODY1OlxcdHN0YXRpYyBpbnRcXG4gODY2OlxcdG10NzkxNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxcbiA4Njc6XFx0e1xcbiA4Njg6XFx0XFx0aW50IHJldCwgaWR4O1xcbiA4Njk6XFx0XFxuIDg3MDpcXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UX01BU0tfQ1NSLCAwKTtcXG4gODcxOlxcdFxcdG10NzZfd3IoZGV2LCBNVF9JTlRfU09VUkNFX0NTUiwgfjApO1xcbiA4NzI6XFx0XFxuIDg3MzpcXHRcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlaW5pdF93b3JrLCBtdDc5MTVfaW5pdF93b3JrKTtcXG4gODc0OlxcdFxcbiA4NzU6XFx0XFx0cmV0ID0gbXQ3OTE1X2RtYV9pbml0KGRldiwgcGh5Mik7XFxuIDg3NjpcXHRcXHRpZiAocmV0KVxcbiA4Nzc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODc4OlxcdFxcbiA4Nzk6XFx0XFx0c2V0X2JpdChNVDc2X1NUQVRFX0lOSVRJQUxJWkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gODgwOlxcdFxcbiA4ODE6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9pbml0KGRldik7XFxuIDg4MjpcXHRcXHRpZiAocmV0KVxcbiA4ODM6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODg0OlxcdFxcbiA4ODU6XFx0XFx0cmV0ID0gbXQ3OTE1X2VlcHJvbV9pbml0KGRldik7XFxuIDg4NjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gODg3OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDg4ODpcXHRcXG4gODg5OlxcdFxcdGlmIChkZXYtXFx1MDAzZWNhbCkge1xcbiA4OTA6XFx0XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9hcHBseV9ncm91cF9jYWwoZGV2KTtcXG4gODkxOlxcdFxcdFxcdGlmIChyZXQpXFxuIDg5MjpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA4OTM6XFx0XFx0fVxcbiA4OTQ6XFx0XFxuIDg5NTpcXHRcXHQvKiBCZWFjb24gYW5kIG1nbXQgZnJhbWVzIHNob3VsZCBvY2N1cHkgd2NpZCAwICovXFxuIDg5NjpcXHRcXHRpZHggPSBtdDc2X3djaWRfYWxsb2MoZGV2LVxcdTAwM2VtdDc2LndjaWRfbWFzaywgTVQ3OTE1X1dUQkxfU1RBKTtcXG4gODk3OlxcdFxcdGlmIChpZHgpXFxuIDg5ODpcXHRcXHRcXHRyZXR1cm4gLUVOT1NQQztcXG4gODk5OlxcdFxcbiA5MDA6XFx0XFx0ZGV2LVxcdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmlkeCA9IGlkeDtcXG4gOTAxOlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZC5od19rZXlfaWR4ID0gLTE7XFxuIDkwMjpcXHRcXHRkZXYtXFx1MDAzZW10NzYuZ2xvYmFsX3djaWQudHhfaW5mbyB8PSBNVF9XQ0lEX1RYX0lORk9fU0VUO1xcbiA5MDM6XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cXHUwMDNlbXQ3Ni53Y2lkW2lkeF0sIFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuZ2xvYmFsX3djaWQpO1xcbiA5MDQ6XFx0XFxuIDkwNTpcXHRcXHRyZXR1cm4gMDtcXG4gOTA2OlxcdH1cXG4gOTA3OlxcdFxcbiA5MDg6XFx0dm9pZCBtdDc5MTVfc2V0X3N0cmVhbV92aHRfdHhiZl9jYXBzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXFxuIDkwOTpcXHR7XFxuIDkxMDpcXHRcXHRpbnQgc3RzO1xcbiA5MTE6XFx0XFx0dTMyICpjYXA7XFxuIDkxMjpcXHRcXG4gOTEzOlxcdFxcdGlmICghcGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VjYXAuaGFzXzVnaHopXFxuIDkxNDpcXHRcXHRcXHRyZXR1cm47XFxuIDkxNTpcXHRcXG4gOTE2OlxcdFxcdHN0cyA9IGh3ZWlnaHQ4KHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2hhaW5tYXNrKTtcXG4gOTE3OlxcdFxcdGNhcCA9IFxcdTAwMjZwaHktXFx1MDAzZW10NzYtXFx1MDAzZXNiYW5kXzVnLnNiYW5kLnZodF9jYXAuY2FwO1xcbiA5MTg6XFx0XFxuIDkxOTpcXHRcXHQqY2FwIHw9IElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRUVfQ0FQQUJMRSB8XFxuIDkyMDpcXHRcXHRcXHRJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVFX0NBUEFCTEUgfFxcbiA5MjE6XFx0XFx0XFx0RklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9CRUFNRk9STUVFX1NUU19NQVNLLFxcbiA5MjI6XFx0XFx0XFx0XFx0ICAgc3RzIC0gMSk7XFxuIDkyMzpcXHRcXG4gOTI0OlxcdFxcdCpjYXAgXFx1MDAyNj0gfihJRUVFODAyMTFfVkhUX0NBUF9TT1VORElOR19ESU1FTlNJT05TX01BU0sgfFxcbiA5MjU6XFx0XFx0XFx0ICBJRUVFODAyMTFfVkhUX0NBUF9TVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxcbiA5MjY6XFx0XFx0XFx0ICBJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVSX0NBUEFCTEUpO1xcbiA5Mjc6XFx0XFxuIDkyODpcXHRcXHRpZiAoc3RzIFxcdTAwM2MgMilcXG4gOTI5OlxcdFxcdFxcdHJldHVybjtcXG4gOTMwOlxcdFxcbiA5MzE6XFx0XFx0KmNhcCB8PSBJRUVFODAyMTFfVkhUX0NBUF9TVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxcbiA5MzI6XFx0XFx0XFx0SUVFRTgwMjExX1ZIVF9DQVBfTVVfQkVBTUZPUk1FUl9DQVBBQkxFIHxcXG4gOTMzOlxcdFxcdFxcdEZJRUxEX1BSRVAoSUVFRTgwMjExX1ZIVF9DQVBfU09VTkRJTkdfRElNRU5TSU9OU19NQVNLLFxcbiA5MzQ6XFx0XFx0XFx0XFx0ICAgc3RzIC0gMSk7XFxuIDkzNTpcXHR9XFxuIDkzNjpcXHRcXG4gOTM3OlxcdHN0YXRpYyB2b2lkXFxuIDkzODpcXHRtdDc5MTVfc2V0X3N0cmVhbV9oZV90eGJmX2NhcHMoc3RydWN0IG10NzkxNV9waHkgKnBoeSxcXG4gOTM5OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YV9oZV9jYXAgKmhlX2NhcCwgaW50IHZpZilcXG4gOTQwOlxcdHtcXG4gOTQxOlxcdFxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG4gOTQyOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaGVfY2FwX2VsZW0gKmVsZW0gPSBcXHUwMDI2aGVfY2FwLVxcdTAwM2VoZV9jYXBfZWxlbTtcXG4gOTQzOlxcdFxcdGludCBzdHMgPSBod2VpZ2h0OChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNoYWlubWFzayk7XFxuIDk0NDpcXHRcXHR1OCBjLCBzdHNfMTYwID0gc3RzO1xcbiA5NDU6XFx0XFxuIDk0NjpcXHRcXHQvKiBDYW4gZG8gMS8yIG9mIFNUUyBpbiAxNjBNaHogbW9kZSBmb3IgbXQ3OTE1ICovXFxuIDk0NzpcXHRcXHRpZiAoaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuIDk0ODpcXHRcXHRcXHRpZiAoIWRldi1cXHUwMDNlZGJkY19zdXBwb3J0KVxcbiA5NDk6XFx0XFx0XFx0XFx0c3RzXzE2MCAvPSAyO1xcbiA5NTA6XFx0XFx0XFx0ZWxzZVxcbiA5NTE6XFx0XFx0XFx0XFx0c3RzXzE2MCA9IDA7XFxuIDk1MjpcXHRcXHR9XFxuIDk1MzpcXHRcXG4gOTU0OlxcdCNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbiA5NTU6XFx0XFx0aWYgKHZpZiA9PSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UKVxcbiA5NTY6XFx0XFx0XFx0cmV0dXJuO1xcbiA5NTc6XFx0I2VuZGlmXFxuIDk1ODpcXHRcXG4gOTU5OlxcdFxcdGVsZW0tXFx1MDAzZXBoeV9jYXBfaW5mb1szXSBcXHUwMDI2PSB+SUVFRTgwMjExX0hFX1BIWV9DQVAzX1NVX0JFQU1GT1JNRVI7XFxuIDk2MDpcXHRcXHRlbGVtLVxcdTAwM2VwaHlfY2FwX2luZm9bNF0gXFx1MDAyNj0gfklFRUU4MDIxMV9IRV9QSFlfQ0FQNF9NVV9CRUFNRk9STUVSO1xcbiA5NjE6XFx0XFxuIDk2MjpcXHRcXHRjID0gSUVFRTgwMjExX0hFX1BIWV9DQVA1X0JFQU1GT1JNRUVfTlVNX1NORF9ESU1fVU5ERVJfODBNSFpfTUFTSztcXG4gOTYzOlxcdFxcdGlmIChzdHNfMTYwKVxcbiA5NjQ6XFx0XFx0XFx0YyB8PSBJRUVFODAyMTFfSEVfUEhZX0NBUDVfQkVBTUZPUk1FRV9OVU1fU05EX0RJTV9BQk9WRV84ME1IWl9NQVNLO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjowNi4yODcwMzE5OTJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ4MDk3NzM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIEZsb3cqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIGlzIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludCwgYW5kIGl0IGNhbGxzIGBtdDc5MTVfbWN1X2luaXRgIHdpdGggdGhlIGRldmljZSBjb250ZXh0LiAgVGhhdCdzIHdoZXJlIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBNQ1UgaW5pdGlhbGl6YXRpb24gaGFwcGVuLiAgTWFrZXMgc2Vuc2UsIHRoYXQncyB1c3VhbGx5IHRoZSBmaXJzdCBoYXJkd2FyZSBzdGVwLlxuXG5Ob3csIGlmIGBtdDc5MTVfbWN1X2luaXRgIGZhaWxzIOKAkyBiZWNhdXNlLCBzYXksIHRoZSBmaXJtd2FyZSBpc24ndCBwcmVzZW50IG9yIHRoZSBoYXJkd2FyZSBkb2Vzbid0IHJlc3BvbmQgYXMgZXhwZWN0ZWQg4oCTIHdlJ3JlIGdvaW5nIHRvIGdldCBhIGZhaWx1cmUgYXQgdGhhdCBwb2ludC4gVGhpcywgbG9naWNhbGx5LCB3aWxsIHByb3BhZ2F0ZSB1cCB0byBhIGZhaWx1cmUgaW4gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLiBBbmQgaGVyZSdzIHRoZSBraWNrZXI6IGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyBjYWxsZWQgKmFmdGVyKiBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIHdpdGhpbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAuIFNvLCBhbnkgZmFpbHVyZSBpbiB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc3RhZ2UgKGxpa2UgdGhlIGZpcm13YXJlIGZhaWxpbmcgdG8gbG9hZCkgKmRlZmluaXRlbHkqIHByZXZlbnRzIHVzIGZyb20gZXZlbiByZWFjaGluZyB0aGUgdGhlcm1hbCBpbml0aWFsaXphdGlvbi4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyB5b3UgY2FuJ3QgbWFuYWdlIHRoZXJtYWwgY2hhcmFjdGVyaXN0aWNzIGlmIHRoZSBkZXZpY2UgaXNuJ3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuXG5cblNwZWNpZmljYWxseSwgaW4gUUVNVSwgd2l0aG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgYG10NzkxNV9tY3VfaW5pdGAgaXMgKmd1YXJhbnRlZWQqIHRvIGZhaWwuIE5vIGhhcmR3YXJlLCBubyBmaXJtd2FyZSByZXNwb25zZS4gV2UgbmVlZCB0byB2ZXJpZnkgdGhpcyBhc3N1bXB0aW9uIGJ5IGV4YW1pbmluZyBgbXQ3OTE1X21jdV9pbml0YCBmdW5jdGlvbiBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTA2LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6MTEuNzY4MDExOTIyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMxNjg4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfbWN1X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz04NjY9bXQ3OTE1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo4ODE6XFx0cmV0ID0gbXQ3OTE1X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTg4Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTI5MD1tdDc5MTVfbWFjX3Jlc3RhcnQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTEzNzYtXFx0LyogbG9hZCBmaXJtd2FyZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjEzNzc6XFx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTM3OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjMyMj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjMyMzptdDc5MTVfbWN1X2luaXRfcnhfYWlydGltZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjM4Nz1zdGF0aWMgaW50IG10NzkxNV9tY3Vfc2V0X3JlZChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIGVuYWJsZWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0MTA6aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDU4OlxcdHJldCA9IG10NzkxNV9tY3VfaW5pdF9yeF9haXJ0aW1lKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ1OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDY1OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQ3NzpcXHRyZXR1cm4gbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ3OC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaD00NzM9aW50IG10NzkxNV9ydW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3NDppbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3NTppbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQ3Ni1pbnQgbXQ3OTE1X21jdV90d3RfYWdydF91cGRhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6MTEuODE5MzMzMjc3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5OTkwMzA3NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5MTUgTUNVIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gYG10NzkxNV9tY3VfaW5pdGAgaXMgdGhlIGVudHJ5IHBvaW50LCBuYXR1cmFsbHkuIEFuZCwgYXMgZXhwZWN0ZWQsIGl0J3MgaW1tZWRpYXRlbHkgY2FsbGluZyBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldilgLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbWFnaWMgbGlrZWx5IGhhcHBlbnMsIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsIHNldHVwIG9mIHRoZSBNQ1UsIEkgcHJlc3VtZS4gTXkgbmV4dCBzdGVwIGlzIGNsZWFybHkgdG8gZGl2ZSBkZWVwZXIgaW50byBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmaXJtd2FyZSBpcyBoYW5kbGVkIGluIG9yZGVyIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhpcyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzczMDIsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjoxNS44MTgzNjcyOTFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MTAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDEwOlxcdGludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4yNDExOlxcdHtcXG4yNDEyOlxcdFxcdGludCByZXQ7XFxuMjQxMzpcXHRcXG4yNDE0OlxcdFxcdC8qIGZvcmNlIGZpcm13YXJlIG9wZXJhdGlvbiBtb2RlIGludG8gbm9ybWFsIHN0YXRlLFxcbjI0MTU6XFx0XFx0ICogd2hpY2ggc2hvdWxkIGJlIHNldCBiZWZvcmUgZmlybXdhcmUgZG93bmxvYWQgc3RhZ2UuXFxuMjQxNjpcXHRcXHQgKi9cXG4yNDE3OlxcdFxcdG10NzZfd3IoZGV2LCBNVF9TV0RFRl9NT0RFLCBNVF9TV0RFRl9OT1JNQUxfTU9ERSk7XFxuMjQxODpcXHRcXG4yNDE5OlxcdFxcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMCk7XFxuMjQyMDpcXHRcXHRpZiAocmV0KVxcbjI0MjE6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDIyOlxcdFxcdC8qIHNldCBkcml2ZXIgb3duIGZvciBiYW5kMSB3aGVuIHR3byBoaWYgZXhpc3QgKi9cXG4yNDIzOlxcdFxcdGlmIChkZXYtXFx1MDAzZWhpZjIpIHtcXG4yNDI0OlxcdFxcdFxcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMSk7XFxuMjQyNTpcXHRcXHRcXHRpZiAocmV0KVxcbjI0MjY6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDI3OlxcdFxcdH1cXG4yNDI4OlxcdFxcbjI0Mjk6XFx0XFx0cmV0ID0gbXQ3OTE1X2xvYWRfZmlybXdhcmUoZGV2KTtcXG4yNDMwOlxcdFxcdGlmIChyZXQpXFxuMjQzMTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0MzI6XFx0XFxuMjQzMzpcXHRcXHRzZXRfYml0KE1UNzZfU1RBVEVfTUNVX1JVTk5JTkcsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbjI0MzQ6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9md19sb2dfMl9ob3N0KGRldiwgTUNVX0ZXX0xPR19XTSwgMCk7XFxuMjQzNTpcXHRcXHRpZiAocmV0KVxcbjI0MzY6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDM3OlxcdFxcbjI0Mzg6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9md19sb2dfMl9ob3N0KGRldiwgTUNVX0ZXX0xPR19XQSwgMCk7XFxuMjQzOTpcXHRcXHRpZiAocmV0KVxcbjI0NDA6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDQxOlxcdFxcbjI0NDI6XFx0XFx0bXQ3Nl9jb25uYWNfbWN1X2RlbF93dGJsX2FsbChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4yNDQzOlxcdFxcbjI0NDQ6XFx0XFx0aWYgKChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG4yNDQ1OlxcdFxcdCAgICAgaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB8fFxcbjI0NDY6XFx0XFx0ICAgICFtdGtfd2VkX2dldF9yeF9jYXBhKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKVxcbjI0NDc6XFx0XFx0XFx0bXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKENBUEFCSUxJVFkpLCAwLCAwLCAwKTtcXG4yNDQ4OlxcdFxcbjI0NDk6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfbXdkcyhkZXYsIDEpO1xcbjI0NTA6XFx0XFx0aWYgKHJldClcXG4yNDUxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjQ1MjpcXHRcXG4yNDUzOlxcdFxcdHJldCA9IG10NzkxNV9tY3Vfc2V0X211cnVfY3RybChkZXYsIE1VUlVfU0VUX1BMQVRGT1JNX1RZUEUsXFxuMjQ1NDpcXHRcXHRcXHRcXHRcXHQgICAgICAgTVVSVV9QTEFURk9STV9UWVBFX1BFUkZfTEVWRUxfMik7XFxuMjQ1NTpcXHRcXHRpZiAocmV0KVxcbjI0NTY6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDU3OlxcdFxcbjI0NTg6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcXG4yNDU5OlxcdFxcdGlmIChyZXQpXFxuMjQ2MDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0NjE6XFx0XFxuMjQ2MjpcXHRcXHRyZXR1cm4gbXQ3OTE1X21jdV9zZXRfcmVkKGRldiwgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKTtcXG4yNDYzOlxcdH1cXG4yNDY0OlxcdFxcbjI0NjU6XFx0aW50IG10NzkxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbjI0NjY6XFx0e1xcbjI0Njc6XFx0XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X21jdV9vcHMgbXQ3OTE1X21jdV9vcHMgPSB7XFxuMjQ2ODpcXHRcXHRcXHQubWF4X3JldHJ5ID0gMSxcXG4yNDY5OlxcdFxcdFxcdC5oZWFkcm9vbSA9IHNpemVvZihzdHJ1Y3QgbXQ3Nl9jb25uYWMyX21jdV90eGQpLFxcbjI0NzA6XFx0XFx0XFx0Lm1jdV9za2JfcHJlcGFyZV9tc2cgPSBtdDc2X2Nvbm5hYzJfbWN1X2ZpbGxfbWVzc2FnZSxcXG4yNDcxOlxcdFxcdFxcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTE1X21jdV9zZW5kX21lc3NhZ2UsXFxuMjQ3MjpcXHRcXHRcXHQubWN1X3BhcnNlX3Jlc3BvbnNlID0gbXQ3OTE1X21jdV9wYXJzZV9yZXNwb25zZSxcXG4yNDczOlxcdFxcdH07XFxuMjQ3NDpcXHRcXG4yNDc1OlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5tY3Vfb3BzID0gXFx1MDAyNm10NzkxNV9tY3Vfb3BzO1xcbjI0NzY6XFx0XFxuMjQ3NzpcXHRcXHRyZXR1cm4gbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldik7XFxuMjQ3ODpcXHR9XFxuMjQ3OTpcXHRcXG4yNDgwOlxcdHZvaWQgbXQ3OTE1X21jdV9leGl0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuMjQ4MTpcXHR7XFxuMjQ4MjpcXHRcXHRtdDc2X2Nvbm5hY19tY3VfcmVzdGFydChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4yNDgzOlxcdFxcdGlmIChtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCBmYWxzZSkpIHtcXG4yNDg0OlxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIkZhaWxlZCB0byBleGl0IG1jdVxcXFxuXFxcIik7XFxuMjQ4NTpcXHRcXHRcXHRnb3RvIG91dDtcXG4yNDg2OlxcdFxcdH1cXG4yNDg3OlxcdFxcbjI0ODg6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORCgwKSwgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV04pO1xcbjI0ODk6XFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMilcXG4yNDkwOlxcdFxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoMSksXFxuMjQ5MTpcXHRcXHRcXHRcXHRNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTik7XFxuMjQ5MjpcXHRvdXQ6XFxuMjQ5MzpcXHRcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tY3UucmVzX3EpO1xcbjI0OTQ6XFx0fVxcbjI0OTU6XFx0XFxuMjQ5NjpcXHRzdGF0aWMgaW50XFxuMjQ5NzpcXHRtdDc5MTVfbWN1X3NldF9yeF9oZHJfdHJhbnNfYmxhY2tsaXN0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGludCBiYW5kKVxcbjI0OTg6XFx0e1xcbjI0OTk6XFx0XFx0c3RydWN0IHtcXG4yNTAwOlxcdFxcdFxcdHU4IG9wZXJhdGlvbjtcXG4yNTAxOlxcdFxcdFxcdHU4IGNvdW50O1xcbjI1MDI6XFx0XFx0XFx0dTggX3JzdlsyXTtcXG4yNTAzOlxcdFxcdFxcdHU4IGluZGV4O1xcbjI1MDQ6XFx0XFx0XFx0dTggZW5hYmxlO1xcbjI1MDU6XFx0XFx0XFx0X19sZTE2IGV0eXBlO1xcbjI1MDY6XFx0XFx0fSByZXEgPSB7XFxuMjUwNzpcXHRcXHRcXHQub3BlcmF0aW9uID0gMSxcXG4yNTA4OlxcdFxcdFxcdC5jb3VudCA9IDEsXFxuMjUwOTpcXHRcXHRcXHQuZW5hYmxlID0gMSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6MTUuODE4NTYwMDAxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTA4OTAwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmVgIGlzIGNhbGxpbmcgYG10NzkxNV9kcml2ZXJfb3duKGRldiwgMClgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB3aHkuIFRoaXMgbG9va3MgbGlrZSBhIHN0YW5kYXJkIGhhcmR3YXJlIGNoZWNrIGZvciBvd25lcnNoaXAsIHByb2JhYmx5IHRvIGVuc3VyZSB0aGVyZSBpc24ndCBhbm90aGVyIGRyaXZlciBvciBwcm9jZXNzIGFscmVhZHkgY29udHJvbGxpbmcgdGhpcyBwaWVjZSBvZiBoYXJkd2FyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBtdDc5MTVfZHJpdmVyX293bmAgZnVuY3Rpb24gaXMgcmVhbGx5IGRvaW5nOyBteSBzdXNwaWNpb24gaXMgc29tZSBraW5kIG9mIHJlZ2lzdGVyIHBvbGxpbmcgbWVjaGFuaXNtLCBidXQgSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gTGV0J3MgZGlnIGludG8gYG10NzkxNV9kcml2ZXJfb3duYCBpdHNlbGYgYW5kIHNlZSB3aGF0J3MgcmVhbGx5IGhhcHBlbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkyNzgsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM2OjE5LjcwOTQ1NDAyNloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIzOTgyNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTE1X2RyaXZlcl9vd25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIwNTc9aW50IG10NzkxNV9tY3VfYWRkX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjExMjpzdGF0aWMgaW50IG10NzkxNV9kcml2ZXJfb3duKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGJhbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjExMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yNDEwPWludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQxOTpcXHRyZXQgPSBtdDc5MTVfZHJpdmVyX293bihkZXYsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MjAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MjMtXFx0aWYgKGRldi1cXHUwMDNlaGlmMikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0MjQ6XFx0XFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDI1LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM2OjE5Ljc2MTg1NjI4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NzA3NTg3MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aGF0IGZpbGUsIGBtdDc5MTVfZHJpdmVyX293bmA6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBEcml2ZXIgT3duZXJzaGlwKipcblxuQWxyaWdodCwgSSdtIGRpZ2dpbmcgaW50byBgbXQ3OTE1X2RyaXZlcl9vd25gLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGxvb2tpbmcgYXQgYSBjcml0aWNhbCBzZWN0aW9uIHdpdGhpbiB0aGUgTWVkaWFUZWsgTVQ3OTE1IFdpLUZpIGRyaXZlciwgbGlrZWx5IGRlYWxpbmcgd2l0aCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhY2Nlc3MgY29udHJvbCwgYW5kIHBvdGVudGlhbGx5IG1lbW9yeSBtYW5hZ2VtZW50IHJlbGF0ZWQgdG8gdGhlIGhhcmR3YXJlIGl0c2VsZi4gVGhlIFwib3duXCIgc3VnZ2VzdHMgd2UgYXJlIGV4cGxvcmluZyBob3cgdGhlIGRyaXZlciB0YWtlcyBvd25lcnNoaXAgb2YgaGFyZHdhcmUgcmVzb3VyY2VzIGFuZCB3aGF0IHByb3RlY3Rpb25zIGFyZSBpbiBwbGFjZSB0byBwcmV2ZW50IGNvbmZsaWN0cyBvciByYWNlIGNvbmRpdGlvbnMuXG5cbknigJltIGV4cGVjdGluZyB0byBzZWUgc3RydWN0dXJlcyByZWxhdGVkIHRvIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UsIGludGVycnVwdCBoYW5kbGluZywgYW5kIGxpa2VseSBzb21lIHNvcnQgb2YgbG9jayBvciBzZW1hcGhvcmUgbWVjaGFuaXNtIHRvIG1hbmFnZSBjb25jdXJyZW50IGFjY2Vzcy4gVGhlIFwib3duXCIgbWlnaHQgcmVmZXIgdG8gdGhlIGRyaXZlcidzIG93bmVyc2hpcCBvZiB0aGluZ3MgbGlrZSBETUEgY2hhbm5lbHMsIHJlZ2lzdGVycywgYW5kIG1lbW9yeSBidWZmZXJzIHVzZWQgZm9yIHRyYW5zbWl0dGluZyBhbmQgcmVjZWl2aW5nIGRhdGEuIEknbGwgYmUgbG9va2luZyBmb3IgY29tbWVudHMgdGhhdCBleHBsYWluIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoZXNlIG93bmVyc2hpcCBzY2hlbWVzIGFuZCBhbnkgcG90ZW50aWFsIGlzc3VlcyBvciBlcnJvciBzY2VuYXJpb3MgaXQgaGFuZGxlcy5cblxuSSdtIGFsc28gYW50aWNpcGF0aW5nIHRoYXQgdGhpcyBzZWN0aW9uIGlzIGNydWNpYWwgZm9yIG1haW50YWluaW5nIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIHdpcmVsZXNzIGludGVyZmFjZSwgcHJldmVudGluZyBjcmFzaGVzLCBhbmQgZW5zdXJpbmcgcm9idXN0IHBlcmZvcm1hbmNlLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhpbmdzIGxpa2UgaG93IGl0IGhhbmRsZXMgbXVsdGlwbGUgYWNjZXNzIHBvaW50cywgc3RhdGlvbiBjb25jdXJyZW5jeSwgb3IgcGVyaGFwcyBob3cgaXQgZGVhbHMgd2l0aCBwb3dlci1zYXZpbmcgc3RhdGVzIG9mIHRoZSBXaS1GaSBjaGlwLiBBbnkgcmVmZXJlbmNlcyB0byBETUEgY29uZmlndXJhdGlvbiBhbmQgYnVmZmVyIG1hbmFnZW1lbnQgYXJlIGdvaW5nIHRvIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gSSdsbCBhbHNvIGJlIGZvY3VzaW5nIG9uIGFueSB1c2Ugb2YgYXRvbWljIG9wZXJhdGlvbnMgb3IgbXV0ZXhlcyBhbmQgY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVpciB1c2FnZSBmb3IgcGVyZm9ybWFuY2UuIEnigJltIGFsc28gZ29pbmcgdG8gYmUgbG9va2luZyBhdCBob3cgYW55IG9mIHRoaXMgcmVsYXRlcyB0byBmaXJtd2FyZSBsb2FkaW5nIGFuZCBleGVjdXRpb24sIHNpbmNlIHRoZSBNVDc5MTUgbGlrZWx5IGhhcyBmaXJtd2FyZSBvbi1jaGlwLlxuXG5MZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGluIHRoZXJlLiBJJ20gcmVhZHkgdG8gZ2V0IGRvd24gdG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDU2LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6MjQuNjMyNjE3MjI0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTEyLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTEyOlxcdHN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcXG4yMTEzOlxcdHtcXG4yMTE0OlxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTik7XFxuMjExNTpcXHRcXHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLFxcbjIxMTY6XFx0XFx0XFx0XFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcXG4yMTE3OlxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIlRpbWVvdXQgZm9yIGRyaXZlciBvd25cXFxcblxcXCIpO1xcbjIxMTg6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuMjExOTpcXHRcXHR9XFxuMjEyMDpcXHRcXG4yMTIxOlxcdFxcdC8qIGNsZWFyIGlycSB3aGVuIHRoZSBkcml2ZXIgb3duIHN1Y2Nlc3MgKi9cXG4yMTIyOlxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkRfSVJRX1NUQVQoYmFuZCksXFxuMjEyMzpcXHRcXHRcXHRNVF9UT1BfTFBDUl9IT1NUX0JBTkRfU1RBVCk7XFxuMjEyNDpcXHRcXG4yMTI1OlxcdFxcdHJldHVybiAwO1xcbjIxMjY6XFx0fVxcbjIxMjc6XFx0XFxuMjEyODpcXHRzdGF0aWMgaW50XFxuMjEyOTpcXHRtdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcXG4yMTMwOlxcdHtcXG4yMTMxOlxcdFxcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM2OjI0LjYzMjc4MjMyNFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjU2MDA0OTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBRRU1VIENyYXNoIFNjZW5hcmlvKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXQ3OTE1X2RyaXZlcl9vd25gIGZ1bmN0aW9uIGFuZCBJIHNlZSBpdCdzIHBvbGxpbmcgYSBoYXJkd2FyZSByZWdpc3Rlci4gSW4gUUVNVSwgd2l0aG91dCBhbnkgcmVhbCBoYXJkd2FyZSwgdGhhdCBwb2xsIGlzIGp1c3QgZ29pbmcgdG8gdGltZW91dCBhbmQgaW1tZWRpYXRlbHkgcmV0dXJuIGFuIGAtRUlPYCBlcnJvci4gUmlnaHQsIG1ha2VzIHNlbnNlLiBBbmQgYmVjYXVzZSBvZiB0aGF0IGluaXRpYWwgZmFpbHVyZSwgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAsIGBtdDc5MTVfbWN1X2luaXRgLCBhbmQgdGhlbiBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIGFsbCByZXR1cm4gYC1FSU9gIGluIGEgY2FzY2FkZSBlZmZlY3QuIFVsdGltYXRlbHksIHRoaXMgbGVhZHMgdG8gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGZhaWxpbmcgYmVmb3JlIGl0IGV2ZW4gZ2V0cyB0byBjYWxsIGBtdDc5MTVfdGhlcm1hbF9pbml0YC4gU28sIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYG10NzkxNV90aGVybWFsX2luaXRgIGlzIG5ldmVyIGV2ZW4gZ29pbmcgdG8gYmUgcmVhY2hlZCB3aGVuIHJ1bm5pbmcgaW4gUUVNVSB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcy5cblxuQnV0Li4uIGhhbmcgb24gYSBtaW51dGUuIFdoYXQgaWYgc3l6a2FsbGVyIGlzIGJlaW5nIHVzZWQ/IFNwZWNpZmljYWxseSwgd2hhdCBpZiBpdCdzIHVzaW5nIGBzeXpfcGNpX2RldmljZV9hZGRgPyBUaGF0IGNhbiBtYXAgZmFrZSBNTUlPIG1lbW9yeS4gTm93LCB0aGF0J3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gQmVjYXVzZSBgbXQ3Nl9wb2xsX21zZWNgIGlzIHJlYWRpbmcgZnJvbSB0aGF0IHBvdGVudGlhbGx5IGZha2UgTU1JTyBtZW1vcnkuIElmIHRoZSBmYWtlIG1lbW9yeSBpcyBqdXN0IHplcm8taW5pdGlhbGl6ZWQsIHRoYXQgbWVhbnMgYE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVRgLCB3aGljaCBJJ20gcHJldHR5IHN1cmUgaXMgYSBiaXRtYXNrLCAqY291bGQqIGJlIHplcm8uIEFuZCBpZiBpdCdzIHplcm8sIGBtdDc2X3BvbGxfbXNlY2AgY291bGQgYWN0dWFsbHkgc3VjY2VlZCEgVGhpcyBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGEgc2NlbmFyaW8gd2hlcmUgdGhlIGluaXRpYWxpemF0aW9uIGNvbnRpbnVlcyBldmVuIHRob3VnaCBpdCBzaG91bGQgaGF2ZSBmYWlsZWQsIGFuZCB0aGF0IGNvdWxkIHRyaWdnZXIgYSBjcmFzaCBkb3duIHRoZSBsaW5lLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBjaGVjayB3aGF0IGBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFUYCBhY3R1YWxseSBob2xkcy4gVGhpcyB3YXJyYW50cyBhIGNsb3NlciBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDkwMCwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM2OjMxLjg4ODc4OTUzOVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2NTM5ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjExMj1zdGF0aWMgaW50IG10NzkxNV9kcml2ZXJfb3duKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTE1LVxcdGlmICghbXQ3Nl9wb2xsX21zZWMoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjExNjpcXHRcXHRcXHQgICAgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVCwgMCwgNTAwKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMTctXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiVGltZW91dCBmb3IgZHJpdmVyIG93blxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdzLmg9NTA9ZW51bSBvZmZzX3JldiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdzLmgtMTEwMS0jZGVmaW5lIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTlxcdEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3JlZ3MuaDoxMTAyOiNkZWZpbmUgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVFxcdEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3JlZ3MuaC0xMTAzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjozMS45MzM0NTA2OTRaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc3NjYyMTI3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlcidzIEluaXRpYWxpemF0aW9uIExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciB0aGUgbXQ3OTE1IGRyaXZlciwgYW5kIHNvbWV0aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQuIElmIHRoaXMgXCJmYWtlIE1NSU8gbWVtb3J5XCIgaXMgaW5pdGlhbGl6ZWQgdG8gemVybywgdGhlbiB0aGUgYE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVRgIGJpdCwgd2hpY2ggaXMgYml0IDIsIHdpbGwgYWxzbyBiZSB6ZXJvLiBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBgbXQ3Nl9wb2xsX21zZWNgIGlzIGJlaW5nIHVzZWQsIHdoaWNoIGlzIGVzc2VudGlhbGx5IGNoZWNraW5nIGEgY29uZGl0aW9uIHVzaW5nIGEgcmVhZC1tb2RpZnktY29tcGFyZSBvcGVyYXRpb24uIFNwZWNpZmljYWxseSwgaXQgdGVzdHMgd2hldGhlciB0aGUgcmVzdWx0IG9mIGAocmVhZGwoYWRkcikgXHUwMDI2IG1hc2spID09IHZhbGAuIEluIG91ciBjYXNlLCB0aGUgYG1hc2tgIGlzIHRoYXQgYE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVRgIGJpdCwgYW5kIHRoZSBkZXNpcmVkIGB2YWxgIGlzIHplcm8uXG5cblRoZXJlZm9yZSwgaWYgdGhpcyBmYWtlIE1NSU8gaXMgemVybywgdGhlbiB3ZSdyZSBwZXJmb3JtaW5nIGEgYml0d2lzZSBBTkQgYmV0d2VlbiB6ZXJvIGFuZCBiaXQgMiwgd2hpY2ggd2lsbCBpbmV2aXRhYmx5IHJlc3VsdCBpbiB6ZXJvLiBDb25zZXF1ZW50bHksIHRoZSBjaGVjayBgKDAgXHUwMDI2IEJJVCgyKSkgPT0gMGAgaXMgdHJ1ZSEgSXQgKmFsd2F5cyogc3VjY2VlZHMuIFRoaXMgY291bGQgbWVhbiBgbXQ3OTE1X2RyaXZlcl9vd25gIG1pZ2h0IHRoaW5rIGl0J3Mgc3VjY2Vzc2Z1bGx5IGNsYWltZWQgb3duZXJzaGlwIHdoZW4gaW4gcmVhbGl0eSwgc29tZXRoaW5nIGlzIGZ1bmRhbWVudGFsbHkgd3JvbmcgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBUaGF0J3MgYSBodWdlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5ISBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBpbXBsaWNhdGlvbiBvZiB0aGlzLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgd2hhdCBoYXBwZW5zIGluIGBtdDc5MTVfbG9hZF9maXJtd2FyZShkZXYpYC4gTGV0J3Mgc2VlIGlmIHRoYXQgYWxzbyBhc3N1bWVzIGV2ZXJ5dGhpbmcgaXMgZmluZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjAyMSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjozNy43MTAwNzUwMjNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDgxODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkxNV9sb2FkX2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTI5PW10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjE0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTQyOnN0YXRpYyBpbnQgbXQ3OTE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI0MTA9aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDI5OlxcdHJldCA9IG10NzkxNV9sb2FkX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQzMC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjozNy43NTQxNjUwODlaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgyMzkxMTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG10NzkxNV9sb2FkX2Zpcm13YXJlYCBmdW5jdGlvbi4gSSBzZWUgdGhpcyBhIGxvdCwgZXNwZWNpYWxseSB3aXRoIG5ld2VyIFdpRmkgY2hpcHNldHM7IGZpcm13YXJlIGxvYWRpbmcgaXMgYWx3YXlzIGEgY3JpdGljYWwgcGllY2UuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBoaWdoLWxldmVsIGFyY2hpdGVjdHVyZTogaXMgdGhpcyBhIHNpbXBsZSB0cmFuc2ZlciwgYSBtb3JlIGNvbXBsZXggYm9vdCBwcm9jZXNzLCBvciBzb21ldGhpbmcgaW4gYmV0d2Vlbj8gV2hhdCBraW5kIG9mIG1lbW9yeSBhY2Nlc3MgYXJlIHdlIHRhbGtpbmcgYWJvdXQ/XG5cbk5leHQsIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIG9idmlvdXM6IGVycm9yIGhhbmRsaW5nLiBGaXJtd2FyZSBsb2FkaW5nIGlzIG5vdG9yaW91c2x5IHNlbnNpdGl2ZS4gSSB3YW50IHRvIHNlZSBob3cgcm9idXN0IHRoZSBlcnJvciBjaGVja3MgYXJlLCB3aGF0IGtpbmQgb2YgcmV0cnkgbWVjaGFuaXNtcyBhcmUgaW4gcGxhY2UgKGlmIGFueSksIGFuZCBob3cgaXQgZGVhbHMgd2l0aCBjb21tb24gZmFpbHVyZSBzY2VuYXJpb3MgbGlrZSBjaGVja3N1bSBlcnJvcnMgb3IgY29tbXVuaWNhdGlvbiB0aW1lb3V0cy4gQXJlIHRoZXJlIGRldGFpbGVkIGVycm9yIGNvZGVzPyBBcmUgdGhleSBtZWFuaW5nZnVsP1xuXG5UaGVuLCBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBvciBpbml0aWFsaXphdGlvbiBzdGVwcyBiZWZvcmUgdGhlIGFjdHVhbCBmaXJtd2FyZSBkb3dubG9hZC4gQXJlIHRoZXJlIGFueSBoYXJkd2FyZS1zcGVjaWZpYyByZWdpc3RlciB3cml0ZXMgaW52b2x2ZWQ/IEFueSBpbml0aWFsIHBvd2VyLXVwIHNlcXVlbmNlcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRldmljZSBzdGF0ZSBiZWZvcmUgdGhlIGZpcm13YXJlIHRha2VzIG92ZXIuXG5cbkknbGwgYmUgYXNzZXNzaW5nIHRoZSBtZXRob2Qgb2YgZGF0YSB0cmFuc2ZlciwgaXMgdGhpcyBETUEsIG9yIFBJTz8gSG93IGlzIHRoZSBjb21tdW5pY2F0aW9uIHByb3RvY29sIGltcGxlbWVudGVkPyBJcyB0aGlzIGEgc3RhbmRhcmQgaW50ZXJmYWNlLCBvciBhIHByb3ByaWV0YXJ5IG9uZT8gVW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyBkYXRhIHRyYW5zZmVyIG1lY2hhbmlzbSB3aWxsIGJlIGNyaXRpY2FsIGZvciBkZWJ1Z2dpbmcgcG90ZW50aWFsIGlzc3Vlcy5cblxuRmluYWxseSwgSSdsbCBiZSBjaGVja2luZyBmb3IgYW55IHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zLiBBcmUgdGhlcmUgYW55IGNoZWNrcyBmb3Igc2lnbmVkIGZpcm13YXJlPyBBbnkgYW50aS1yb2xsYmFjayBtZWNoYW5pc21zPyBTZWN1cmUgYm9vdCBjb25zaWRlcmF0aW9ucz8gRmlybXdhcmUgdXBkYXRlcyBjYW4gYmUgYSBwcmltZSBhdHRhY2sgdmVjdG9yLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGV5J3JlIGhhbmRsaW5nIHRoYXQuIEJhc2ljYWxseSwgSSB3YW50IHRvIHNlZSBpZiB0aGlzIGlzIHJvYnVzdCBhbmQgc2VjdXJlLCBvciBpZiBpdCdzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIEknbSBnb2luZyB0byBsb29rIGZvciBhcmVhcyB3aGVyZSBJIGNhbiBpbnRyb2R1Y2UgYSBmdXp6aW5nIGF0dGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI5MDMsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjo0NC41NzgwNzk2OTlaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxNDIsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTQyOlxcdHN0YXRpYyBpbnQgbXQ3OTE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4yMTQzOlxcdHtcXG4yMTQ0OlxcdFxcdGludCByZXQ7XFxuMjE0NTpcXHRcXG4yMTQ2OlxcdFxcdC8qIFJlbGVhc2UgU2VtYXBob3JlIGlmIHRha2VuIGJ5IHByZXZpb3VzIGZhaWxlZCBhdHRlbXB0ICovXFxuMjE0NzpcXHRcXHRyZXQgPSBtdDc2X2Nvbm5hY19tY3VfcGF0Y2hfc2VtX2N0cmwoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgZmFsc2UpO1xcbjIxNDg6XFx0XFx0aWYgKHJldCAhPSBQQVRDSF9SRUxfU0VNX1NVQ0NFU1MpIHtcXG4yMTQ5OlxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIkNvdWxkIG5vdCByZWxlYXNlIHNlbWFwaG9yZVxcXFxuXFxcIik7XFxuMjE1MDpcXHRcXHRcXHQvKiBDb250aW51ZSBhbnl3YXlzICovXFxuMjE1MTpcXHRcXHR9XFxuMjE1MjpcXHRcXG4yMTUzOlxcdFxcdC8qIEFsd2F5cyByZXN0YXJ0IE1DVSBmaXJtd2FyZSAqL1xcbjIxNTQ6XFx0XFx0bXQ3Nl9jb25uYWNfbWN1X3Jlc3RhcnQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuMjE1NTpcXHRcXG4yMTU2OlxcdFxcdC8qIENoZWNrIGlmIE1DVSBpcyByZWFkeSAqL1xcbjIxNTc6XFx0XFx0cmV0ID0gbXQ3OTE1X2Zpcm13YXJlX3N0YXRlKGRldiwgZmFsc2UpO1xcbjIxNTg6XFx0XFx0aWYgKHJldCkge1xcbjIxNTk6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRmlybXdhcmUgZGlkIG5vdCBlbnRlciBkb3dubG9hZCBzdGF0ZVxcXFxuXFxcIik7XFxuMjE2MDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjIxNjE6XFx0XFx0fVxcbjIxNjI6XFx0XFxuMjE2MzpcXHRcXHRyZXQgPSBtdDc2X2Nvbm5hYzJfbG9hZF9wYXRjaChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBmd19uYW1lX3ZhcihkZXYsIFJPTV9QQVRDSCkpO1xcbjIxNjQ6XFx0XFx0aWYgKHJldClcXG4yMTY1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjE2NjpcXHRcXG4yMTY3OlxcdFxcdHJldCA9IG10NzZfY29ubmFjMl9sb2FkX3JhbShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBmd19uYW1lX3ZhcihkZXYsIEZJUk1XQVJFX1dNKSxcXG4yMTY4OlxcdFxcdFxcdFxcdFxcdCAgICBmd19uYW1lKGRldiwgRklSTVdBUkVfV0EpKTtcXG4yMTY5OlxcdFxcdGlmIChyZXQpXFxuMjE3MDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjIxNzE6XFx0XFxuMjE3MjpcXHRcXHRyZXQgPSBtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCB0cnVlKTtcXG4yMTczOlxcdFxcdGlmIChyZXQpXFxuMjE3NDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjIxNzU6XFx0XFxuMjE3NjpcXHRcXHRtdDc2X3F1ZXVlX3R4X2NsZWFudXAoZGV2LCBkZXYtXFx1MDAzZW10NzYucV9tY3VbTVRfTUNVUV9GV0RMXSwgZmFsc2UpO1xcbjIxNzc6XFx0XFxuMjE3ODpcXHRcXHRkZXZfZGJnKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJGaXJtd2FyZSBpbml0IGRvbmVcXFxcblxcXCIpO1xcbjIxNzk6XFx0XFxuMjE4MDpcXHRcXHRyZXR1cm4gMDtcXG4yMTgxOlxcdH1cXG4yMTgyOlxcdFxcbjIxODM6XFx0aW50IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1OCB0eXBlLCB1OCBjdHJsKVxcbjIxODQ6XFx0e1xcbjIxODU6XFx0XFx0c3RydWN0IHtcXG4yMTg2OlxcdFxcdFxcdHU4IGN0cmxfdmFsO1xcbjIxODc6XFx0XFx0XFx0dTggcGFkWzNdO1xcbjIxODg6XFx0XFx0fSBkYXRhID0ge1xcbjIxODk6XFx0XFx0XFx0LmN0cmxfdmFsID0gY3RybFxcbjIxOTA6XFx0XFx0fTtcXG4yMTkxOlxcdFxcbjIxOTI6XFx0XFx0aWYgKHR5cGUgPT0gTUNVX0ZXX0xPR19XQSlcXG4yMTkzOlxcdFxcdFxcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfV0FfRVhUX0NNRChGV19MT0dfMl9IT1NUKSxcXG4yMTk0OlxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2ZGF0YSwgc2l6ZW9mKGRhdGEpLCB0cnVlKTtcXG4yMTk1OlxcdFxcbjIxOTY6XFx0XFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKEZXX0xPR18yX0hPU1QpLCBcXHUwMDI2ZGF0YSxcXG4yMTk3OlxcdFxcdFxcdFxcdFxcdCBzaXplb2YoZGF0YSksIHRydWUpO1xcbjIxOTg6XFx0fVxcbjIxOTk6XFx0XFxuMjIwMDpcXHRpbnQgbXQ3OTE1X21jdV9md19kYmdfY3RybChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgbW9kdWxlLCB1OCBsZXZlbClcXG4yMjAxOlxcdHtcXG4yMjAyOlxcdFxcdHN0cnVjdCB7XFxuMjIwMzpcXHRcXHRcXHR1OCB2ZXI7XFxuMjIwNDpcXHRcXHRcXHR1OCBwYWQ7XFxuMjIwNTpcXHRcXHRcXHRfX2xlMTYgbGVuO1xcbjIyMDY6XFx0XFx0XFx0dTggbGV2ZWw7XFxuMjIwNzpcXHRcXHRcXHR1OCByc3ZbM107XFxuMjIwODpcXHRcXHRcXHRfX2xlMzIgbW9kdWxlX2lkeDtcXG4yMjA5OlxcdFxcdH0gZGF0YSA9IHtcXG4yMjEwOlxcdFxcdFxcdC5tb2R1bGVfaWR4ID0gY3B1X3RvX2xlMzIobW9kdWxlKSxcXG4yMjExOlxcdFxcdFxcdC5sZXZlbCA9IGxldmVsLFxcbjIyMTI6XFx0XFx0fTtcXG4yMjEzOlxcdFxcbjIyMTQ6XFx0XFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKEZXX0RCR19DVFJMKSwgXFx1MDAyNmRhdGEsXFxuMjIxNTpcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKGRhdGEpLCBmYWxzZSk7XFxuMjIxNjpcXHR9XFxuMjIxNzpcXHRcXG4yMjE4OlxcdGludCBtdDc5MTVfbWN1X211cnVfZGVidWdfc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgZW5hYmxlZClcXG4yMjE5OlxcdHtcXG4yMjIwOlxcdFxcdHN0cnVjdCB7XFxuMjIyMTpcXHRcXHRcXHRfX2xlMzIgY21kO1xcbjIyMjI6XFx0XFx0XFx0dTggZW5hYmxlO1xcbjIyMjM6XFx0XFx0fSBkYXRhID0ge1xcbjIyMjQ6XFx0XFx0XFx0LmNtZCA9IGNwdV90b19sZTMyKE1VUlVfU0VUX1RYQ19UWF9TVEFUU19FTiksXFxuMjIyNTpcXHRcXHRcXHQuZW5hYmxlID0gZW5hYmxlZCxcXG4yMjI2OlxcdFxcdH07XFxuMjIyNzpcXHRcXG4yMjI4OlxcdFxcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfRVhUX0NNRChNVVJVX0NUUkwpLCBcXHUwMDI2ZGF0YSxcXG4yMjI5OlxcdFxcdFxcdFxcdFxcdHNpemVvZihkYXRhKSwgZmFsc2UpO1xcbjIyMzA6XFx0fVxcbjIyMzE6XFx0XFxuMjIzMjpcXHRpbnQgbXQ3OTE1X21jdV9tdXJ1X2RlYnVnX2dldChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbjIyMzM6XFx0e1xcbjIyMzQ6XFx0XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbjIyMzU6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4yMjM2OlxcdFxcdHN0cnVjdCBtdDc5MTVfbWN1X211cnVfc3RhdHMgKm11X3N0YXRzO1xcbjIyMzc6XFx0XFx0aW50IHJldDtcXG4yMjM4OlxcdFxcbjIyMzk6XFx0XFx0c3RydWN0IHtcXG4yMjQwOlxcdFxcdFxcdF9fbGUzMiBjbWQ7XFxuMjI0MTpcXHRcXHRcXHR1OCBiYW5kX2lkeDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6NDQuNTc4MjU5MDA5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MjQ5NzI2NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB3aGF0J3MgaGFwcGVuaW5nLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkZpcm13YXJlIExvYWRpbmcgU2VxdWVuY2UgRGVlcCBEaXZlKipcblxuT2theSwgc28gYG10NzkxNV9sb2FkX2Zpcm13YXJlYCBpcyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGdldHRpbmcgdGhlIGZpcm13YXJlIG9udG8gdGhlIE1UNzkxNSBkZXZpY2UuIEkgc2VlIHRoYXQgaXQga2lja3MgdGhpbmdzIG9mZiB3aXRoIGEgY2FsbCB0byBgbXQ3OTE1X2Zpcm13YXJlX3N0YXRlKGRldiwgZmFsc2UpYC4gTmF0dXJhbGx5LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBgbXQ3OTE1X2Zpcm13YXJlX3N0YXRlYCBmdW5jdGlvbiAqZG9lcyouIEkgbmVlZCB0byBzZWUgaWYgaXQgc2V0cyB1cCBhbnkgcHJlY29uZGl0aW9ucywgaW5pdGlhbGl6ZXMgYW55IGhhcmR3YXJlIHJlZ2lzdGVycywgb3IgbWF5YmUgZXZlbiBhdHRlbXB0cyBhIGJhc2ljIGhhbmRzaGFrZSB3aXRoIHRoZSBkZXZpY2UgYmVmb3JlIHRoZSBtb3JlIGludm9sdmVkIGxvYWRpbmcgcHJvY2VzcyBzdGFydHMuIFRoZSBgZmFsc2VgIGFyZ3VtZW50IGlzIGludGVyZXN0aW5nIHRvbzsgaXQncyBsaWtlbHkgaW5kaWNhdGluZyBhIHBhcnRpY3VsYXIgc3RhdGUgdG8gYmUgc2V0IGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGZ1bmN0aW9uLiBJIHdvdWxkIGJlIGN1cmlvdXMgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgZW50YWlscy4gVGhpcyB3aWxsIGRlZmluaXRlbHkgZ2l2ZSBtZSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyBkdXJpbmcgdGhlIGZpcm13YXJlIGxvYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0OTAxLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjo0OC40MDMyMzUzODFaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMjgsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxMjg6XFx0c3RhdGljIGludFxcbjIxMjk6XFx0bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXFxuMjEzMDpcXHR7XFxuMjEzMTpcXHRcXHR1MzIgc3RhdGUgPSBGSUVMRF9QUkVQKE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxcbjIxMzI6XFx0XFx0XFx0XFx0ICAgICAgIHdhID8gRldfU1RBVEVfUkRZIDogRldfU1RBVEVfRldfRE9XTkxPQUQpO1xcbjIxMzM6XFx0XFxuMjEzNDpcXHRcXHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX01JU0MsIE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxcbjIxMzU6XFx0XFx0XFx0XFx0ICAgIHN0YXRlLCAxMDAwKSkge1xcbjIxMzY6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiVGltZW91dCBmb3IgaW5pdGlhbGl6aW5nIGZpcm13YXJlXFxcXG5cXFwiKTtcXG4yMTM3OlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjIxMzg6XFx0XFx0fVxcbjIxMzk6XFx0XFx0cmV0dXJuIDA7XFxuMjE0MDpcXHR9XFxuMjE0MTpcXHRcXG4yMTQyOlxcdHN0YXRpYyBpbnQgbXQ3OTE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6NDguNDAzNDIwNzkxWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMTE1MDc3MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgdGhlIEZpcm13YXJlIERvd25sb2FkIFN0YXRlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBgbXQ3OTE1X2Zpcm13YXJlX3N0YXRlYCBmdW5jdGlvbiBkZXRlcm1pbmVzIGlmIHRoZSBmaXJtd2FyZSBoYXMgYmVlbiBkb3dubG9hZGVkLiBUaGUgY29kZSBpcyBwZXJpb2RpY2FsbHkgY2hlY2tpbmcgdGhlIGBNVF9UT1BfTUlTQ2AgcmVnaXN0ZXIsIHNwZWNpZmljYWxseSB0aGUgYE1UX1RPUF9NSVNDX0ZXX1NUQVRFYCBmaWVsZCB3aXRoaW4gaXQuIEl0J3Mgc3VwcG9zZWQgdG8gYmUgY29tcGFyaW5nIHRoaXMgdmFsdWUgdG8gYSB0YXJnZXQgYHN0YXRlYCwgYW5kIGlkZWFsbHksIHRoaXMgd291bGQgdGVsbCB1cyBpZiB0aGUgZG93bmxvYWQgaXMgY29tcGxldGUuXG5cbkhvd2V2ZXIsIHRoZXJlJ3MgYSBwb3RlbnRpYWwgZ290Y2hhIGhlcmUuIFRoZSBjb2RlIG1lbnRpb25zIHRoYXQgaWYgdGhlIGZha2UgTU1JTyBtZW1vcnkgcmVnaW9uIGlzIHNldCB0byB6ZXJvLCB0aGVuIHRoZSBgTVRfVE9QX01JU0NfRldfU1RBVEVgIHdpbGwgYWxzbyBldmFsdWF0ZSB0byB6ZXJvLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgd2UgbmVlZCB0byBjb25zaWRlciB3aGF0IHRoZSBleHBlY3RlZCB2YWx1ZSwgdGhlIHRhcmdldCBzdGF0ZSwgYWN0dWFsbHkgKmlzKi4gVGhlIGNvZGUgaXMgZXhwbGljaXRseSBjb21wYXJpbmcgdG8gYHN0YXRlYCwgd2hpY2ggaXMgZGVmaW5lZCB1c2luZyBgRklFTERfUFJFUGAsIHNwZWNpZmljYWxseSB1c2luZyBgRldfU1RBVEVfRldfRE9XTkxPQURgLiBTbywgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBGV19TVEFURV9GV19ET1dOTE9BRGAgaXMgd2hhdCB3ZSAqZXhwZWN0KiB0byBzZWUgZHVyaW5nIHRoZSBmaXJtd2FyZSBkb3dubG9hZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTQ4MywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM2OjUyLjcxNDkzMDk1MloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM5NzQzMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRldfU1RBVEVfRldfRE9XTkxPQURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIxMjk9bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMxLVxcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjEzMjpcXHRcXHRcXHQgICAgICAgd2EgPyBGV19TVEFURV9SRFkgOiBGV19TVEFURV9GV19ET1dOTE9BRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjEzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6NTIuNzU4OTA4NzU3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NzYzNjc4MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBGV19TVEFURV9GV19ET1dOTE9BRGAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIHJpZ2h0IGluLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGBGV19TVEFURV9GV19ET1dOTE9BRGAgZGVmaW5pdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiAqcHJlY2lzZWx5KiB3aGF0IHRoaXMgc3RhdGUgc2lnbmlmaWVzIHdpdGhpbiB0aGUgZmlybXdhcmUgZG93bmxvYWQgcHJvY2Vzcy4gSSBuZWVkIHRvIGJlIHN1cmUgSSBoYXZlIGEgY2xlYXIgYW5kIGFjY3VyYXRlIG1lbnRhbCBtb2RlbC4gV2hhdCBhc3N1bXB0aW9ucyBhcmUgYmFrZWQgaW50byB0aGlzIHN0YXRlPyBBcmUgdGhlcmUgYW55IHN1YnRsZSBudWFuY2VzIGluIGl0cyBpbXBsZW1lbnRhdGlvbiB0aGF0IEkgbWlnaHQgaGF2ZSBvdmVybG9va2VkIGR1cmluZyB0aGUgaW5pdGlhbCByZXZpZXc/IEFyZSB0aGVyZSBwb3RlbnRpYWwgYXJlYXMgb2YgdnVsbmVyYWJpbGl0eSBJIGNhbiBxdWlja2x5IGlkZW50aWZ5IHRocm91Z2ggYSBkZWZpbml0aW9uIHJldmlldy4gSSBoYXZlIHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG1hdGNoZXMgdGhlIGltcGxlbWVudGF0aW9uLiBTbywgbGV0J3MgZ2V0IGludG8gdGhlIGRldGFpbHMsIGFuZCBtYWtlIHN1cmUgbXkgbWluZCBpcyB3b3JraW5nIHdpdGggdGhpcyBzcGVjaWZpYyBjb250ZXh0IGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYwNzQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNzowMS40MzUyODAzMzRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTc0NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZXX1NUQVRFX0ZXX0RPV05MT0FEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTI5PW10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjEzMS1cXHR1MzIgc3RhdGUgPSBGSUVMRF9QUkVQKE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxMzI6XFx0XFx0XFx0ICAgICAgIHdhID8gRldfU1RBVEVfUkRZIDogRldfU1RBVEVfRldfRE9XTkxPQUQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM3OjAxLjQ4MDI2MTU0OVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzc4NzE1NDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgRmlybXdhcmUgRG93bmxvYWQgU3RhdGVzKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgZmlybXdhcmUgZG93bmxvYWQgcHJvY2VzcyBpcyBiZWhhdmluZywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG10NzZgIGFuZCBgbXQ3OTE1YCBkcml2ZXJzLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBGV19TVEFURV9GV19ET1dOTE9BRGAgc3RhdGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2hlbiB0aGF0IHNwZWNpZmljIHN0YXRlIGlzIGFjdGl2ZS4gV2hhdCB0cmlnZ2VycyBpdD8gV2hhdCBhY3Rpb25zIGRvZXMgaXQgZGljdGF0ZT8gV2hhdCBhcmUgdGhlIHBvc3NpYmxlIGVycm9yIGNvbmRpdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3RhdGUsIGFuZCBob3cgYXJlIHRoZXkgaGFuZGxlZD8gSXQncyBhbGwgYWJvdXQgZW5zdXJpbmcgdGhlIGZpcm13YXJlIHVwZGF0ZXMgYXJlIHJvYnVzdCBhbmQgcmVsaWFibGUsIHNvIGdldHRpbmcgYSBzb2xpZCBncmFzcCBvbiB0aGF0IHBhcnRpY3VsYXIgZmxhZyBpcyBjcnVjaWFsLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjUwNiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM3OjA1LjI1ODk3OTU3NloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM2NTUzMjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRldfU1RBVEVfRldfRE9XTkxPQURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTQzMz1zdGF0aWMgaW50IG10NzYxNV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNDM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE0NDA6XFx0aWYgKHZhbCAhPSBGV19TVEFURV9GV19ET1dOTE9BRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NDEtXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRmlybXdhcmUgaXMgbm90IHJlYWR5IGZvciBkb3dubG9hZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xNDYzPXN0YXRpYyBpbnQgbXQ3NjIyX2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NzAtXFx0dmFsID0gbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9UT1BfT0ZGX1JTViwgTVRfVE9QX09GRl9SU1ZfRldfU1RBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE0NzE6XFx0aWYgKHZhbCAhPSBGV19TVEFURV9GV19ET1dOTE9BRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NzItXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRmlybXdhcmUgaXMgbm90IHJlYWR5IGZvciBkb3dubG9hZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oPTExNDQ9ZW51bSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaC0xMTQ1LVxcdEZXX1NUQVRFX0lOSVRJQUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaDoxMTQ2OlxcdEZXX1NUQVRFX0ZXX0RPV05MT0FELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgtMTE0Ny1cXHRGV19TVEFURV9OT1JNQUxfT1BFUkFUSU9OLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjEyOT1tdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzEtXFx0dTMyIHN0YXRlID0gRklFTERfUFJFUChNVF9UT1BfTUlTQ19GV19TVEFURSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTMyOlxcdFxcdFxcdCAgICAgICB3YSA/IEZXX1NUQVRFX1JEWSA6IEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9MzU3Nz1zdGF0aWMgaW50IG10Nzk5Nl9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNTgyLVxcdC8qIG1ha2Ugc3VyZSBmdyBpcyBkb3dubG9hZCBzdGF0ZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM1ODM6XFx0aWYgKG10Nzk5Nl9maXJtd2FyZV9zdGF0ZShkZXYsIEZXX1NUQVRFX0ZXX0RPV05MT0FEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM1ODQtXFx0XFx0LyogcmVzdGFydCBmaXJtd2FyZSBvbmNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4NS1cXHRcXHRtdDc5OTZfbWN1X3Jlc3RhcnQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzU4NjpcXHRcXHRyZXQgPSBtdDc5OTZfZmlybXdhcmVfc3RhdGUoZGV2LCBGV19TVEFURV9GV19ET1dOTE9BRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4Ny1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz0zNzcyPXZvaWQgbXQ3OTk2X21jdV9leGl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzc0LVxcdG10Nzk5Nl9tY3VfcmVzdGFydChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzozNzc1OlxcdGlmIChtdDc5OTZfZmlybXdhcmVfc3RhdGUoZGV2LCBGV19TVEFURV9GV19ET1dOTE9BRCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzc2LVxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIkZhaWxlZCB0byBleGl0IG1jdVxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM3OjA1LjMzMjY0MDczOVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTc1NjI4MzI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVucmVhY2hhYmlsaXR5IG9mIG10NzkxNV90aGVybWFsX2luaXQgaW4gUUVNVSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaWYgYEZXX1NUQVRFX0ZXX0RPV05MT0FEYCBpcyBzZXQgdG8gMSwgdGhlbiB0aGUgYEZJRUxEX1BSRVBgIG1hY3JvIHdpbGwgcHJvZHVjZSBhIG5vbi16ZXJvIHZhbHVlLiBIb3dldmVyLCB0aGUgY3JpdGljYWwgaXNzdWUgc2VlbXMgdG8gYmUgd2l0aCB0aGUgZmFrZSBNTUlPIG1lbW9yeSBpbiBRRU1VLiBJZiB0aGF0IG1lbW9yeSBpcyBpbml0aWFsaXplZCB0byAwLCB0aGUgYG10NzZfcG9sbF9tc2VjYCBmdW5jdGlvbiB3aWxsIGluZXZpdGFibHkgdGltZW91dCBiZWNhdXNlIGl0J3MgbG9va2luZyBmb3IgYSBub24temVybyBzdGF0ZS5cblxuVGhpcyB0aW1lb3V0IGxlYWRzIHRvIGEgY2FzY2FkaW5nIHNlcmllcyBvZiBmYWlsdXJlczogYG10NzkxNV9maXJtd2FyZV9zdGF0ZWAgcmV0dXJucyBgLUVJT2AsIGZvbGxvd2VkIGJ5IGBtdDc5MTVfbG9hZF9maXJtd2FyZWAsIGBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmVgLCBgbXQ3OTE1X21jdV9pbml0YCwgYG10NzkxNV9pbml0X2hhcmR3YXJlYCwgYW5kIGZpbmFsbHkgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGFsbCBmYWlsaW5nLiBUaGUgZmFpbHVyZSBpbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgaXMgdGhlIGtleSDigJMgaXQgcHJldmVudHMgdGhlIGNhbGwgdG8gYG10NzkxNV90aGVybWFsX2luaXRgLiBUaHVzLCBJIGNhbiBjb25maWRlbnRseSBzdGF0ZSB0aGF0IGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyB1bnJlYWNoYWJsZSBpbiB0aGlzIHNjZW5hcmlvLlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIHRoZSBhbHRlcm5hdGl2ZTogd2hhdCBpZiB0aGUgZmFrZSBNTUlPICppc24ndCogemVybz8gU3l6a2FsbGVyJ3MgYHN5el9wY2lfZGV2aWNlX2FkZGAgZG9lc24ndCBnaXZlIHVzIGR5bmFtaWMgY29udHJvbCBvdmVyIE1NSU8gcmVhZHMuIFN1cmUsIGl0IGNhbiBtYXAgbWVtb3J5LCBhbmQgd2UgY2FuICp3cml0ZSogdG8gaXQsIGJ1dCB0aGUgZHJpdmVyICpyZWFkcyogZnJvbSBpdC4gSWYgdGhlIGRyaXZlciByZWFkcyBiZWZvcmUgYW55IHdyaXRlcyBmcm9tIFN5emthbGxlciBvY2N1ciwgd2UncmUgYmFjayB0byB6ZXJvLiBTeXprYWxsZXIgY2FuIHdyaXRlIHZhbHVlcyB0byB0aGUgZmFrZSBNTUlPIG1lbW9yeSwgYnV0IGl0IGRvZXNuJ3Qga25vdyB3aGljaCBhZGRyZXNzIHRvIHdyaXRlIHdoYXQgdG8gcGFzcyB0aGUgcG9sbGluZy4gSXQncyBpbXByb2JhYmxlIHRoYXQgU3l6a2FsbGVyIGNvdWxkIG1hbmFnZSB0byBzYXRpc2Z5IGFsbCB0aGUgZHJpdmVyJ3MgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gY2hlY2tzLCBmaXJtd2FyZSBzdGF0ZSBjaGVja3MsIGFuZCBldmVyeXRoaW5nIGVsc2UsIGp1c3QgYnkgcmFuZG9tIHdyaXRlcy5cblxuRnVydGhlcm1vcmUsIGBtdDc2X2Nvbm5hYzJfbG9hZF9wYXRjaGAgYW5kIGBtdDc2X2Nvbm5hYzJfbG9hZF9yYW1gIGRlbWFuZCB0aGUgcHJlc2VuY2Ugb2YgbGVnaXRpbWF0ZSBmaXJtd2FyZSBmaWxlcy4gV2hpbGUgU3l6a2FsbGVyIG1pZ2h0IGhhdmUgc29tZSBkdW1teSBmaWxlcywgdGhleSBhcmUgdW5saWtlbHkgdG8gYmUgdmFsaWQgZW5vdWdoIHRvIHJlc3BvbmQgdG8gTUNVIGNvbW1hbmRzLCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgYWxsIHRoZSBzdGF0ZXMgdGhlIGZpcm13YXJlIGhhcyB0byBiZS5cblxuQWZ0ZXIgdGhlIGZpcm13YXJlIGlzIGxvYWRlZCwgYG10NzkxNV9maXJtd2FyZV9zdGF0ZShkZXYsIHRydWUpYCBjaGVja3MgZm9yIGBGV19TVEFURV9SRFlgICh3aGljaCBpcyAzKS4gQXNzdW1pbmcgd2Ugc29tZWhvdyBnZXQgcGFzdCB0aGF0LCB0aGUgZHJpdmVyIHN0YXJ0cyBzZW5kaW5nIE1DVSBjb21tYW5kcyB2aWEgYG10NzZfbWN1X3NlbmRfbXNnYCwgY29tbWFuZHMgbGlrZSBgbXQ3OTE1X21jdV9md19sb2dfMl9ob3N0YCwgYG10NzkxNV9tY3Vfc2V0X213ZHNgLCBgbXQ3OTE1X21jdV9zZXRfbXVydV9jdHJsYCwgYW5kIGBtdDc5MTVfbWN1X2luaXRfcnhfYWlydGltZWAsIHdoaWNoIGFsbCByZWx5IG9uIERNQSByaW5ncyBvciBNTUlPIGZvciByZXNwb25zZXMuIFdpdGggbm8gcmVhbCBNQ1UgcHJlc2VudCwgdGhpcyB3aWxsIHVuZG91YnRlZGx5IHRpbWVvdXQgYW5kIGZhaWwsIGVuc3VyaW5nIHRoYXQgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAgZmFpbHMgYWdhaW4uXG5cblRoZXJlZm9yZSwgd2hldGhlciB0aGUgZmFrZSBNTUlPIGlzIGluaXRpYWxpemVkIHRvIDAgb3Igc29tZXRoaW5nIGVsc2UsIHRoZSBmaW5hbCBjb25jbHVzaW9uIGlzIHN0aWxsIHRoYXQgYG10NzkxNV90aGVybWFsX2luaXRgIGlzIG5vdCByZWFjaGFibGUgaW4gUUVNVS5cbkxldCBtZSBxdWlja2x5IGNoZWNrIGlmIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyBjYWxsZWQgYW55d2hlcmUgZWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgwMzAsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6Mzc6MTcuMDg4OTI3MzM1WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njg3ODk5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfdGhlcm1hbF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTk5PXN0YXRpYyB2b2lkIG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0yMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjIxMzpzdGF0aWMgaW50IG10NzkxNV90aGVybWFsX2luaXQoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMjE0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz03MzA9bXQ3OTE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjc2MjpcXHRyZXQgPSBtdDc5MTVfdGhlcm1hbF9pbml0KHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc2My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTEyNTg9aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMjk3OlxcdHJldCA9IG10NzkxNV90aGVybWFsX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI5OC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNzoxNy4xMzU4MTA2OVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDcwMzk3NzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkFuYWx5emluZyB0aGUgbXQ3OTE1IERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBzbyB0aGVzZSBgbXQ3OTE1X3JlZ2lzdGVyX2V4dF9waHlgIGFuZCBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgZnVuY3Rpb25zLi4uIHRoZSB0ZXh0IGluZGljYXRlcyB0aGV5J3JlIG9ubHkgY2FsbGVkIHdpdGhpbiBgbXQ3OTE1X3JlZ2lzdGVyX2V4dF9waHlgIGFuZCBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAuIFRoZXkncmUgYm90aCBjYWxsZWQgZHVyaW5nIHRoZSBkZXZpY2UgcHJvYmUsIGFuZCBjcnVjaWFsbHksICphZnRlciogYG10NzkxNV9pbml0X2hhcmR3YXJlYC4gVGhhdCB0ZWxscyBtZSB0aGVzZSBhcmVuJ3QgcGFydCBvZiB0aGUgaW5pdGlhbCBoYXJkd2FyZSBzZXR1cCBpdHNlbGYuIFRoZXkgc2VlbSB0byBiZSByZWdpc3RlcmluZyBzb21ldGhpbmcsIGxpa2VseSByZXNvdXJjZXMgb3IgY2FwYWJpbGl0aWVzLCB3aXRoIHRoZSBrZXJuZWwgYWZ0ZXIgdGhlIGhhcmR3YXJlIGlzIGluaXRpYWxpemVkLiBUaGUgaW1wbGljYXRpb24gYmVpbmcgdGhleSBhcmUgcHJvYmFibHkgcGFydCBvZiBhIGxhdGUtc3RhZ2UgcmVnaXN0ZXIgb3BlcmF0aW9uLiBTaW5jZSB0aGV5J3JlIG9ubHkgY2FsbGVkIGluIHByb2JlIGFuZCBvbmx5IGFmdGVyIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCB0aGV5IHdvdWxkIGJlIHVucmVhY2hhYmxlIGluIFFFTVUgYmVjYXVzZSB0aGUgZGV2aWNlIHByb2JlIGlzbid0IHJ1bm5pbmcuXG5cbkhvbGQgb24gYSBzZWNvbmQuLi4gd2hhdCBhYm91dCBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGA/IEkgaGF2ZSB0byBjb25zaWRlciBpdHMgcGxhY2VtZW50IGFuZCB0aW1pbmcgaW4gdGhlIGxpZmVjeWNsZSwgb3RoZXJ3aXNlIHRoZXJlIGlzIG5vIHRydWUgYXNzZXNzbWVudCBvZiB0aGUgaW1wYWN0LiBUaGUgZm9jdXMgb24gXCJyZWdpc3RlclwiIGltcGxpZXMgaXQgbWlnaHQgYmUgcmVsYXRlZCB0byBcInVucmVnaXN0ZXJcIiwgYW5kIGl0cyBjb250ZXh0IGluIHRoZSBwcm9iZSBvciByZW1vdmFsIHBoYXNlcyBpcyBhbHNvIGltcG9ydGFudCB0byBkZXRlcm1pbmUgaXRzIHJlYWNoIGluIFFFTVUuIFRoYXQncyBhIGNydWNpYWwgcGllY2Ugb2YgdGhlIHB1enpsZSBJIG5lZWQgdG8gZXhwbG9yZSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTk5OCwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM3OjIyLjIwNjIxMDg2WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjM4NTk1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZV9vcHMgbXQ3OTE1X3R6X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjE5OTpzdGF0aWMgdm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTIwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MjEzPXN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTI1Ni1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoyNTc6XFx0XFx0bXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0yNTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTIzND1zdGF0aWMgdm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI0MjpcXHRtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyNDMtXFx0bXQ3Nl91bnJlZ2lzdGVyX3BoeShtcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjU4PWludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTMyNi11bnJlZ190aGVybWFsOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMzI3OlxcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTMyOC11bnJlZ19kZXY6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTMzOD12b2lkIG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEzNDQtXFx0bXQ3OTE1X2NvcmVkdW1wX3VucmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTM0NTpcXHRtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEzNDYtXFx0bXQ3Nl91bnJlZ2lzdGVyX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6Mzc6MjIuMjUyNjAzNDI1WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NTUzMDU4MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIG10NzkxNSBUaGVybWFsIFVucmVnaXN0cmF0aW9uIFBhdGhzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGZ1bmN0aW9uIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIHVuZGVyIHRoZSBjb25kaXRpb25zIHdlJ3JlIGNvbmNlcm5lZCBhYm91dCwgcGFydGljdWxhcmx5IHdpdGhpbiBhIFFFTVUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbkhlcmUncyBteSByZWFzb25pbmc6IGl0IGxvb2tzIGxpa2UgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGdldHMgY2FsbGVkIHVuZGVyIHNldmVyYWwgY2lyY3Vtc3RhbmNlczogZXJyb3IgcGF0aHMgd2l0aGluIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBhbmQgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLCBhbmQgYWxzbyBmcm9tIGBtdDc5MTVfdW5yZWdpc3Rlcl9leHRfcGh5YCBhbmQgYG10NzkxNV91bnJlZ2lzdGVyX2RldmljZWAuIFRoZSBpc3N1ZSBpcywgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGNhbiBmYWlsIGVhcmx5LiBJZiB0aGlzIGhhcHBlbnMsIHRoZSBjb2RlIGZsb3cgbGlrZWx5IGp1bXBzIHRvIGEgY2xlYW51cCByb3V0aW5lIGxpa2UgYGZyZWVfcGh5MmAgb3IgYHN0b3BfaHdgLCB3aGljaCBieXBhc3NlcyB0aGUgY2FsbCB0byBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGAgZW50aXJlbHkuIEZ1cnRoZXJtb3JlLCBgbXQ3OTE1X3VucmVnaXN0ZXJfZGV2aWNlYCBpcyBub3JtYWxseSBjYWxsZWQgZnJvbSBgbXQ3OTE1X3BjaV9yZW1vdmVgIG9yIGBtdDc5OHhfd21hY19yZW1vdmVgLCBidXQgYmVjYXVzZSBvZiB0aGUgaW5pdGlhbCBmYWlsdXJlIG9mIGBtdDc5MTVfcGNpX3Byb2JlYCwgYG10NzkxNV9wY2lfcmVtb3ZlYCBpcyBuZXZlciBleGVjdXRlZC4gQ29uc2VxdWVudGx5LCB0aGlzIG1ha2VzIGBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsYCB1bnJlYWNoYWJsZS5cblxuU2luY2UgdGhlc2UgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBRRU1VLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gd2UncmUgY29uc2lkZXJpbmcsIEknbSBsZWFuaW5nIHRvd2FyZCBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSByZXF1aXJlbWVudHMsIGp1c3QgdG8gbWFrZSBzdXJlLiBPa2F5LCB0aGUgaW5zdHJ1Y3Rpb25zIHN0YXRlIHRoYXQgd2Ugc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSB3aXRoaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyBhIHBlcmZlY3QgZml0ISBgbXQ3OTE1YCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFdpLUZpIGRyaXZlciwgYW5kIGl0IHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkIGluIFFFTVUuIEdpdmVuIHRoaXMgYW5kIHRoYXQgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB0aGlzIGRyaXZlciwgaXQncyBjbGVhcjogYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEyNTksIk91dHB1dFRva2VucyI6MTQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM3OjMwLjIwNzkxMTUyN1oiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBNVDc5MTUgUENJZSBXaS1GaSBkcml2ZXIgKG10NzkxNSkgdG8gZml4IGEgdGhlcm1hbCB6b25lIHVucmVnaXN0cmF0aW9uIGlzc3VlLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgdG8gaW5pdGlhbGl6ZSAoZS5nLiwgcGFzc2luZyBkcml2ZXIgb3duZXJzaGlwIGNoZWNrcywgZmlybXdhcmUgbG9hZGluZywgYW5kIE1DVSBjb21tdW5pY2F0aW9uKS4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW4gYG10NzkxNV90aGVybWFsX2luaXRgIGFuZCBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGAgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTE1IFBDSWUgV2ktRmkgZHJpdmVyIChtdDc5MTUpIHRvIGZpeCBhIHRoZXJtYWwgem9uZSB1bnJlZ2lzdHJhdGlvbiBpc3N1ZS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGluaXRpYWxpemUgKGUuZy4sIHBhc3NpbmcgZHJpdmVyIG93bmVyc2hpcCBjaGVja3MsIGZpcm13YXJlIGxvYWRpbmcsIGFuZCBNQ1UgY29tbXVuaWNhdGlvbikuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGluIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBhbmQgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6Mzc6MzAuMjA3OTM3Nzg3WiIsIlNlcSI6NTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowvv489[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 14:33:06 +0000 UTC FinishedAt: 2026-08-10 14:37:32 +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+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIE1UNzkxNSBQQ0llIFdpLUZpIGRyaXZlciAobXQ3OTE1KSB0byBmaXggYSB0aGVybWFsIHpvbmUgdW5yZWdpc3RyYXRpb24gaXNzdWUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0byBpbml0aWFsaXplIChlLmcuLCBwYXNzaW5nIGRyaXZlciBvd25lcnNoaXAgY2hlY2tzLCBmaXJtd2FyZSBsb2FkaW5nLCBhbmQgTUNVIGNvbW11bmljYXRpb24pLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbiBgbXQ3OTE1X3RoZXJtYWxfaW5pdGAgYW5kIGBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsYCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwZGU0MDIwMDFlZTZjZTViMzliYWNjOGU4NmFlYjlmZDBmYjY2MWVjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTQ6MzU6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jXG5pbmRleCBjYTQ2YTIwM2FhNDhiLi41ZmU3MGRjODIyZWJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmNcbkBAIC0yMDAsNiAmIzQzOzIwMCw5IEBAIHN0YXRpYyB2b2lkIG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbiB7XG4gXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gcGh5LVx1MDAzZW10NzYtXHUwMDNlaHctXHUwMDNld2lwaHk7XG4gXG4mIzQzO1x0aWYgKHBoeS1cdTAwM2V0em9uZSlcbiYjNDM7XHRcdGRldm1fdGhlcm1hbF9vZl96b25lX3VucmVnaXN0ZXIocGh5LVx1MDAzZWRldi1cdTAwM2VtdDc2LmRldiwgcGh5LVx1MDAzZXR6b25lKTtcbiYjNDM7XG4gXHRpZiAoIXBoeS1cdTAwM2VjZGV2KVxuIFx0XHRyZXR1cm47XG4gXG5AQCAtMjEzLDYgJiM0MzsyMTYsNyBAQCBzdGF0aWMgaW50IG10NzkxNV90aGVybWFsX2luaXQoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbiBcdHN0cnVjdCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlICpjZGV2O1xuIFx0c3RydWN0IGRldmljZSAqaHdtb247XG4gXHRjb25zdCBjaGFyICpuYW1lO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRuYW1lID0gZGV2bV9rYXNwcmludGYoXHUwMDI2d2lwaHktXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcJiMzNDttdDc5MTVfJXNcJiMzNDssXG4gXHRcdFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xuQEAgLTIzOCw4ICYjNDM7MjQyLDggQEAgc3RhdGljIGludCBtdDc5MTVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4gXHRpZiAoSVNfRVJSKHBoeS1cdTAwM2V0em9uZSkpIHtcbiBcdFx0aWYgKFBUUl9FUlIocGh5LVx1MDAzZXR6b25lKSAhPSAtRU5PREVWKVxuIFx0XHRcdGRldl93YXJuKHBoeS1cdTAwM2VkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4tXHRcdFx0XHQgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIHRoZXJtYWwgem9uZTogJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0IFBUUl9FUlIocGh5LVx1MDAzZXR6b25lKSk7XG4mIzQzO1x0XHRcdFx0IFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciB0aGVybWFsIHpvbmUgJWQ6ICVsZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgcGh5LVx1MDAzZW10NzYtXHUwMDNlYmFuZF9pZHgsIFBUUl9FUlIocGh5LVx1MDAzZXR6b25lKSk7XG4gXHRcdHBoeS1cdTAwM2V0em9uZSA9IE5VTEw7XG4gXHR9XG4gXG5AQCAtMjQ4LDcgJiM0MzsyNTIsMTEgQEAgc3RhdGljIGludCBtdDc5MTVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4gXG4gXHRod21vbiA9IGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzKFx1MDAyNndpcGh5LVx1MDAzZWRldiwgbmFtZSwgcGh5LFxuIFx0XHRcdFx0XHRcdCAgICAgICBtdDc5MTVfaHdtb25fZ3JvdXBzKTtcbi1cdHJldHVybiBQVFJfRVJSX09SX1pFUk8oaHdtb24pO1xuJiM0MztcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyhod21vbik7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwocGh5KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbXQ3OTE1X2xlZF9zZXRfY29uZmlnKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTE1IFBDSWUgV2ktRmkgZHJpdmVyIChtdDc5MTUpIHRvIGZpeCBhIHRoZXJtYWwgem9uZSB1bnJlZ2lzdHJhdGlvbiBpc3N1ZS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGluaXRpYWxpemUgKGUuZy4sIHBhc3NpbmcgZHJpdmVyIG93bmVyc2hpcCBjaGVja3MsIGZpcm13YXJlIGxvYWRpbmcsIGFuZCBNQ1UgY29tbXVuaWNhdGlvbikuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGluIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBhbmQgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBkZTQwMjAwMWVlNmNlNWIzOWJhY2M4ZTg2YWViOWZkMGZiNjYxZWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxMCAxNDozNTowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYwppbmRleCBjYTQ2YTIwM2FhNDhiLi41ZmU3MGRjODIyZWJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jCkBAIC0yMDAsNiAmIzQzOzIwMCw5IEBAIHN0YXRpYyB2b2lkIG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoc3RydWN0IG10NzkxNV9waHkgKnBoeSkKIHsKIAlzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gcGh5LSZndDttdDc2LSZndDtody0mZ3Q7d2lwaHk7CiAKJiM0MzsJaWYgKHBoeS0mZ3Q7dHpvbmUpCiYjNDM7CQlkZXZtX3RoZXJtYWxfb2Zfem9uZV91bnJlZ2lzdGVyKHBoeS0mZ3Q7ZGV2LSZndDttdDc2LmRldiwgcGh5LSZndDt0em9uZSk7CiYjNDM7CiAJaWYgKCFwaHktJmd0O2NkZXYpCiAJCXJldHVybjsKIApAQCAtMjEzLDYgJiM0MzsyMTYsNyBAQCBzdGF0aWMgaW50IG10NzkxNV90aGVybWFsX2luaXQoc3RydWN0IG10NzkxNV9waHkgKnBoeSkKIAlzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZSAqY2RldjsKIAlzdHJ1Y3QgZGV2aWNlICpod21vbjsKIAljb25zdCBjaGFyICpuYW1lOwomIzQzOwlpbnQgcmV0OwogCiAJbmFtZSA9IGRldm1fa2FzcHJpbnRmKCZhbXA7d2lwaHktJmd0O2RldiwgR0ZQX0tFUk5FTCwgJiMzNDttdDc5MTVfJXMmIzM0OywKIAkJCSAgICAgIHdpcGh5X25hbWUod2lwaHkpKTsKQEAgLTIzOCw4ICYjNDM7MjQyLDggQEAgc3RhdGljIGludCBtdDc5MTVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpCiAJaWYgKElTX0VSUihwaHktJmd0O3R6b25lKSkgewogCQlpZiAoUFRSX0VSUihwaHktJmd0O3R6b25lKSAhPSAtRU5PREVWKQogCQkJZGV2X3dhcm4ocGh5LSZndDtkZXYtJmd0O210NzYuZGV2LAotCQkJCSAmIzM0O2ZhaWxlZCB0byByZWdpc3RlciB0aGVybWFsIHpvbmU6ICVsZFxuJiMzNDssCi0JCQkJIFBUUl9FUlIocGh5LSZndDt0em9uZSkpOwomIzQzOwkJCQkgJiMzNDtmYWlsZWQgdG8gcmVnaXN0ZXIgdGhlcm1hbCB6b25lICVkOiAlbGRcbiYjMzQ7LAomIzQzOwkJCQkgcGh5LSZndDttdDc2LSZndDtiYW5kX2lkeCwgUFRSX0VSUihwaHktJmd0O3R6b25lKSk7CiAJCXBoeS0mZ3Q7dHpvbmUgPSBOVUxMOwogCX0KIApAQCAtMjQ4LDcgJiM0MzsyNTIsMTEgQEAgc3RhdGljIGludCBtdDc5MTVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpCiAKIAlod21vbiA9IGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzKCZhbXA7d2lwaHktJmd0O2RldiwgbmFtZSwgcGh5LAogCQkJCQkJICAgICAgIG10NzkxNV9od21vbl9ncm91cHMpOwotCXJldHVybiBQVFJfRVJSX09SX1pFUk8oaHdtb24pOwomIzQzOwlyZXQgPSBQVFJfRVJSX09SX1pFUk8oaHdtb24pOwomIzQzOwlpZiAocmV0KQomIzQzOwkJbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChwaHkpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZCBtdDc5MTVfbGVkX3NldF9jb25maWcoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2ktRmkgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jYC4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSB0aGVybWFsIG1hbmFnZW1lbnQsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyB1cGRhdGluZyB0aGUgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGZ1bmN0aW9uIHRvIHVucmVnaXN0ZXIgdGhlIHRoZXJtYWwgem9uZSAoYHBoeS0mZ3Q7dHpvbmVgKSB1c2luZyBgZGV2bV90aGVybWFsX29mX3pvbmVfdW5yZWdpc3RlcmAgaWYgdGhhdCB6b25lIGV4aXN0cy4gVGhhdCYjMzk7cyBnb29kIHByYWN0aWNlLiBBbmQgdGhlbiwgaW4gYG10NzkxNV90aGVybWFsX2luaXRgLCBpZiBgZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHNgIGZhaWxzLCBpdCBub3cgY2FsbHMgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwocGh5KWAuIE1ha2VzIHNlbnNlLCBjbGVhbnVwIGlzIGNydWNpYWwgb24gaW5pdGlhbGl6YXRpb24gZmFpbHVyZXMuIE9oLCBhbmQgaXQmIzM5O3MgYWxzbyB0d2Vha2luZyBhIHdhcm5pbmcgbWVzc2FnZSwgcHJvYmFibHkgZm9yIGJldHRlciBjbGFyaXR5LgoKQnV0IHdhaXQgYSBzZWNvbmQuLi4gYG10NzkxNWAuLi4gdGhhdCYjMzk7cyBhIE1lZGlhVGVrIFdpLUZpIGRyaXZlciwgaXNuJiMzOTt0IGl0PyBSaWdodCwgaXQmIzM5O3MgZm9yIHRob3NlIE1UNzkxNSwgTVQ3OTg2LCBNVDc5MTYsIGFuZCBNVDc5ODEgY2hpcHNldHMuIEkgc2VlbSB0byByZWNhbGwgaXQgYmVpbmcgYSBQQ0llIGRyaXZlci4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0LiBZZXMsIGl0JiMzOTtzIGEgUENJZSBkcml2ZXIuIFRoYXQgdGhyb3dzIHVwIGEgYml0IG9mIGEgZmxhZyBmb3IgZnV6emluZyBjb25zaWRlcmF0aW9ucy4gUENJZSBXaS1GaSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRoZSB2ZW5kb3Itc3BlY2lmaWMgb25lcyBsaWtlIHRoaXMsIGFyZW4mIzM5O3QgdXN1YWxseSB0aGUgZWFzaWVzdCB0byBmdXp6IGRpcmVjdGx5IGluIHNvbWV0aGluZyBsaWtlIFFFTVUuIFRoZXkgb2Z0ZW4gcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgdGhhdCBhcmUgdG91Z2ggdG8gZW11bGF0ZS4gVW5sZXNzIHRoZXkgaGF2ZSBzb21lIGRlZGljYXRlZCBlbXVsYXRpb24gc3VwcG9ydCwgb3IgaGFwcGVuIHRvIGJlIFVTQi9TRElPIGRyaXZlcnMgd2hpY2ggYXJlIGEgYml0IG1vcmUgYW1lbmFibGUgdG8gZW11bGF0aW9uLCBmdXp6aW5nIFBDSWUgZHJpdmVycyBpcyBhIGNoYWxsZW5nZS4gU28sIEkgbmVlZCB0byBjaGVjayBob3cgZXhhY3RseSBpdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgZGV2aWNlLCB0aGUgbmF0dXJlIG9mIHRoZSBpbnRlcmZhY2Ugd2lsbCBkZXRlcm1pbmUgYSBtb3JlIHN1aXRhYmxlIG1ldGhvZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU3MzEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5MTVFKSAmIzQzOz0gbXQ3OTE1ZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZS00LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGU6NTptdDc5MTVlLXkgOj0gcGNpLm8gaW5pdC5vIGRtYS5vIGVlcHJvbS5vIG1haW4ubyBtY3UubyBtYWMubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUtNi1cdCAgICAgZGVidWdmcy5vIG1taW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlOjg6bXQ3OTE1ZS0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGU6OTptdDc5MTVlLSQoQ09ORklHX01UNzk4WF9XTUFDKSAmIzQzOz0gc29jLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlOjEwOm10NzkxNWUtJChDT05GSUdfREVWX0NPUkVEVU1QKSAmIzQzOz0gY29yZWR1bXAub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MTI9TU9EVUxFX1BBUk1fREVTQyhjb3JlZHVtcF9tZW1kdW1wLCBcJiMzNDtPcHRpb25hbCBhYmlsaXR5IHRvIGR1bXAgZmlybXdhcmUgbWVtb3J5XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gbXQ3OTE1X21lbV9yZWdpb25zW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE1LVx0e1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gbXQ3OTE2X21lbV9yZWdpb25zW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIzLVx0e1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjU1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gbXQ3OTh4X21lbV9yZWdpb25zW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTU2LVx0e1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjg4OmNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6ODk6bXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHUzMiAqbnVtKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy05MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy05Mi1cdGNhc2UgMHg3OTE1OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo5MzpcdFx0Km51bSA9IEFSUkFZX1NJWkUobXQ3OTE1X21lbV9yZWdpb25zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6OTQ6XHRcdHJldHVybiBcdTAwMjZtdDc5MTVfbWVtX3JlZ2lvbnNbMF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTk1LVx0Y2FzZSAweDc5ODE6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjEwNzpzdGF0aWMgaW50IG10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX3NpemUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTA4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTA5Olx0Y29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uICptZW1fcmVnaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMTAtXHRzaXplX3Qgc2l6ZSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjExNDpcdG1lbV9yZWdpb24gPSBtdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoZGV2LCBcdTAwMjZudW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMTUtXHRpZiAoIW1lbV9yZWdpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMjMtXHQvKiByZXNlcnZlIHNwYWNlIGZvciB0aGUgaGVhZGVycyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMjQ6XHRzaXplICYjNDM7PSBudW0gKiBzaXplb2Yoc3RydWN0IG10NzkxNV9tZW1faGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTI1LVx0LyogbWFrZSBzdXJlIGl0IGlzIGFsaWduZWQgNCBieXRlcyBmb3IgZGVidWcgbWVzc2FnZSBwcmludCBvdXQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTMxOnN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqbXQ3OTE1X2NvcmVkdW1wX25ldyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMzM6XHRzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKmNyYXNoX2RhdGEgPSBkZXYtXHUwMDNlY29yZWR1bXAuY3Jhc2hfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTM0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MTQzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE0NDptdDc5MTVfY29yZWR1bXBfZndfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTQ1LVx0XHRcdCBib29sICpleGNlcHRpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNTAtXHRzdGF0ZSA9ICh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9GV19BU1NFUlRfU1RBVCwgR0VOTUFTSyg3LCAwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE1MTpcdGNvdW50ID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE1Mi1cdFx0KHUzMiltdDc2X2dldF9maWVsZChkZXYsIE1UX0ZXX0VYQ0VQVF9DT1VOVCwgR0VOTUFTSygxNSwgOCkpIDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTE2Nj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNjc6bXQ3OTE1X2NvcmVkdW1wX2Z3X3RyYWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE2OC1cdFx0XHQgYm9vbCBleGNlcHRpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE3NTpcdG4gPSBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTc2LVx0ICAgICh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBiYXNlLCBHRU5NQVNLKDcsIDApKSA6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xODAtXHRpcnEgPSBtdDc2X3JyKGRldiwgYmFzZSAmIzQzOyAweDgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxODE6XHRuID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE4Mi1cdCAgICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgaXJxKSA6IEZJRUxEX0dFVChHRU5NQVNLKDIzLCAxNiksIGlycSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xODUtXHRzY2ggPSBtdDc2X3JyKGRldiwgTVRfRldfU0NIRURfSU5GTyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE4NjpcdG4gPSBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTg3LVx0ICAgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCBzY2gpIDogRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCBzY2gpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTkzLVx0XHQvKiBzY2hlZCB0cmFjZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxOTQ6XHRcdG4gPSBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTk1LVx0XHQgICAgRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCBzY2gpIDogRklFTERfR0VUKEdFTk1BU0soNywgMCksIHNjaCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDEtXHRcdGZvciAoeSA9IGR1bXAtXHUwMDNlc2NoZWRfaW5mb19pZHgsIGkgPSAwOyBpIFx1MDAzYyBuOyBpJiM0MzsmIzQzOywgeSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjAyOlx0XHRcdG10NzkxNV9tZW1jcHlfZnJvbWlvKGRldiwgZHVtcC1cdTAwM2VzY2hlZCwgYmFzZSAmIzQzOyAweGMgJiM0MzsgeSAqIDEyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDMtXHRcdFx0XHRcdCAgICAgc2l6ZW9mKGR1bXAtXHUwMDNlc2NoZWQpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIwNy1cdFx0LyogaXJxIHRyYWNlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIwODpcdFx0biA9IGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgP1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDktXHRcdCAgICBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIGlycSkgOiBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgaXJxKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIxNS1cdFx0Zm9yICh5ID0gZHVtcC1cdTAwM2VpcnFfaW5mb19pZHgsIGkgPSAwOyBpIFx1MDAzYyBuOyBpJiM0MzsmIzQzOywgeSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjE2Olx0XHRcdG10NzkxNV9tZW1jcHlfZnJvbWlvKGRldiwgZHVtcC1cdTAwM2VpcnEsIGJhc2UgJiM0MzsgMHg0ICYjNDM7IHkgKiAxNixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjE3LVx0XHRcdFx0XHQgICAgIHNpemVvZihkdW1wLVx1MDAzZWlycSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MjIzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIyNDptdDc5MTVfY29yZWR1bXBfZndfc3RhY2soc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjI1LVx0XHRcdCBib29sIGV4Y2VwdGlvbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTI0ND1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyNDU6bXQ3OTE1X2NvcmVkdW1wX2Z3X3Rhc2soc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjQ2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjQ3Olx0dTMyIG9mZnMgPSBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID8gMHhlMCA6IDB4MTcwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz0yNjg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjY5Om10NzkxNV9jb3JlZHVtcF9md19jb250ZXh0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTI3MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjI4MDpcdFx0aWR4ID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTI4MS1cdFx0ICAgICAgKHUzMiltdDc2X2dldF9maWVsZChkZXYsIE1UX0ZXX0NJUlFfSURYLCBHRU5NQVNLKDMxLCAxNikpIDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzAyOnN0YXRpYyBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICptdDc5MTVfY29yZWR1bXBfYnVpbGQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzAzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzA0Olx0c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICpjcmFzaF9kYXRhID0gZGV2LVx1MDAzZWNvcmVkdW1wLmNyYXNoX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMwNTpcdHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMwNjpcdHN0cnVjdCBtdDc5MTVfY29yZWR1bXBfbWVtICpkdW1wX21lbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzA3LVx0c2l6ZV90IGxlbiwgc29mYXIgPSAwLCBoZHJfbGVuID0gc2l6ZW9mKCpkdW1wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzI3Olx0ZHVtcCA9IChzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICopKGJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMyOC1cdGR1bXAtXHUwMDNlbGVuID0gbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDE6XHRtdDc5MTVfY29yZWR1bXBfZndfc3RhdGUoZGV2LCBkdW1wLCBcdTAwMjZleGNlcHRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDI6XHRtdDc5MTVfY29yZWR1bXBfZndfdHJhY2UoZGV2LCBkdW1wLCBleGNlcHRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDM6XHRtdDc5MTVfY29yZWR1bXBfZndfdGFzayhkZXYsIGR1bXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDQ6XHRtdDc5MTVfY29yZWR1bXBfZndfY29udGV4dChkZXYsIGR1bXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDU6XHRtdDc5MTVfY29yZWR1bXBfZndfc3RhY2soZGV2LCBkdW1wLCBleGNlcHRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM0Ny1cdC8qIGdhdGhlciBtZW1vcnkgY29udGVudCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDg6XHRkdW1wX21lbSA9IChzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wX21lbSAqKShidWYgJiM0Mzsgc29mYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNDktXHRkdW1wX21lbS1cdTAwM2VsZW4gPSBjcmFzaF9kYXRhLVx1MDAzZW1lbWR1bXBfYnVmX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzU5OmludCBtdDc5MTVfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM2MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM2MTpcdHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzYzOlx0ZHVtcCA9IG10NzkxNV9jb3JlZHVtcF9idWlsZChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNjQtXHRpZiAoIWR1bXApIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6Mzc0OmludCBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzc1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6Mzc2Olx0c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICpjcmFzaF9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNzctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zODQtXHRpZiAoY29yZWR1bXBfbWVtZHVtcCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozODU6XHRcdGNyYXNoX2RhdGEtXHUwMDNlbWVtZHVtcF9idWZfbGVuID0gbXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fc2l6ZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zODYtXHRcdGlmICghY3Jhc2hfZGF0YS1cdTAwM2VtZW1kdW1wX2J1Zl9sZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjQwMDp2b2lkIG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTQwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDo3OiNpbmNsdWRlIFwmIzM0O210NzkxNS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oPTk9c3RydWN0IHRyYWNlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxNDpzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTUtXHRjaGFyIG1hZ2ljWzE2XTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDo4MDpzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wX21lbSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTgxLVx0dTMyIGxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDo4NTpzdHJ1Y3QgbXQ3OTE1X21lbV9oZHIge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC04Ni1cdHUzMiBzdGFydDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDo5MTpzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC05Mi1cdHUzMiBzdGFydDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDA6Y29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTAxOm10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgKm51bSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwMjpzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKm10NzkxNV9jb3JlZHVtcF9uZXcoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwMzppbnQgbXQ3OTE1X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTA0OmludCBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwNTp2b2lkIG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMDYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwOTpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjExMDptdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyICpudW0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTExMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjExNTpzdGF0aWMgaW5saW5lIGludCBtdDc5MTVfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTExNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEyMDpzdGF0aWMgaW5saW5lIHN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqbXQ3OTE1X2NvcmVkdW1wX25ldyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMjU6c3RhdGljIGlubGluZSBpbnQgbXQ3OTE1X2NvcmVkdW1wX3JlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEyNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEzMDpzdGF0aWMgaW5saW5lIHZvaWQgbXQ3OTE1X2NvcmVkdW1wX3VucmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTMxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNC0jaW5jbHVkZSBcdTAwM2NsaW51eC9yZWxheS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTojaW5jbHVkZSBcJiMzNDttdDc5MTUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTYtI2luY2x1ZGUgXCYjMzQ7ZWVwcm9tLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIyOm10NzkxNV9pbXBsaWNpdF90eGJmX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNDpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzozMTpcdHJldHVybiBtdDc5MTVfbWN1X3NldF90eGJmKGRldiwgTVRfQkZfVFlQRV9VUERBVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTMyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MzQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjM1Om10NzkxNV9pbXBsaWNpdF90eGJmX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Mzc6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfaW1wbGljaXRfdHhiZiwgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ1Olx0XHRcdCBtdDc5MTVfaW1wbGljaXRfdHhiZl9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz00OD1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ5Om10NzkxNV9zeXNfcmVjb3Zlcnlfc2V0KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTAtXHRcdFx0c2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUyOlx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUzOlx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTQtXHRib29sIGJhbmQgPSBwaHktXHUwMDNlbXQ3Ni1cdTAwM2ViYW5kX2lkeDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzQtXHRjYXNlIFNFUl9RVUVSWTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3NTpcdFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgMCwgMCwgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzYtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04Mi1cdGNhc2UgU0VSX1NFVF9SRUNPVkVSX0wzX0JGOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgzOlx0XHRyZXQgPSBtdDc5MTVfbWN1X3NldF9zZXIoZGV2LCBTRVJfRU5BQkxFLCBCSVQodmFsKSwgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODQtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjg3Olx0XHRyZXQgPSBtdDc5MTVfbWN1X3NldF9zZXIoZGV2LCBTRVJfUkVDT1ZFUiwgdmFsLCBiYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04OC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkyLVx0XHRtdDc2X3NldChkZXYsIE1UX1dGRE1BMF9NQ1VfSE9TVF9JTlRfRU5BLCBNVF9NQ1VfQ01EX1dEVF9NQVNLKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5MzpcdFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgMSwgMywgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTQtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk3LVx0XHRkZXYtXHUwMDNlcmVjb3Zlcnkuc3RhdGUgfD0gTVRfTUNVX0NNRF9XRFRfTUFTSztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5ODpcdFx0bXQ3OTE1X3Jlc2V0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0xMTM9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMTQ6bXQ3OTE1X3N5c19yZWNvdmVyeV9nZXQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMTUtXHRcdFx0c2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTE2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMTc6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTE4Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTE5LVx0Y2hhciAqYnVmZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjE5MzpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBtdDc5MTVfc3lzX3JlY292ZXJ5X29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxOTQ6XHQud3JpdGUgPSBtdDc5MTVfc3lzX3JlY292ZXJ5X3NldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxOTU6XHQucmVhZCA9IG10NzkxNV9zeXNfcmVjb3ZlcnlfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTE5Ni1cdC5vcGVuID0gc2ltcGxlX29wZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTIwMD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjAxOm10NzkxNV9yYWRhcl90cmlnZ2VyKHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjAyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjA0LSNkZWZpbmUgUkFEQVJfQkFDS0dST1VORFx0MlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIwNTpcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIwNjpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIwNy1cdGludCByZGRfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjE3Olx0cmRkX2lkeCA9IG10NzkxNV9nZXRfcmRkX2lkeChwaHksIHZhbCA9PSBSQURBUl9CQUNLR1JPVU5EKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMTgtXHRpZiAocmRkX2lkeCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0yMjc9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfdHJpZ2dlciwgTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMjg6XHRcdFx0IG10NzkxNV9yYWRhcl90cmlnZ2VyLCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjMwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMzE6bXQ3OTE1X211cnVfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjMyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMzM6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjM1LVx0ZGV2LVx1MDAzZW11cnVfZGVidWcgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjM2Olx0bXQ3OTE1X21jdV9tdXJ1X2RlYnVnX3NldChkZXYsIGRldi1cdTAwM2VtdXJ1X2RlYnVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMzctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTI0MT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQyOm10NzkxNV9tdXJ1X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNDMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI0NDpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI0NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1MTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19tdXJ1X2RlYnVnLCBtdDc5MTVfbXVydV9kZWJ1Z19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjUyOlx0XHRcdCBtdDc5MTVfbXVydV9kZWJ1Z19zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNTQ6c3RhdGljIGludCBtdDc5MTVfbXVydV9zdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1NjpcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjU3Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjU4LVx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBkbF9ub25faGVfdHlwZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjgxOlx0cmV0ID0gbXQ3OTE1X21jdV9tdXJ1X2RlYnVnX2dldChwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI4Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQzOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDQwOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfbXVydV9zdGF0cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTQ0Mj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDQzOm10NzkxNV9yZGRfbW9uaXRvcihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDQ0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NDU6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXHUwMDNlcHJpdmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDQ2LVx0c3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmID0gXHUwMDI2ZGV2LVx1MDAzZXJkZDJfY2hhbmRlZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ1MjpcdGlmICghbXQ3OTE1X2VlcHJvbV9oYXNfYmFja2dyb3VuZF9yYWRhcihkZXYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDUzLVx0XHRzZXFfcHV0cyhzLCBcJiMzNDtubyBiYWNrZ3JvdW5kIHJhZGFyIGNhcGFiaWxpdHlcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz00OTQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ5NTptdDc5MTVfZndfZGVidWdfd21fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDk2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0OTc6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00OTgtXHRlbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUxOTpcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV00sIHZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTIwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUyOTpcdFx0cmV0ID0gbXQ3OTE1X21jdV9md19kYmdfY3RybChkZXYsIGRlYnVnLCB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUzMC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NTQ4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NDk6bXQ3OTE1X2Z3X2RlYnVnX3dtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU1MTpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU1Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU1ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193bSwgbXQ3OTE1X2Z3X2RlYnVnX3dtX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NTk6XHRcdFx0IG10NzkxNV9md19kZWJ1Z193bV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01NjE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU2MjptdDc5MTVfZndfZGVidWdfd2Ffc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTYzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NjQ6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NjUtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTY5Olx0cmV0ID0gbXQ3OTE1X21jdV9md19sb2dfMl9ob3N0KGRldiwgTUNVX0ZXX0xPR19XQSwgZGV2LVx1MDAzZWZ3LmRlYnVnX3dhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTczOlx0cmV0ID0gbXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKFNFVCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTc0LVx0XHRcdFx0TUNVX1dBX1BBUkFNX1BETUFfUlgsICEhZGV2LVx1MDAzZWZ3LmRlYnVnX3dhLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NTgyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1ODM6bXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01ODQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU4NTpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU4Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU5MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193YSwgbXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1OTM6XHRcdFx0IG10NzkxNV9md19kZWJ1Z193YV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU5NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjE5PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2MjA6bXQ3OTE1X2Z3X2RlYnVnX2Jpbl9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MjUtXHR9O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjYyNjpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTYyNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjYzODpcdHJldHVybiBtdDc5MTVfZndfZGVidWdfd21fc2V0KGRldiwgZGV2LVx1MDAzZWZ3LmRlYnVnX3dtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MzktfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02NDE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY0MjptdDc5MTVfZndfZGVidWdfYmluX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NDMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY0NDpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY0NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY1MTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z19iaW4sIG10NzkxNV9md19kZWJ1Z19iaW5fZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY1MjpcdFx0XHQgbXQ3OTE1X2Z3X2RlYnVnX2Jpbl9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02NTQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY1NTptdDc5MTVfZndfdXRpbF93bV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY1NzpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjU4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjczOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfZndfdXRpbF93bSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTY3NT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Njc2Om10NzkxNV9md191dGlsX3dhX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY3Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Njc4Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGZpbGUtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY4Mi1cdGlmIChkZXYtXHUwMDNlZncuZGVidWdfd2EpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjgzOlx0XHRyZXR1cm4gbXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKFFVRVJZKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02ODQtXHRcdFx0XHRcdCBNQ1VfV0FfUEFSQU1fQ1BVX1VUSUwsIDAsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02ODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Njg5OkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfZndfdXRpbF93YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTY5MT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY5MjptdDc5MTVfYW1wZHVfc3RhdF9yZWFkX3BoeShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY5My1cdFx0XHQgICBzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjk0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2OTU6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTYtXHRib29sIGV4dF9waHkgPSBwaHkgIT0gXHUwMDI2ZGV2LVx1MDAzZXBoeTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NzIyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzIzOm10NzkxNV90eGJmX3N0YXRfcmVhZF9waHkoc3RydWN0IG10NzkxNV9waHkgKnBoeSwgc3RydWN0IHNlcV9maWxlICpzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTcyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTc2OT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzcwOm10NzkxNV90eF9zdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03NzEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc3MjpcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzczOlx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzc0LVx0c3RydWN0IG10NzZfbWliX3N0YXRzICptaWIgPSBcdTAwMjZwaHktXHUwMDNlbWliO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03NzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Nzc5Olx0bXQ3OTE1X2FtcGR1X3N0YXRfcmVhZF9waHkocGh5LCBmaWxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3ODA6XHRtdDc5MTVfbWFjX3VwZGF0ZV9zdGF0cyhwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc4MTpcdG10NzkxNV90eGJmX3N0YXRfcmVhZF9waHkocGh5LCBmaWxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03ODItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTc5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MDA6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV90eF9zdGF0cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTgwMj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgwMzptdDc5MTVfaHdfcXVldWVfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHUzMiBzaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgwNC1cdFx0ICAgICBjb25zdCBzdHJ1Y3QgaHdfcXVldWVfbWFwICptYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODA1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MDY6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgwNzpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgwOC1cdHUzMiBpLCB2YWw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTgzMz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgzNDptdDc5MTVfc3RhX2h3X3F1ZXVlX3JlYWQodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MzUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgzNjpcdHN0cnVjdCBtdDc5MTVfc3RhICptc3RhID0gKHN0cnVjdCBtdDc5MTVfc3RhICopc3RhLVx1MDAzZWRydl9wcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgzNzpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBtc3RhLVx1MDAzZXZpZi1cdTAwM2VwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgzOC1cdHN0cnVjdCBzZXFfZmlsZSAqcyA9IGRhdGE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTg2MT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODYyOm10NzkxNV9od19xdWV1ZXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODYzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NjQ6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjg2NTpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTg2Ni1cdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaHdfcXVldWVfbWFwIHBsZV9xdWV1ZV9tYXBbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTE0LVx0c2VxX3B1dHMoZmlsZSwgXCYjMzQ7UExFIG5vbi1lbXB0eSBxdWV1ZSBpbmZvOlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6OTE1Olx0bXQ3OTE1X2h3X3F1ZXVlX3JlYWQoZmlsZSwgQVJSQVlfU0laRShwbGVfcXVldWVfbWFwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05MTYtXHRcdFx0ICAgICBcdTAwMjZwbGVfcXVldWVfbWFwWzBdKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTE5LVx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKHBoeS1cdTAwM2VtdDc2LVx1MDAzZWh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkyMDpcdFx0XHRcdFx0ICBtdDc5MTVfc3RhX2h3X3F1ZXVlX3JlYWQsIGZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkyMS1cdC8qIHBzZSBxdWV1ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkyMi1cdHNlcV9wdXRzKGZpbGUsIFwmIzM0O1BTRSBub24tZW1wdHkgcXVldWUgaW5mbzpcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkyMzpcdG10NzkxNV9od19xdWV1ZV9yZWFkKGZpbGUsIEFSUkFZX1NJWkUocHNlX3F1ZXVlX21hcCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTI0LVx0XHRcdCAgICAgXHUwMDI2cHNlX3F1ZXVlX21hcFswXSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5Mjk6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV9od19xdWV1ZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz05MzE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkzMjptdDc5MTVfeG1pdF9xdWV1ZXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTMzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5MzQ6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkzNTpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkzNi1cdHN0cnVjdCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5NjI6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV94bWl0X3F1ZXVlcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjk2NDojZGVmaW5lIG10NzkxNV90eHBvd2VyX3B1dHMocmF0ZSlcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk2NS0oe1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDE0CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNzY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFdvcnRoaW5lc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGFuZCB0aGUgZmlyc3QgdGhpbmcgSSBub3RpY2UgaXMgdGhhdCBpdCYjMzk7cyBjbGVhcmx5IHJlbGF0ZWQgdG8gdGhlIHRoZXJtYWwgbWFuYWdlbWVudCB3aXRoaW4gdGhlIGBtdDc5MTVgIFBDSWUgZHJpdmVyLiAgVGhlIG91dHB1dCBpbmRpY2F0ZXMgdGhhdCBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBgbXQ3OTE1ZS15YCBtb2R1bGUsIHNvIGl0IGlzIGEgUENJZSBkcml2ZXIuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGFuIGVycm9yIGhhbmRsaW5nIHBhdGgsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZXJtYWwgem9uZSByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uLiAgSXQgbG9va3MgbGlrZSB0aGVyZSB3YXMgYSBwb3RlbnRpYWwgcmVzb3VyY2UgbGVhayBpZiB0aGUgdGhlcm1hbCB6b25lIHJlZ2lzdHJhdGlvbiBmYWlsZWQsIGFuZCB0aGlzIHBhdGNoIGFpbXMgdG8gY2xlYW4gdXAgcHJvcGVybHkgaW4gdGhhdCBzY2VuYXJpby4KCk5vdywgbXkgaW5pdGlhbCB0aG91Z2h0IGdvZXMgdG8gZnV6emluZy4gIENvdWxkIHRoaXMgYmUgYSBwb3RlbnRpYWwgYXJlYSBmb3IgZnV6emluZz8gSSBzZWUgdGhhdCBpdCYjMzk7cyBhIE1lZGlhVGVrIFdpLUZpIGRyaXZlciwgc28gaXQgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyLiAgVGhlbiB0aGUgcXVlc3Rpb24gaXMgY2FuIHRoaXMgZHJpdmVyIGJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/IExldCYjMzk7cyBjb25zdWx0IHRoZSBndWlkZWxpbmVzOiAgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAtIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKU2luY2UgYG10NzkxNWAgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBXaS1GaSBkcml2ZXIsIGFuZCwgdG8gbXkga25vd2xlZGdlLCByZXF1aXJlcyBhY3R1YWwgaGFyZHdhcmUgSSB0aGluayBJIHdpbGwgbmVlZCB0byBleGNsdWRlIGl0IGZyb20gZnV6emluZywgdW5sZXNzIEkgY2FuIGZpbmQgc29tZSBzb2Z0d2FyZSBlbXVsYXRpb24uICBJJiMzOTtsbCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBtZW50aW9uIG9mIHNvZnR3YXJlIGVtdWxhdGlvbiwgYnV0IEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIG5vdCBmdXp6aW5nIHRoaXMgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTE6I2luY2x1ZGUgXCYjMzQ7bXQ3OTE1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEyLSNpbmNsdWRlIFwmIzM0O21hYy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM9MTc9c3RhdGljIHUzMiBoaWZfaWR4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbXQ3OTE1X3BjaV9kZXZpY2VfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIwLVx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUVESUFURUssIDB4NzkxNSkgfSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjI1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc5MTVfaGlmX2RldmljZV90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjYtXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3OTE2KSB9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MzE6c3RhdGljIHN0cnVjdCBtdDc5MTVfaGlmICptdDc5MTVfcGNpX2dldF9oaWYyKHUzMiBpZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0zMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzozMzpcdHN0cnVjdCBtdDc5MTVfaGlmICpoaWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0zNC1cdHUzMiB2YWw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzo1NjpzdGF0aWMgdm9pZCBtdDc5MTVfcHV0X2hpZjIoc3RydWN0IG10NzkxNV9oaWYgKmhpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTU3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy02My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjY0OnN0YXRpYyBzdHJ1Y3QgbXQ3OTE1X2hpZiAqbXQ3OTE1X3BjaV9pbml0X2hpZjIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy02NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzo4MTpcdHJldHVybiBtdDc5MTVfcGNpX2dldF9oaWYyKGhpZl9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtODItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzo4NDpzdGF0aWMgaW50IG10NzkxNV9wY2lfaGlmMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTg1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjg2Olx0c3RydWN0IG10NzkxNV9oaWYgKmhpZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjEwMzpzdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMDQtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEwNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMDY6XHRzdHJ1Y3QgbXQ3OTE1X2hpZiAqaGlmMiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMDc6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTA4LVx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEyOC1cdGlmIChpZC1cdTAwM2VkZXZpY2UgPT0gMHg3OTE2IHx8IGlkLVx1MDAzZWRldmljZSA9PSAweDc5MGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMjk6XHRcdHJldHVybiBtdDc5MTVfcGNpX2hpZjJfcHJvYmUocGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMzE6XHRkZXYgPSBtdDc5MTVfbW1pb19wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGNpbV9pb21hcF90YWJsZShwZGV2KVswXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEzMi1cdFx0XHRcdGlkLVx1MDAzZWRldmljZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTM2LVx0bWRldiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTM3Olx0bXQ3OTE1X3dmc3lzX3Jlc2V0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMzk6XHRyZXQgPSBtdDc5MTVfbW1pb193ZWRfaW5pdChkZXYsIHBkZXYsIHRydWUsIFx1MDAyNmlycSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNDAtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE0My1cdGlmICghcmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNDQ6XHRcdGhpZjIgPSBtdDc5MTVfcGNpX2luaXRfaGlmMihwZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE0NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNDctXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE0ODpcdFx0XHRtdDc5MTVfcHV0X2hpZjIoaGlmMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNDktXHRcdFx0Z290byBmcmVlX2RldmljZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNTU6XHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXHUwMDNlZGV2LCBpcnEsIG10NzkxNV9pcnFfaGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE1Ni1cdFx0XHQgICAgICAgSVJRRl9TSEFSRUQsIEtCVUlMRF9NT0ROQU1FLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU3LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTU4Olx0XHRtdDc5MTVfcHV0X2hpZjIoaGlmMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNTktXHRcdGdvdG8gZnJlZV93ZWRfb3JfaXJxX3ZlY3Rvcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNjktXHRcdC8qIG1hc3RlciBzd2l0Y2ggb2YgUENJZSB0bnRlcnJ1cHQgZW5hYmxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNzA6XHRcdGlmIChpc19tdDc5MTUobWRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzEtXHRcdFx0bXQ3Nl93cihkZXYsIE1UX1BDSUUxX01BQ19JTlRfRU5BQkxFLCAweGZmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzUtXHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cdTAwM2VkZXYsIGRldi1cdTAwM2VoaWYyLVx1MDAzZWlycSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE3NjpcdFx0XHRcdCAgICAgICBtdDc5MTVfaXJxX2hhbmRsZXIsIElSUUZfU0hBUkVELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTc3LVx0XHRcdFx0ICAgICAgIEtCVUlMRF9NT0ROQU1FIFwmIzM0Oy1oaWZcJiMzNDssIGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTgyOlx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMDY6c3RhdGljIHZvaWQgbXQ3OTE1X2hpZl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjA4Olx0c3RydWN0IG10NzkxNV9oaWYgKmhpZiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIwOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMTM6c3RhdGljIHZvaWQgbXQ3OTE1X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjE1LVx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjE2Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIxOC1cdG1kZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMTk6XHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkxNV9kZXYsIG10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjIwOlx0bXQ3OTE1X3B1dF9oaWYyKGRldi1cdTAwM2VoaWYyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyMTpcdG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjIyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyNDpzdHJ1Y3QgcGNpX2RyaXZlciBtdDc5MTVfaGlmX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIyNS1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUgXCYjMzQ7X2hpZlwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyNjpcdC5pZF90YWJsZVx0PSBtdDc5MTVfaGlmX2RldmljZV90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyNzpcdC5wcm9iZVx0XHQ9IG10NzkxNV9wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMjg6XHQucmVtb3ZlXHRcdD0gbXQ3OTE1X2hpZl9yZW1vdmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMjktfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIzMTpzdHJ1Y3QgcGNpX2RyaXZlciBtdDc5MTVfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIzMi1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMzM6XHQuaWRfdGFibGVcdD0gbXQ3OTE1X3BjaV9kZXZpY2VfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMzQ6XHQucHJvYmVcdFx0PSBtdDc5MTVfcGNpX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjM1Olx0LnJlbW92ZVx0XHQ9IG10NzkxNV9wY2lfcmVtb3ZlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjM2LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMzg6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG10NzkxNV9wY2lfZGV2aWNlX3RhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIzOTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbXQ3OTE1X2hpZl9kZXZpY2VfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjQwLU1PRFVMRV9GSVJNV0FSRShNVDc5MTVfRklSTVdBUkVfV0EpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1Mjk2CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMzA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVmlydHVhbGl6YXRpb24gb2YgdGhlIG10NzkxNSBXaS1GaSBEcml2ZXIqKgoKT2theSwgc28gdGhlIHByb21wdCBpcyBhYm91dCB0aGUgYG10NzkxNWAgZHJpdmVyLCBhbmQgZnJvbSB0aGUgc291bmQgb2YgaXQsIHRoZSBjaGFsbGVuZ2UgaXMgZ2V0dGluZyBpdCB0byBmdW5jdGlvbiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBQQ0llIGRyaXZlciwgcmlnaHQ/IFB1cmVseSBQQ0ksIGFuZCB0aGF0IGltbWVkaWF0ZWx5IHJpbmdzIGFsYXJtIGJlbGxzLCBiZWNhdXNlIGlmIGl0JiMzOTtzIGRlcGVuZGVudCBvbiBhIHBoeXNpY2FsIFBDSWUgY2FyZCwgbGlrZSB0aG9zZSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyBmb3IgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzICh0aGluZ3MgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgb3IgYGFtZGdwdWApLCBzdGFuZGFyZCBRRU1VIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGVtdWxhdGUgaXQgZGlyZWN0bHkuCgpXYWl0LCBgbXQ3OTE1YCBpcyBhIFdpLUZpIGRyaXZlciwgc28gaXQmIzM5O3MgYSBNZWRpYVRlayBQQ0llIFdpLUZpIGRyaXZlci4gQW5kIGl04oCZcyBub3QgUUVNVSB0aGF0IGVtdWxhdGVzIHRoaXMuIFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIGlzIHRoZXJlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgaXQ/IExpa2UsIGlzIHRoZXJlIHNvbWV0aGluZyBzaW1pbGFyIHRvIGBtYWM4MDIxMV9od3NpbWA/IEFoLCByaWdodCwgdGhhdCYjMzk7cyBqdXN0IGEgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBgbWFjODAyMTFgLCBub3QgYSBoYXJkd2FyZSBlbXVsYXRvciBmb3IgdGhlIGBtdDc5MTVgLiBTbywgZ2l2ZW4gbXkgdW5kZXJzdGFuZGluZywgdGhlIGNvZGUgcGF0aHMgd2l0aGluIGBtdDc5MTVgIGFyZSBsaWtlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgc2V0dXBzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUsIGF0IGxlYXN0IG5vdCB3aXRob3V0IHNvbWUgY2xldmVyIHdvcmthcm91bmRzLgoKQnV0LCBob2xkIG9uLCB0aGVyZSBtaWdodCBiZSBhIHdvcmthcm91bmQuIFdoYXQgaWYgd2UgY291bGQgc29tZWhvdyBwcm9iZSB0aGUgZHJpdmVyIHVzaW5nIGEgZmFrZSBQQ0kgZGV2aWNlPyBTeXprYWxsZXIgaGFzIGBzeXpfcGNpX2RldmljZV9hZGRgLCB3aGljaCBjYW4gaW5qZWN0IFBDSSBjb25maWcgc3BhY2UsIGJ1dCB0aGF04oCZcyBub3QgdHJ1ZSBoYXJkd2FyZSBlbXVsYXRpb24uIEluIG1vc3QgY2FzZXMsIHRoZXNlIGRyaXZlcnMgZmFpbCBlYXJseSBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGVzcGVjaWFsbHkgd2hlbiB0aGV5IHRyeSB0byByZWFkIG9yIHdyaXRlIHRvIE1NSU8gcmVnaXN0ZXJzIG9yIHdhaXQgZm9yIGZpcm13YXJlLgoKU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIExldCYjMzk7cyBzZWUgaWYgdGhlIGZ1bmN0aW9uIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyBjYWxsZWQgZHVyaW5nIHByb2JlLiBUaGlzIGNvdWxkIGJlIGEgZ29vZCBwb2ludCB0byBzdGFydCBmaWd1cmluZyBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IGNoYW5jZSBvZiB0cmlja2luZyBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfdGhlcm1hbF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xOTk9c3RhdGljIHZvaWQgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0yMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MjEzOnN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTIxNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTczMD1tdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NzYyOlx0cmV0ID0gbXQ3OTE1X3RoZXJtYWxfaW5pdChwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc2My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTEyNTg9aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMjk3Olx0cmV0ID0gbXQ3OTE1X3RoZXJtYWxfaW5pdChcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjk4LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjU5NAoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTWVkaWFUZWsgV2ktRmkgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMgTWVkaWFUZWsgUENJZSBXaS1GaSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEZyb20gd2hhdCBJIHNlZSwgYG10NzkxNV90aGVybWFsX2luaXRgIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGFuZCBgbXQ3OTE1X3JlZ2lzdGVyX2V4dF9waHlgLiBOb3csIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBpdHNlbGYgaXMgb25seSBjYWxsZWQgZnJvbSBgbXQ3OTE1X3BjaV9wcm9iZWAuIENvbnNpZGVyaW5nIHRoaXMgaXMgYSBNZWRpYVRlayBQQ0llIFdpLUZpIGRyaXZlciwgSSYjMzk7bSBwcmV0dHkgY2VydGFpbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcGh5c2ljYWwgaGFyZHdhcmUgZGVwZW5kZW5jeSByaWdodCBmcm9tIHRoZSBzdGFydC4gV2UmIzM5O3JlIGdvaW5nIHRvIG5lZWQgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nIHRvIGV2ZW4gZ2V0IHBhc3QgdGhlIGVhcmx5IE1NSU8gc2V0dXAgYW5kIGZpcm13YXJlIGxvYWRpbmcgc3RhZ2VzLiBUaGUgcHJvYmluZyBjYW4mIzM5O3QgaGFwcGVuIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBjb2RlIHRvIGNvbmZpcm0gaWYgdGhlIGZpcm13YXJlIGxvYWRpbmcgb2NjdXJzIGJlZm9yZSBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgaXMgY2FsbGVkLiBUaGF0IHdpbGwgYmUgbXkgZmlyc3QgYXJlYSB0byBmb2N1cyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTE1X3JlZ2lzdGVyX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTI0Nz1zdGF0aWMgdm9pZCBtdDc5MTVfc3RvcF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEyNTg6aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaD00NTM9dTMyIG10NzkxNV93ZWRfaW5pdF9idWYodm9pZCAqcHRyLCBkbWFfYWRkcl90IHBoeXMsIGludCB0b2tlbl9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo0NTU6aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NTYtdm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM9MTAzPXN0YXRpYyBpbnQgbXQ3OTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxODI6XHRyZXQgPSBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xODMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyMjA9c3RhdGljIGludCBtdDc5OHhfd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjY0Olx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI2NS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzAzCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGlnZ2luZyBEZWVwZXIgaW50byB0aGUgTVQ3OTE1IFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgbWludXRlLiBJIGp1c3Qgc2F3IHRoYXQgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIGBtdDc5OHhfd21hY19wcm9iZWAgaW4gYHNvYy5jYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBjb25uZWN0aW9uIG1vcmUgdGhvcm91Z2hseS4gTXkgaW5pdGlhbCBmb2N1cyB3YXMgb24gdGhlIGZ1bmN0aW9uJiMzOTtzIGluZGl2aWR1YWwgYmVoYXZpb3IsIGJ1dCBub3cgSSYjMzk7bSBzZWVpbmcgaXQmIzM5O3MgaW50ZWdyYXRlZCB3aXRoIGEgYmlnZ2VyIHBpY3R1cmUgdGhyb3VnaCB0aGF0IGBzb2MuY2AgZmlsZS4gUmlnaHQsIGxldOKAmXMgZ28gY2hlY2sgdGhhdCBzcGVjaWZpYyBgc29jLmNgIGZpbGUgdG8gc2VlIHRoZSBjb250ZXh0IG9mIHRoYXQgY2FsbCBhbmQgaG93IHRoZSBwcm9iZSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIFRpbWUgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTh4X3dtYWNfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM9MTE5MD1zdGF0aWMgaW50IG10Nzk4eF93bWFjX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM6MTIyMDpzdGF0aWMgaW50IG10Nzk4eF93bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjIxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYz0xMjk1PXN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXQ3OTh4X3dtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyOTktXHR9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM6MTMwMDpcdC5wcm9iZSA9IG10Nzk4eF93bWFjX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTMwMS1cdC5yZW1vdmUgPSBtdDc5OHhfd21hY19yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4Mjg4CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbXQ3OTh4X3dtYWNfcHJvYmUgRnVuY3Rpb24qKgoKT2theSwgc28gYG10Nzk4eF93bWFjX3Byb2JlYCBpcyB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIHRoZSBgbXQ3OTh4X3dtYWNfZHJpdmVyYCDigJMgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gZnV6emluZyBvcHBvcnR1bml0aWVzLiBDYW4gdGhpcyBwbGF0Zm9ybSBkcml2ZXIsIGxpa2UgbWFueSBvdGhlcnMsIGJlIGEgdGFyZ2V0IGZvciBmdXp6aW5nPyBTeXprYWxsZXIgKnNob3VsZCogYmUgYWJsZSB0byBoYW5kbGUgaXQgaWYgaXQgY2FuIGJlIGJyb3VnaHQgdXAgdGhyb3VnaCBkZXZpY2UgdHJlZSBvciBzb21lIHNpbWlsYXIgaW5pdGlhbGl6YXRpb24gbWV0aG9kLCBhbmQgYSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0LiBIb3dldmVyLCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdmVuZG9yLXNwZWNpZmljIFdpLUZpIHBsYXRmb3JtIGRyaXZlcnMgb2Z0ZW4gcHJlc2VudCBhIGNoYWxsZW5nZS4gVGhleSB0ZW5kIHRvIGhhdmUgdGhvc2UgdGlnaHQgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlIHJlZ2lzdGVycyBhbmQgdGhlIHJpZ2h0IGZpcm13YXJlIHRvIGFjdHVhbGx5IGluaXRpYWxpemUgYW5kIHdvcmsgY29ycmVjdGx5LgoKUmlnaHQsIHRpbWUgdG8gZGlnIGluLiBMZXQmIzM5O3Mgc2VlIGV4YWN0bHkgd2hhdCBgbXQ3OTh4X3dtYWNfcHJvYmVgIGlzIGRvaW5nIGFuZCB3aGF0IGl0cyBrZXkgYWN0aW9ucyBhcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQgZXhwZWN0cyBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBiZWZvcmUgSSBjYW4gYXNzZXNzIHRoZSBmZWFzaWJpbGl0eSBvZiBlZmZlY3RpdmUgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTh4X3dtYWNfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYz0xMTkwPXN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjIwOnN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyMjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyOTU9c3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdDc5OHhfd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI5OS1cdH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMzAwOlx0LnByb2JlID0gbXQ3OTh4X3dtYWNfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMzAxLVx0LnJlbW92ZSA9IG10Nzk4eF93bWFjX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwMDMKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBgbXQ3OTh4X3dtYWNfcHJvYmVgLiBJJiMzOTttIGdvaW5nIHRvIGFwcHJvYWNoIHRoaXMgd2l0aCBteSB1c3VhbCBtZXRob2RpY2FsIHByb2Nlc3MuIEZpcnN0LCBJIHdhbnQgdG8gZ2V0IGEgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nLiBXaGF0JiMzOTtzIHRoZSBtYWluIGZ1bmN0aW9uJiMzOTtzIHB1cnBvc2U/IEkmIzM5O20gYmV0dGluZyBpdCYjMzk7cyB0aGUgY29yZSBwcm9iZSBmdW5jdGlvbiBmb3IgYSBNZWRpYVRlayBXaS1GaSBjaGlwLCBnaXZlbiB0aGUgbmFtZS4gT2theSwgbGV0JiMzOTtzIHNjYW4gdGhlIGZ1bmN0aW9uJiMzOTtzIGRlZmluaXRpb24uIFJpZ2h0LCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciB0aGUgaW5pdGlhbCBkZXZpY2Ugc2V0dXAgd2hlbiBhIG5ldyBNVDc5OHgtc2VyaWVzIHdpcmVsZXNzIE1BQyBkZXZpY2UgaXMgZGlzY292ZXJlZCBvciBsb2FkZWQuIEl0IHdpbGwgcHJvYmFibHkgaGFuZGxlIHJlc291cmNlIGFsbG9jYXRpb24sIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCBhbmQgZHJpdmVyIHJlZ2lzdHJhdGlvbiB3aXRoIHRoZSBrZXJuZWwuIEkgZXhwZWN0IGl0IHRvIGFsc28gcGVyZm9ybSBzb21lIGtpbmQgb2YgZGV0ZWN0aW9uIG9yIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gdGhlIHNwZWNpZmljIGhhcmR3YXJlIHZhcmlhbnQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIG1lbW9yeSBtYXBwaW5nLCBJUlEgc2V0dXAsIGFuZCBwZXJoYXBzIHNvbWUgZmlybXdhcmUgbG9hZGluZy4gSSB3YW50IHRvIGNoZWNrIGhvdyBlcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZC4gSXMgaXQgcm9idXN0PyBEb2VzIGl0IHByb3ZpZGUgYWRlcXVhdGUgZXJyb3IgbWVzc2FnZXMgZm9yIGRlYnVnZ2luZz8gSSYjMzk7bGwgYWxzbyBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgdXNlcywgZXNwZWNpYWxseSBhbnl0aGluZyByZWxhdGVkIHRvIHRoZSBkZXZpY2UgY29udGV4dCBvciBjb25maWd1cmF0aW9uLCBhbmQgaG93IHRoZXNlIGFyZSBpbml0aWFsaXplZCBhbmQgcGFzc2VkIGFyb3VuZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjaGlwIGludGVyYWN0cyB3aXRoIHRoZSBQQ0kgb3IgU0RJTyBidXMuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHJhY2UgY29uZGl0aW9ucy4gRmluYWxseSwgYWZ0ZXIgdGhpcyBpbml0aWFsIHNjYW4sIEkmIzM5O2xsIGdvIHRocm91Z2ggdGhlIGNvZGUgc3RlcC1ieS1zdGVwLCBtYWtpbmcgbm90ZSBvZiBhbnkgaW50ZXJlc3Rpbmcgb3IgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgc2VjdGlvbnMsIHRoaW5raW5nIG9mIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgd2lyZWxlc3MgZHJpdmVyIHN0YWNrLiBUaGlzIHNob3VsZCBnZXQgbWUgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyMTU6XHRcbjEyMTY6XHRcdGRldi1cdTAwM2Vyc3RjID0gZGV2bV9yZXNldF9jb250cm9sX2dldChwZGV2LCBcJiMzNDtjb25zeXNcJiMzNDspO1xuMTIxNzpcdFx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhkZXYtXHUwMDNlcnN0Yyk7XG4xMjE4Olx0fVxuMTIxOTpcdFxuMTIyMDpcdHN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbjEyMjE6XHR7XG4xMjIyOlx0XHR2b2lkIF9faW9tZW0gKm1lbV9iYXNlO1xuMTIyMzpcdFx0c3RydWN0IG10NzkxNV9kZXYgKmRldjtcbjEyMjQ6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldjtcbjEyMjU6XHRcdGludCBpcnEsIHJldDtcbjEyMjY6XHRcdHUzMiBjaGlwX2lkO1xuMTIyNzpcdFxuMTIyODpcdFx0Y2hpcF9pZCA9ICh1aW50cHRyX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbjEyMjk6XHRcbjEyMzA6XHRcdG1lbV9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xuMTIzMTpcdFx0aWYgKElTX0VSUihtZW1fYmFzZSkpIHtcbjEyMzI6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGdldCBtZW1vcnkgcmVzb3VyY2VcXG5cJiMzNDspO1xuMTIzMzpcdFx0XHRyZXR1cm4gUFRSX0VSUihtZW1fYmFzZSk7XG4xMjM0Olx0XHR9XG4xMjM1Olx0XG4xMjM2Olx0XHRkZXYgPSBtdDc5MTVfbW1pb19wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgbWVtX2Jhc2UsIGNoaXBfaWQpO1xuMTIzNzpcdFx0aWYgKElTX0VSUihkZXYpKVxuMTIzODpcdFx0XHRyZXR1cm4gUFRSX0VSUihkZXYpO1xuMTIzOTpcdFxuMTI0MDpcdFx0bWRldiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2O1xuMTI0MTpcdFx0cmV0ID0gbXQ3OTE1X21taW9fd2VkX2luaXQoZGV2LCBwZGV2LCBmYWxzZSwgXHUwMDI2aXJxKTtcbjEyNDI6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMjQzOlx0XHRcdGdvdG8gZnJlZV9kZXZpY2U7XG4xMjQ0Olx0XG4xMjQ1Olx0XHRpZiAoIXJldCkge1xuMTI0NjpcdFx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApO1xuMTI0NzpcdFx0XHRpZiAoaXJxIFx1MDAzYyAwKSB7XG4xMjQ4Olx0XHRcdFx0cmV0ID0gaXJxO1xuMTI0OTpcdFx0XHRcdGdvdG8gZnJlZV9kZXZpY2U7XG4xMjUwOlx0XHRcdH1cbjEyNTE6XHRcdH1cbjEyNTI6XHRcbjEyNTM6XHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cdTAwM2VkZXYsIGlycSwgbXQ3OTE1X2lycV9oYW5kbGVyLFxuMTI1NDpcdFx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XG4xMjU1Olx0XHRpZiAocmV0KVxuMTI1NjpcdFx0XHRnb3RvIGZyZWVfZGV2aWNlO1xuMTI1NzpcdFxuMTI1ODpcdFx0cmV0ID0gbXQ3OTh4X3dtYWNfaW5pdChkZXYpO1xuMTI1OTpcdFx0aWYgKHJldClcbjEyNjA6XHRcdFx0Z290byBmcmVlX2lycTtcbjEyNjE6XHRcbjEyNjI6XHRcdG10NzkxNV93ZnN5c19yZXNldChkZXYpO1xuMTI2MzpcdFxuMTI2NDpcdFx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpO1xuMTI2NTpcdFx0aWYgKHJldClcbjEyNjY6XHRcdFx0Z290byBmcmVlX2lycTtcbjEyNjc6XHRcbjEyNjg6XHRcdHJldHVybiAwO1xuMTI2OTpcdFxuMTI3MDpcdGZyZWVfaXJxOlxuMTI3MTpcdFx0ZGV2bV9mcmVlX2lycShtZGV2LVx1MDAzZWRldiwgaXJxLCBkZXYpO1xuMTI3MjpcdGZyZWVfZGV2aWNlOlxuMTI3MzpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSlcbjEyNzQ6XHRcdFx0bXRrX3dlZF9kZXZpY2VfZGV0YWNoKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpO1xuMTI3NTpcdFx0bXQ3Nl9mcmVlX2RldmljZShtZGV2KTtcbjEyNzY6XHRcbjEyNzc6XHRcdHJldHVybiByZXQ7XG4xMjc4Olx0fVxuMTI3OTpcdFxuMTI4MDpcdHN0YXRpYyB2b2lkIG10Nzk4eF93bWFjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuMTI4MTpcdHtcbjEyODI6XHRcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbjEyODM6XHRcbjEyODQ6XHRcdG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShkZXYpO1xuMTI4NTpcdH1cbjEyODY6XHRcbjEyODc6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDc5OHhfd21hY19vZl9tYXRjaFtdID0ge1xuMTI4ODpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21lZGlhdGVrLG10Nzk4MS13bWFjXCYjMzQ7LCAuZGF0YSA9ICh1MzIgKikweDc5ODEgfSxcbjEyODk6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttZWRpYXRlayxtdDc5ODYtd21hY1wmIzM0OywgLmRhdGEgPSAodTMyICopMHg3OTg2IH0sXG4xMjkwOlx0XHR7fSxcbjEyOTE6XHR9O1xuMTI5MjpcdFxuMTI5MzpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10Nzk4eF93bWFjX29mX21hdGNoKTtcbjEyOTQ6XHRcbjEyOTU6XHRzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10Nzk4eF93bWFjX2RyaXZlciA9IHtcbjEyOTY6XHRcdC5kcml2ZXIgPSB7XG4xMjk3Olx0XHRcdC5uYW1lID0gXCYjMzQ7bXQ3OTh4LXdtYWNcJiMzNDssXG4xMjk4Olx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IG10Nzk4eF93bWFjX29mX21hdGNoLFxuMTI5OTpcdFx0fSxcbjEzMDA6XHRcdC5wcm9iZSA9IG10Nzk4eF93bWFjX3Byb2JlLFxuMTMwMTpcdFx0LnJlbW92ZSA9IG10Nzk4eF93bWFjX3JlbW92ZSxcbjEzMDI6XHR9O1xuMTMwMzpcdFxuMTMwNDpcdE1PRFVMRV9GSVJNV0FSRShNVDc5ODZfRklSTVdBUkVfV0EpO1xuMTMwNTpcdE1PRFVMRV9GSVJNV0FSRShNVDc5ODZfRklSTVdBUkVfV00pO1xuMTMwNjpcdE1PRFVMRV9GSVJNV0FSRShNVDc5ODZfRklSTVdBUkVfV01fTVQ3OTc1KTtcbjEzMDc6XHRNT0RVTEVfRklSTVdBUkUoTVQ3OTg2X1JPTV9QQVRDSCk7XG4xMzA4Olx0TU9EVUxFX0ZJUk1XQVJFKE1UNzk4Nl9ST01fUEFUQ0hfTVQ3OTc1KTtcbjEzMDk6XHRcbjEzMTA6XHRNT0RVTEVfRklSTVdBUkUoTVQ3OTgxX0ZJUk1XQVJFX1dBKTtcbjEzMTE6XHRNT0RVTEVfRklSTVdBUkUoTVQ3OTgxX0ZJUk1XQVJFX1dNKTtcbjEzMTI6XHRNT0RVTEVfRklSTVdBUkUoTVQ3OTgxX1JPTV9QQVRDSCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTk0CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIFdpLUZpIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwbGF0Zm9ybSBkcml2ZXIsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgaXQgcmVsaWVzIG9uIGRldmljZSB0cmVlIGluc3RhbnRpYXRpb24g4oCTIHNwZWNpZmljYWxseSBmb3IgdGhlIGBtZWRpYXRlayxtdDc5ODEtd21hY2Agb3IgYG1lZGlhdGVrLG10Nzk4Ni13bWFjYCBjb25maWd1cmF0aW9ucy4gVGhhdCBtYWtlcyBzZW5zZSwgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIG1vZGVybiBlbWJlZGRlZCBzeXN0ZW1zLiBXaGF0JiMzOTtzIG1vcmUgaW50ZXJlc3RpbmcgaXMgdGhhdCBpdCB0aGVuIGNhbGxzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKGRldilgLiBUaGlzIGZ1bmN0aW9uIGNhbGwgaXMga2V5IGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCByZWdpc3RyYXRpb24gZW50YWlscy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGluIGBpbml0LmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBpbml0aWFsaXphdGlvbiBsb2dpYyBzaG91bGQgYmUsIHJpZ2h0PyBMZXQmIzM5O3MgZ28gdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgYW5kIHNlZSB3aGF0IGl0IGRvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI1OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTI1ODpcdGludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4xMjU5Olx0e1xuMTI2MDpcdFx0c3RydWN0IG10NzkxNV9waHkgKnBoeTI7XG4xMjYxOlx0XHRpbnQgcmV0O1xuMTI2MjpcdFxuMTI2MzpcdFx0ZGV2LVx1MDAzZXBoeS5kZXYgPSBkZXY7XG4xMjY0Olx0XHRkZXYtXHUwMDNlcGh5Lm10NzYgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5waHk7XG4xMjY1Olx0XHRkZXYtXHUwMDNlbXQ3Ni5waHkucHJpdiA9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4xMjY2Olx0XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXJjX3dvcmssIG10NzkxNV9tYWNfc3RhX3JjX3dvcmspO1xuMTI2NzpcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1waHkubWFjX3dvcmssIG10NzkxNV9tYWNfd29yayk7XG4xMjY4Olx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZkZXYtXHUwMDNlc3RhX3JjX2xpc3QpO1xuMTI2OTpcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2ZGV2LVx1MDAzZXR3dF9saXN0KTtcbjEyNzA6XHRcbjEyNzE6XHRcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dhaXQpO1xuMTI3MjpcdFx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2VyZXNldF93b3JrLCBtdDc5MTVfbWFjX3Jlc2V0X3dvcmspO1xuMTI3MzpcdFx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2VkdW1wX3dvcmssIG10NzkxNV9tYWNfZHVtcF93b3JrKTtcbjEyNzQ6XHRcdG11dGV4X2luaXQoXHUwMDI2ZGV2LVx1MDAzZWR1bXBfbXV0ZXgpO1xuMTI3NTpcdFxuMTI3NjpcdFx0ZGV2LVx1MDAzZWRiZGNfc3VwcG9ydCA9IG10NzkxNV9iYW5kX2NvbmZpZyhkZXYpO1xuMTI3NzpcdFxuMTI3ODpcdFx0cGh5MiA9IG10NzkxNV9hbGxvY19leHRfcGh5KGRldik7XG4xMjc5Olx0XHRpZiAoSVNfRVJSKHBoeTIpKVxuMTI4MDpcdFx0XHRyZXR1cm4gUFRSX0VSUihwaHkyKTtcbjEyODE6XHRcbjEyODI6XHRcdHJldCA9IG10NzkxNV9pbml0X2hhcmR3YXJlKGRldiwgcGh5Mik7XG4xMjgzOlx0XHRpZiAocmV0KVxuMTI4NDpcdFx0XHRnb3RvIGZyZWVfcGh5MjtcbjEyODU6XHRcbjEyODY6XHRcdG10NzkxNV9pbml0X3dpcGh5KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuMTI4NzpcdFxuMTI4ODpcdCNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxuMTI4OTpcdFx0ZGV2LVx1MDAzZW10NzYudGVzdF9vcHMgPSBcdTAwMjZtdDc5MTVfdGVzdG1vZGVfb3BzO1xuMTI5MDpcdCNlbmRpZlxuMTI5MTpcdFxuMTI5MjpcdFx0cmV0ID0gbXQ3Nl9yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHRydWUsIG10NzZfcmF0ZXMsXG4xMjkzOlx0XHRcdFx0XHQgICBBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTtcbjEyOTQ6XHRcdGlmIChyZXQpXG4xMjk1Olx0XHRcdGdvdG8gc3RvcF9odztcbjEyOTY6XHRcbjEyOTc6XHRcdHJldCA9IG10NzkxNV90aGVybWFsX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4xMjk4Olx0XHRpZiAocmV0KVxuMTI5OTpcdFx0XHRnb3RvIHVucmVnX2RldjtcbjEzMDA6XHRcbjEzMDE6XHRcdGlmIChwaHkyKSB7XG4xMzAyOlx0XHRcdHJldCA9IG10NzkxNV9yZWdpc3Rlcl9leHRfcGh5KGRldiwgcGh5Mik7XG4xMzAzOlx0XHRcdGlmIChyZXQpXG4xMzA0Olx0XHRcdFx0Z290byB1bnJlZ190aGVybWFsO1xuMTMwNTpcdFx0fVxuMTMwNjpcdFxuMTMwNzpcdFx0aWVlZTgwMjExX3F1ZXVlX3dvcmsobXQ3Nl9odyhkZXYpLCBcdTAwMjZkZXYtXHUwMDNlaW5pdF93b3JrKTtcbjEzMDg6XHRcbjEzMDk6XHRcdGRldi1cdTAwM2VyZWNvdmVyeS5od19pbml0X2RvbmUgPSB0cnVlO1xuMTMxMDpcdFxuMTMxMTpcdFx0cmV0ID0gbXQ3OTE1X2luaXRfZGVidWdmcyhcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbjEzMTI6XHRcdGlmIChyZXQpXG4xMzEzOlx0XHRcdGdvdG8gdW5yZWdfZXh0X3BoeTtcbjEzMTQ6XHRcbjEzMTU6XHRcdHJldCA9IG10NzkxNV9jb3JlZHVtcF9yZWdpc3RlcihkZXYpO1xuMTMxNjpcdFx0aWYgKHJldClcbjEzMTc6XHRcdFx0Z290byB1bnJlZ19leHRfcGh5O1xuMTMxODpcdFxuMTMxOTpcdFx0cmV0dXJuIDA7XG4xMzIwOlx0XG4xMzIxOlx0dW5yZWdfZXh0X3BoeTpcbjEzMjI6XHRcdGlmIChwaHkyKSB7XG4xMzIzOlx0XHRcdG10NzkxNV91bnJlZ2lzdGVyX2V4dF9waHkoZGV2KTtcbjEzMjQ6XHRcdFx0cGh5MiA9IE5VTEw7XG4xMzI1Olx0XHR9XG4xMzI2Olx0dW5yZWdfdGhlcm1hbDpcbjEzMjc6XHRcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4xMzI4Olx0dW5yZWdfZGV2OlxuMTMyOTpcdFx0bXQ3Nl91bnJlZ2lzdGVyX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4xMzMwOlx0c3RvcF9odzpcbjEzMzE6XHRcdG10NzkxNV9zdG9wX2hhcmR3YXJlKGRldik7XG4xMzMyOlx0ZnJlZV9waHkyOlxuMTMzMzpcdFx0aWYgKHBoeTIpXG4xMzM0Olx0XHRcdGllZWU4MDIxMV9mcmVlX2h3KHBoeTItXHUwMDNlbXQ3Ni1cdTAwM2Vodyk7XG4xMzM1Olx0XHRyZXR1cm4gcmV0O1xuMTMzNjpcdH1cbjEzMzc6XHRcbjEzMzg6XHR2b2lkIG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMTMzOTpcdHtcbjEzNDA6XHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZWR1bXBfd29yayk7XG4xMzQxOlx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VyZXNldF93b3JrKTtcbjEzNDI6XHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZXJjX3dvcmspO1xuMTM0MzpcdFx0bXQ3OTE1X3VucmVnaXN0ZXJfZXh0X3BoeShkZXYpO1xuMTM0NDpcdFx0bXQ3OTE1X2NvcmVkdW1wX3VucmVnaXN0ZXIoZGV2KTtcbjEzNDU6XHRcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4xMzQ2Olx0XHRtdDc2X3VucmVnaXN0ZXJfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjEzNDc6XHRcdG10NzkxNV9zdG9wX2hhcmR3YXJlKGRldik7XG4xMzQ4Olx0XG4xMzQ5Olx0XHRtdDc2X2ZyZWVfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjEzNTA6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNzc4CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgcHJvY2VzcywgZm9jdXNpbmcgb24gdGhlIGtleSBhY3Rpb25zOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTE1IEhhcmR3YXJlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBoYXMga2lja2VkIG9mZiwgYW5kIGFzIEkgZXhwZWN0ZWQsIGl0JiMzOTtzIGNhbGxlZCBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIHdpdGggdGhlIGRldmljZSBhbmQgcGh5MiBhcyBhcmd1bWVudHMuIE15IG5leHQgaW1tZWRpYXRlIGFjdGlvbiBpcyB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBpbml0aWFsaXphdGlvbiBpcyBiZWluZyBoYW5kbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHN0ZXBzIGl0IGlzIHRha2luZyB3aXRoIHRoZSBoYXJkd2FyZSEgVGltZSB0byBkaWcgaW4gYW5kIGV4YW1pbmUgdGhlIGlubmVyIHdvcmtpbmdzIG9mIGBtdDc5MTVfaW5pdF9oYXJkd2FyZWAhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9pbml0X2hhcmR3YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz04NjU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjg2NjptdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04Njcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjU4PWludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI4MjpcdHJldCA9IG10NzkxNV9pbml0X2hhcmR3YXJlKGRldiwgcGh5Mik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI4My1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMzE2CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYG10NzkxNV9pbml0X2hhcmR3YXJlYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMsIHN0ZXAtYnktc3RlcCwgYXQgYSBoaWdoIGxldmVsLiBTaW5jZSBJJiMzOTttIGZhbWlsaWFyIHdpdGggdGhpcyBhcmNoaXRlY3R1cmUsIEkga25vdyBpdCBsaWtlbHkgaW52b2x2ZXMgdGhpbmdzIGxpa2UgcmVnaXN0ZXIgd3JpdGVzIHRvIGluaXRpYWxpemUgdGhlIHJhZGlvLCBQSFkgY29uZmlndXJhdGlvbiwgcG9zc2libHkgRE1BIHNldHVwLCBhbmQgaW50ZXJydXB0IGVuYWJsaW5nLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGVzdGFibGlzaCB0aGUgZnVuZGFtZW50YWwgaGFyZHdhcmUgc3RhdGUgZm9yIHRoZSBNVDc5MTUgY2hpcHNldCB0byBvcGVyYXRlLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnM7IGRlcGVuZGVuY2llcyBhcmUgY3J1Y2lhbCwgZXNwZWNpYWxseSB3aXRoIGNvbXBsZXggaGFyZHdhcmUgbGlrZSB0aGlzLiBBcmUgdGhlcmUgYW55IHBhcnRpY3VsYXIgc2VjdGlvbnMgdGhhdCBzZWVtIGltbWVkaWF0ZWx5IHJlbGV2YW50IHRvIHBvd2VyIG1hbmFnZW1lbnQgb3Igc2VjdXJpdHk/IFRoYXQgbWlnaHQgb2ZmZXIgaW5zaWdodHMgaW50byBsYXRlciBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MuIEkmIzM5O2xsIHdhdGNoIGZvciBob3cgdGhlIGNvZGUgc2V0cyB1cCB0aGUgY2xvY2sgc291cmNlcyB0b28sIGJlY2F1c2UgdGhhdCYjMzk7cyBhbHdheXMgYSBjcml0aWNhbCBhc3BlY3QsIGFuZCBjYW4gYmUgc3VidGxlIGluIGl0cyBpbXBsaWNhdGlvbnMgb24gbGF0ZXIgYmVoYXZpb3IuIFVuZGVyc3RhbmRpbmcgdGhlIGhhcmR3YXJlJiMzOTtzIHJlc2V0IHN0YXRlIGlzIGFsc28gaW1wb3J0YW50IHNvIEkgd2lsbCBwYXkgYXR0ZW50aW9uIHRvIHRoYXQuIEkgZXhwZWN0IHRoZXJlIG1pZ2h0IGJlIGNoZWNrcyBmb3IgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNhcGFiaWxpdGllczsgSSBuZWVkIHRvIHJlY29nbml6ZSBpZiBpdCBoYXMgYSB3YXkgdG8gZGVhbCB3aXRoIGRpZmZlcmVudCBjaGlwIHZlcnNpb25zLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIG9mIGFueSBhc3NvY2lhdGVkIGNvLXByb2Nlc3NvcnMgYXMgd2VsbDsgdGhvc2UgYXJlIHNvIGNvbW1vbiB3aXRoIHRoaXMga2luZCBvZiBzeXN0ZW0tb24tY2hpcC4gRmluYWxseSwgSSYjMzk7bGwgbmVlZCB0byB0cmFjayBhbnkgcmV0dXJuIHZhbHVlcyBvciBzdGF0dXMgZmxhZ3MsIGJlY2F1c2UgdGhlc2Ugd2lsbCBsaWtlbHkgY29tbXVuaWNhdGUgdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB2YXJpb3VzIGluaXRpYWxpemF0aW9uIHN0YWdlcy4gVW5kZXJzdGFuZGluZyB0aGVzZSByZXR1cm4gdmFsdWVzIHdpbGwgYmUga2V5IHRvIGZhdWx0IHRvbGVyYW5jZSBmdXJ0aGVyIGRvd24gdGhlIGxpbmUuIEkmIzM5O2xsIHN0YXJ0IHJlYWRpbmcsIHdpdGggdGhlc2UgYXNwZWN0cyBpbiBtaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg2NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDg2NTpcdHN0YXRpYyBpbnRcbiA4NjY6XHRtdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcbiA4Njc6XHR7XG4gODY4Olx0XHRpbnQgcmV0LCBpZHg7XG4gODY5Olx0XG4gODcwOlx0XHRtdDc2X3dyKGRldiwgTVRfSU5UX01BU0tfQ1NSLCAwKTtcbiA4NzE6XHRcdG10NzZfd3IoZGV2LCBNVF9JTlRfU09VUkNFX0NTUiwgfjApO1xuIDg3MjpcdFxuIDg3MzpcdFx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmssIG10NzkxNV9pbml0X3dvcmspO1xuIDg3NDpcdFxuIDg3NTpcdFx0cmV0ID0gbXQ3OTE1X2RtYV9pbml0KGRldiwgcGh5Mik7XG4gODc2Olx0XHRpZiAocmV0KVxuIDg3NzpcdFx0XHRyZXR1cm4gcmV0O1xuIDg3ODpcdFxuIDg3OTpcdFx0c2V0X2JpdChNVDc2X1NUQVRFX0lOSVRJQUxJWkVELCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4gODgwOlx0XG4gODgxOlx0XHRyZXQgPSBtdDc5MTVfbWN1X2luaXQoZGV2KTtcbiA4ODI6XHRcdGlmIChyZXQpXG4gODgzOlx0XHRcdHJldHVybiByZXQ7XG4gODg0Olx0XG4gODg1Olx0XHRyZXQgPSBtdDc5MTVfZWVwcm9tX2luaXQoZGV2KTtcbiA4ODY6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gODg3Olx0XHRcdHJldHVybiByZXQ7XG4gODg4Olx0XG4gODg5Olx0XHRpZiAoZGV2LVx1MDAzZWNhbCkge1xuIDg5MDpcdFx0XHRyZXQgPSBtdDc5MTVfbWN1X2FwcGx5X2dyb3VwX2NhbChkZXYpO1xuIDg5MTpcdFx0XHRpZiAocmV0KVxuIDg5MjpcdFx0XHRcdHJldHVybiByZXQ7XG4gODkzOlx0XHR9XG4gODk0Olx0XG4gODk1Olx0XHQvKiBCZWFjb24gYW5kIG1nbXQgZnJhbWVzIHNob3VsZCBvY2N1cHkgd2NpZCAwICovXG4gODk2Olx0XHRpZHggPSBtdDc2X3djaWRfYWxsb2MoZGV2LVx1MDAzZW10NzYud2NpZF9tYXNrLCBNVDc5MTVfV1RCTF9TVEEpO1xuIDg5NzpcdFx0aWYgKGlkeClcbiA4OTg6XHRcdFx0cmV0dXJuIC1FTk9TUEM7XG4gODk5Olx0XG4gOTAwOlx0XHRkZXYtXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZC5pZHggPSBpZHg7XG4gOTAxOlx0XHRkZXYtXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZC5od19rZXlfaWR4ID0gLTE7XG4gOTAyOlx0XHRkZXYtXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZC50eF9pbmZvIHw9IE1UX1dDSURfVFhfSU5GT19TRVQ7XG4gOTAzOlx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVx1MDAzZW10NzYud2NpZFtpZHhdLCBcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZCk7XG4gOTA0Olx0XG4gOTA1Olx0XHRyZXR1cm4gMDtcbiA5MDY6XHR9XG4gOTA3Olx0XG4gOTA4Olx0dm9pZCBtdDc5MTVfc2V0X3N0cmVhbV92aHRfdHhiZl9jYXBzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4gOTA5Olx0e1xuIDkxMDpcdFx0aW50IHN0cztcbiA5MTE6XHRcdHUzMiAqY2FwO1xuIDkxMjpcdFxuIDkxMzpcdFx0aWYgKCFwaHktXHUwMDNlbXQ3Ni1cdTAwM2VjYXAuaGFzXzVnaHopXG4gOTE0Olx0XHRcdHJldHVybjtcbiA5MTU6XHRcbiA5MTY6XHRcdHN0cyA9IGh3ZWlnaHQ4KHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNoYWlubWFzayk7XG4gOTE3Olx0XHRjYXAgPSBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzYmFuZF81Zy5zYmFuZC52aHRfY2FwLmNhcDtcbiA5MTg6XHRcbiA5MTk6XHRcdCpjYXAgfD0gSUVFRTgwMjExX1ZIVF9DQVBfU1VfQkVBTUZPUk1FRV9DQVBBQkxFIHxcbiA5MjA6XHRcdFx0SUVFRTgwMjExX1ZIVF9DQVBfTVVfQkVBTUZPUk1FRV9DQVBBQkxFIHxcbiA5MjE6XHRcdFx0RklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9CRUFNRk9STUVFX1NUU19NQVNLLFxuIDkyMjpcdFx0XHRcdCAgIHN0cyAtIDEpO1xuIDkyMzpcdFxuIDkyNDpcdFx0KmNhcCBcdTAwMjY9IH4oSUVFRTgwMjExX1ZIVF9DQVBfU09VTkRJTkdfRElNRU5TSU9OU19NQVNLIHxcbiA5MjU6XHRcdFx0ICBJRUVFODAyMTFfVkhUX0NBUF9TVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxuIDkyNjpcdFx0XHQgIElFRUU4MDIxMV9WSFRfQ0FQX01VX0JFQU1GT1JNRVJfQ0FQQUJMRSk7XG4gOTI3Olx0XG4gOTI4Olx0XHRpZiAoc3RzIFx1MDAzYyAyKVxuIDkyOTpcdFx0XHRyZXR1cm47XG4gOTMwOlx0XG4gOTMxOlx0XHQqY2FwIHw9IElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XG4gOTMyOlx0XHRcdElFRUU4MDIxMV9WSFRfQ0FQX01VX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XG4gOTMzOlx0XHRcdEZJRUxEX1BSRVAoSUVFRTgwMjExX1ZIVF9DQVBfU09VTkRJTkdfRElNRU5TSU9OU19NQVNLLFxuIDkzNDpcdFx0XHRcdCAgIHN0cyAtIDEpO1xuIDkzNTpcdH1cbiA5MzY6XHRcbiA5Mzc6XHRzdGF0aWMgdm9pZFxuIDkzODpcdG10NzkxNV9zZXRfc3RyZWFtX2hlX3R4YmZfY2FwcyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LFxuIDkzOTpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YV9oZV9jYXAgKmhlX2NhcCwgaW50IHZpZilcbiA5NDA6XHR7XG4gOTQxOlx0XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVx1MDAzZWRldjtcbiA5NDI6XHRcdHN0cnVjdCBpZWVlODAyMTFfaGVfY2FwX2VsZW0gKmVsZW0gPSBcdTAwMjZoZV9jYXAtXHUwMDNlaGVfY2FwX2VsZW07XG4gOTQzOlx0XHRpbnQgc3RzID0gaHdlaWdodDgocGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhaW5tYXNrKTtcbiA5NDQ6XHRcdHU4IGMsIHN0c18xNjAgPSBzdHM7XG4gOTQ1Olx0XG4gOTQ2Olx0XHQvKiBDYW4gZG8gMS8yIG9mIFNUUyBpbiAxNjBNaHogbW9kZSBmb3IgbXQ3OTE1ICovXG4gOTQ3Olx0XHRpZiAoaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuIDk0ODpcdFx0XHRpZiAoIWRldi1cdTAwM2VkYmRjX3N1cHBvcnQpXG4gOTQ5Olx0XHRcdFx0c3RzXzE2MCAvPSAyO1xuIDk1MDpcdFx0XHRlbHNlXG4gOTUxOlx0XHRcdFx0c3RzXzE2MCA9IDA7XG4gOTUyOlx0XHR9XG4gOTUzOlx0XG4gOTU0Olx0I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG4gOTU1Olx0XHRpZiAodmlmID09IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQpXG4gOTU2Olx0XHRcdHJldHVybjtcbiA5NTc6XHQjZW5kaWZcbiA5NTg6XHRcbiA5NTk6XHRcdGVsZW0tXHUwMDNlcGh5X2NhcF9pbmZvWzNdIFx1MDAyNj0gfklFRUU4MDIxMV9IRV9QSFlfQ0FQM19TVV9CRUFNRk9STUVSO1xuIDk2MDpcdFx0ZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bNF0gXHUwMDI2PSB+SUVFRTgwMjExX0hFX1BIWV9DQVA0X01VX0JFQU1GT1JNRVI7XG4gOTYxOlx0XG4gOTYyOlx0XHRjID0gSUVFRTgwMjExX0hFX1BIWV9DQVA1X0JFQU1GT1JNRUVfTlVNX1NORF9ESU1fVU5ERVJfODBNSFpfTUFTSztcbiA5NjM6XHRcdGlmIChzdHNfMTYwKVxuIDk2NDpcdFx0XHRjIHw9IElFRUU4MDIxMV9IRV9QSFlfQ0FQNV9CRUFNRk9STUVFX05VTV9TTkRfRElNX0FCT1ZFXzgwTUhaX01BU0s7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NTA2CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMjA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSYjMzk7bSBzZWVpbmcsIGBtdDc5MTVfaW5pdF9oYXJkd2FyZWAgaXMgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50LCBhbmQgaXQgY2FsbHMgYG10NzkxNV9tY3VfaW5pdGAgd2l0aCB0aGUgZGV2aWNlIGNvbnRleHQuICBUaGF0JiMzOTtzIHdoZXJlIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBNQ1UgaW5pdGlhbGl6YXRpb24gaGFwcGVuLiAgTWFrZXMgc2Vuc2UsIHRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZmlyc3QgaGFyZHdhcmUgc3RlcC4KCk5vdywgaWYgYG10NzkxNV9tY3VfaW5pdGAgZmFpbHMg4oCTIGJlY2F1c2UsIHNheSwgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBwcmVzZW50IG9yIHRoZSBoYXJkd2FyZSBkb2VzbiYjMzk7dCByZXNwb25kIGFzIGV4cGVjdGVkIOKAkyB3ZSYjMzk7cmUgZ29pbmcgdG8gZ2V0IGEgZmFpbHVyZSBhdCB0aGF0IHBvaW50LiBUaGlzLCBsb2dpY2FsbHksIHdpbGwgcHJvcGFnYXRlIHVwIHRvIGEgZmFpbHVyZSBpbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAuIEFuZCBoZXJlJiMzOTtzIHRoZSBraWNrZXI6IGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyBjYWxsZWQgKmFmdGVyKiBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIHdpdGhpbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAuIFNvLCBhbnkgZmFpbHVyZSBpbiB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc3RhZ2UgKGxpa2UgdGhlIGZpcm13YXJlIGZhaWxpbmcgdG8gbG9hZCkgKmRlZmluaXRlbHkqIHByZXZlbnRzIHVzIGZyb20gZXZlbiByZWFjaGluZyB0aGUgdGhlcm1hbCBpbml0aWFsaXphdGlvbi4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyB5b3UgY2FuJiMzOTt0IG1hbmFnZSB0aGVybWFsIGNoYXJhY3RlcmlzdGljcyBpZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBwcm9wZXJseSBpbml0aWFsaXplZC4KClNwZWNpZmljYWxseSwgaW4gUUVNVSwgd2l0aG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgYG10NzkxNV9tY3VfaW5pdGAgaXMgKmd1YXJhbnRlZWQqIHRvIGZhaWwuIE5vIGhhcmR3YXJlLCBubyBmaXJtd2FyZSByZXNwb25zZS4gV2UgbmVlZCB0byB2ZXJpZnkgdGhpcyBhc3N1bXB0aW9uIGJ5IGV4YW1pbmluZyBgbXQ3OTE1X21jdV9pbml0YCBmdW5jdGlvbiBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9tY3VfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9ODY2PW10NzkxNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04ODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6ODgxOlx0cmV0ID0gbXQ3OTE1X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODgyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xMjkwPW10NzkxNV9tYWNfcmVzdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTEzNzYtXHQvKiBsb2FkIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxMzc3Olx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xMzc4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzIyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIzMjM6bXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzMjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIzODc9c3RhdGljIGludCBtdDc5MTVfbWN1X3NldF9yZWQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCBlbmFibGVkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDEwOmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDU4Olx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDY1OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDc3Olx0cmV0dXJuIG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ3OC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NDczPWludCBtdDc5MTVfcnVuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3NDppbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDc1OmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NzYtaW50IG10NzkxNV9tY3VfdHd0X2FncnRfdXBkYXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MzAyCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc5MTUgTUNVIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIGBtdDc5MTVfbWN1X2luaXRgIGlzIHRoZSBlbnRyeSBwb2ludCwgbmF0dXJhbGx5LiBBbmQsIGFzIGV4cGVjdGVkLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjYWxsaW5nIGBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgbWFnaWMgbGlrZWx5IGhhcHBlbnMsIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsIHNldHVwIG9mIHRoZSBNQ1UsIEkgcHJlc3VtZS4gTXkgbmV4dCBzdGVwIGlzIGNsZWFybHkgdG8gZGl2ZSBkZWVwZXIgaW50byBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmaXJtd2FyZSBpcyBoYW5kbGVkIGluIG9yZGVyIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhpcyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgZnVuY3Rpb24gaXMgZG9pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNDEwOlx0aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMjQxMTpcdHtcbjI0MTI6XHRcdGludCByZXQ7XG4yNDEzOlx0XG4yNDE0Olx0XHQvKiBmb3JjZSBmaXJtd2FyZSBvcGVyYXRpb24gbW9kZSBpbnRvIG5vcm1hbCBzdGF0ZSxcbjI0MTU6XHRcdCAqIHdoaWNoIHNob3VsZCBiZSBzZXQgYmVmb3JlIGZpcm13YXJlIGRvd25sb2FkIHN0YWdlLlxuMjQxNjpcdFx0ICovXG4yNDE3Olx0XHRtdDc2X3dyKGRldiwgTVRfU1dERUZfTU9ERSwgTVRfU1dERUZfTk9STUFMX01PREUpO1xuMjQxODpcdFxuMjQxOTpcdFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAwKTtcbjI0MjA6XHRcdGlmIChyZXQpXG4yNDIxOlx0XHRcdHJldHVybiByZXQ7XG4yNDIyOlx0XHQvKiBzZXQgZHJpdmVyIG93biBmb3IgYmFuZDEgd2hlbiB0d28gaGlmIGV4aXN0ICovXG4yNDIzOlx0XHRpZiAoZGV2LVx1MDAzZWhpZjIpIHtcbjI0MjQ6XHRcdFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcbjI0MjU6XHRcdFx0aWYgKHJldClcbjI0MjY6XHRcdFx0XHRyZXR1cm4gcmV0O1xuMjQyNzpcdFx0fVxuMjQyODpcdFxuMjQyOTpcdFx0cmV0ID0gbXQ3OTE1X2xvYWRfZmlybXdhcmUoZGV2KTtcbjI0MzA6XHRcdGlmIChyZXQpXG4yNDMxOlx0XHRcdHJldHVybiByZXQ7XG4yNDMyOlx0XG4yNDMzOlx0XHRzZXRfYml0KE1UNzZfU1RBVEVfTUNVX1JVTk5JTkcsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbjI0MzQ6XHRcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV00sIDApO1xuMjQzNTpcdFx0aWYgKHJldClcbjI0MzY6XHRcdFx0cmV0dXJuIHJldDtcbjI0Mzc6XHRcbjI0Mzg6XHRcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV0EsIDApO1xuMjQzOTpcdFx0aWYgKHJldClcbjI0NDA6XHRcdFx0cmV0dXJuIHJldDtcbjI0NDE6XHRcbjI0NDI6XHRcdG10NzZfY29ubmFjX21jdV9kZWxfd3RibF9hbGwoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuMjQ0MzpcdFxuMjQ0NDpcdFx0aWYgKChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuMjQ0NTpcdFx0ICAgICBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB8fFxuMjQ0NjpcdFx0ICAgICFtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSlcbjI0NDc6XHRcdFx0bXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKENBUEFCSUxJVFkpLCAwLCAwLCAwKTtcbjI0NDg6XHRcbjI0NDk6XHRcdHJldCA9IG10NzkxNV9tY3Vfc2V0X213ZHMoZGV2LCAxKTtcbjI0NTA6XHRcdGlmIChyZXQpXG4yNDUxOlx0XHRcdHJldHVybiByZXQ7XG4yNDUyOlx0XG4yNDUzOlx0XHRyZXQgPSBtdDc5MTVfbWN1X3NldF9tdXJ1X2N0cmwoZGV2LCBNVVJVX1NFVF9QTEFURk9STV9UWVBFLFxuMjQ1NDpcdFx0XHRcdFx0ICAgICAgIE1VUlVfUExBVEZPUk1fVFlQRV9QRVJGX0xFVkVMXzIpO1xuMjQ1NTpcdFx0aWYgKHJldClcbjI0NTY6XHRcdFx0cmV0dXJuIHJldDtcbjI0NTc6XHRcbjI0NTg6XHRcdHJldCA9IG10NzkxNV9tY3VfaW5pdF9yeF9haXJ0aW1lKGRldik7XG4yNDU5Olx0XHRpZiAocmV0KVxuMjQ2MDpcdFx0XHRyZXR1cm4gcmV0O1xuMjQ2MTpcdFxuMjQ2MjpcdFx0cmV0dXJuIG10NzkxNV9tY3Vfc2V0X3JlZChkZXYsIG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpO1xuMjQ2MzpcdH1cbjI0NjQ6XHRcbjI0NjU6XHRpbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4yNDY2Olx0e1xuMjQ2NzpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X21jdV9vcHMgbXQ3OTE1X21jdV9vcHMgPSB7XG4yNDY4Olx0XHRcdC5tYXhfcmV0cnkgPSAxLFxuMjQ2OTpcdFx0XHQuaGVhZHJvb20gPSBzaXplb2Yoc3RydWN0IG10NzZfY29ubmFjMl9tY3VfdHhkKSxcbjI0NzA6XHRcdFx0Lm1jdV9za2JfcHJlcGFyZV9tc2cgPSBtdDc2X2Nvbm5hYzJfbWN1X2ZpbGxfbWVzc2FnZSxcbjI0NzE6XHRcdFx0Lm1jdV9za2Jfc2VuZF9tc2cgPSBtdDc5MTVfbWN1X3NlbmRfbWVzc2FnZSxcbjI0NzI6XHRcdFx0Lm1jdV9wYXJzZV9yZXNwb25zZSA9IG10NzkxNV9tY3VfcGFyc2VfcmVzcG9uc2UsXG4yNDczOlx0XHR9O1xuMjQ3NDpcdFxuMjQ3NTpcdFx0ZGV2LVx1MDAzZW10NzYubWN1X29wcyA9IFx1MDAyNm10NzkxNV9tY3Vfb3BzO1xuMjQ3NjpcdFxuMjQ3NzpcdFx0cmV0dXJuIG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShkZXYpO1xuMjQ3ODpcdH1cbjI0Nzk6XHRcbjI0ODA6XHR2b2lkIG10NzkxNV9tY3VfZXhpdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMjQ4MTpcdHtcbjI0ODI6XHRcdG10NzZfY29ubmFjX21jdV9yZXN0YXJ0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjI0ODM6XHRcdGlmIChtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCBmYWxzZSkpIHtcbjI0ODQ6XHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0ZhaWxlZCB0byBleGl0IG1jdVxcblwmIzM0Oyk7XG4yNDg1Olx0XHRcdGdvdG8gb3V0O1xuMjQ4NjpcdFx0fVxuMjQ4NzpcdFxuMjQ4ODpcdFx0bXQ3Nl93cihkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORCgwKSwgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV04pO1xuMjQ4OTpcdFx0aWYgKGRldi1cdTAwM2VoaWYyKVxuMjQ5MDpcdFx0XHRtdDc2X3dyKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKDEpLFxuMjQ5MTpcdFx0XHRcdE1UX1RPUF9MUENSX0hPU1RfRldfT1dOKTtcbjI0OTI6XHRvdXQ6XG4yNDkzOlx0XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYubWN1LnJlc19xKTtcbjI0OTQ6XHR9XG4yNDk1Olx0XG4yNDk2Olx0c3RhdGljIGludFxuMjQ5NzpcdG10NzkxNV9tY3Vfc2V0X3J4X2hkcl90cmFuc19ibGFja2xpc3Qoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgaW50IGJhbmQpXG4yNDk4Olx0e1xuMjQ5OTpcdFx0c3RydWN0IHtcbjI1MDA6XHRcdFx0dTggb3BlcmF0aW9uO1xuMjUwMTpcdFx0XHR1OCBjb3VudDtcbjI1MDI6XHRcdFx0dTggX3JzdlsyXTtcbjI1MDM6XHRcdFx0dTggaW5kZXg7XG4yNTA0Olx0XHRcdHU4IGVuYWJsZTtcbjI1MDU6XHRcdFx0X19sZTE2IGV0eXBlO1xuMjUwNjpcdFx0fSByZXEgPSB7XG4yNTA3Olx0XHRcdC5vcGVyYXRpb24gPSAxLFxuMjUwODpcdFx0XHQuY291bnQgPSAxLFxuMjUwOTpcdFx0XHQuZW5hYmxlID0gMSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyNzgKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqRGl2aW5nIGludG8gdGhlIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAgaXMgY2FsbGluZyBgbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAwKWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB3aHkuIFRoaXMgbG9va3MgbGlrZSBhIHN0YW5kYXJkIGhhcmR3YXJlIGNoZWNrIGZvciBvd25lcnNoaXAsIHByb2JhYmx5IHRvIGVuc3VyZSB0aGVyZSBpc24mIzM5O3QgYW5vdGhlciBkcml2ZXIgb3IgcHJvY2VzcyBhbHJlYWR5IGNvbnRyb2xsaW5nIHRoaXMgcGllY2Ugb2YgaGFyZHdhcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBgbXQ3OTE1X2RyaXZlcl9vd25gIGZ1bmN0aW9uIGlzIHJlYWxseSBkb2luZzsgbXkgc3VzcGljaW9uIGlzIHNvbWUga2luZCBvZiByZWdpc3RlciBwb2xsaW5nIG1lY2hhbmlzbSwgYnV0IEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LiBMZXQmIzM5O3MgZGlnIGludG8gYG10NzkxNV9kcml2ZXJfb3duYCBpdHNlbGYgYW5kIHNlZSB3aGF0JiMzOTtzIHJlYWxseSBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9kcml2ZXJfb3duJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIwNTc9aW50IG10NzkxNV9tY3VfYWRkX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjExMjpzdGF0aWMgaW50IG10NzkxNV9kcml2ZXJfb3duKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGJhbmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTEzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yNDEwPWludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQxOTpcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDIwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDIzLVx0aWYgKGRldi1cdTAwM2VoaWYyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDI0Olx0XHRyZXQgPSBtdDc5MTVfZHJpdmVyX293bihkZXYsIDEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyNS1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwNTYKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhhdCBmaWxlLCBgbXQ3OTE1X2RyaXZlcl9vd25gOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTE1IERyaXZlciBPd25lcnNoaXAqKgoKQWxyaWdodCwgSSYjMzk7bSBkaWdnaW5nIGludG8gYG10NzkxNV9kcml2ZXJfb3duYC4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIGNyaXRpY2FsIHNlY3Rpb24gd2l0aGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyLCBsaWtlbHkgZGVhbGluZyB3aXRoIHJlc291cmNlIGFsbG9jYXRpb24sIGFjY2VzcyBjb250cm9sLCBhbmQgcG90ZW50aWFsbHkgbWVtb3J5IG1hbmFnZW1lbnQgcmVsYXRlZCB0byB0aGUgaGFyZHdhcmUgaXRzZWxmLiBUaGUgJiMzNDtvd24mIzM0OyBzdWdnZXN0cyB3ZSBhcmUgZXhwbG9yaW5nIGhvdyB0aGUgZHJpdmVyIHRha2VzIG93bmVyc2hpcCBvZiBoYXJkd2FyZSByZXNvdXJjZXMgYW5kIHdoYXQgcHJvdGVjdGlvbnMgYXJlIGluIHBsYWNlIHRvIHByZXZlbnQgY29uZmxpY3RzIG9yIHJhY2UgY29uZGl0aW9ucy4KCknigJltIGV4cGVjdGluZyB0byBzZWUgc3RydWN0dXJlcyByZWxhdGVkIHRvIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UsIGludGVycnVwdCBoYW5kbGluZywgYW5kIGxpa2VseSBzb21lIHNvcnQgb2YgbG9jayBvciBzZW1hcGhvcmUgbWVjaGFuaXNtIHRvIG1hbmFnZSBjb25jdXJyZW50IGFjY2Vzcy4gVGhlICYjMzQ7b3duJiMzNDsgbWlnaHQgcmVmZXIgdG8gdGhlIGRyaXZlciYjMzk7cyBvd25lcnNoaXAgb2YgdGhpbmdzIGxpa2UgRE1BIGNoYW5uZWxzLCByZWdpc3RlcnMsIGFuZCBtZW1vcnkgYnVmZmVycyB1c2VkIGZvciB0cmFuc21pdHRpbmcgYW5kIHJlY2VpdmluZyBkYXRhLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb21tZW50cyB0aGF0IGV4cGxhaW4gdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlc2Ugb3duZXJzaGlwIHNjaGVtZXMgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIG9yIGVycm9yIHNjZW5hcmlvcyBpdCBoYW5kbGVzLgoKSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyB0aGF0IHRoaXMgc2VjdGlvbiBpcyBjcnVjaWFsIGZvciBtYWludGFpbmluZyB0aGUgaW50ZWdyaXR5IG9mIHRoZSB3aXJlbGVzcyBpbnRlcmZhY2UsIHByZXZlbnRpbmcgY3Jhc2hlcywgYW5kIGVuc3VyaW5nIHJvYnVzdCBwZXJmb3JtYW5jZS4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGluZ3MgbGlrZSBob3cgaXQgaGFuZGxlcyBtdWx0aXBsZSBhY2Nlc3MgcG9pbnRzLCBzdGF0aW9uIGNvbmN1cnJlbmN5LCBvciBwZXJoYXBzIGhvdyBpdCBkZWFscyB3aXRoIHBvd2VyLXNhdmluZyBzdGF0ZXMgb2YgdGhlIFdpLUZpIGNoaXAuIEFueSByZWZlcmVuY2VzIHRvIERNQSBjb25maWd1cmF0aW9uIGFuZCBidWZmZXIgbWFuYWdlbWVudCBhcmUgZ29pbmcgdG8gYmUgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLiBJJiMzOTtsbCBhbHNvIGJlIGZvY3VzaW5nIG9uIGFueSB1c2Ugb2YgYXRvbWljIG9wZXJhdGlvbnMgb3IgbXV0ZXhlcyBhbmQgY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVpciB1c2FnZSBmb3IgcGVyZm9ybWFuY2UuIEnigJltIGFsc28gZ29pbmcgdG8gYmUgbG9va2luZyBhdCBob3cgYW55IG9mIHRoaXMgcmVsYXRlcyB0byBmaXJtd2FyZSBsb2FkaW5nIGFuZCBleGVjdXRpb24sIHNpbmNlIHRoZSBNVDc5MTUgbGlrZWx5IGhhcyBmaXJtd2FyZSBvbi1jaGlwLgoKTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGluIHRoZXJlLiBJJiMzOTttIHJlYWR5IHRvIGdldCBkb3duIHRvIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjExMiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTEyOlx0c3RhdGljIGludCBtdDc5MTVfZHJpdmVyX293bihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1OCBiYW5kKVxuMjExMzpcdHtcbjIxMTQ6XHRcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTik7XG4yMTE1Olx0XHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLFxuMjExNjpcdFx0XHRcdCAgICBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFULCAwLCA1MDApKSB7XG4yMTE3Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtUaW1lb3V0IGZvciBkcml2ZXIgb3duXFxuXCYjMzQ7KTtcbjIxMTg6XHRcdFx0cmV0dXJuIC1FSU87XG4yMTE5Olx0XHR9XG4yMTIwOlx0XG4yMTIxOlx0XHQvKiBjbGVhciBpcnEgd2hlbiB0aGUgZHJpdmVyIG93biBzdWNjZXNzICovXG4yMTIyOlx0XHRtdDc2X3dyKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EX0lSUV9TVEFUKGJhbmQpLFxuMjEyMzpcdFx0XHRNVF9UT1BfTFBDUl9IT1NUX0JBTkRfU1RBVCk7XG4yMTI0Olx0XG4yMTI1Olx0XHRyZXR1cm4gMDtcbjIxMjY6XHR9XG4yMTI3Olx0XG4yMTI4Olx0c3RhdGljIGludFxuMjEyOTpcdG10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxuMjEzMDpcdHtcbjIxMzE6XHRcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTAwCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBRRU1VIENyYXNoIFNjZW5hcmlvKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc5MTVfZHJpdmVyX293bmAgZnVuY3Rpb24gYW5kIEkgc2VlIGl0JiMzOTtzIHBvbGxpbmcgYSBoYXJkd2FyZSByZWdpc3Rlci4gSW4gUUVNVSwgd2l0aG91dCBhbnkgcmVhbCBoYXJkd2FyZSwgdGhhdCBwb2xsIGlzIGp1c3QgZ29pbmcgdG8gdGltZW91dCBhbmQgaW1tZWRpYXRlbHkgcmV0dXJuIGFuIGAtRUlPYCBlcnJvci4gUmlnaHQsIG1ha2VzIHNlbnNlLiBBbmQgYmVjYXVzZSBvZiB0aGF0IGluaXRpYWwgZmFpbHVyZSwgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAsIGBtdDc5MTVfbWN1X2luaXRgLCBhbmQgdGhlbiBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIGFsbCByZXR1cm4gYC1FSU9gIGluIGEgY2FzY2FkZSBlZmZlY3QuIFVsdGltYXRlbHksIHRoaXMgbGVhZHMgdG8gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGZhaWxpbmcgYmVmb3JlIGl0IGV2ZW4gZ2V0cyB0byBjYWxsIGBtdDc5MTVfdGhlcm1hbF9pbml0YC4gU28sIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyBuZXZlciBldmVuIGdvaW5nIHRvIGJlIHJlYWNoZWQgd2hlbiBydW5uaW5nIGluIFFFTVUgdW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMuCgpCdXQuLi4gaGFuZyBvbiBhIG1pbnV0ZS4gV2hhdCBpZiBzeXprYWxsZXIgaXMgYmVpbmcgdXNlZD8gU3BlY2lmaWNhbGx5LCB3aGF0IGlmIGl0JiMzOTtzIHVzaW5nIGBzeXpfcGNpX2RldmljZV9hZGRgPyBUaGF0IGNhbiBtYXAgZmFrZSBNTUlPIG1lbW9yeS4gTm93LCB0aGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEJlY2F1c2UgYG10NzZfcG9sbF9tc2VjYCBpcyByZWFkaW5nIGZyb20gdGhhdCBwb3RlbnRpYWxseSBmYWtlIE1NSU8gbWVtb3J5LiBJZiB0aGUgZmFrZSBtZW1vcnkgaXMganVzdCB6ZXJvLWluaXRpYWxpemVkLCB0aGF0IG1lYW5zIGBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFUYCwgd2hpY2ggSSYjMzk7bSBwcmV0dHkgc3VyZSBpcyBhIGJpdG1hc2ssICpjb3VsZCogYmUgemVyby4gQW5kIGlmIGl0JiMzOTtzIHplcm8sIGBtdDc2X3BvbGxfbXNlY2AgY291bGQgYWN0dWFsbHkgc3VjY2VlZCEgVGhpcyBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGEgc2NlbmFyaW8gd2hlcmUgdGhlIGluaXRpYWxpemF0aW9uIGNvbnRpbnVlcyBldmVuIHRob3VnaCBpdCBzaG91bGQgaGF2ZSBmYWlsZWQsIGFuZCB0aGF0IGNvdWxkIHRyaWdnZXIgYSBjcmFzaCBkb3duIHRoZSBsaW5lLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gY2hlY2sgd2hhdCBgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVGAgYWN0dWFsbHkgaG9sZHMuIFRoaXMgd2FycmFudHMgYSBjbG9zZXIgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTEyPXN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTE1LVx0aWYgKCFtdDc2X3BvbGxfbXNlYyhkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORChiYW5kKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxMTY6XHRcdFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMTctXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtUaW1lb3V0IGZvciBkcml2ZXIgb3duXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdzLmg9NTA9ZW51bSBvZmZzX3JldiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oLTExMDEtI2RlZmluZSBNVF9UT1BfTFBDUl9IT1NUX0RSVl9PV05cdEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcmVncy5oOjExMDI6I2RlZmluZSBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFUXHRCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3JlZ3MuaC0xMTAzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjAyMQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERyaXZlciYjMzk7cyBJbml0aWFsaXphdGlvbiBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciB0aGUgbXQ3OTE1IGRyaXZlciwgYW5kIHNvbWV0aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQuIElmIHRoaXMgJiMzNDtmYWtlIE1NSU8gbWVtb3J5JiMzNDsgaXMgaW5pdGlhbGl6ZWQgdG8gemVybywgdGhlbiB0aGUgYE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVRgIGJpdCwgd2hpY2ggaXMgYml0IDIsIHdpbGwgYWxzbyBiZSB6ZXJvLiBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBgbXQ3Nl9wb2xsX21zZWNgIGlzIGJlaW5nIHVzZWQsIHdoaWNoIGlzIGVzc2VudGlhbGx5IGNoZWNraW5nIGEgY29uZGl0aW9uIHVzaW5nIGEgcmVhZC1tb2RpZnktY29tcGFyZSBvcGVyYXRpb24uIFNwZWNpZmljYWxseSwgaXQgdGVzdHMgd2hldGhlciB0aGUgcmVzdWx0IG9mIGAocmVhZGwoYWRkcikgJmFtcDsgbWFzaykgPT0gdmFsYC4gSW4gb3VyIGNhc2UsIHRoZSBgbWFza2AgaXMgdGhhdCBgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVGAgYml0LCBhbmQgdGhlIGRlc2lyZWQgYHZhbGAgaXMgemVyby4KClRoZXJlZm9yZSwgaWYgdGhpcyBmYWtlIE1NSU8gaXMgemVybywgdGhlbiB3ZSYjMzk7cmUgcGVyZm9ybWluZyBhIGJpdHdpc2UgQU5EIGJldHdlZW4gemVybyBhbmQgYml0IDIsIHdoaWNoIHdpbGwgaW5ldml0YWJseSByZXN1bHQgaW4gemVyby4gQ29uc2VxdWVudGx5LCB0aGUgY2hlY2sgYCgwICZhbXA7IEJJVCgyKSkgPT0gMGAgaXMgdHJ1ZSEgSXQgKmFsd2F5cyogc3VjY2VlZHMuIFRoaXMgY291bGQgbWVhbiBgbXQ3OTE1X2RyaXZlcl9vd25gIG1pZ2h0IHRoaW5rIGl0JiMzOTtzIHN1Y2Nlc3NmdWxseSBjbGFpbWVkIG93bmVyc2hpcCB3aGVuIGluIHJlYWxpdHksIHNvbWV0aGluZyBpcyBmdW5kYW1lbnRhbGx5IHdyb25nIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gVGhhdCYjMzk7cyBhIGh1Z2UgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkhIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGltcGxpY2F0aW9uIG9mIHRoaXMuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB3aGF0IGhhcHBlbnMgaW4gYG10NzkxNV9sb2FkX2Zpcm13YXJlKGRldilgLiBMZXQmIzM5O3Mgc2VlIGlmIHRoYXQgYWxzbyBhc3N1bWVzIGV2ZXJ5dGhpbmcgaXMgZmluZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfbG9hZF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTI5PW10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTQyOnN0YXRpYyBpbnQgbXQ3OTE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxNDMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI0MTA9aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDI5Olx0cmV0ID0gbXQ3OTE1X2xvYWRfZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MzAtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjkwMwoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYG10NzkxNV9sb2FkX2Zpcm13YXJlYCBmdW5jdGlvbi4gSSBzZWUgdGhpcyBhIGxvdCwgZXNwZWNpYWxseSB3aXRoIG5ld2VyIFdpRmkgY2hpcHNldHM7IGZpcm13YXJlIGxvYWRpbmcgaXMgYWx3YXlzIGEgY3JpdGljYWwgcGllY2UuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBoaWdoLWxldmVsIGFyY2hpdGVjdHVyZTogaXMgdGhpcyBhIHNpbXBsZSB0cmFuc2ZlciwgYSBtb3JlIGNvbXBsZXggYm9vdCBwcm9jZXNzLCBvciBzb21ldGhpbmcgaW4gYmV0d2Vlbj8gV2hhdCBraW5kIG9mIG1lbW9yeSBhY2Nlc3MgYXJlIHdlIHRhbGtpbmcgYWJvdXQ/CgpOZXh0LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgb2J2aW91czogZXJyb3IgaGFuZGxpbmcuIEZpcm13YXJlIGxvYWRpbmcgaXMgbm90b3Jpb3VzbHkgc2Vuc2l0aXZlLiBJIHdhbnQgdG8gc2VlIGhvdyByb2J1c3QgdGhlIGVycm9yIGNoZWNrcyBhcmUsIHdoYXQga2luZCBvZiByZXRyeSBtZWNoYW5pc21zIGFyZSBpbiBwbGFjZSAoaWYgYW55KSwgYW5kIGhvdyBpdCBkZWFscyB3aXRoIGNvbW1vbiBmYWlsdXJlIHNjZW5hcmlvcyBsaWtlIGNoZWNrc3VtIGVycm9ycyBvciBjb21tdW5pY2F0aW9uIHRpbWVvdXRzLiBBcmUgdGhlcmUgZGV0YWlsZWQgZXJyb3IgY29kZXM/IEFyZSB0aGV5IG1lYW5pbmdmdWw/CgpUaGVuLCBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgb3IgaW5pdGlhbGl6YXRpb24gc3RlcHMgYmVmb3JlIHRoZSBhY3R1YWwgZmlybXdhcmUgZG93bmxvYWQuIEFyZSB0aGVyZSBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgcmVnaXN0ZXIgd3JpdGVzIGludm9sdmVkPyBBbnkgaW5pdGlhbCBwb3dlci11cCBzZXF1ZW5jZXMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkZXZpY2Ugc3RhdGUgYmVmb3JlIHRoZSBmaXJtd2FyZSB0YWtlcyBvdmVyLgoKSSYjMzk7bGwgYmUgYXNzZXNzaW5nIHRoZSBtZXRob2Qgb2YgZGF0YSB0cmFuc2ZlciwgaXMgdGhpcyBETUEsIG9yIFBJTz8gSG93IGlzIHRoZSBjb21tdW5pY2F0aW9uIHByb3RvY29sIGltcGxlbWVudGVkPyBJcyB0aGlzIGEgc3RhbmRhcmQgaW50ZXJmYWNlLCBvciBhIHByb3ByaWV0YXJ5IG9uZT8gVW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyBkYXRhIHRyYW5zZmVyIG1lY2hhbmlzbSB3aWxsIGJlIGNyaXRpY2FsIGZvciBkZWJ1Z2dpbmcgcG90ZW50aWFsIGlzc3Vlcy4KCkZpbmFsbHksIEkmIzM5O2xsIGJlIGNoZWNraW5nIGZvciBhbnkgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMuIEFyZSB0aGVyZSBhbnkgY2hlY2tzIGZvciBzaWduZWQgZmlybXdhcmU/IEFueSBhbnRpLXJvbGxiYWNrIG1lY2hhbmlzbXM/IFNlY3VyZSBib290IGNvbnNpZGVyYXRpb25zPyBGaXJtd2FyZSB1cGRhdGVzIGNhbiBiZSBhIHByaW1lIGF0dGFjayB2ZWN0b3IuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyB0aGF0LiBCYXNpY2FsbHksIEkgd2FudCB0byBzZWUgaWYgdGhpcyBpcyByb2J1c3QgYW5kIHNlY3VyZSwgb3IgaWYgaXQmIzM5O3MgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhcmVhcyB3aGVyZSBJIGNhbiBpbnRyb2R1Y2UgYSBmdXp6aW5nIGF0dGFjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxNDIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIxNDI6XHRzdGF0aWMgaW50IG10NzkxNV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4yMTQzOlx0e1xuMjE0NDpcdFx0aW50IHJldDtcbjIxNDU6XHRcbjIxNDY6XHRcdC8qIFJlbGVhc2UgU2VtYXBob3JlIGlmIHRha2VuIGJ5IHByZXZpb3VzIGZhaWxlZCBhdHRlbXB0ICovXG4yMTQ3Olx0XHRyZXQgPSBtdDc2X2Nvbm5hY19tY3VfcGF0Y2hfc2VtX2N0cmwoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIGZhbHNlKTtcbjIxNDg6XHRcdGlmIChyZXQgIT0gUEFUQ0hfUkVMX1NFTV9TVUNDRVNTKSB7XG4yMTQ5Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtDb3VsZCBub3QgcmVsZWFzZSBzZW1hcGhvcmVcXG5cJiMzNDspO1xuMjE1MDpcdFx0XHQvKiBDb250aW51ZSBhbnl3YXlzICovXG4yMTUxOlx0XHR9XG4yMTUyOlx0XG4yMTUzOlx0XHQvKiBBbHdheXMgcmVzdGFydCBNQ1UgZmlybXdhcmUgKi9cbjIxNTQ6XHRcdG10NzZfY29ubmFjX21jdV9yZXN0YXJ0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjIxNTU6XHRcbjIxNTY6XHRcdC8qIENoZWNrIGlmIE1DVSBpcyByZWFkeSAqL1xuMjE1NzpcdFx0cmV0ID0gbXQ3OTE1X2Zpcm13YXJlX3N0YXRlKGRldiwgZmFsc2UpO1xuMjE1ODpcdFx0aWYgKHJldCkge1xuMjE1OTpcdFx0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7RmlybXdhcmUgZGlkIG5vdCBlbnRlciBkb3dubG9hZCBzdGF0ZVxcblwmIzM0Oyk7XG4yMTYwOlx0XHRcdHJldHVybiByZXQ7XG4yMTYxOlx0XHR9XG4yMTYyOlx0XG4yMTYzOlx0XHRyZXQgPSBtdDc2X2Nvbm5hYzJfbG9hZF9wYXRjaChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgZndfbmFtZV92YXIoZGV2LCBST01fUEFUQ0gpKTtcbjIxNjQ6XHRcdGlmIChyZXQpXG4yMTY1Olx0XHRcdHJldHVybiByZXQ7XG4yMTY2Olx0XG4yMTY3Olx0XHRyZXQgPSBtdDc2X2Nvbm5hYzJfbG9hZF9yYW0oXHUwMDI2ZGV2LVx1MDAzZW10NzYsIGZ3X25hbWVfdmFyKGRldiwgRklSTVdBUkVfV00pLFxuMjE2ODpcdFx0XHRcdFx0ICAgIGZ3X25hbWUoZGV2LCBGSVJNV0FSRV9XQSkpO1xuMjE2OTpcdFx0aWYgKHJldClcbjIxNzA6XHRcdFx0cmV0dXJuIHJldDtcbjIxNzE6XHRcbjIxNzI6XHRcdHJldCA9IG10NzkxNV9maXJtd2FyZV9zdGF0ZShkZXYsIHRydWUpO1xuMjE3MzpcdFx0aWYgKHJldClcbjIxNzQ6XHRcdFx0cmV0dXJuIHJldDtcbjIxNzU6XHRcbjIxNzY6XHRcdG10NzZfcXVldWVfdHhfY2xlYW51cChkZXYsIGRldi1cdTAwM2VtdDc2LnFfbWN1W01UX01DVVFfRldETF0sIGZhbHNlKTtcbjIxNzc6XHRcbjIxNzg6XHRcdGRldl9kYmcoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGaXJtd2FyZSBpbml0IGRvbmVcXG5cJiMzNDspO1xuMjE3OTpcdFxuMjE4MDpcdFx0cmV0dXJuIDA7XG4yMTgxOlx0fVxuMjE4MjpcdFxuMjE4MzpcdGludCBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3Qoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggdHlwZSwgdTggY3RybClcbjIxODQ6XHR7XG4yMTg1Olx0XHRzdHJ1Y3Qge1xuMjE4NjpcdFx0XHR1OCBjdHJsX3ZhbDtcbjIxODc6XHRcdFx0dTggcGFkWzNdO1xuMjE4ODpcdFx0fSBkYXRhID0ge1xuMjE4OTpcdFx0XHQuY3RybF92YWwgPSBjdHJsXG4yMTkwOlx0XHR9O1xuMjE5MTpcdFxuMjE5MjpcdFx0aWYgKHR5cGUgPT0gTUNVX0ZXX0xPR19XQSlcbjIxOTM6XHRcdFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV0FfRVhUX0NNRChGV19MT0dfMl9IT1NUKSxcbjIxOTQ6XHRcdFx0XHRcdFx0IFx1MDAyNmRhdGEsIHNpemVvZihkYXRhKSwgdHJ1ZSk7XG4yMTk1Olx0XG4yMTk2Olx0XHRyZXR1cm4gbXQ3Nl9tY3Vfc2VuZF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKEZXX0xPR18yX0hPU1QpLCBcdTAwMjZkYXRhLFxuMjE5NzpcdFx0XHRcdFx0IHNpemVvZihkYXRhKSwgdHJ1ZSk7XG4yMTk4Olx0fVxuMjE5OTpcdFxuMjIwMDpcdGludCBtdDc5MTVfbWN1X2Z3X2RiZ19jdHJsKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHUzMiBtb2R1bGUsIHU4IGxldmVsKVxuMjIwMTpcdHtcbjIyMDI6XHRcdHN0cnVjdCB7XG4yMjAzOlx0XHRcdHU4IHZlcjtcbjIyMDQ6XHRcdFx0dTggcGFkO1xuMjIwNTpcdFx0XHRfX2xlMTYgbGVuO1xuMjIwNjpcdFx0XHR1OCBsZXZlbDtcbjIyMDc6XHRcdFx0dTggcnN2WzNdO1xuMjIwODpcdFx0XHRfX2xlMzIgbW9kdWxlX2lkeDtcbjIyMDk6XHRcdH0gZGF0YSA9IHtcbjIyMTA6XHRcdFx0Lm1vZHVsZV9pZHggPSBjcHVfdG9fbGUzMihtb2R1bGUpLFxuMjIxMTpcdFx0XHQubGV2ZWwgPSBsZXZlbCxcbjIyMTI6XHRcdH07XG4yMjEzOlx0XG4yMjE0Olx0XHRyZXR1cm4gbXQ3Nl9tY3Vfc2VuZF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKEZXX0RCR19DVFJMKSwgXHUwMDI2ZGF0YSxcbjIyMTU6XHRcdFx0XHRcdCBzaXplb2YoZGF0YSksIGZhbHNlKTtcbjIyMTY6XHR9XG4yMjE3Olx0XG4yMjE4Olx0aW50IG10NzkxNV9tY3VfbXVydV9kZWJ1Z19zZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCBlbmFibGVkKVxuMjIxOTpcdHtcbjIyMjA6XHRcdHN0cnVjdCB7XG4yMjIxOlx0XHRcdF9fbGUzMiBjbWQ7XG4yMjIyOlx0XHRcdHU4IGVuYWJsZTtcbjIyMjM6XHRcdH0gZGF0YSA9IHtcbjIyMjQ6XHRcdFx0LmNtZCA9IGNwdV90b19sZTMyKE1VUlVfU0VUX1RYQ19UWF9TVEFUU19FTiksXG4yMjI1Olx0XHRcdC5lbmFibGUgPSBlbmFibGVkLFxuMjIyNjpcdFx0fTtcbjIyMjc6XHRcbjIyMjg6XHRcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX0VYVF9DTUQoTVVSVV9DVFJMKSwgXHUwMDI2ZGF0YSxcbjIyMjk6XHRcdFx0XHRcdHNpemVvZihkYXRhKSwgZmFsc2UpO1xuMjIzMDpcdH1cbjIyMzE6XHRcbjIyMzI6XHRpbnQgbXQ3OTE1X21jdV9tdXJ1X2RlYnVnX2dldChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuMjIzMzpcdHtcbjIyMzQ6XHRcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuMjIzNTpcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbjIyMzY6XHRcdHN0cnVjdCBtdDc5MTVfbWN1X211cnVfc3RhdHMgKm11X3N0YXRzO1xuMjIzNzpcdFx0aW50IHJldDtcbjIyMzg6XHRcbjIyMzk6XHRcdHN0cnVjdCB7XG4yMjQwOlx0XHRcdF9fbGUzMiBjbWQ7XG4yMjQxOlx0XHRcdHU4IGJhbmRfaWR4O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDkwMQoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipGaXJtd2FyZSBMb2FkaW5nIFNlcXVlbmNlIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBgbXQ3OTE1X2xvYWRfZmlybXdhcmVgIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgZ2V0dGluZyB0aGUgZmlybXdhcmUgb250byB0aGUgTVQ3OTE1IGRldmljZS4gSSBzZWUgdGhhdCBpdCBraWNrcyB0aGluZ3Mgb2ZmIHdpdGggYSBjYWxsIHRvIGBtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCBmYWxzZSlgLiBOYXR1cmFsbHksIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGBtdDc5MTVfZmlybXdhcmVfc3RhdGVgIGZ1bmN0aW9uICpkb2VzKi4gSSBuZWVkIHRvIHNlZSBpZiBpdCBzZXRzIHVwIGFueSBwcmVjb25kaXRpb25zLCBpbml0aWFsaXplcyBhbnkgaGFyZHdhcmUgcmVnaXN0ZXJzLCBvciBtYXliZSBldmVuIGF0dGVtcHRzIGEgYmFzaWMgaGFuZHNoYWtlIHdpdGggdGhlIGRldmljZSBiZWZvcmUgdGhlIG1vcmUgaW52b2x2ZWQgbG9hZGluZyBwcm9jZXNzIHN0YXJ0cy4gVGhlIGBmYWxzZWAgYXJndW1lbnQgaXMgaW50ZXJlc3RpbmcgdG9vOyBpdCYjMzk7cyBsaWtlbHkgaW5kaWNhdGluZyBhIHBhcnRpY3VsYXIgc3RhdGUgdG8gYmUgc2V0IGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGZ1bmN0aW9uLiBJIHdvdWxkIGJlIGN1cmlvdXMgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgZW50YWlscy4gVGhpcyB3aWxsIGRlZmluaXRlbHkgZ2l2ZSBtZSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgZHVyaW5nIHRoZSBmaXJtd2FyZSBsb2FkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEyOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTI4Olx0c3RhdGljIGludFxuMjEyOTpcdG10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxuMjEzMDpcdHtcbjIxMzE6XHRcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXG4yMTMyOlx0XHRcdFx0ICAgICAgIHdhID8gRldfU1RBVEVfUkRZIDogRldfU1RBVEVfRldfRE9XTkxPQUQpO1xuMjEzMzpcdFxuMjEzNDpcdFx0aWYgKCFtdDc2X3BvbGxfbXNlYyhkZXYsIE1UX1RPUF9NSVNDLCBNVF9UT1BfTUlTQ19GV19TVEFURSxcbjIxMzU6XHRcdFx0XHQgICAgc3RhdGUsIDEwMDApKSB7XG4yMTM2Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtUaW1lb3V0IGZvciBpbml0aWFsaXppbmcgZmlybXdhcmVcXG5cJiMzNDspO1xuMjEzNzpcdFx0XHRyZXR1cm4gLUVJTztcbjIxMzg6XHRcdH1cbjIxMzk6XHRcdHJldHVybiAwO1xuMjE0MDpcdH1cbjIxNDE6XHRcbjIxNDI6XHRzdGF0aWMgaW50IG10NzkxNV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDgzCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIHRoZSBGaXJtd2FyZSBEb3dubG9hZCBTdGF0ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSBgbXQ3OTE1X2Zpcm13YXJlX3N0YXRlYCBmdW5jdGlvbiBkZXRlcm1pbmVzIGlmIHRoZSBmaXJtd2FyZSBoYXMgYmVlbiBkb3dubG9hZGVkLiBUaGUgY29kZSBpcyBwZXJpb2RpY2FsbHkgY2hlY2tpbmcgdGhlIGBNVF9UT1BfTUlTQ2AgcmVnaXN0ZXIsIHNwZWNpZmljYWxseSB0aGUgYE1UX1RPUF9NSVNDX0ZXX1NUQVRFYCBmaWVsZCB3aXRoaW4gaXQuIEl0JiMzOTtzIHN1cHBvc2VkIHRvIGJlIGNvbXBhcmluZyB0aGlzIHZhbHVlIHRvIGEgdGFyZ2V0IGBzdGF0ZWAsIGFuZCBpZGVhbGx5LCB0aGlzIHdvdWxkIHRlbGwgdXMgaWYgdGhlIGRvd25sb2FkIGlzIGNvbXBsZXRlLgoKSG93ZXZlciwgdGhlcmUmIzM5O3MgYSBwb3RlbnRpYWwgZ290Y2hhIGhlcmUuIFRoZSBjb2RlIG1lbnRpb25zIHRoYXQgaWYgdGhlIGZha2UgTU1JTyBtZW1vcnkgcmVnaW9uIGlzIHNldCB0byB6ZXJvLCB0aGVuIHRoZSBgTVRfVE9QX01JU0NfRldfU1RBVEVgIHdpbGwgYWxzbyBldmFsdWF0ZSB0byB6ZXJvLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgd2UgbmVlZCB0byBjb25zaWRlciB3aGF0IHRoZSBleHBlY3RlZCB2YWx1ZSwgdGhlIHRhcmdldCBzdGF0ZSwgYWN0dWFsbHkgKmlzKi4gVGhlIGNvZGUgaXMgZXhwbGljaXRseSBjb21wYXJpbmcgdG8gYHN0YXRlYCwgd2hpY2ggaXMgZGVmaW5lZCB1c2luZyBgRklFTERfUFJFUGAsIHNwZWNpZmljYWxseSB1c2luZyBgRldfU1RBVEVfRldfRE9XTkxPQURgLiBTbywgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBGV19TVEFURV9GV19ET1dOTE9BRGAgaXMgd2hhdCB3ZSAqZXhwZWN0KiB0byBzZWUgZHVyaW5nIHRoZSBmaXJtd2FyZSBkb3dubG9hZCBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtGV19TVEFURV9GV19ET1dOTE9BRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTI5PW10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzEtXHR1MzIgc3RhdGUgPSBGSUVMRF9QUkVQKE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjEzMjpcdFx0XHQgICAgICAgd2EgPyBGV19TVEFURV9SRFkgOiBGV19TVEFURV9GV19ET1dOTE9BRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjA3NAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBGV19TVEFURV9GV19ET1dOTE9BRGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgcmlnaHQgaW4uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgYEZXX1NUQVRFX0ZXX0RPV05MT0FEYCBkZWZpbml0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mICpwcmVjaXNlbHkqIHdoYXQgdGhpcyBzdGF0ZSBzaWduaWZpZXMgd2l0aGluIHRoZSBmaXJtd2FyZSBkb3dubG9hZCBwcm9jZXNzLiBJIG5lZWQgdG8gYmUgc3VyZSBJIGhhdmUgYSBjbGVhciBhbmQgYWNjdXJhdGUgbWVudGFsIG1vZGVsLiBXaGF0IGFzc3VtcHRpb25zIGFyZSBiYWtlZCBpbnRvIHRoaXMgc3RhdGU/IEFyZSB0aGVyZSBhbnkgc3VidGxlIG51YW5jZXMgaW4gaXRzIGltcGxlbWVudGF0aW9uIHRoYXQgSSBtaWdodCBoYXZlIG92ZXJsb29rZWQgZHVyaW5nIHRoZSBpbml0aWFsIHJldmlldz8gQXJlIHRoZXJlIHBvdGVudGlhbCBhcmVhcyBvZiB2dWxuZXJhYmlsaXR5IEkgY2FuIHF1aWNrbHkgaWRlbnRpZnkgdGhyb3VnaCBhIGRlZmluaXRpb24gcmV2aWV3LiBJIGhhdmUgdG8gbWFrZSBzdXJlIG15IHVuZGVyc3RhbmRpbmcgbWF0Y2hlcyB0aGUgaW1wbGVtZW50YXRpb24uIFNvLCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGRldGFpbHMsIGFuZCBtYWtlIHN1cmUgbXkgbWluZCBpcyB3b3JraW5nIHdpdGggdGhpcyBzcGVjaWZpYyBjb250ZXh0IGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RldfU1RBVEVfRldfRE9XTkxPQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjEyOT1tdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMxLVx0dTMyIHN0YXRlID0gRklFTERfUFJFUChNVF9UT1BfTUlTQ19GV19TVEFURSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxMzI6XHRcdFx0ICAgICAgIHdhID8gRldfU1RBVEVfUkRZIDogRldfU1RBVEVfRldfRE9XTkxPQUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjEzMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY1MDYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgRmlybXdhcmUgRG93bmxvYWQgU3RhdGVzKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGZpcm13YXJlIGRvd25sb2FkIHByb2Nlc3MgaXMgYmVoYXZpbmcsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBtdDc2YCBhbmQgYG10NzkxNWAgZHJpdmVycy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBgRldfU1RBVEVfRldfRE9XTkxPQURgIHN0YXRlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aGVuIHRoYXQgc3BlY2lmaWMgc3RhdGUgaXMgYWN0aXZlLiBXaGF0IHRyaWdnZXJzIGl0PyBXaGF0IGFjdGlvbnMgZG9lcyBpdCBkaWN0YXRlPyBXaGF0IGFyZSB0aGUgcG9zc2libGUgZXJyb3IgY29uZGl0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdGF0ZSwgYW5kIGhvdyBhcmUgdGhleSBoYW5kbGVkPyBJdCYjMzk7cyBhbGwgYWJvdXQgZW5zdXJpbmcgdGhlIGZpcm13YXJlIHVwZGF0ZXMgYXJlIHJvYnVzdCBhbmQgcmVsaWFibGUsIHNvIGdldHRpbmcgYSBzb2xpZCBncmFzcCBvbiB0aGF0IHBhcnRpY3VsYXIgZmxhZyBpcyBjcnVjaWFsLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RldfU1RBVEVfRldfRE9XTkxPQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xNDMzPXN0YXRpYyBpbnQgbXQ3NjE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNDM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM6MTQ0MDpcdGlmICh2YWwgIT0gRldfU1RBVEVfRldfRE9XTkxPQUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NDEtXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGaXJtd2FyZSBpcyBub3QgcmVhZHkgZm9yIGRvd25sb2FkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xNDYzPXN0YXRpYyBpbnQgbXQ3NjIyX2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNDcwLVx0dmFsID0gbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9UT1BfT0ZGX1JTViwgTVRfVE9QX09GRl9SU1ZfRldfU1RBVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM6MTQ3MTpcdGlmICh2YWwgIT0gRldfU1RBVEVfRldfRE9XTkxPQUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NzItXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGaXJtd2FyZSBpcyBub3QgcmVhZHkgZm9yIGRvd25sb2FkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oPTExNDQ9ZW51bSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oLTExNDUtXHRGV19TVEFURV9JTklUSUFMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaDoxMTQ2Olx0RldfU1RBVEVfRldfRE9XTkxPQUQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oLTExNDctXHRGV19TVEFURV9OT1JNQUxfT1BFUkFUSU9OLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIxMjk9bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjEzMS1cdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTMyOlx0XHRcdCAgICAgICB3YSA/IEZXX1NUQVRFX1JEWSA6IEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9MzU3Nz1zdGF0aWMgaW50IG10Nzk5Nl9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4Mi1cdC8qIG1ha2Ugc3VyZSBmdyBpcyBkb3dubG9hZCBzdGF0ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzU4MzpcdGlmIChtdDc5OTZfZmlybXdhcmVfc3RhdGUoZGV2LCBGV19TVEFURV9GV19ET1dOTE9BRCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM1ODQtXHRcdC8qIHJlc3RhcnQgZmlybXdhcmUgb25jZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4NS1cdFx0bXQ3OTk2X21jdV9yZXN0YXJ0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM1ODY6XHRcdHJldCA9IG10Nzk5Nl9maXJtd2FyZV9zdGF0ZShkZXYsIEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM1ODctXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz0zNzcyPXZvaWQgbXQ3OTk2X21jdV9leGl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzc3NC1cdG10Nzk5Nl9tY3VfcmVzdGFydChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzozNzc1Olx0aWYgKG10Nzk5Nl9maXJtd2FyZV9zdGF0ZShkZXYsIEZXX1NUQVRFX0ZXX0RPV05MT0FEKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzc3Ni1cdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0ZhaWxlZCB0byBleGl0IG1jdVxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MDMwCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNjU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVW5yZWFjaGFiaWxpdHkgb2YgbXQ3OTE1X3RoZXJtYWxfaW5pdCBpbiBRRU1VKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGlmIGBGV19TVEFURV9GV19ET1dOTE9BRGAgaXMgc2V0IHRvIDEsIHRoZW4gdGhlIGBGSUVMRF9QUkVQYCBtYWNybyB3aWxsIHByb2R1Y2UgYSBub24temVybyB2YWx1ZS4gSG93ZXZlciwgdGhlIGNyaXRpY2FsIGlzc3VlIHNlZW1zIHRvIGJlIHdpdGggdGhlIGZha2UgTU1JTyBtZW1vcnkgaW4gUUVNVS4gSWYgdGhhdCBtZW1vcnkgaXMgaW5pdGlhbGl6ZWQgdG8gMCwgdGhlIGBtdDc2X3BvbGxfbXNlY2AgZnVuY3Rpb24gd2lsbCBpbmV2aXRhYmx5IHRpbWVvdXQgYmVjYXVzZSBpdCYjMzk7cyBsb29raW5nIGZvciBhIG5vbi16ZXJvIHN0YXRlLgoKVGhpcyB0aW1lb3V0IGxlYWRzIHRvIGEgY2FzY2FkaW5nIHNlcmllcyBvZiBmYWlsdXJlczogYG10NzkxNV9maXJtd2FyZV9zdGF0ZWAgcmV0dXJucyBgLUVJT2AsIGZvbGxvd2VkIGJ5IGBtdDc5MTVfbG9hZF9maXJtd2FyZWAsIGBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmVgLCBgbXQ3OTE1X21jdV9pbml0YCwgYG10NzkxNV9pbml0X2hhcmR3YXJlYCwgYW5kIGZpbmFsbHkgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGFsbCBmYWlsaW5nLiBUaGUgZmFpbHVyZSBpbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgaXMgdGhlIGtleSDigJMgaXQgcHJldmVudHMgdGhlIGNhbGwgdG8gYG10NzkxNV90aGVybWFsX2luaXRgLiBUaHVzLCBJIGNhbiBjb25maWRlbnRseSBzdGF0ZSB0aGF0IGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyB1bnJlYWNoYWJsZSBpbiB0aGlzIHNjZW5hcmlvLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIGFsdGVybmF0aXZlOiB3aGF0IGlmIHRoZSBmYWtlIE1NSU8gKmlzbiYjMzk7dCogemVybz8gU3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpX2RldmljZV9hZGRgIGRvZXNuJiMzOTt0IGdpdmUgdXMgZHluYW1pYyBjb250cm9sIG92ZXIgTU1JTyByZWFkcy4gU3VyZSwgaXQgY2FuIG1hcCBtZW1vcnksIGFuZCB3ZSBjYW4gKndyaXRlKiB0byBpdCwgYnV0IHRoZSBkcml2ZXIgKnJlYWRzKiBmcm9tIGl0LiBJZiB0aGUgZHJpdmVyIHJlYWRzIGJlZm9yZSBhbnkgd3JpdGVzIGZyb20gU3l6a2FsbGVyIG9jY3VyLCB3ZSYjMzk7cmUgYmFjayB0byB6ZXJvLiBTeXprYWxsZXIgY2FuIHdyaXRlIHZhbHVlcyB0byB0aGUgZmFrZSBNTUlPIG1lbW9yeSwgYnV0IGl0IGRvZXNuJiMzOTt0IGtub3cgd2hpY2ggYWRkcmVzcyB0byB3cml0ZSB3aGF0IHRvIHBhc3MgdGhlIHBvbGxpbmcuIEl0JiMzOTtzIGltcHJvYmFibGUgdGhhdCBTeXprYWxsZXIgY291bGQgbWFuYWdlIHRvIHNhdGlzZnkgYWxsIHRoZSBkcml2ZXImIzM5O3MgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gY2hlY2tzLCBmaXJtd2FyZSBzdGF0ZSBjaGVja3MsIGFuZCBldmVyeXRoaW5nIGVsc2UsIGp1c3QgYnkgcmFuZG9tIHdyaXRlcy4KCkZ1cnRoZXJtb3JlLCBgbXQ3Nl9jb25uYWMyX2xvYWRfcGF0Y2hgIGFuZCBgbXQ3Nl9jb25uYWMyX2xvYWRfcmFtYCBkZW1hbmQgdGhlIHByZXNlbmNlIG9mIGxlZ2l0aW1hdGUgZmlybXdhcmUgZmlsZXMuIFdoaWxlIFN5emthbGxlciBtaWdodCBoYXZlIHNvbWUgZHVtbXkgZmlsZXMsIHRoZXkgYXJlIHVubGlrZWx5IHRvIGJlIHZhbGlkIGVub3VnaCB0byByZXNwb25kIHRvIE1DVSBjb21tYW5kcywgZXNwZWNpYWxseSB3aGVuIGNvbnNpZGVyaW5nIGFsbCB0aGUgc3RhdGVzIHRoZSBmaXJtd2FyZSBoYXMgdG8gYmUuCgpBZnRlciB0aGUgZmlybXdhcmUgaXMgbG9hZGVkLCBgbXQ3OTE1X2Zpcm13YXJlX3N0YXRlKGRldiwgdHJ1ZSlgIGNoZWNrcyBmb3IgYEZXX1NUQVRFX1JEWWAgKHdoaWNoIGlzIDMpLiBBc3N1bWluZyB3ZSBzb21laG93IGdldCBwYXN0IHRoYXQsIHRoZSBkcml2ZXIgc3RhcnRzIHNlbmRpbmcgTUNVIGNvbW1hbmRzIHZpYSBgbXQ3Nl9tY3Vfc2VuZF9tc2dgLCBjb21tYW5kcyBsaWtlIGBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3RgLCBgbXQ3OTE1X21jdV9zZXRfbXdkc2AsIGBtdDc5MTVfbWN1X3NldF9tdXJ1X2N0cmxgLCBhbmQgYG10NzkxNV9tY3VfaW5pdF9yeF9haXJ0aW1lYCwgd2hpY2ggYWxsIHJlbHkgb24gRE1BIHJpbmdzIG9yIE1NSU8gZm9yIHJlc3BvbnNlcy4gV2l0aCBubyByZWFsIE1DVSBwcmVzZW50LCB0aGlzIHdpbGwgdW5kb3VidGVkbHkgdGltZW91dCBhbmQgZmFpbCwgZW5zdXJpbmcgdGhhdCBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYCBmYWlscyBhZ2Fpbi4KClRoZXJlZm9yZSwgd2hldGhlciB0aGUgZmFrZSBNTUlPIGlzIGluaXRpYWxpemVkIHRvIDAgb3Igc29tZXRoaW5nIGVsc2UsIHRoZSBmaW5hbCBjb25jbHVzaW9uIGlzIHN0aWxsIHRoYXQgYG10NzkxNV90aGVybWFsX2luaXRgIGlzIG5vdCByZWFjaGFibGUgaW4gUUVNVS4KTGV0IG1lIHF1aWNrbHkgY2hlY2sgaWYgYG10NzkxNV90aGVybWFsX2luaXRgIGlzIGNhbGxlZCBhbnl3aGVyZSBlbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfdGhlcm1hbF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xOTk9c3RhdGljIHZvaWQgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0yMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MjEzOnN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTIxNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTczMD1tdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NzYyOlx0cmV0ID0gbXQ3OTE1X3RoZXJtYWxfaW5pdChwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc2My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTEyNTg9aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMjk3Olx0cmV0ID0gbXQ3OTE1X3RoZXJtYWxfaW5pdChcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjk4LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk5OTgKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIHRoZSBtdDc5MTUgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKClJpZ2h0LCBzbyB0aGVzZSBgbXQ3OTE1X3JlZ2lzdGVyX2V4dF9waHlgIGFuZCBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgZnVuY3Rpb25zLi4uIHRoZSB0ZXh0IGluZGljYXRlcyB0aGV5JiMzOTtyZSBvbmx5IGNhbGxlZCB3aXRoaW4gYG10NzkxNV9yZWdpc3Rlcl9leHRfcGh5YCBhbmQgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLiBUaGV5JiMzOTtyZSBib3RoIGNhbGxlZCBkdXJpbmcgdGhlIGRldmljZSBwcm9iZSwgYW5kIGNydWNpYWxseSwgKmFmdGVyKiBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgLiBUaGF0IHRlbGxzIG1lIHRoZXNlIGFyZW4mIzM5O3QgcGFydCBvZiB0aGUgaW5pdGlhbCBoYXJkd2FyZSBzZXR1cCBpdHNlbGYuIFRoZXkgc2VlbSB0byBiZSByZWdpc3RlcmluZyBzb21ldGhpbmcsIGxpa2VseSByZXNvdXJjZXMgb3IgY2FwYWJpbGl0aWVzLCB3aXRoIHRoZSBrZXJuZWwgYWZ0ZXIgdGhlIGhhcmR3YXJlIGlzIGluaXRpYWxpemVkLiBUaGUgaW1wbGljYXRpb24gYmVpbmcgdGhleSBhcmUgcHJvYmFibHkgcGFydCBvZiBhIGxhdGUtc3RhZ2UgcmVnaXN0ZXIgb3BlcmF0aW9uLiBTaW5jZSB0aGV5JiMzOTtyZSBvbmx5IGNhbGxlZCBpbiBwcm9iZSBhbmQgb25seSBhZnRlciBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiwgdGhleSB3b3VsZCBiZSB1bnJlYWNoYWJsZSBpbiBRRU1VIGJlY2F1c2UgdGhlIGRldmljZSBwcm9iZSBpc24mIzM5O3QgcnVubmluZy4KCkhvbGQgb24gYSBzZWNvbmQuLi4gd2hhdCBhYm91dCBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGA/IEkgaGF2ZSB0byBjb25zaWRlciBpdHMgcGxhY2VtZW50IGFuZCB0aW1pbmcgaW4gdGhlIGxpZmVjeWNsZSwgb3RoZXJ3aXNlIHRoZXJlIGlzIG5vIHRydWUgYXNzZXNzbWVudCBvZiB0aGUgaW1wYWN0LiBUaGUgZm9jdXMgb24gJiMzNDtyZWdpc3RlciYjMzQ7IGltcGxpZXMgaXQgbWlnaHQgYmUgcmVsYXRlZCB0byAmIzM0O3VucmVnaXN0ZXImIzM0OywgYW5kIGl0cyBjb250ZXh0IGluIHRoZSBwcm9iZSBvciByZW1vdmFsIHBoYXNlcyBpcyBhbHNvIGltcG9ydGFudCB0byBkZXRlcm1pbmUgaXRzIHJlYWNoIGluIFFFTVUuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUgSSBuZWVkIHRvIGV4cGxvcmUgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZV9vcHMgbXQ3OTE1X3R6X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjE5OTpzdGF0aWMgdm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMjAwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MjEzPXN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0yNTYtXHRpZiAocmV0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjI1NzpcdFx0bXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTI1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTIzND1zdGF0aWMgdm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI0MjpcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjQzLVx0bXQ3Nl91bnJlZ2lzdGVyX3BoeShtcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTI1OD1pbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMzI2LXVucmVnX3RoZXJtYWw6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTMyNzpcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTMyOC11bnJlZ19kZXY6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTEzMzg9dm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTM0NC1cdG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTM0NTpcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTM0Ni1cdG10NzZfdW5yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTI1OQoJCQkJCQkJb3V0cHV0OiAxNDYKCQkJCQkJCXRob3VnaHRzOiAzNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIG10NzkxNSBUaGVybWFsIFVucmVnaXN0cmF0aW9uIFBhdGhzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoZSBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGAgZnVuY3Rpb24gaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgdW5kZXIgdGhlIGNvbmRpdGlvbnMgd2UmIzM5O3JlIGNvbmNlcm5lZCBhYm91dCwgcGFydGljdWxhcmx5IHdpdGhpbiBhIFFFTVUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpIZXJlJiMzOTtzIG15IHJlYXNvbmluZzogaXQgbG9va3MgbGlrZSBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGAgZ2V0cyBjYWxsZWQgdW5kZXIgc2V2ZXJhbCBjaXJjdW1zdGFuY2VzOiBlcnJvciBwYXRocyB3aXRoaW4gYG10NzkxNV90aGVybWFsX2luaXRgIGFuZCBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAsIGFuZCBhbHNvIGZyb20gYG10NzkxNV91bnJlZ2lzdGVyX2V4dF9waHlgIGFuZCBgbXQ3OTE1X3VucmVnaXN0ZXJfZGV2aWNlYC4gVGhlIGlzc3VlIGlzLCBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgY2FuIGZhaWwgZWFybHkuIElmIHRoaXMgaGFwcGVucywgdGhlIGNvZGUgZmxvdyBsaWtlbHkganVtcHMgdG8gYSBjbGVhbnVwIHJvdXRpbmUgbGlrZSBgZnJlZV9waHkyYCBvciBgc3RvcF9od2AsIHdoaWNoIGJ5cGFzc2VzIHRoZSBjYWxsIHRvIGBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsYCBlbnRpcmVseS4gRnVydGhlcm1vcmUsIGBtdDc5MTVfdW5yZWdpc3Rlcl9kZXZpY2VgIGlzIG5vcm1hbGx5IGNhbGxlZCBmcm9tIGBtdDc5MTVfcGNpX3JlbW92ZWAgb3IgYG10Nzk4eF93bWFjX3JlbW92ZWAsIGJ1dCBiZWNhdXNlIG9mIHRoZSBpbml0aWFsIGZhaWx1cmUgb2YgYG10NzkxNV9wY2lfcHJvYmVgLCBgbXQ3OTE1X3BjaV9yZW1vdmVgIGlzIG5ldmVyIGV4ZWN1dGVkLiBDb25zZXF1ZW50bHksIHRoaXMgbWFrZXMgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIHVucmVhY2hhYmxlLgoKU2luY2UgdGhlc2UgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBRRU1VLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gd2UmIzM5O3JlIGNvbnNpZGVyaW5nLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgcmVxdWlyZW1lbnRzLCBqdXN0IHRvIG1ha2Ugc3VyZS4gT2theSwgdGhlIGluc3RydWN0aW9ucyBzdGF0ZSB0aGF0IHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIGNvZGUgd2l0aGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIGEgcGVyZmVjdCBmaXQhIGBtdDc5MTVgIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgV2ktRmkgZHJpdmVyLCBhbmQgaXQgcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkIGluIFFFTVUuIEdpdmVuIHRoaXMgYW5kIHRoYXQgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB0aGlzIGRyaXZlciwgaXQmIzM5O3MgY2xlYXI6IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSByaWdodCBjYWxsIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIE1UNzkxNSBQQ0llIFdpLUZpIGRyaXZlciAobXQ3OTE1KSB0byBmaXggYSB0aGVybWFsIHpvbmUgdW5yZWdpc3RyYXRpb24gaXNzdWUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0byBpbml0aWFsaXplIChlLmcuLCBwYXNzaW5nIGRyaXZlciBvd25lcnNoaXAgY2hlY2tzLCBmaXJtd2FyZSBsb2FkaW5nLCBhbmQgTUNVIGNvbW11bmljYXRpb24pLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbiBgbXQ3OTE1X3RoZXJtYWxfaW5pdGAgYW5kIGBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsYCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBNVDc5MTUgUENJZSBXaS1GaSBkcml2ZXIgKG10NzkxNSkgdG8gZml4IGEgdGhlcm1hbCB6b25lIHVucmVnaXN0cmF0aW9uIGlzc3VlLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgdG8gaW5pdGlhbGl6ZSAoZS5nLiwgcGFzc2luZyBkcml2ZXIgb3duZXJzaGlwIGNoZWNrcywgZmlybXdhcmUgbG9hZGluZywgYW5kIE1DVSBjb21tdW5pY2F0aW9uKS4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW4gYG10NzkxNV90aGVybWFsX2luaXRgIGFuZCBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGAgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNDozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzU6MDkuMTEwNjYxNDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDEwOTcyODgwMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTE1IFBDSWUgV2ktRmkgZHJpdmVyIChtdDc5MTUpIHRvIGZpeCBhIHRoZXJtYWwgem9uZSB1bnJlZ2lzdHJhdGlvbiBpc3N1ZS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGluaXRpYWxpemUgKGUuZy4sIHBhc3NpbmcgZHJpdmVyIG93bmVyc2hpcCBjaGVja3MsIGZpcm13YXJlIGxvYWRpbmcsIGFuZCBNQ1UgY29tbXVuaWNhdGlvbikuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGluIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBhbmQgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzU6MDkuMTEwNjY2NzRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4OTk5MDMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBkZTQwMjAwMWVlNmNlNWIzOWJhY2M4ZTg2YWViOWZkMGZiNjYxZWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTQ6MzU6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jXFxuaW5kZXggY2E0NmEyMDNhYTQ4Yi4uNWZlNzBkYzgyMmViYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmNcXG5AQCAtMjAwLDYgKzIwMCw5IEBAIHN0YXRpYyB2b2lkIG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4ge1xcbiBcXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gcGh5LVxcdTAwM2VtdDc2LVxcdTAwM2Vody1cXHUwMDNld2lwaHk7XFxuIFxcbitcXHRpZiAocGh5LVxcdTAwM2V0em9uZSlcXG4rXFx0XFx0ZGV2bV90aGVybWFsX29mX3pvbmVfdW5yZWdpc3RlcihwaHktXFx1MDAzZWRldi1cXHUwMDNlbXQ3Ni5kZXYsIHBoeS1cXHUwMDNldHpvbmUpO1xcbitcXG4gXFx0aWYgKCFwaHktXFx1MDAzZWNkZXYpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuQEAgLTIxMyw2ICsyMTYsNyBAQCBzdGF0aWMgaW50IG10NzkxNV90aGVybWFsX2luaXQoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4gXFx0c3RydWN0IHRoZXJtYWxfY29vbGluZ19kZXZpY2UgKmNkZXY7XFxuIFxcdHN0cnVjdCBkZXZpY2UgKmh3bW9uO1xcbiBcXHRjb25zdCBjaGFyICpuYW1lO1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0bmFtZSA9IGRldm1fa2FzcHJpbnRmKFxcdTAwMjZ3aXBoeS1cXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcXFwibXQ3OTE1XyVzXFxcIixcXG4gXFx0XFx0XFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xcbkBAIC0yMzgsOCArMjQyLDggQEAgc3RhdGljIGludCBtdDc5MTVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXFxuIFxcdGlmIChJU19FUlIocGh5LVxcdTAwM2V0em9uZSkpIHtcXG4gXFx0XFx0aWYgKFBUUl9FUlIocGh5LVxcdTAwM2V0em9uZSkgIT0gLUVOT0RFVilcXG4gXFx0XFx0XFx0ZGV2X3dhcm4ocGh5LVxcdTAwM2VkZXYtXFx1MDAzZW10NzYuZGV2LFxcbi1cXHRcXHRcXHRcXHQgXFxcImZhaWxlZCB0byByZWdpc3RlciB0aGVybWFsIHpvbmU6ICVsZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0IFBUUl9FUlIocGh5LVxcdTAwM2V0em9uZSkpO1xcbitcXHRcXHRcXHRcXHQgXFxcImZhaWxlZCB0byByZWdpc3RlciB0aGVybWFsIHpvbmUgJWQ6ICVsZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlYmFuZF9pZHgsIFBUUl9FUlIocGh5LVxcdTAwM2V0em9uZSkpO1xcbiBcXHRcXHRwaHktXFx1MDAzZXR6b25lID0gTlVMTDtcXG4gXFx0fVxcbiBcXG5AQCAtMjQ4LDcgKzI1MiwxMSBAQCBzdGF0aWMgaW50IG10NzkxNV90aGVybWFsX2luaXQoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4gXFxuIFxcdGh3bW9uID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMoXFx1MDAyNndpcGh5LVxcdTAwM2VkZXYsIG5hbWUsIHBoeSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIG10NzkxNV9od21vbl9ncm91cHMpO1xcbi1cXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcXG4rXFx0cmV0ID0gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0bXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChwaHkpO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbXQ3OTE1X2xlZF9zZXRfY29uZmlnKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTowOS41MDE1MDM1N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE0MDcwNjQzMjIzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIE1UNzkxNSBQQ0llIFdpLUZpIGRyaXZlciAobXQ3OTE1KSB0byBmaXggYSB0aGVybWFsIHpvbmUgdW5yZWdpc3RyYXRpb24gaXNzdWUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0byBpbml0aWFsaXplIChlLmcuLCBwYXNzaW5nIGRyaXZlciBvd25lcnNoaXAgY2hlY2tzLCBmaXJtd2FyZSBsb2FkaW5nLCBhbmQgTUNVIGNvbW11bmljYXRpb24pLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbiBgbXQ3OTE1X3RoZXJtYWxfaW5pdGAgYW5kIGBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsYCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBkZTQwMjAwMWVlNmNlNWIzOWJhY2M4ZTg2YWViOWZkMGZiNjYxZWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxNDozNTowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuY1xuaW5kZXggY2E0NmEyMDNhYTQ4Yi4uNWZlNzBkYzgyMmViYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jXG5AQCAtMjAwLDYgKzIwMCw5IEBAIHN0YXRpYyB2b2lkIG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbiB7XG4gXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gcGh5LVx1MDAzZW10NzYtXHUwMDNlaHctXHUwMDNld2lwaHk7XG4gXG4rXHRpZiAocGh5LVx1MDAzZXR6b25lKVxuK1x0XHRkZXZtX3RoZXJtYWxfb2Zfem9uZV91bnJlZ2lzdGVyKHBoeS1cdTAwM2VkZXYtXHUwMDNlbXQ3Ni5kZXYsIHBoeS1cdTAwM2V0em9uZSk7XG4rXG4gXHRpZiAoIXBoeS1cdTAwM2VjZGV2KVxuIFx0XHRyZXR1cm47XG4gXG5AQCAtMjEzLDYgKzIxNiw3IEBAIHN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuIFx0c3RydWN0IHRoZXJtYWxfY29vbGluZ19kZXZpY2UgKmNkZXY7XG4gXHRzdHJ1Y3QgZGV2aWNlICpod21vbjtcbiBcdGNvbnN0IGNoYXIgKm5hbWU7XG4rXHRpbnQgcmV0O1xuIFxuIFx0bmFtZSA9IGRldm1fa2FzcHJpbnRmKFx1MDAyNndpcGh5LVx1MDAzZWRldiwgR0ZQX0tFUk5FTCwgXCJtdDc5MTVfJXNcIixcbiBcdFx0XHQgICAgICB3aXBoeV9uYW1lKHdpcGh5KSk7XG5AQCAtMjM4LDggKzI0Miw4IEBAIHN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxuIFx0aWYgKElTX0VSUihwaHktXHUwMDNldHpvbmUpKSB7XG4gXHRcdGlmIChQVFJfRVJSKHBoeS1cdTAwM2V0em9uZSkgIT0gLUVOT0RFVilcbiBcdFx0XHRkZXZfd2FybihwaHktXHUwMDNlZGV2LVx1MDAzZW10NzYuZGV2LFxuLVx0XHRcdFx0IFwiZmFpbGVkIHRvIHJlZ2lzdGVyIHRoZXJtYWwgem9uZTogJWxkXFxuXCIsXG4tXHRcdFx0XHQgUFRSX0VSUihwaHktXHUwMDNldHpvbmUpKTtcbitcdFx0XHRcdCBcImZhaWxlZCB0byByZWdpc3RlciB0aGVybWFsIHpvbmUgJWQ6ICVsZFxcblwiLFxuK1x0XHRcdFx0IHBoeS1cdTAwM2VtdDc2LVx1MDAzZWJhbmRfaWR4LCBQVFJfRVJSKHBoeS1cdTAwM2V0em9uZSkpO1xuIFx0XHRwaHktXHUwMDNldHpvbmUgPSBOVUxMO1xuIFx0fVxuIFxuQEAgLTI0OCw3ICsyNTIsMTEgQEAgc3RhdGljIGludCBtdDc5MTVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4gXG4gXHRod21vbiA9IGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzKFx1MDAyNndpcGh5LVx1MDAzZWRldiwgbmFtZSwgcGh5LFxuIFx0XHRcdFx0XHRcdCAgICAgICBtdDc5MTVfaHdtb25fZ3JvdXBzKTtcbi1cdHJldHVybiBQVFJfRVJSX09SX1pFUk8oaHdtb24pO1xuK1x0cmV0ID0gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcbitcdGlmIChyZXQpXG4rXHRcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwocGh5KTtcbitcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG10NzkxNV9sZWRfc2V0X2NvbmZpZyhzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldixcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM1OjA5LjUwMTUwNDk0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY5MDM5NjQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaS1GaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBpdCdzIG1vZGlmeWluZyB0aGUgdGhlcm1hbCBtYW5hZ2VtZW50LCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIFNwZWNpZmljYWxseSwgaXQncyB1cGRhdGluZyB0aGUgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGZ1bmN0aW9uIHRvIHVucmVnaXN0ZXIgdGhlIHRoZXJtYWwgem9uZSAoYHBoeS1cdTAwM2V0em9uZWApIHVzaW5nIGBkZXZtX3RoZXJtYWxfb2Zfem9uZV91bnJlZ2lzdGVyYCBpZiB0aGF0IHpvbmUgZXhpc3RzLiBUaGF0J3MgZ29vZCBwcmFjdGljZS4gQW5kIHRoZW4sIGluIGBtdDc5MTVfdGhlcm1hbF9pbml0YCwgaWYgYGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzYCBmYWlscywgaXQgbm93IGNhbGxzIGBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKHBoeSlgLiBNYWtlcyBzZW5zZSwgY2xlYW51cCBpcyBjcnVjaWFsIG9uIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzLiBPaCwgYW5kIGl0J3MgYWxzbyB0d2Vha2luZyBhIHdhcm5pbmcgbWVzc2FnZSwgcHJvYmFibHkgZm9yIGJldHRlciBjbGFyaXR5LlxuXG5CdXQgd2FpdCBhIHNlY29uZC4uLiBgbXQ3OTE1YC4uLiB0aGF0J3MgYSBNZWRpYVRlayBXaS1GaSBkcml2ZXIsIGlzbid0IGl0PyBSaWdodCwgaXQncyBmb3IgdGhvc2UgTVQ3OTE1LCBNVDc5ODYsIE1UNzkxNiwgYW5kIE1UNzk4MSBjaGlwc2V0cy4gSSBzZWVtIHRvIHJlY2FsbCBpdCBiZWluZyBhIFBDSWUgZHJpdmVyLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQuIFllcywgaXQncyBhIFBDSWUgZHJpdmVyLiBUaGF0IHRocm93cyB1cCBhIGJpdCBvZiBhIGZsYWcgZm9yIGZ1enppbmcgY29uc2lkZXJhdGlvbnMuIFBDSWUgV2ktRmkgZHJpdmVycywgZXNwZWNpYWxseSB0aGUgdmVuZG9yLXNwZWNpZmljIG9uZXMgbGlrZSB0aGlzLCBhcmVuJ3QgdXN1YWxseSB0aGUgZWFzaWVzdCB0byBmdXp6IGRpcmVjdGx5IGluIHNvbWV0aGluZyBsaWtlIFFFTVUuIFRoZXkgb2Z0ZW4gcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgdGhhdCBhcmUgdG91Z2ggdG8gZW11bGF0ZS4gVW5sZXNzIHRoZXkgaGF2ZSBzb21lIGRlZGljYXRlZCBlbXVsYXRpb24gc3VwcG9ydCwgb3IgaGFwcGVuIHRvIGJlIFVTQi9TRElPIGRyaXZlcnMgd2hpY2ggYXJlIGEgYml0IG1vcmUgYW1lbmFibGUgdG8gZW11bGF0aW9uLCBmdXp6aW5nIFBDSWUgZHJpdmVycyBpcyBhIGNoYWxsZW5nZS4gU28sIEkgbmVlZCB0byBjaGVjayBob3cgZXhhY3RseSBpdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgZGV2aWNlLCB0aGUgbmF0dXJlIG9mIHRoZSBpbnRlcmZhY2Ugd2lsbCBkZXRlcm1pbmUgYSBtb3JlIHN1aXRhYmxlIG1ldGhvZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5NSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM1OjE2LjE5MTkwMzQzNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mjk3OTgyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTczMSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUtMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5MTVFKSArPSBtdDc5MTVlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZS00LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlOjU6bXQ3OTE1ZS15IDo9IHBjaS5vIGluaXQubyBkbWEubyBlZXByb20ubyBtYWluLm8gbWN1Lm8gbWFjLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlLTYtXFx0ICAgICBkZWJ1Z2ZzLm8gbW1pby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZTo4Om10NzkxNWUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlOjk6bXQ3OTE1ZS0kKENPTkZJR19NVDc5OFhfV01BQykgKz0gc29jLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZToxMDptdDc5MTVlLSQoQ09ORklHX0RFVl9DT1JFRFVNUCkgKz0gY29yZWR1bXAub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz0xMj1NT0RVTEVfUEFSTV9ERVNDKGNvcmVkdW1wX21lbWR1bXAsIFxcXCJPcHRpb25hbCBhYmlsaXR5IHRvIGR1bXAgZmlybXdhcmUgbWVtb3J5XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gbXQ3OTE1X21lbV9yZWdpb25zW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNS1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjI6c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiBtdDc5MTZfbWVtX3JlZ2lvbnNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIzLVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo1NTpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uIG10Nzk4eF9tZW1fcmVnaW9uc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtNTYtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjg4OmNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjg5Om10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgKm51bSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtOTItXFx0Y2FzZSAweDc5MTU6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo5MzpcXHRcXHQqbnVtID0gQVJSQVlfU0laRShtdDc5MTVfbWVtX3JlZ2lvbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6OTQ6XFx0XFx0cmV0dXJuIFxcdTAwMjZtdDc5MTVfbWVtX3JlZ2lvbnNbMF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy05NS1cXHRjYXNlIDB4Nzk4MTpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTA3OnN0YXRpYyBpbnQgbXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fc2l6ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTA4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjEwOTpcXHRjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gKm1lbV9yZWdpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMTAtXFx0c2l6ZV90IHNpemUgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMTQ6XFx0bWVtX3JlZ2lvbiA9IG10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChkZXYsIFxcdTAwMjZudW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTE1LVxcdGlmICghbWVtX3JlZ2lvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTIzLVxcdC8qIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBoZWFkZXJzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMjQ6XFx0c2l6ZSArPSBudW0gKiBzaXplb2Yoc3RydWN0IG10NzkxNV9tZW1faGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEyNS1cXHQvKiBtYWtlIHN1cmUgaXQgaXMgYWxpZ25lZCA0IGJ5dGVzIGZvciBkZWJ1ZyBtZXNzYWdlIHByaW50IG91dCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMzE6c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICptdDc5MTVfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMzIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTMzOlxcdHN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YSA9IGRldi1cXHUwMDNlY29yZWR1bXAuY3Jhc2hfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MTQzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNDQ6bXQ3OTE1X2NvcmVkdW1wX2Z3X3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNDUtXFx0XFx0XFx0IGJvb2wgKmV4Y2VwdGlvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTUwLVxcdHN0YXRlID0gKHUzMiltdDc2X2dldF9maWVsZChkZXYsIE1UX0ZXX0FTU0VSVF9TVEFULCBHRU5NQVNLKDcsIDApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE1MTpcXHRjb3VudCA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNTItXFx0XFx0KHUzMiltdDc2X2dldF9maWVsZChkZXYsIE1UX0ZXX0VYQ0VQVF9DT1VOVCwgR0VOTUFTSygxNSwgOCkpIDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MTY2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNjc6bXQ3OTE1X2NvcmVkdW1wX2Z3X3RyYWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNjgtXFx0XFx0XFx0IGJvb2wgZXhjZXB0aW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNzU6XFx0biA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNzYtXFx0ICAgICh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBiYXNlLCBHRU5NQVNLKDcsIDApKSA6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE4MC1cXHRpcnEgPSBtdDc2X3JyKGRldiwgYmFzZSArIDB4OCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxODE6XFx0biA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xODItXFx0ICAgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCBpcnEpIDogRklFTERfR0VUKEdFTk1BU0soMjMsIDE2KSwgaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTg1LVxcdHNjaCA9IG10NzZfcnIoZGV2LCBNVF9GV19TQ0hFRF9JTkZPKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE4NjpcXHRuID0gaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE4Ny1cXHQgICAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIHNjaCkgOiBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHNjaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE5My1cXHRcXHQvKiBzY2hlZCB0cmFjZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTk0OlxcdFxcdG4gPSBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTk1LVxcdFxcdCAgICBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHNjaCkgOiBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgc2NoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjAxLVxcdFxcdGZvciAoeSA9IGR1bXAtXFx1MDAzZXNjaGVkX2luZm9faWR4LCBpID0gMDsgaSBcXHUwMDNjIG47IGkrKywgeSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyMDI6XFx0XFx0XFx0bXQ3OTE1X21lbWNweV9mcm9taW8oZGV2LCBkdW1wLVxcdTAwM2VzY2hlZCwgYmFzZSArIDB4YyArIHkgKiAxMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIwMy1cXHRcXHRcXHRcXHRcXHQgICAgIHNpemVvZihkdW1wLVxcdTAwM2VzY2hlZCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDctXFx0XFx0LyogaXJxIHRyYWNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyMDg6XFx0XFx0biA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDktXFx0XFx0ICAgIEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgaXJxKSA6IEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCBpcnEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMTUtXFx0XFx0Zm9yICh5ID0gZHVtcC1cXHUwMDNlaXJxX2luZm9faWR4LCBpID0gMDsgaSBcXHUwMDNjIG47IGkrKywgeSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyMTY6XFx0XFx0XFx0bXQ3OTE1X21lbWNweV9mcm9taW8oZGV2LCBkdW1wLVxcdTAwM2VpcnEsIGJhc2UgKyAweDQgKyB5ICogMTYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMTctXFx0XFx0XFx0XFx0XFx0ICAgICBzaXplb2YoZHVtcC1cXHUwMDNlaXJxKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTIyMz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjI0Om10NzkxNV9jb3JlZHVtcF9md19zdGFjayhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjI1LVxcdFxcdFxcdCBib29sIGV4Y2VwdGlvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MjQ0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyNDU6bXQ3OTE1X2NvcmVkdW1wX2Z3X3Rhc2soc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTI0Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyNDc6XFx0dTMyIG9mZnMgPSBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPyAweGUwIDogMHgxNzA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTI2OD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjY5Om10NzkxNV9jb3JlZHVtcF9md19jb250ZXh0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyODA6XFx0XFx0aWR4ID0gaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTI4MS1cXHRcXHQgICAgICAodTMyKW10NzZfZ2V0X2ZpZWxkKGRldiwgTVRfRldfQ0lSUV9JRFgsIEdFTk1BU0soMzEsIDE2KSkgOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMDI6c3RhdGljIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKm10NzkxNV9jb3JlZHVtcF9idWlsZChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzAzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMwNDpcXHRzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKmNyYXNoX2RhdGEgPSBkZXYtXFx1MDAzZWNvcmVkdW1wLmNyYXNoX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMDU6XFx0c3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMwNjpcXHRzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wX21lbSAqZHVtcF9tZW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zMDctXFx0c2l6ZV90IGxlbiwgc29mYXIgPSAwLCBoZHJfbGVuID0gc2l6ZW9mKCpkdW1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzI3OlxcdGR1bXAgPSAoc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqKShidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzI4LVxcdGR1bXAtXFx1MDAzZWxlbiA9IGxlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQxOlxcdG10NzkxNV9jb3JlZHVtcF9md19zdGF0ZShkZXYsIGR1bXAsIFxcdTAwMjZleGNlcHRpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQyOlxcdG10NzkxNV9jb3JlZHVtcF9md190cmFjZShkZXYsIGR1bXAsIGV4Y2VwdGlvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDM6XFx0bXQ3OTE1X2NvcmVkdW1wX2Z3X3Rhc2soZGV2LCBkdW1wKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM0NDpcXHRtdDc5MTVfY29yZWR1bXBfZndfY29udGV4dChkZXYsIGR1bXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQ1OlxcdG10NzkxNV9jb3JlZHVtcF9md19zdGFjayhkZXYsIGR1bXAsIGV4Y2VwdGlvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNDctXFx0LyogZ2F0aGVyIG1lbW9yeSBjb250ZW50ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDg6XFx0ZHVtcF9tZW0gPSAoc3RydWN0IG10NzkxNV9jb3JlZHVtcF9tZW0gKikoYnVmICsgc29mYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQ5LVxcdGR1bXBfbWVtLVxcdTAwM2VsZW4gPSBjcmFzaF9kYXRhLVxcdTAwM2VtZW1kdW1wX2J1Zl9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM1OTppbnQgbXQ3OTE1X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzYwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM2MTpcXHRzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzYzOlxcdGR1bXAgPSBtdDc5MTVfY29yZWR1bXBfYnVpbGQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM2NC1cXHRpZiAoIWR1bXApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6Mzc0OmludCBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM3NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNzY6XFx0c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICpjcmFzaF9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzc3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zODQtXFx0aWYgKGNvcmVkdW1wX21lbWR1bXApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM4NTpcXHRcXHRjcmFzaF9kYXRhLVxcdTAwM2VtZW1kdW1wX2J1Zl9sZW4gPSBtdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9zaXplKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zODYtXFx0XFx0aWYgKCFjcmFzaF9kYXRhLVxcdTAwM2VtZW1kdW1wX2J1Zl9sZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjQwMDp2b2lkIG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy00MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6NzojaW5jbHVkZSBcXFwibXQ3OTE1LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC04LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg9OT1zdHJ1Y3QgdHJhY2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjE0OnN0cnVjdCBtdDc5MTVfY29yZWR1bXAge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTUtXFx0Y2hhciBtYWdpY1sxNl07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6ODA6c3RydWN0IG10NzkxNV9jb3JlZHVtcF9tZW0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtODEtXFx0dTMyIGxlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDo4NTpzdHJ1Y3QgbXQ3OTE1X21lbV9oZHIge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtODYtXFx0dTMyIHN0YXJ0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC05MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjkxOnN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC05Mi1cXHR1MzIgc3RhcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTAwOmNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDE6bXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHUzMiAqbnVtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwMjpzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKm10NzkxNV9jb3JlZHVtcF9uZXcoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDM6aW50IG10NzkxNV9jb3JlZHVtcF9zdWJtaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDQ6aW50IG10NzkxNV9jb3JlZHVtcF9yZWdpc3RlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwNTp2b2lkIG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDk6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTEwOm10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgKm51bSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTExMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTExNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjExNTpzdGF0aWMgaW5saW5lIGludCBtdDc5MTVfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKm10NzkxNV9jb3JlZHVtcF9uZXcoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEyMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEyNTpzdGF0aWMgaW5saW5lIGludCBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEyNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEzMDpzdGF0aWMgaW5saW5lIHZvaWQgbXQ3OTE1X2NvcmVkdW1wX3VucmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEzMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvcmVsYXkuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTojaW5jbHVkZSBcXFwibXQ3OTE1LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTYtI2luY2x1ZGUgXFxcImVlcHJvbS5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTIxPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjI6bXQ3OTE1X2ltcGxpY2l0X3R4YmZfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQ6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzozMTpcXHRyZXR1cm4gbXQ3OTE1X21jdV9zZXRfdHhiZihkZXYsIE1UX0JGX1RZUEVfVVBEQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMzItfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTM0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MzU6bXQ3OTE1X2ltcGxpY2l0X3R4YmZfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zNi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjM3OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfaW1wbGljaXRfdHhiZiwgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NTpcXHRcXHRcXHQgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTQ4PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ5Om10NzkxNV9zeXNfcmVjb3Zlcnlfc2V0KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUwLVxcdFxcdFxcdHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUyOlxcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUzOlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTQtXFx0Ym9vbCBiYW5kID0gcGh5LVxcdTAwM2VtdDc2LVxcdTAwM2ViYW5kX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03NC1cXHRjYXNlIFNFUl9RVUVSWTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzU6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgMCwgMCwgYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTc2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgyLVxcdGNhc2UgU0VSX1NFVF9SRUNPVkVSX0wzX0JGOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MzpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X3NldF9zZXIoZGV2LCBTRVJfRU5BQkxFLCBCSVQodmFsKSwgYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTg0LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjg3OlxcdFxcdHJldCA9IG10NzkxNV9tY3Vfc2V0X3NlcihkZXYsIFNFUl9SRUNPVkVSLCB2YWwsIGJhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04OC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05Mi1cXHRcXHRtdDc2X3NldChkZXYsIE1UX1dGRE1BMF9NQ1VfSE9TVF9JTlRfRU5BLCBNVF9NQ1VfQ01EX1dEVF9NQVNLKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6OTM6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgMSwgMywgYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk0LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTctXFx0XFx0ZGV2LVxcdTAwM2VyZWNvdmVyeS5zdGF0ZSB8PSBNVF9NQ1VfQ01EX1dEVF9NQVNLO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5ODpcXHRcXHRtdDc5MTVfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTktXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MTEzPXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjExNDptdDc5MTVfc3lzX3JlY292ZXJ5X2dldChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMTUtXFx0XFx0XFx0c2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTExNi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjExNzpcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMTg6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMTktXFx0Y2hhciAqYnVmZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjE5MzpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBtdDc5MTVfc3lzX3JlY292ZXJ5X29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTk0OlxcdC53cml0ZSA9IG10NzkxNV9zeXNfcmVjb3Zlcnlfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxOTU6XFx0LnJlYWQgPSBtdDc5MTVfc3lzX3JlY292ZXJ5X2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTk2LVxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjAwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjAxOm10NzkxNV9yYWRhcl90cmlnZ2VyKHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIwMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjA0LSNkZWZpbmUgUkFEQVJfQkFDS0dST1VORFxcdDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjA1OlxcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMDY6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMDctXFx0aW50IHJkZF9pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMTc6XFx0cmRkX2lkeCA9IG10NzkxNV9nZXRfcmRkX2lkeChwaHksIHZhbCA9PSBSQURBUl9CQUNLR1JPVU5EKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjE4LVxcdGlmIChyZGRfaWR4IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTIyNz1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yYWRhcl90cmlnZ2VyLCBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMjg6XFx0XFx0XFx0IG10NzkxNV9yYWRhcl90cmlnZ2VyLCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjMwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjMxOm10NzkxNV9tdXJ1X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMzIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMzM6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjM1LVxcdGRldi1cXHUwMDNlbXVydV9kZWJ1ZyA9IHZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjM2OlxcdG10NzkxNV9tY3VfbXVydV9kZWJ1Z19zZXQoZGV2LCBkZXYtXFx1MDAzZW11cnVfZGVidWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMzctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjQxPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQyOm10NzkxNV9tdXJ1X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjQzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQ0OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNTE6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfbXVydV9kZWJ1ZywgbXQ3OTE1X211cnVfZGVidWdfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNTI6XFx0XFx0XFx0IG10NzkxNV9tdXJ1X2RlYnVnX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1NDpzdGF0aWMgaW50IG10NzkxNV9tdXJ1X3N0YXRzX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNTY6XFx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1NzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI1OC1cXHRzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRsX25vbl9oZV90eXBlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyODE6XFx0cmV0ID0gbXQ3OTE1X21jdV9tdXJ1X2RlYnVnX2dldChwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yODItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00MzktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NDA6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV9tdXJ1X3N0YXRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz00NDI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NDM6bXQ3OTE1X3JkZF9tb25pdG9yKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDQ0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDQ1OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ0Ni1cXHRzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmNoYW5kZWYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VyZGQyX2NoYW5kZWY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NTI6XFx0aWYgKCFtdDc5MTVfZWVwcm9tX2hhc19iYWNrZ3JvdW5kX3JhZGFyKGRldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDUzLVxcdFxcdHNlcV9wdXRzKHMsIFxcXCJubyBiYWNrZ3JvdW5kIHJhZGFyIGNhcGFiaWxpdHlcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTQ5ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ5NTptdDc5MTVfZndfZGVidWdfd21fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ5Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ5NzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDk4LVxcdGVudW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTE5OlxcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV00sIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUyMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTI5OlxcdFxcdHJldCA9IG10NzkxNV9tY3VfZndfZGJnX2N0cmwoZGV2LCBkZWJ1ZywgdmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTMwLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NTQ4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTQ5Om10NzkxNV9md19kZWJ1Z193bV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU1MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU1MTpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTU4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX3dtLCBtdDc5MTVfZndfZGVidWdfd21fZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NTk6XFx0XFx0XFx0IG10NzkxNV9md19kZWJ1Z193bV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01NjE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NjI6bXQ3OTE1X2Z3X2RlYnVnX3dhX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NjMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NjQ6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU2NS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTY5OlxcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV0EsIGRldi1cXHUwMDNlZncuZGVidWdfd2EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU3MzpcXHRyZXQgPSBtdDc5MTVfbWN1X3dhX2NtZChkZXYsIE1DVV9XQV9QQVJBTV9DTUQoU0VUKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTc0LVxcdFxcdFxcdFxcdE1DVV9XQV9QQVJBTV9QRE1BX1JYLCAhIWRldi1cXHUwMDNlZncuZGVidWdfd2EsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTU4Mj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU4MzptdDc5MTVfZndfZGVidWdfd2FfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01ODQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1ODU6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU5MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193YSwgbXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTkzOlxcdFxcdFxcdCBtdDc5MTVfZndfZGVidWdfd2Ffc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02MTk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2MjA6bXQ3OTE1X2Z3X2RlYnVnX2Jpbl9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MjUtXFx0fTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjI2OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2Mzg6XFx0cmV0dXJuIG10NzkxNV9md19kZWJ1Z193bV9zZXQoZGV2LCBkZXYtXFx1MDAzZWZ3LmRlYnVnX3dtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjM5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02NDE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NDI6bXQ3OTE1X2Z3X2RlYnVnX2Jpbl9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY0My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY0NDpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjUxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX2JpbiwgbXQ3OTE1X2Z3X2RlYnVnX2Jpbl9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY1MjpcXHRcXHRcXHQgbXQ3OTE1X2Z3X2RlYnVnX2Jpbl9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02NTQ9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NTU6bXQ3OTE1X2Z3X3V0aWxfd21fc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY1NzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjczOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfZndfdXRpbF93bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9Njc1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Njc2Om10NzkxNV9md191dGlsX3dhX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02Nzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2Nzg6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02ODItXFx0aWYgKGRldi1cXHUwMDNlZncuZGVidWdfd2EpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY4MzpcXHRcXHRyZXR1cm4gbXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKFFVRVJZKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjg0LVxcdFxcdFxcdFxcdFxcdCBNQ1VfV0FfUEFSQU1fQ1BVX1VUSUwsIDAsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Njg5OkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfZndfdXRpbF93YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjkxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY5MjptdDc5MTVfYW1wZHVfc3RhdF9yZWFkX3BoeShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTMtXFx0XFx0XFx0ICAgc3RydWN0IHNlcV9maWxlICpmaWxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2OTU6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTYtXFx0Ym9vbCBleHRfcGh5ID0gcGh5ICE9IFxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz03MjI9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzIzOm10NzkxNV90eGJmX3N0YXRfcmVhZF9waHkoc3RydWN0IG10NzkxNV9waHkgKnBoeSwgc3RydWN0IHNlcV9maWxlICpzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03MjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTc2OT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc3MDptdDc5MTVfdHhfc3RhdHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTc3MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc3MjpcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzczOlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzc0LVxcdHN0cnVjdCBtdDc2X21pYl9zdGF0cyAqbWliID0gXFx1MDAyNnBoeS1cXHUwMDNlbWliO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTc3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Nzc5OlxcdG10NzkxNV9hbXBkdV9zdGF0X3JlYWRfcGh5KHBoeSwgZmlsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc4MDpcXHRtdDc5MTVfbWFjX3VwZGF0ZV9zdGF0cyhwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3ODE6XFx0bXQ3OTE1X3R4YmZfc3RhdF9yZWFkX3BoeShwaHksIGZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03ODItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MDA6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV90eF9zdGF0cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9ODAyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgwMzptdDc5MTVfaHdfcXVldWVfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHUzMiBzaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MDQtXFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgaHdfcXVldWVfbWFwICptYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgwNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgwNjpcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODA3OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODA4LVxcdHUzMiBpLCB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9ODMzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgzNDptdDc5MTVfc3RhX2h3X3F1ZXVlX3JlYWQodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODM1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODM2OlxcdHN0cnVjdCBtdDc5MTVfc3RhICptc3RhID0gKHN0cnVjdCBtdDc5MTVfc3RhICopc3RhLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODM3OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBtc3RhLVxcdTAwM2V2aWYtXFx1MDAzZXBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MzgtXFx0c3RydWN0IHNlcV9maWxlICpzID0gZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz04NjE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NjI6bXQ3OTE1X2h3X3F1ZXVlc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODYzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODY0OlxcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBmaWxlLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NjU6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04NjYtXFx0c3RhdGljIGNvbnN0IHN0cnVjdCBod19xdWV1ZV9tYXAgcGxlX3F1ZXVlX21hcFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkxNC1cXHRzZXFfcHV0cyhmaWxlLCBcXFwiUExFIG5vbi1lbXB0eSBxdWV1ZSBpbmZvOlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkxNTpcXHRtdDc5MTVfaHdfcXVldWVfcmVhZChmaWxlLCBBUlJBWV9TSVpFKHBsZV9xdWV1ZV9tYXApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05MTYtXFx0XFx0XFx0ICAgICBcXHUwMDI2cGxlX3F1ZXVlX21hcFswXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTE5LVxcdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhwaHktXFx1MDAzZW10NzYtXFx1MDAzZWh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5MjA6XFx0XFx0XFx0XFx0XFx0ICBtdDc5MTVfc3RhX2h3X3F1ZXVlX3JlYWQsIGZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05MjEtXFx0LyogcHNlIHF1ZXVlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkyMi1cXHRzZXFfcHV0cyhmaWxlLCBcXFwiUFNFIG5vbi1lbXB0eSBxdWV1ZSBpbmZvOlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkyMzpcXHRtdDc5MTVfaHdfcXVldWVfcmVhZChmaWxlLCBBUlJBWV9TSVpFKHBzZV9xdWV1ZV9tYXApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05MjQtXFx0XFx0XFx0ICAgICBcXHUwMDI2cHNlX3F1ZXVlX21hcFswXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5Mjk6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV9od19xdWV1ZXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05MzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTkzMT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkzMjptdDc5MTVfeG1pdF9xdWV1ZXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTkzMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjkzNDpcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6OTM1OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTM2LVxcdHN0cnVjdCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5NjI6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkxNV94bWl0X3F1ZXVlcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6OTY0OiNkZWZpbmUgbXQ3OTE1X3R4cG93ZXJfcHV0cyhyYXRlKVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTY1LSh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNToxNi4yNDQ4OTMxMDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzkxMjIwMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBhbmQgdGhlIGZpcnN0IHRoaW5nIEkgbm90aWNlIGlzIHRoYXQgaXQncyBjbGVhcmx5IHJlbGF0ZWQgdG8gdGhlIHRoZXJtYWwgbWFuYWdlbWVudCB3aXRoaW4gdGhlIGBtdDc5MTVgIFBDSWUgZHJpdmVyLiAgVGhlIG91dHB1dCBpbmRpY2F0ZXMgdGhhdCBpdCdzIHBhcnQgb2YgdGhlIGBtdDc5MTVlLXlgIG1vZHVsZSwgc28gaXQgaXMgYSBQQ0llIGRyaXZlci4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlcm1hbCB6b25lIHJlZ2lzdHJhdGlvbiBhbmQgdW5yZWdpc3RyYXRpb24uICBJdCBsb29rcyBsaWtlIHRoZXJlIHdhcyBhIHBvdGVudGlhbCByZXNvdXJjZSBsZWFrIGlmIHRoZSB0aGVybWFsIHpvbmUgcmVnaXN0cmF0aW9uIGZhaWxlZCwgYW5kIHRoaXMgcGF0Y2ggYWltcyB0byBjbGVhbiB1cCBwcm9wZXJseSBpbiB0aGF0IHNjZW5hcmlvLlxuXG5Ob3csIG15IGluaXRpYWwgdGhvdWdodCBnb2VzIHRvIGZ1enppbmcuICBDb3VsZCB0aGlzIGJlIGEgcG90ZW50aWFsIGFyZWEgZm9yIGZ1enppbmc/IEkgc2VlIHRoYXQgaXQncyBhIE1lZGlhVGVrIFdpLUZpIGRyaXZlciwgc28gaXQgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyLiAgVGhlbiB0aGUgcXVlc3Rpb24gaXMgY2FuIHRoaXMgZHJpdmVyIGJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/IExldCdzIGNvbnN1bHQgdGhlIGd1aWRlbGluZXM6ICBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiXG5cblNpbmNlIGBtdDc5MTVgIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgV2ktRmkgZHJpdmVyLCBhbmQsIHRvIG15IGtub3dsZWRnZSwgcmVxdWlyZXMgYWN0dWFsIGhhcmR3YXJlIEkgdGhpbmsgSSB3aWxsIG5lZWQgdG8gZXhjbHVkZSBpdCBmcm9tIGZ1enppbmcsIHVubGVzcyBJIGNhbiBmaW5kIHNvbWUgc29mdHdhcmUgZW11bGF0aW9uLiAgSSdsbCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBtZW50aW9uIG9mIHNvZnR3YXJlIGVtdWxhdGlvbiwgYnV0IEknbSBsZWFuaW5nIHRvd2FyZHMgbm90IGZ1enppbmcgdGhpcyBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDE0LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM1OjI1LjYzNjExNTYyMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc0NjUwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTE6I2luY2x1ZGUgXFxcIm10NzkxNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEyLSNpbmNsdWRlIFxcXCJtYWMuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTE3PXN0YXRpYyB1MzIgaGlmX2lkeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbXQ3OTE1X3BjaV9kZXZpY2VfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMC1cXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3OTE1KSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjU6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG10NzkxNV9oaWZfZGV2aWNlX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjYtXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUVESUFURUssIDB4NzkxNikgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjMxOnN0YXRpYyBzdHJ1Y3QgbXQ3OTE1X2hpZiAqbXQ3OTE1X3BjaV9nZXRfaGlmMih1MzIgaWR4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzozMzpcXHRzdHJ1Y3QgbXQ3OTE1X2hpZiAqaGlmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTM0LVxcdHUzMiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzo1NjpzdGF0aWMgdm9pZCBtdDc5MTVfcHV0X2hpZjIoc3RydWN0IG10NzkxNV9oaWYgKmhpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy01Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzo2NDpzdGF0aWMgc3RydWN0IG10NzkxNV9oaWYgKm10NzkxNV9wY2lfaW5pdF9oaWYyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjgxOlxcdHJldHVybiBtdDc5MTVfcGNpX2dldF9oaWYyKGhpZl9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTgyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy04My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzo4NDpzdGF0aWMgaW50IG10NzkxNV9wY2lfaGlmMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy04NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6ODY6XFx0c3RydWN0IG10NzkxNV9oaWYgKmhpZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy04Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMDM6c3RhdGljIGludCBtdDc5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEwNC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTEwNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTA2OlxcdHN0cnVjdCBtdDc5MTVfaGlmICpoaWYyID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMDc6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMDgtXFx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTI4LVxcdGlmIChpZC1cXHUwMDNlZGV2aWNlID09IDB4NzkxNiB8fCBpZC1cXHUwMDNlZGV2aWNlID09IDB4NzkwYSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMjk6XFx0XFx0cmV0dXJuIG10NzkxNV9wY2lfaGlmMl9wcm9iZShwZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTMxOlxcdGRldiA9IG10NzkxNV9tbWlvX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBjaW1faW9tYXBfdGFibGUocGRldilbMF0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTMyLVxcdFxcdFxcdFxcdGlkLVxcdTAwM2VkZXZpY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTM2LVxcdG1kZXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjEzNzpcXHRtdDc5MTVfd2ZzeXNfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTM5OlxcdHJldCA9IG10NzkxNV9tbWlvX3dlZF9pbml0KGRldiwgcGRldiwgdHJ1ZSwgXFx1MDAyNmlycSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTQwLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTQzLVxcdGlmICghcmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTQ0OlxcdFxcdGhpZjIgPSBtdDc5MTVfcGNpX2luaXRfaGlmMihwZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNDctXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNDg6XFx0XFx0XFx0bXQ3OTE1X3B1dF9oaWYyKGhpZjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE0OS1cXHRcXHRcXHRnb3RvIGZyZWVfZGV2aWNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE1NTpcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXFx1MDAzZWRldiwgaXJxLCBtdDc5MTVfaXJxX2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU2LVxcdFxcdFxcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTU3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNTg6XFx0XFx0bXQ3OTE1X3B1dF9oaWYyKGhpZjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE1OS1cXHRcXHRnb3RvIGZyZWVfd2VkX29yX2lycV92ZWN0b3I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNjktXFx0XFx0LyogbWFzdGVyIHN3aXRjaCBvZiBQQ0llIHRudGVycnVwdCBlbmFibGUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxNzA6XFx0XFx0aWYgKGlzX210NzkxNShtZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzEtXFx0XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1BDSUUxX01BQ19JTlRfRU5BQkxFLCAweGZmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE3NS1cXHRcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXFx1MDAzZWRldiwgZGV2LVxcdTAwM2VoaWYyLVxcdTAwM2VpcnEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTc2OlxcdFxcdFxcdFxcdCAgICAgICBtdDc5MTVfaXJxX2hhbmRsZXIsIElSUUZfU0hBUkVELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE3Ny1cXHRcXHRcXHRcXHQgICAgICAgS0JVSUxEX01PRE5BTUUgXFxcIi1oaWZcXFwiLCBkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE4MjpcXHRyZXQgPSBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjA2OnN0YXRpYyB2b2lkIG10NzkxNV9oaWZfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIwNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjA4OlxcdHN0cnVjdCBtdDc5MTVfaGlmICpoaWYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjA5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIxMzpzdGF0aWMgdm9pZCBtdDc5MTVfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIxNS1cXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjE2OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIxOC1cXHRtZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIxOTpcXHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkxNV9kZXYsIG10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyMDpcXHRtdDc5MTVfcHV0X2hpZjIoZGV2LVxcdTAwM2VoaWYyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMjE6XFx0bXQ3OTE1X3VucmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjIyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjI0OnN0cnVjdCBwY2lfZHJpdmVyIG10NzkxNV9oaWZfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIyNS1cXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUgXFxcIl9oaWZcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyNjpcXHQuaWRfdGFibGVcXHQ9IG10NzkxNV9oaWZfZGV2aWNlX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyNzpcXHQucHJvYmVcXHRcXHQ9IG10NzkxNV9wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjI4OlxcdC5yZW1vdmVcXHRcXHQ9IG10NzkxNV9oaWZfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIyOS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMzE6c3RydWN0IHBjaV9kcml2ZXIgbXQ3OTE1X3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjMyLVxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMzM6XFx0LmlkX3RhYmxlXFx0PSBtdDc5MTVfcGNpX2RldmljZV90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMzQ6XFx0LnByb2JlXFx0XFx0PSBtdDc5MTVfcGNpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIzNTpcXHQucmVtb3ZlXFx0XFx0PSBtdDc5MTVfcGNpX3JlbW92ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMzYtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjM4Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtdDc5MTVfcGNpX2RldmljZV90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MjM5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtdDc5MTVfaGlmX2RldmljZV90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjQwLU1PRFVMRV9GSVJNV0FSRShNVDc5MTVfRklSTVdBUkVfV0EpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNToyNS42ODU4NzA2MTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTE2MDA3MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVmlydHVhbGl6YXRpb24gb2YgdGhlIG10NzkxNSBXaS1GaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgcHJvbXB0IGlzIGFib3V0IHRoZSBgbXQ3OTE1YCBkcml2ZXIsIGFuZCBmcm9tIHRoZSBzb3VuZCBvZiBpdCwgdGhlIGNoYWxsZW5nZSBpcyBnZXR0aW5nIGl0IHRvIGZ1bmN0aW9uIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBhIFBDSWUgZHJpdmVyLCByaWdodD8gUHVyZWx5IFBDSSwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgcmluZ3MgYWxhcm0gYmVsbHMsIGJlY2F1c2UgaWYgaXQncyBkZXBlbmRlbnQgb24gYSBwaHlzaWNhbCBQQ0llIGNhcmQsIGxpa2UgdGhvc2UgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgZm9yIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVcyAodGhpbmdzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIG9yIGBhbWRncHVgKSwgc3RhbmRhcmQgUUVNVSB3b24ndCBiZSBhYmxlIHRvIGVtdWxhdGUgaXQgZGlyZWN0bHkuXG5cbldhaXQsIGBtdDc5MTVgIGlzIGEgV2ktRmkgZHJpdmVyLCBzbyBpdCdzIGEgTWVkaWFUZWsgUENJZSBXaS1GaSBkcml2ZXIuIEFuZCBpdOKAmXMgbm90IFFFTVUgdGhhdCBlbXVsYXRlcyB0aGlzLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBpcyB0aGVyZSBhbnkgc29mdHdhcmUgZW11bGF0aW9uIG9mIGl0PyBMaWtlLCBpcyB0aGVyZSBzb21ldGhpbmcgc2ltaWxhciB0byBgbWFjODAyMTFfaHdzaW1gPyBBaCwgcmlnaHQsIHRoYXQncyBqdXN0IGEgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBgbWFjODAyMTFgLCBub3QgYSBoYXJkd2FyZSBlbXVsYXRvciBmb3IgdGhlIGBtdDc5MTVgLiBTbywgZ2l2ZW4gbXkgdW5kZXJzdGFuZGluZywgdGhlIGNvZGUgcGF0aHMgd2l0aGluIGBtdDc5MTVgIGFyZSBsaWtlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgc2V0dXBzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUsIGF0IGxlYXN0IG5vdCB3aXRob3V0IHNvbWUgY2xldmVyIHdvcmthcm91bmRzLlxuXG5CdXQsIGhvbGQgb24sIHRoZXJlIG1pZ2h0IGJlIGEgd29ya2Fyb3VuZC4gV2hhdCBpZiB3ZSBjb3VsZCBzb21laG93IHByb2JlIHRoZSBkcml2ZXIgdXNpbmcgYSBmYWtlIFBDSSBkZXZpY2U/IFN5emthbGxlciBoYXMgYHN5el9wY2lfZGV2aWNlX2FkZGAsIHdoaWNoIGNhbiBpbmplY3QgUENJIGNvbmZpZyBzcGFjZSwgYnV0IHRoYXTigJlzIG5vdCB0cnVlIGhhcmR3YXJlIGVtdWxhdGlvbi4gSW4gbW9zdCBjYXNlcywgdGhlc2UgZHJpdmVycyBmYWlsIGVhcmx5IGR1cmluZyBpbml0aWFsaXphdGlvbiwgZXNwZWNpYWxseSB3aGVuIHRoZXkgdHJ5IHRvIHJlYWQgb3Igd3JpdGUgdG8gTU1JTyByZWdpc3RlcnMgb3Igd2FpdCBmb3IgZmlybXdhcmUuXG5cblNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBMZXQncyBzZWUgaWYgdGhlIGZ1bmN0aW9uIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyBjYWxsZWQgZHVyaW5nIHByb2JlLiBUaGlzIGNvdWxkIGJlIGEgZ29vZCBwb2ludCB0byBzdGFydCBmaWd1cmluZyBvdXQgaWYgdGhlcmUncyBhbnkgY2hhbmNlIG9mIHRyaWNraW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTI5NiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTozMi44MDE4ODAxOTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgwNTQzMTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkxNV90aGVybWFsX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xOTk9c3RhdGljIHZvaWQgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTIxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MjEzOnN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0yMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTczMD1tdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NzYyOlxcdHJldCA9IG10NzkxNV90aGVybWFsX2luaXQocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNzYzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTI1OD1pbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEyOTc6XFx0cmV0ID0gbXQ3OTE1X3RoZXJtYWxfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjk4LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM1OjMzLjA4MjQyOTU2NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MDgxNTE2MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYVRlayBXaS1GaSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoaXMgTWVkaWFUZWsgUENJZSBXaS1GaSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEZyb20gd2hhdCBJIHNlZSwgYG10NzkxNV90aGVybWFsX2luaXRgIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQncyBjYWxsZWQgZnJvbSBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgYW5kIGBtdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeWAuIE5vdywgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBmcm9tIGBtdDc5MTVfcGNpX3Byb2JlYC4gQ29uc2lkZXJpbmcgdGhpcyBpcyBhIE1lZGlhVGVrIFBDSWUgV2ktRmkgZHJpdmVyLCBJJ20gcHJldHR5IGNlcnRhaW4gd2UncmUgZGVhbGluZyB3aXRoIGEgcGh5c2ljYWwgaGFyZHdhcmUgZGVwZW5kZW5jeSByaWdodCBmcm9tIHRoZSBzdGFydC4gV2UncmUgZ29pbmcgdG8gbmVlZCBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudCBhbmQgZnVuY3Rpb25pbmcgdG8gZXZlbiBnZXQgcGFzdCB0aGUgZWFybHkgTU1JTyBzZXR1cCBhbmQgZmlybXdhcmUgbG9hZGluZyBzdGFnZXMuIFRoZSBwcm9iaW5nIGNhbid0IGhhcHBlbiBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBjb2RlIHRvIGNvbmZpcm0gaWYgdGhlIGZpcm13YXJlIGxvYWRpbmcgb2NjdXJzIGJlZm9yZSBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgaXMgY2FsbGVkLiBUaGF0IHdpbGwgYmUgbXkgZmlyc3QgYXJlYSB0byBmb2N1cyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1OTQsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzU6MzkuNTkwNTgzMTY5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzk1MzE3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTI0Nz1zdGF0aWMgdm9pZCBtdDc5MTVfc3RvcF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjEyNTg6aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI1OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaD00NTM9dTMyIG10NzkxNV93ZWRfaW5pdF9idWYodm9pZCAqcHRyLCBkbWFfYWRkcl90IHBoeXMsIGludCB0b2tlbl9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgtNDU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ1NTppbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NTYtdm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYz0xMDM9c3RhdGljIGludCBtdDc5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE4MjpcXHRyZXQgPSBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTgzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYz0xMjIwPXN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM6MTI2NDpcXHRyZXQgPSBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI2NS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTozOS42MzQ1NDQwNjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA3ODYxNTYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaWdnaW5nIERlZXBlciBpbnRvIHRoZSBNVDc5MTUgUmVnaXN0cmF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIG1pbnV0ZS4gSSBqdXN0IHNhdyB0aGF0IGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBmdW5jdGlvbiBjYWxsZWQgZnJvbSBgbXQ3OTh4X3dtYWNfcHJvYmVgIGluIGBzb2MuY2AuIFRoYXQncyBpbnRlcmVzdGluZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBjb25uZWN0aW9uIG1vcmUgdGhvcm91Z2hseS4gTXkgaW5pdGlhbCBmb2N1cyB3YXMgb24gdGhlIGZ1bmN0aW9uJ3MgaW5kaXZpZHVhbCBiZWhhdmlvciwgYnV0IG5vdyBJJ20gc2VlaW5nIGl0J3MgaW50ZWdyYXRlZCB3aXRoIGEgYmlnZ2VyIHBpY3R1cmUgdGhyb3VnaCB0aGF0IGBzb2MuY2AgZmlsZS4gUmlnaHQsIGxldOKAmXMgZ28gY2hlY2sgdGhhdCBzcGVjaWZpYyBgc29jLmNgIGZpbGUgdG8gc2VlIHRoZSBjb250ZXh0IG9mIHRoYXQgY2FsbCBhbmQgaG93IHRoZSBwcm9iZSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIFRpbWUgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc3MDMsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTo0My43MTMxNjE2MTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODk2NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk4eF93bWFjX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYz0xMTkwPXN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTIxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjIwOnN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyOTU9c3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdDc5OHhfd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjk5LVxcdH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM6MTMwMDpcXHQucHJvYmUgPSBtdDc5OHhfd21hY19wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMzAxLVxcdC5yZW1vdmUgPSBtdDc5OHhfd21hY19yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM1OjQzLjc1ODA2MjQ4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njk0NzI3MDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbXQ3OTh4X3dtYWNfcHJvYmUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgbXQ3OTh4X3dtYWNfcHJvYmVgIGlzIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIGBtdDc5OHhfd21hY19kcml2ZXJgIOKAkyB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcgb3Bwb3J0dW5pdGllcy4gQ2FuIHRoaXMgcGxhdGZvcm0gZHJpdmVyLCBsaWtlIG1hbnkgb3RoZXJzLCBiZSBhIHRhcmdldCBmb3IgZnV6emluZz8gU3l6a2FsbGVyICpzaG91bGQqIGJlIGFibGUgdG8gaGFuZGxlIGl0IGlmIGl0IGNhbiBiZSBicm91Z2h0IHVwIHRocm91Z2ggZGV2aWNlIHRyZWUgb3Igc29tZSBzaW1pbGFyIGluaXRpYWxpemF0aW9uIG1ldGhvZCwgYW5kIGEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdC4gSG93ZXZlciwgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHZlbmRvci1zcGVjaWZpYyBXaS1GaSBwbGF0Zm9ybSBkcml2ZXJzIG9mdGVuIHByZXNlbnQgYSBjaGFsbGVuZ2UuIFRoZXkgdGVuZCB0byBoYXZlIHRob3NlIHRpZ2h0IGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBoYXJkd2FyZSByZWdpc3RlcnMgYW5kIHRoZSByaWdodCBmaXJtd2FyZSB0byBhY3R1YWxseSBpbml0aWFsaXplIGFuZCB3b3JrIGNvcnJlY3RseS5cblxuUmlnaHQsIHRpbWUgdG8gZGlnIGluLiBMZXQncyBzZWUgZXhhY3RseSB3aGF0IGBtdDc5OHhfd21hY19wcm9iZWAgaXMgZG9pbmcgYW5kIHdoYXQgaXRzIGtleSBhY3Rpb25zIGFyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBleHBlY3RzIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIGJlZm9yZSBJIGNhbiBhc3Nlc3MgdGhlIGZlYXNpYmlsaXR5IG9mIGVmZmVjdGl2ZSBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODI4OCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTo0OC40NTI3OTE5OThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTkxNzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk4eF93bWFjX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTExOTA9c3RhdGljIGludCBtdDc5OHhfd21hY19pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jOjEyMjA6c3RhdGljIGludCBtdDc5OHhfd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM9MTI5NT1zdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10Nzk4eF93bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEyOTktXFx0fSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMzAwOlxcdC5wcm9iZSA9IG10Nzk4eF93bWFjX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jLTEzMDEtXFx0LnJlbW92ZSA9IG10Nzk4eF93bWFjX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzU6NDguNDk3Nzg3ODEzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMjIxMTMwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byBgbXQ3OTh4X3dtYWNfcHJvYmVgLiBJJ20gZ29pbmcgdG8gYXBwcm9hY2ggdGhpcyB3aXRoIG15IHVzdWFsIG1ldGhvZGljYWwgcHJvY2Vzcy4gRmlyc3QsIEkgd2FudCB0byBnZXQgYSBoaWdoLWxldmVsIHVuZGVyc3RhbmRpbmcuIFdoYXQncyB0aGUgbWFpbiBmdW5jdGlvbidzIHB1cnBvc2U/IEknbSBiZXR0aW5nIGl0J3MgdGhlIGNvcmUgcHJvYmUgZnVuY3Rpb24gZm9yIGEgTWVkaWFUZWsgV2ktRmkgY2hpcCwgZ2l2ZW4gdGhlIG5hbWUuIE9rYXksIGxldCdzIHNjYW4gdGhlIGZ1bmN0aW9uJ3MgZGVmaW5pdGlvbi4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgaXQncyByZXNwb25zaWJsZSBmb3IgdGhlIGluaXRpYWwgZGV2aWNlIHNldHVwIHdoZW4gYSBuZXcgTVQ3OTh4LXNlcmllcyB3aXJlbGVzcyBNQUMgZGV2aWNlIGlzIGRpc2NvdmVyZWQgb3IgbG9hZGVkLiBJdCB3aWxsIHByb2JhYmx5IGhhbmRsZSByZXNvdXJjZSBhbGxvY2F0aW9uLCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiwgYW5kIGRyaXZlciByZWdpc3RyYXRpb24gd2l0aCB0aGUga2VybmVsLiBJIGV4cGVjdCBpdCB0byBhbHNvIHBlcmZvcm0gc29tZSBraW5kIG9mIGRldGVjdGlvbiBvciBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSB2YXJpYW50LiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIG1lbW9yeSBtYXBwaW5nLCBJUlEgc2V0dXAsIGFuZCBwZXJoYXBzIHNvbWUgZmlybXdhcmUgbG9hZGluZy4gSSB3YW50IHRvIGNoZWNrIGhvdyBlcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZC4gSXMgaXQgcm9idXN0PyBEb2VzIGl0IHByb3ZpZGUgYWRlcXVhdGUgZXJyb3IgbWVzc2FnZXMgZm9yIGRlYnVnZ2luZz8gSSdsbCBhbHNvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyBpdCB1c2VzLCBlc3BlY2lhbGx5IGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGRldmljZSBjb250ZXh0IG9yIGNvbmZpZ3VyYXRpb24sIGFuZCBob3cgdGhlc2UgYXJlIGluaXRpYWxpemVkIGFuZCBwYXNzZWQgYXJvdW5kLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNoaXAgaW50ZXJhY3RzIHdpdGggdGhlIFBDSSBvciBTRElPIGJ1cy4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyByYWNlIGNvbmRpdGlvbnMuIEZpbmFsbHksIGFmdGVyIHRoaXMgaW5pdGlhbCBzY2FuLCBJJ2xsIGdvIHRocm91Z2ggdGhlIGNvZGUgc3RlcC1ieS1zdGVwLCBtYWtpbmcgbm90ZSBvZiBhbnkgaW50ZXJlc3Rpbmcgb3IgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgc2VjdGlvbnMsIHRoaW5raW5nIG9mIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgd2lyZWxlc3MgZHJpdmVyIHN0YWNrLiBUaGlzIHNob3VsZCBnZXQgbWUgc3RhcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkwMDMsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTo1Mi44MTk5MDM3MDNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMTUsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjE1OlxcdFxcbjEyMTY6XFx0XFx0ZGV2LVxcdTAwM2Vyc3RjID0gZGV2bV9yZXNldF9jb250cm9sX2dldChwZGV2LCBcXFwiY29uc3lzXFxcIik7XFxuMTIxNzpcXHRcXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGRldi1cXHUwMDNlcnN0Yyk7XFxuMTIxODpcXHR9XFxuMTIxOTpcXHRcXG4xMjIwOlxcdHN0YXRpYyBpbnQgbXQ3OTh4X3dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4xMjIxOlxcdHtcXG4xMjIyOlxcdFxcdHZvaWQgX19pb21lbSAqbWVtX2Jhc2U7XFxuMTIyMzpcXHRcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2O1xcbjEyMjQ6XFx0XFx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xcbjEyMjU6XFx0XFx0aW50IGlycSwgcmV0O1xcbjEyMjY6XFx0XFx0dTMyIGNoaXBfaWQ7XFxuMTIyNzpcXHRcXG4xMjI4OlxcdFxcdGNoaXBfaWQgPSAodWludHB0cl90KW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4xMjI5OlxcdFxcbjEyMzA6XFx0XFx0bWVtX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7XFxuMTIzMTpcXHRcXHRpZiAoSVNfRVJSKG1lbV9iYXNlKSkge1xcbjEyMzI6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGdldCBtZW1vcnkgcmVzb3VyY2VcXFxcblxcXCIpO1xcbjEyMzM6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWVtX2Jhc2UpO1xcbjEyMzQ6XFx0XFx0fVxcbjEyMzU6XFx0XFxuMTIzNjpcXHRcXHRkZXYgPSBtdDc5MTVfbW1pb19wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBtZW1fYmFzZSwgY2hpcF9pZCk7XFxuMTIzNzpcXHRcXHRpZiAoSVNfRVJSKGRldikpXFxuMTIzODpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihkZXYpO1xcbjEyMzk6XFx0XFxuMTI0MDpcXHRcXHRtZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3NjtcXG4xMjQxOlxcdFxcdHJldCA9IG10NzkxNV9tbWlvX3dlZF9pbml0KGRldiwgcGRldiwgZmFsc2UsIFxcdTAwMjZpcnEpO1xcbjEyNDI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTI0MzpcXHRcXHRcXHRnb3RvIGZyZWVfZGV2aWNlO1xcbjEyNDQ6XFx0XFxuMTI0NTpcXHRcXHRpZiAoIXJldCkge1xcbjEyNDY6XFx0XFx0XFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTtcXG4xMjQ3OlxcdFxcdFxcdGlmIChpcnEgXFx1MDAzYyAwKSB7XFxuMTI0ODpcXHRcXHRcXHRcXHRyZXQgPSBpcnE7XFxuMTI0OTpcXHRcXHRcXHRcXHRnb3RvIGZyZWVfZGV2aWNlO1xcbjEyNTA6XFx0XFx0XFx0fVxcbjEyNTE6XFx0XFx0fVxcbjEyNTI6XFx0XFxuMTI1MzpcXHRcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXFx1MDAzZWRldiwgaXJxLCBtdDc5MTVfaXJxX2hhbmRsZXIsXFxuMTI1NDpcXHRcXHRcXHRcXHQgICAgICAgSVJRRl9TSEFSRUQsIEtCVUlMRF9NT0ROQU1FLCBkZXYpO1xcbjEyNTU6XFx0XFx0aWYgKHJldClcXG4xMjU2OlxcdFxcdFxcdGdvdG8gZnJlZV9kZXZpY2U7XFxuMTI1NzpcXHRcXG4xMjU4OlxcdFxcdHJldCA9IG10Nzk4eF93bWFjX2luaXQoZGV2KTtcXG4xMjU5OlxcdFxcdGlmIChyZXQpXFxuMTI2MDpcXHRcXHRcXHRnb3RvIGZyZWVfaXJxO1xcbjEyNjE6XFx0XFxuMTI2MjpcXHRcXHRtdDc5MTVfd2ZzeXNfcmVzZXQoZGV2KTtcXG4xMjYzOlxcdFxcbjEyNjQ6XFx0XFx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbjEyNjU6XFx0XFx0aWYgKHJldClcXG4xMjY2OlxcdFxcdFxcdGdvdG8gZnJlZV9pcnE7XFxuMTI2NzpcXHRcXG4xMjY4OlxcdFxcdHJldHVybiAwO1xcbjEyNjk6XFx0XFxuMTI3MDpcXHRmcmVlX2lycTpcXG4xMjcxOlxcdFxcdGRldm1fZnJlZV9pcnEobWRldi1cXHUwMDNlZGV2LCBpcnEsIGRldik7XFxuMTI3MjpcXHRmcmVlX2RldmljZTpcXG4xMjczOlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG4xMjc0OlxcdFxcdFxcdG10a193ZWRfZGV2aWNlX2RldGFjaChcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpO1xcbjEyNzU6XFx0XFx0bXQ3Nl9mcmVlX2RldmljZShtZGV2KTtcXG4xMjc2OlxcdFxcbjEyNzc6XFx0XFx0cmV0dXJuIHJldDtcXG4xMjc4OlxcdH1cXG4xMjc5OlxcdFxcbjEyODA6XFx0c3RhdGljIHZvaWQgbXQ3OTh4X3dtYWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuMTI4MTpcXHR7XFxuMTI4MjpcXHRcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuMTI4MzpcXHRcXG4xMjg0OlxcdFxcdG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShkZXYpO1xcbjEyODU6XFx0fVxcbjEyODY6XFx0XFxuMTI4NzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDc5OHhfd21hY19vZl9tYXRjaFtdID0ge1xcbjEyODg6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtZWRpYXRlayxtdDc5ODEtd21hY1xcXCIsIC5kYXRhID0gKHUzMiAqKTB4Nzk4MSB9LFxcbjEyODk6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtZWRpYXRlayxtdDc5ODYtd21hY1xcXCIsIC5kYXRhID0gKHUzMiAqKTB4Nzk4NiB9LFxcbjEyOTA6XFx0XFx0e30sXFxuMTI5MTpcXHR9O1xcbjEyOTI6XFx0XFxuMTI5MzpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdDc5OHhfd21hY19vZl9tYXRjaCk7XFxuMTI5NDpcXHRcXG4xMjk1OlxcdHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXQ3OTh4X3dtYWNfZHJpdmVyID0ge1xcbjEyOTY6XFx0XFx0LmRyaXZlciA9IHtcXG4xMjk3OlxcdFxcdFxcdC5uYW1lID0gXFxcIm10Nzk4eC13bWFjXFxcIixcXG4xMjk4OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG10Nzk4eF93bWFjX29mX21hdGNoLFxcbjEyOTk6XFx0XFx0fSxcXG4xMzAwOlxcdFxcdC5wcm9iZSA9IG10Nzk4eF93bWFjX3Byb2JlLFxcbjEzMDE6XFx0XFx0LnJlbW92ZSA9IG10Nzk4eF93bWFjX3JlbW92ZSxcXG4xMzAyOlxcdH07XFxuMTMwMzpcXHRcXG4xMzA0OlxcdE1PRFVMRV9GSVJNV0FSRShNVDc5ODZfRklSTVdBUkVfV0EpO1xcbjEzMDU6XFx0TU9EVUxFX0ZJUk1XQVJFKE1UNzk4Nl9GSVJNV0FSRV9XTSk7XFxuMTMwNjpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3OTg2X0ZJUk1XQVJFX1dNX01UNzk3NSk7XFxuMTMwNzpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3OTg2X1JPTV9QQVRDSCk7XFxuMTMwODpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3OTg2X1JPTV9QQVRDSF9NVDc5NzUpO1xcbjEzMDk6XFx0XFxuMTMxMDpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3OTgxX0ZJUk1XQVJFX1dBKTtcXG4xMzExOlxcdE1PRFVMRV9GSVJNV0FSRShNVDc5ODFfRklSTVdBUkVfV00pO1xcbjEzMTI6XFx0TU9EVUxFX0ZJUk1XQVJFKE1UNzk4MV9ST01fUEFUQ0gpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNTo1Mi44MjAwMTE0OTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzMTE3ODMwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgV2ktRmkgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwbGF0Zm9ybSBkcml2ZXIsIGFuZCBpdCdzIHByZXR0eSBjbGVhciBpdCByZWxpZXMgb24gZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiDigJMgc3BlY2lmaWNhbGx5IGZvciB0aGUgYG1lZGlhdGVrLG10Nzk4MS13bWFjYCBvciBgbWVkaWF0ZWssbXQ3OTg2LXdtYWNgIGNvbmZpZ3VyYXRpb25zLiBUaGF0IG1ha2VzIHNlbnNlLCBzdGFuZGFyZCBwcmFjdGljZSBmb3IgbW9kZXJuIGVtYmVkZGVkIHN5c3RlbXMuIFdoYXQncyBtb3JlIGludGVyZXN0aW5nIGlzIHRoYXQgaXQgdGhlbiBjYWxscyBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpYC4gVGhpcyBmdW5jdGlvbiBjYWxsIGlzIGtleSBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgcmVnaXN0cmF0aW9uIGVudGFpbHMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBpbiBgaW5pdC5jYC4gVGhhdCdzIHdoZXJlIHRoZSBpbml0aWFsaXphdGlvbiBsb2dpYyBzaG91bGQgYmUsIHJpZ2h0PyBMZXQncyBnbyB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBhbmQgc2VlIHdoYXQgaXQgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5OTQsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM1OjU3LjE1MTE5MjY5M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI2MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyNTgsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjU4OlxcdGludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuMTI1OTpcXHR7XFxuMTI2MDpcXHRcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MjtcXG4xMjYxOlxcdFxcdGludCByZXQ7XFxuMTI2MjpcXHRcXG4xMjYzOlxcdFxcdGRldi1cXHUwMDNlcGh5LmRldiA9IGRldjtcXG4xMjY0OlxcdFxcdGRldi1cXHUwMDNlcGh5Lm10NzYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnBoeTtcXG4xMjY1OlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5waHkucHJpdiA9IFxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG4xMjY2OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VyY193b3JrLCBtdDc5MTVfbWFjX3N0YV9yY193b3JrKTtcXG4xMjY3OlxcdFxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkubWFjX3dvcmssIG10NzkxNV9tYWNfd29yayk7XFxuMTI2ODpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2ZGV2LVxcdTAwM2VzdGFfcmNfbGlzdCk7XFxuMTI2OTpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2ZGV2LVxcdTAwM2V0d3RfbGlzdCk7XFxuMTI3MDpcXHRcXG4xMjcxOlxcdFxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNmRldi1cXHUwMDNlcmVzZXRfd2FpdCk7XFxuMTI3MjpcXHRcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcmVzZXRfd29yaywgbXQ3OTE1X21hY19yZXNldF93b3JrKTtcXG4xMjczOlxcdFxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VkdW1wX3dvcmssIG10NzkxNV9tYWNfZHVtcF93b3JrKTtcXG4xMjc0OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmRldi1cXHUwMDNlZHVtcF9tdXRleCk7XFxuMTI3NTpcXHRcXG4xMjc2OlxcdFxcdGRldi1cXHUwMDNlZGJkY19zdXBwb3J0ID0gbXQ3OTE1X2JhbmRfY29uZmlnKGRldik7XFxuMTI3NzpcXHRcXG4xMjc4OlxcdFxcdHBoeTIgPSBtdDc5MTVfYWxsb2NfZXh0X3BoeShkZXYpO1xcbjEyNzk6XFx0XFx0aWYgKElTX0VSUihwaHkyKSlcXG4xMjgwOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHBoeTIpO1xcbjEyODE6XFx0XFxuMTI4MjpcXHRcXHRyZXQgPSBtdDc5MTVfaW5pdF9oYXJkd2FyZShkZXYsIHBoeTIpO1xcbjEyODM6XFx0XFx0aWYgKHJldClcXG4xMjg0OlxcdFxcdFxcdGdvdG8gZnJlZV9waHkyO1xcbjEyODU6XFx0XFxuMTI4NjpcXHRcXHRtdDc5MTVfaW5pdF93aXBoeShcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbjEyODc6XFx0XFxuMTI4ODpcXHQjaWZkZWYgQ09ORklHX05MODAyMTFfVEVTVE1PREVcXG4xMjg5OlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni50ZXN0X29wcyA9IFxcdTAwMjZtdDc5MTVfdGVzdG1vZGVfb3BzO1xcbjEyOTA6XFx0I2VuZGlmXFxuMTI5MTpcXHRcXG4xMjkyOlxcdFxcdHJldCA9IG10NzZfcmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHRydWUsIG10NzZfcmF0ZXMsXFxuMTI5MzpcXHRcXHRcXHRcXHRcXHQgICBBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTtcXG4xMjk0OlxcdFxcdGlmIChyZXQpXFxuMTI5NTpcXHRcXHRcXHRnb3RvIHN0b3BfaHc7XFxuMTI5NjpcXHRcXG4xMjk3OlxcdFxcdHJldCA9IG10NzkxNV90aGVybWFsX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG4xMjk4OlxcdFxcdGlmIChyZXQpXFxuMTI5OTpcXHRcXHRcXHRnb3RvIHVucmVnX2RldjtcXG4xMzAwOlxcdFxcbjEzMDE6XFx0XFx0aWYgKHBoeTIpIHtcXG4xMzAyOlxcdFxcdFxcdHJldCA9IG10NzkxNV9yZWdpc3Rlcl9leHRfcGh5KGRldiwgcGh5Mik7XFxuMTMwMzpcXHRcXHRcXHRpZiAocmV0KVxcbjEzMDQ6XFx0XFx0XFx0XFx0Z290byB1bnJlZ190aGVybWFsO1xcbjEzMDU6XFx0XFx0fVxcbjEzMDY6XFx0XFxuMTMwNzpcXHRcXHRpZWVlODAyMTFfcXVldWVfd29yayhtdDc2X2h3KGRldiksIFxcdTAwMjZkZXYtXFx1MDAzZWluaXRfd29yayk7XFxuMTMwODpcXHRcXG4xMzA5OlxcdFxcdGRldi1cXHUwMDNlcmVjb3ZlcnkuaHdfaW5pdF9kb25lID0gdHJ1ZTtcXG4xMzEwOlxcdFxcbjEzMTE6XFx0XFx0cmV0ID0gbXQ3OTE1X2luaXRfZGVidWdmcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbjEzMTI6XFx0XFx0aWYgKHJldClcXG4xMzEzOlxcdFxcdFxcdGdvdG8gdW5yZWdfZXh0X3BoeTtcXG4xMzE0OlxcdFxcbjEzMTU6XFx0XFx0cmV0ID0gbXQ3OTE1X2NvcmVkdW1wX3JlZ2lzdGVyKGRldik7XFxuMTMxNjpcXHRcXHRpZiAocmV0KVxcbjEzMTc6XFx0XFx0XFx0Z290byB1bnJlZ19leHRfcGh5O1xcbjEzMTg6XFx0XFxuMTMxOTpcXHRcXHRyZXR1cm4gMDtcXG4xMzIwOlxcdFxcbjEzMjE6XFx0dW5yZWdfZXh0X3BoeTpcXG4xMzIyOlxcdFxcdGlmIChwaHkyKSB7XFxuMTMyMzpcXHRcXHRcXHRtdDc5MTVfdW5yZWdpc3Rlcl9leHRfcGh5KGRldik7XFxuMTMyNDpcXHRcXHRcXHRwaHkyID0gTlVMTDtcXG4xMzI1OlxcdFxcdH1cXG4xMzI2OlxcdHVucmVnX3RoZXJtYWw6XFxuMTMyNzpcXHRcXHRtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuMTMyODpcXHR1bnJlZ19kZXY6XFxuMTMyOTpcXHRcXHRtdDc2X3VucmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjEzMzA6XFx0c3RvcF9odzpcXG4xMzMxOlxcdFxcdG10NzkxNV9zdG9wX2hhcmR3YXJlKGRldik7XFxuMTMzMjpcXHRmcmVlX3BoeTI6XFxuMTMzMzpcXHRcXHRpZiAocGh5MilcXG4xMzM0OlxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX2h3KHBoeTItXFx1MDAzZW10NzYtXFx1MDAzZWh3KTtcXG4xMzM1OlxcdFxcdHJldHVybiByZXQ7XFxuMTMzNjpcXHR9XFxuMTMzNzpcXHRcXG4xMzM4OlxcdHZvaWQgbXQ3OTE1X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuMTMzOTpcXHR7XFxuMTM0MDpcXHRcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZWR1bXBfd29yayk7XFxuMTM0MTpcXHRcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmspO1xcbjEzNDI6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VyY193b3JrKTtcXG4xMzQzOlxcdFxcdG10NzkxNV91bnJlZ2lzdGVyX2V4dF9waHkoZGV2KTtcXG4xMzQ0OlxcdFxcdG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKGRldik7XFxuMTM0NTpcXHRcXHRtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuMTM0NjpcXHRcXHRtdDc2X3VucmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjEzNDc6XFx0XFx0bXQ3OTE1X3N0b3BfaGFyZHdhcmUoZGV2KTtcXG4xMzQ4OlxcdFxcbjEzNDk6XFx0XFx0bXQ3Nl9mcmVlX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4xMzUwOlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzU6NTcuMTUxMzA3MTQyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMjA0OTYyOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBmb2N1c2luZyBvbiB0aGUga2V5IGFjdGlvbnM6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBIYXJkd2FyZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBoYXMga2lja2VkIG9mZiwgYW5kIGFzIEkgZXhwZWN0ZWQsIGl0J3MgY2FsbGVkIGBtdDc5MTVfaW5pdF9oYXJkd2FyZWAgd2l0aCB0aGUgZGV2aWNlIGFuZCBwaHkyIGFzIGFyZ3VtZW50cy4gTXkgbmV4dCBpbW1lZGlhdGUgYWN0aW9uIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgaW5pdGlhbGl6YXRpb24gaXMgYmVpbmcgaGFuZGxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzdGVwcyBpdCBpcyB0YWtpbmcgd2l0aCB0aGUgaGFyZHdhcmUhIFRpbWUgdG8gZGlnIGluIGFuZCBleGFtaW5lIHRoZSBpbm5lciB3b3JraW5ncyBvZiBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIVxuXG5cbiIsIklucHV0VG9rZW5zIjozMjc3OCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6MDIuMTcxODA1NjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTIxNzk4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfaW5pdF9oYXJkd2FyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTg2NT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjg2NjptdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjU4PWludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI4MjpcXHRyZXQgPSBtdDc5MTVfaW5pdF9oYXJkd2FyZShkZXYsIHBoeTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjgzLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM2OjAyLjMyNzAyODEzNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU5ODg4Nzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gYG10NzkxNV9pbml0X2hhcmR3YXJlYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMsIHN0ZXAtYnktc3RlcCwgYXQgYSBoaWdoIGxldmVsLiBTaW5jZSBJJ20gZmFtaWxpYXIgd2l0aCB0aGlzIGFyY2hpdGVjdHVyZSwgSSBrbm93IGl0IGxpa2VseSBpbnZvbHZlcyB0aGluZ3MgbGlrZSByZWdpc3RlciB3cml0ZXMgdG8gaW5pdGlhbGl6ZSB0aGUgcmFkaW8sIFBIWSBjb25maWd1cmF0aW9uLCBwb3NzaWJseSBETUEgc2V0dXAsIGFuZCBpbnRlcnJ1cHQgZW5hYmxpbmcuIFRoZSBnb2FsIGhlcmUgaXMgdG8gZXN0YWJsaXNoIHRoZSBmdW5kYW1lbnRhbCBoYXJkd2FyZSBzdGF0ZSBmb3IgdGhlIE1UNzkxNSBjaGlwc2V0IHRvIG9wZXJhdGUuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zOyBkZXBlbmRlbmNpZXMgYXJlIGNydWNpYWwsIGVzcGVjaWFsbHkgd2l0aCBjb21wbGV4IGhhcmR3YXJlIGxpa2UgdGhpcy4gQXJlIHRoZXJlIGFueSBwYXJ0aWN1bGFyIHNlY3Rpb25zIHRoYXQgc2VlbSBpbW1lZGlhdGVseSByZWxldmFudCB0byBwb3dlciBtYW5hZ2VtZW50IG9yIHNlY3VyaXR5PyBUaGF0IG1pZ2h0IG9mZmVyIGluc2lnaHRzIGludG8gbGF0ZXIgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLiBJJ2xsIHdhdGNoIGZvciBob3cgdGhlIGNvZGUgc2V0cyB1cCB0aGUgY2xvY2sgc291cmNlcyB0b28sIGJlY2F1c2UgdGhhdCdzIGFsd2F5cyBhIGNyaXRpY2FsIGFzcGVjdCwgYW5kIGNhbiBiZSBzdWJ0bGUgaW4gaXRzIGltcGxpY2F0aW9ucyBvbiBsYXRlciBiZWhhdmlvci4gVW5kZXJzdGFuZGluZyB0aGUgaGFyZHdhcmUncyByZXNldCBzdGF0ZSBpcyBhbHNvIGltcG9ydGFudCBzbyBJIHdpbGwgcGF5IGF0dGVudGlvbiB0byB0aGF0LiBJIGV4cGVjdCB0aGVyZSBtaWdodCBiZSBjaGVja3MgZm9yIGhhcmR3YXJlIHJldmlzaW9ucyBvciBjYXBhYmlsaXRpZXM7IEkgbmVlZCB0byByZWNvZ25pemUgaWYgaXQgaGFzIGEgd2F5IHRvIGRlYWwgd2l0aCBkaWZmZXJlbnQgY2hpcCB2ZXJzaW9ucy4gSSdsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIG9mIGFueSBhc3NvY2lhdGVkIGNvLXByb2Nlc3NvcnMgYXMgd2VsbDsgdGhvc2UgYXJlIHNvIGNvbW1vbiB3aXRoIHRoaXMga2luZCBvZiBzeXN0ZW0tb24tY2hpcC4gRmluYWxseSwgSSdsbCBuZWVkIHRvIHRyYWNrIGFueSByZXR1cm4gdmFsdWVzIG9yIHN0YXR1cyBmbGFncywgYmVjYXVzZSB0aGVzZSB3aWxsIGxpa2VseSBjb21tdW5pY2F0ZSB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHZhcmlvdXMgaW5pdGlhbGl6YXRpb24gc3RhZ2VzLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHJldHVybiB2YWx1ZXMgd2lsbCBiZSBrZXkgdG8gZmF1bHQgdG9sZXJhbmNlIGZ1cnRoZXIgZG93biB0aGUgbGluZS4gSSdsbCBzdGFydCByZWFkaW5nLCB3aXRoIHRoZXNlIGFzcGVjdHMgaW4gbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzMTYsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjowNi4yODY5MTk5NzJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NjUsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODY1OlxcdHN0YXRpYyBpbnRcXG4gODY2OlxcdG10NzkxNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxcbiA4Njc6XFx0e1xcbiA4Njg6XFx0XFx0aW50IHJldCwgaWR4O1xcbiA4Njk6XFx0XFxuIDg3MDpcXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UX01BU0tfQ1NSLCAwKTtcXG4gODcxOlxcdFxcdG10NzZfd3IoZGV2LCBNVF9JTlRfU09VUkNFX0NTUiwgfjApO1xcbiA4NzI6XFx0XFxuIDg3MzpcXHRcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlaW5pdF93b3JrLCBtdDc5MTVfaW5pdF93b3JrKTtcXG4gODc0OlxcdFxcbiA4NzU6XFx0XFx0cmV0ID0gbXQ3OTE1X2RtYV9pbml0KGRldiwgcGh5Mik7XFxuIDg3NjpcXHRcXHRpZiAocmV0KVxcbiA4Nzc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODc4OlxcdFxcbiA4Nzk6XFx0XFx0c2V0X2JpdChNVDc2X1NUQVRFX0lOSVRJQUxJWkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gODgwOlxcdFxcbiA4ODE6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9pbml0KGRldik7XFxuIDg4MjpcXHRcXHRpZiAocmV0KVxcbiA4ODM6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODg0OlxcdFxcbiA4ODU6XFx0XFx0cmV0ID0gbXQ3OTE1X2VlcHJvbV9pbml0KGRldik7XFxuIDg4NjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gODg3OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDg4ODpcXHRcXG4gODg5OlxcdFxcdGlmIChkZXYtXFx1MDAzZWNhbCkge1xcbiA4OTA6XFx0XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9hcHBseV9ncm91cF9jYWwoZGV2KTtcXG4gODkxOlxcdFxcdFxcdGlmIChyZXQpXFxuIDg5MjpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA4OTM6XFx0XFx0fVxcbiA4OTQ6XFx0XFxuIDg5NTpcXHRcXHQvKiBCZWFjb24gYW5kIG1nbXQgZnJhbWVzIHNob3VsZCBvY2N1cHkgd2NpZCAwICovXFxuIDg5NjpcXHRcXHRpZHggPSBtdDc2X3djaWRfYWxsb2MoZGV2LVxcdTAwM2VtdDc2LndjaWRfbWFzaywgTVQ3OTE1X1dUQkxfU1RBKTtcXG4gODk3OlxcdFxcdGlmIChpZHgpXFxuIDg5ODpcXHRcXHRcXHRyZXR1cm4gLUVOT1NQQztcXG4gODk5OlxcdFxcbiA5MDA6XFx0XFx0ZGV2LVxcdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmlkeCA9IGlkeDtcXG4gOTAxOlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZC5od19rZXlfaWR4ID0gLTE7XFxuIDkwMjpcXHRcXHRkZXYtXFx1MDAzZW10NzYuZ2xvYmFsX3djaWQudHhfaW5mbyB8PSBNVF9XQ0lEX1RYX0lORk9fU0VUO1xcbiA5MDM6XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cXHUwMDNlbXQ3Ni53Y2lkW2lkeF0sIFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuZ2xvYmFsX3djaWQpO1xcbiA5MDQ6XFx0XFxuIDkwNTpcXHRcXHRyZXR1cm4gMDtcXG4gOTA2OlxcdH1cXG4gOTA3OlxcdFxcbiA5MDg6XFx0dm9pZCBtdDc5MTVfc2V0X3N0cmVhbV92aHRfdHhiZl9jYXBzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXFxuIDkwOTpcXHR7XFxuIDkxMDpcXHRcXHRpbnQgc3RzO1xcbiA5MTE6XFx0XFx0dTMyICpjYXA7XFxuIDkxMjpcXHRcXG4gOTEzOlxcdFxcdGlmICghcGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VjYXAuaGFzXzVnaHopXFxuIDkxNDpcXHRcXHRcXHRyZXR1cm47XFxuIDkxNTpcXHRcXG4gOTE2OlxcdFxcdHN0cyA9IGh3ZWlnaHQ4KHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2hhaW5tYXNrKTtcXG4gOTE3OlxcdFxcdGNhcCA9IFxcdTAwMjZwaHktXFx1MDAzZW10NzYtXFx1MDAzZXNiYW5kXzVnLnNiYW5kLnZodF9jYXAuY2FwO1xcbiA5MTg6XFx0XFxuIDkxOTpcXHRcXHQqY2FwIHw9IElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRUVfQ0FQQUJMRSB8XFxuIDkyMDpcXHRcXHRcXHRJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVFX0NBUEFCTEUgfFxcbiA5MjE6XFx0XFx0XFx0RklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9CRUFNRk9STUVFX1NUU19NQVNLLFxcbiA5MjI6XFx0XFx0XFx0XFx0ICAgc3RzIC0gMSk7XFxuIDkyMzpcXHRcXG4gOTI0OlxcdFxcdCpjYXAgXFx1MDAyNj0gfihJRUVFODAyMTFfVkhUX0NBUF9TT1VORElOR19ESU1FTlNJT05TX01BU0sgfFxcbiA5MjU6XFx0XFx0XFx0ICBJRUVFODAyMTFfVkhUX0NBUF9TVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxcbiA5MjY6XFx0XFx0XFx0ICBJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVSX0NBUEFCTEUpO1xcbiA5Mjc6XFx0XFxuIDkyODpcXHRcXHRpZiAoc3RzIFxcdTAwM2MgMilcXG4gOTI5OlxcdFxcdFxcdHJldHVybjtcXG4gOTMwOlxcdFxcbiA5MzE6XFx0XFx0KmNhcCB8PSBJRUVFODAyMTFfVkhUX0NBUF9TVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxcbiA5MzI6XFx0XFx0XFx0SUVFRTgwMjExX1ZIVF9DQVBfTVVfQkVBTUZPUk1FUl9DQVBBQkxFIHxcXG4gOTMzOlxcdFxcdFxcdEZJRUxEX1BSRVAoSUVFRTgwMjExX1ZIVF9DQVBfU09VTkRJTkdfRElNRU5TSU9OU19NQVNLLFxcbiA5MzQ6XFx0XFx0XFx0XFx0ICAgc3RzIC0gMSk7XFxuIDkzNTpcXHR9XFxuIDkzNjpcXHRcXG4gOTM3OlxcdHN0YXRpYyB2b2lkXFxuIDkzODpcXHRtdDc5MTVfc2V0X3N0cmVhbV9oZV90eGJmX2NhcHMoc3RydWN0IG10NzkxNV9waHkgKnBoeSxcXG4gOTM5OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YV9oZV9jYXAgKmhlX2NhcCwgaW50IHZpZilcXG4gOTQwOlxcdHtcXG4gOTQxOlxcdFxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG4gOTQyOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaGVfY2FwX2VsZW0gKmVsZW0gPSBcXHUwMDI2aGVfY2FwLVxcdTAwM2VoZV9jYXBfZWxlbTtcXG4gOTQzOlxcdFxcdGludCBzdHMgPSBod2VpZ2h0OChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNoYWlubWFzayk7XFxuIDk0NDpcXHRcXHR1OCBjLCBzdHNfMTYwID0gc3RzO1xcbiA5NDU6XFx0XFxuIDk0NjpcXHRcXHQvKiBDYW4gZG8gMS8yIG9mIFNUUyBpbiAxNjBNaHogbW9kZSBmb3IgbXQ3OTE1ICovXFxuIDk0NzpcXHRcXHRpZiAoaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuIDk0ODpcXHRcXHRcXHRpZiAoIWRldi1cXHUwMDNlZGJkY19zdXBwb3J0KVxcbiA5NDk6XFx0XFx0XFx0XFx0c3RzXzE2MCAvPSAyO1xcbiA5NTA6XFx0XFx0XFx0ZWxzZVxcbiA5NTE6XFx0XFx0XFx0XFx0c3RzXzE2MCA9IDA7XFxuIDk1MjpcXHRcXHR9XFxuIDk1MzpcXHRcXG4gOTU0OlxcdCNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbiA5NTU6XFx0XFx0aWYgKHZpZiA9PSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UKVxcbiA5NTY6XFx0XFx0XFx0cmV0dXJuO1xcbiA5NTc6XFx0I2VuZGlmXFxuIDk1ODpcXHRcXG4gOTU5OlxcdFxcdGVsZW0tXFx1MDAzZXBoeV9jYXBfaW5mb1szXSBcXHUwMDI2PSB+SUVFRTgwMjExX0hFX1BIWV9DQVAzX1NVX0JFQU1GT1JNRVI7XFxuIDk2MDpcXHRcXHRlbGVtLVxcdTAwM2VwaHlfY2FwX2luZm9bNF0gXFx1MDAyNj0gfklFRUU4MDIxMV9IRV9QSFlfQ0FQNF9NVV9CRUFNRk9STUVSO1xcbiA5NjE6XFx0XFxuIDk2MjpcXHRcXHRjID0gSUVFRTgwMjExX0hFX1BIWV9DQVA1X0JFQU1GT1JNRUVfTlVNX1NORF9ESU1fVU5ERVJfODBNSFpfTUFTSztcXG4gOTYzOlxcdFxcdGlmIChzdHNfMTYwKVxcbiA5NjQ6XFx0XFx0XFx0YyB8PSBJRUVFODAyMTFfSEVfUEhZX0NBUDVfQkVBTUZPUk1FRV9OVU1fU05EX0RJTV9BQk9WRV84ME1IWl9NQVNLO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjowNi4yODcwMzE5OTJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ4MDk3NzM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIEZsb3cqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIGlzIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludCwgYW5kIGl0IGNhbGxzIGBtdDc5MTVfbWN1X2luaXRgIHdpdGggdGhlIGRldmljZSBjb250ZXh0LiAgVGhhdCdzIHdoZXJlIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBNQ1UgaW5pdGlhbGl6YXRpb24gaGFwcGVuLiAgTWFrZXMgc2Vuc2UsIHRoYXQncyB1c3VhbGx5IHRoZSBmaXJzdCBoYXJkd2FyZSBzdGVwLlxuXG5Ob3csIGlmIGBtdDc5MTVfbWN1X2luaXRgIGZhaWxzIOKAkyBiZWNhdXNlLCBzYXksIHRoZSBmaXJtd2FyZSBpc24ndCBwcmVzZW50IG9yIHRoZSBoYXJkd2FyZSBkb2Vzbid0IHJlc3BvbmQgYXMgZXhwZWN0ZWQg4oCTIHdlJ3JlIGdvaW5nIHRvIGdldCBhIGZhaWx1cmUgYXQgdGhhdCBwb2ludC4gVGhpcywgbG9naWNhbGx5LCB3aWxsIHByb3BhZ2F0ZSB1cCB0byBhIGZhaWx1cmUgaW4gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLiBBbmQgaGVyZSdzIHRoZSBraWNrZXI6IGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyBjYWxsZWQgKmFmdGVyKiBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIHdpdGhpbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAuIFNvLCBhbnkgZmFpbHVyZSBpbiB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc3RhZ2UgKGxpa2UgdGhlIGZpcm13YXJlIGZhaWxpbmcgdG8gbG9hZCkgKmRlZmluaXRlbHkqIHByZXZlbnRzIHVzIGZyb20gZXZlbiByZWFjaGluZyB0aGUgdGhlcm1hbCBpbml0aWFsaXphdGlvbi4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyB5b3UgY2FuJ3QgbWFuYWdlIHRoZXJtYWwgY2hhcmFjdGVyaXN0aWNzIGlmIHRoZSBkZXZpY2UgaXNuJ3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuXG5cblNwZWNpZmljYWxseSwgaW4gUUVNVSwgd2l0aG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgYG10NzkxNV9tY3VfaW5pdGAgaXMgKmd1YXJhbnRlZWQqIHRvIGZhaWwuIE5vIGhhcmR3YXJlLCBubyBmaXJtd2FyZSByZXNwb25zZS4gV2UgbmVlZCB0byB2ZXJpZnkgdGhpcyBhc3N1bXB0aW9uIGJ5IGV4YW1pbmluZyBgbXQ3OTE1X21jdV9pbml0YCBmdW5jdGlvbiBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTA2LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6MTEuNzY4MDExOTIyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMxNjg4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfbWN1X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz04NjY9bXQ3OTE1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo4ODE6XFx0cmV0ID0gbXQ3OTE1X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTg4Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9MTI5MD1tdDc5MTVfbWFjX3Jlc3RhcnQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTEzNzYtXFx0LyogbG9hZCBmaXJtd2FyZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjEzNzc6XFx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTM3OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjMyMj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjMyMzptdDc5MTVfbWN1X2luaXRfcnhfYWlydGltZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjM4Nz1zdGF0aWMgaW50IG10NzkxNV9tY3Vfc2V0X3JlZChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIGVuYWJsZWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0MTA6aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDU4OlxcdHJldCA9IG10NzkxNV9tY3VfaW5pdF9yeF9haXJ0aW1lKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ1OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDY1OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQ3NzpcXHRyZXR1cm4gbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ3OC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaD00NzM9aW50IG10NzkxNV9ydW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3NDppbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3NTppbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQ3Ni1pbnQgbXQ3OTE1X21jdV90d3RfYWdydF91cGRhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6MTEuODE5MzMzMjc3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5OTkwMzA3NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5MTUgTUNVIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gYG10NzkxNV9tY3VfaW5pdGAgaXMgdGhlIGVudHJ5IHBvaW50LCBuYXR1cmFsbHkuIEFuZCwgYXMgZXhwZWN0ZWQsIGl0J3MgaW1tZWRpYXRlbHkgY2FsbGluZyBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldilgLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbWFnaWMgbGlrZWx5IGhhcHBlbnMsIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsIHNldHVwIG9mIHRoZSBNQ1UsIEkgcHJlc3VtZS4gTXkgbmV4dCBzdGVwIGlzIGNsZWFybHkgdG8gZGl2ZSBkZWVwZXIgaW50byBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmaXJtd2FyZSBpcyBoYW5kbGVkIGluIG9yZGVyIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhpcyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzczMDIsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjoxNS44MTgzNjcyOTFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MTAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDEwOlxcdGludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4yNDExOlxcdHtcXG4yNDEyOlxcdFxcdGludCByZXQ7XFxuMjQxMzpcXHRcXG4yNDE0OlxcdFxcdC8qIGZvcmNlIGZpcm13YXJlIG9wZXJhdGlvbiBtb2RlIGludG8gbm9ybWFsIHN0YXRlLFxcbjI0MTU6XFx0XFx0ICogd2hpY2ggc2hvdWxkIGJlIHNldCBiZWZvcmUgZmlybXdhcmUgZG93bmxvYWQgc3RhZ2UuXFxuMjQxNjpcXHRcXHQgKi9cXG4yNDE3OlxcdFxcdG10NzZfd3IoZGV2LCBNVF9TV0RFRl9NT0RFLCBNVF9TV0RFRl9OT1JNQUxfTU9ERSk7XFxuMjQxODpcXHRcXG4yNDE5OlxcdFxcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMCk7XFxuMjQyMDpcXHRcXHRpZiAocmV0KVxcbjI0MjE6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDIyOlxcdFxcdC8qIHNldCBkcml2ZXIgb3duIGZvciBiYW5kMSB3aGVuIHR3byBoaWYgZXhpc3QgKi9cXG4yNDIzOlxcdFxcdGlmIChkZXYtXFx1MDAzZWhpZjIpIHtcXG4yNDI0OlxcdFxcdFxcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMSk7XFxuMjQyNTpcXHRcXHRcXHRpZiAocmV0KVxcbjI0MjY6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDI3OlxcdFxcdH1cXG4yNDI4OlxcdFxcbjI0Mjk6XFx0XFx0cmV0ID0gbXQ3OTE1X2xvYWRfZmlybXdhcmUoZGV2KTtcXG4yNDMwOlxcdFxcdGlmIChyZXQpXFxuMjQzMTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0MzI6XFx0XFxuMjQzMzpcXHRcXHRzZXRfYml0KE1UNzZfU1RBVEVfTUNVX1JVTk5JTkcsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbjI0MzQ6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9md19sb2dfMl9ob3N0KGRldiwgTUNVX0ZXX0xPR19XTSwgMCk7XFxuMjQzNTpcXHRcXHRpZiAocmV0KVxcbjI0MzY6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDM3OlxcdFxcbjI0Mzg6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9md19sb2dfMl9ob3N0KGRldiwgTUNVX0ZXX0xPR19XQSwgMCk7XFxuMjQzOTpcXHRcXHRpZiAocmV0KVxcbjI0NDA6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDQxOlxcdFxcbjI0NDI6XFx0XFx0bXQ3Nl9jb25uYWNfbWN1X2RlbF93dGJsX2FsbChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4yNDQzOlxcdFxcbjI0NDQ6XFx0XFx0aWYgKChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG4yNDQ1OlxcdFxcdCAgICAgaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB8fFxcbjI0NDY6XFx0XFx0ICAgICFtdGtfd2VkX2dldF9yeF9jYXBhKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKVxcbjI0NDc6XFx0XFx0XFx0bXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKENBUEFCSUxJVFkpLCAwLCAwLCAwKTtcXG4yNDQ4OlxcdFxcbjI0NDk6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfbXdkcyhkZXYsIDEpO1xcbjI0NTA6XFx0XFx0aWYgKHJldClcXG4yNDUxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjQ1MjpcXHRcXG4yNDUzOlxcdFxcdHJldCA9IG10NzkxNV9tY3Vfc2V0X211cnVfY3RybChkZXYsIE1VUlVfU0VUX1BMQVRGT1JNX1RZUEUsXFxuMjQ1NDpcXHRcXHRcXHRcXHRcXHQgICAgICAgTVVSVV9QTEFURk9STV9UWVBFX1BFUkZfTEVWRUxfMik7XFxuMjQ1NTpcXHRcXHRpZiAocmV0KVxcbjI0NTY6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDU3OlxcdFxcbjI0NTg6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcXG4yNDU5OlxcdFxcdGlmIChyZXQpXFxuMjQ2MDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0NjE6XFx0XFxuMjQ2MjpcXHRcXHRyZXR1cm4gbXQ3OTE1X21jdV9zZXRfcmVkKGRldiwgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKTtcXG4yNDYzOlxcdH1cXG4yNDY0OlxcdFxcbjI0NjU6XFx0aW50IG10NzkxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbjI0NjY6XFx0e1xcbjI0Njc6XFx0XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X21jdV9vcHMgbXQ3OTE1X21jdV9vcHMgPSB7XFxuMjQ2ODpcXHRcXHRcXHQubWF4X3JldHJ5ID0gMSxcXG4yNDY5OlxcdFxcdFxcdC5oZWFkcm9vbSA9IHNpemVvZihzdHJ1Y3QgbXQ3Nl9jb25uYWMyX21jdV90eGQpLFxcbjI0NzA6XFx0XFx0XFx0Lm1jdV9za2JfcHJlcGFyZV9tc2cgPSBtdDc2X2Nvbm5hYzJfbWN1X2ZpbGxfbWVzc2FnZSxcXG4yNDcxOlxcdFxcdFxcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTE1X21jdV9zZW5kX21lc3NhZ2UsXFxuMjQ3MjpcXHRcXHRcXHQubWN1X3BhcnNlX3Jlc3BvbnNlID0gbXQ3OTE1X21jdV9wYXJzZV9yZXNwb25zZSxcXG4yNDczOlxcdFxcdH07XFxuMjQ3NDpcXHRcXG4yNDc1OlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5tY3Vfb3BzID0gXFx1MDAyNm10NzkxNV9tY3Vfb3BzO1xcbjI0NzY6XFx0XFxuMjQ3NzpcXHRcXHRyZXR1cm4gbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldik7XFxuMjQ3ODpcXHR9XFxuMjQ3OTpcXHRcXG4yNDgwOlxcdHZvaWQgbXQ3OTE1X21jdV9leGl0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuMjQ4MTpcXHR7XFxuMjQ4MjpcXHRcXHRtdDc2X2Nvbm5hY19tY3VfcmVzdGFydChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4yNDgzOlxcdFxcdGlmIChtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCBmYWxzZSkpIHtcXG4yNDg0OlxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIkZhaWxlZCB0byBleGl0IG1jdVxcXFxuXFxcIik7XFxuMjQ4NTpcXHRcXHRcXHRnb3RvIG91dDtcXG4yNDg2OlxcdFxcdH1cXG4yNDg3OlxcdFxcbjI0ODg6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORCgwKSwgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV04pO1xcbjI0ODk6XFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMilcXG4yNDkwOlxcdFxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoMSksXFxuMjQ5MTpcXHRcXHRcXHRcXHRNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTik7XFxuMjQ5MjpcXHRvdXQ6XFxuMjQ5MzpcXHRcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tY3UucmVzX3EpO1xcbjI0OTQ6XFx0fVxcbjI0OTU6XFx0XFxuMjQ5NjpcXHRzdGF0aWMgaW50XFxuMjQ5NzpcXHRtdDc5MTVfbWN1X3NldF9yeF9oZHJfdHJhbnNfYmxhY2tsaXN0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGludCBiYW5kKVxcbjI0OTg6XFx0e1xcbjI0OTk6XFx0XFx0c3RydWN0IHtcXG4yNTAwOlxcdFxcdFxcdHU4IG9wZXJhdGlvbjtcXG4yNTAxOlxcdFxcdFxcdHU4IGNvdW50O1xcbjI1MDI6XFx0XFx0XFx0dTggX3JzdlsyXTtcXG4yNTAzOlxcdFxcdFxcdHU4IGluZGV4O1xcbjI1MDQ6XFx0XFx0XFx0dTggZW5hYmxlO1xcbjI1MDU6XFx0XFx0XFx0X19sZTE2IGV0eXBlO1xcbjI1MDY6XFx0XFx0fSByZXEgPSB7XFxuMjUwNzpcXHRcXHRcXHQub3BlcmF0aW9uID0gMSxcXG4yNTA4OlxcdFxcdFxcdC5jb3VudCA9IDEsXFxuMjUwOTpcXHRcXHRcXHQuZW5hYmxlID0gMSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6MTUuODE4NTYwMDAxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTA4OTAwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmVgIGlzIGNhbGxpbmcgYG10NzkxNV9kcml2ZXJfb3duKGRldiwgMClgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB3aHkuIFRoaXMgbG9va3MgbGlrZSBhIHN0YW5kYXJkIGhhcmR3YXJlIGNoZWNrIGZvciBvd25lcnNoaXAsIHByb2JhYmx5IHRvIGVuc3VyZSB0aGVyZSBpc24ndCBhbm90aGVyIGRyaXZlciBvciBwcm9jZXNzIGFscmVhZHkgY29udHJvbGxpbmcgdGhpcyBwaWVjZSBvZiBoYXJkd2FyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBtdDc5MTVfZHJpdmVyX293bmAgZnVuY3Rpb24gaXMgcmVhbGx5IGRvaW5nOyBteSBzdXNwaWNpb24gaXMgc29tZSBraW5kIG9mIHJlZ2lzdGVyIHBvbGxpbmcgbWVjaGFuaXNtLCBidXQgSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gTGV0J3MgZGlnIGludG8gYG10NzkxNV9kcml2ZXJfb3duYCBpdHNlbGYgYW5kIHNlZSB3aGF0J3MgcmVhbGx5IGhhcHBlbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkyNzgsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM2OjE5LjcwOTQ1NDAyNloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIzOTgyNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTE1X2RyaXZlcl9vd25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIwNTc9aW50IG10NzkxNV9tY3VfYWRkX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjExMjpzdGF0aWMgaW50IG10NzkxNV9kcml2ZXJfb3duKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGJhbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjExMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yNDEwPWludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQxOTpcXHRyZXQgPSBtdDc5MTVfZHJpdmVyX293bihkZXYsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MjAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MjMtXFx0aWYgKGRldi1cXHUwMDNlaGlmMikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0MjQ6XFx0XFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDI1LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM2OjE5Ljc2MTg1NjI4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NzA3NTg3MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aGF0IGZpbGUsIGBtdDc5MTVfZHJpdmVyX293bmA6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBEcml2ZXIgT3duZXJzaGlwKipcblxuQWxyaWdodCwgSSdtIGRpZ2dpbmcgaW50byBgbXQ3OTE1X2RyaXZlcl9vd25gLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGxvb2tpbmcgYXQgYSBjcml0aWNhbCBzZWN0aW9uIHdpdGhpbiB0aGUgTWVkaWFUZWsgTVQ3OTE1IFdpLUZpIGRyaXZlciwgbGlrZWx5IGRlYWxpbmcgd2l0aCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhY2Nlc3MgY29udHJvbCwgYW5kIHBvdGVudGlhbGx5IG1lbW9yeSBtYW5hZ2VtZW50IHJlbGF0ZWQgdG8gdGhlIGhhcmR3YXJlIGl0c2VsZi4gVGhlIFwib3duXCIgc3VnZ2VzdHMgd2UgYXJlIGV4cGxvcmluZyBob3cgdGhlIGRyaXZlciB0YWtlcyBvd25lcnNoaXAgb2YgaGFyZHdhcmUgcmVzb3VyY2VzIGFuZCB3aGF0IHByb3RlY3Rpb25zIGFyZSBpbiBwbGFjZSB0byBwcmV2ZW50IGNvbmZsaWN0cyBvciByYWNlIGNvbmRpdGlvbnMuXG5cbknigJltIGV4cGVjdGluZyB0byBzZWUgc3RydWN0dXJlcyByZWxhdGVkIHRvIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UsIGludGVycnVwdCBoYW5kbGluZywgYW5kIGxpa2VseSBzb21lIHNvcnQgb2YgbG9jayBvciBzZW1hcGhvcmUgbWVjaGFuaXNtIHRvIG1hbmFnZSBjb25jdXJyZW50IGFjY2Vzcy4gVGhlIFwib3duXCIgbWlnaHQgcmVmZXIgdG8gdGhlIGRyaXZlcidzIG93bmVyc2hpcCBvZiB0aGluZ3MgbGlrZSBETUEgY2hhbm5lbHMsIHJlZ2lzdGVycywgYW5kIG1lbW9yeSBidWZmZXJzIHVzZWQgZm9yIHRyYW5zbWl0dGluZyBhbmQgcmVjZWl2aW5nIGRhdGEuIEknbGwgYmUgbG9va2luZyBmb3IgY29tbWVudHMgdGhhdCBleHBsYWluIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoZXNlIG93bmVyc2hpcCBzY2hlbWVzIGFuZCBhbnkgcG90ZW50aWFsIGlzc3VlcyBvciBlcnJvciBzY2VuYXJpb3MgaXQgaGFuZGxlcy5cblxuSSdtIGFsc28gYW50aWNpcGF0aW5nIHRoYXQgdGhpcyBzZWN0aW9uIGlzIGNydWNpYWwgZm9yIG1haW50YWluaW5nIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIHdpcmVsZXNzIGludGVyZmFjZSwgcHJldmVudGluZyBjcmFzaGVzLCBhbmQgZW5zdXJpbmcgcm9idXN0IHBlcmZvcm1hbmNlLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhpbmdzIGxpa2UgaG93IGl0IGhhbmRsZXMgbXVsdGlwbGUgYWNjZXNzIHBvaW50cywgc3RhdGlvbiBjb25jdXJyZW5jeSwgb3IgcGVyaGFwcyBob3cgaXQgZGVhbHMgd2l0aCBwb3dlci1zYXZpbmcgc3RhdGVzIG9mIHRoZSBXaS1GaSBjaGlwLiBBbnkgcmVmZXJlbmNlcyB0byBETUEgY29uZmlndXJhdGlvbiBhbmQgYnVmZmVyIG1hbmFnZW1lbnQgYXJlIGdvaW5nIHRvIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gSSdsbCBhbHNvIGJlIGZvY3VzaW5nIG9uIGFueSB1c2Ugb2YgYXRvbWljIG9wZXJhdGlvbnMgb3IgbXV0ZXhlcyBhbmQgY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVpciB1c2FnZSBmb3IgcGVyZm9ybWFuY2UuIEnigJltIGFsc28gZ29pbmcgdG8gYmUgbG9va2luZyBhdCBob3cgYW55IG9mIHRoaXMgcmVsYXRlcyB0byBmaXJtd2FyZSBsb2FkaW5nIGFuZCBleGVjdXRpb24sIHNpbmNlIHRoZSBNVDc5MTUgbGlrZWx5IGhhcyBmaXJtd2FyZSBvbi1jaGlwLlxuXG5MZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGluIHRoZXJlLiBJJ20gcmVhZHkgdG8gZ2V0IGRvd24gdG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDU2LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6MjQuNjMyNjE3MjI0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTEyLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTEyOlxcdHN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcXG4yMTEzOlxcdHtcXG4yMTE0OlxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTik7XFxuMjExNTpcXHRcXHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLFxcbjIxMTY6XFx0XFx0XFx0XFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcXG4yMTE3OlxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIlRpbWVvdXQgZm9yIGRyaXZlciBvd25cXFxcblxcXCIpO1xcbjIxMTg6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuMjExOTpcXHRcXHR9XFxuMjEyMDpcXHRcXG4yMTIxOlxcdFxcdC8qIGNsZWFyIGlycSB3aGVuIHRoZSBkcml2ZXIgb3duIHN1Y2Nlc3MgKi9cXG4yMTIyOlxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkRfSVJRX1NUQVQoYmFuZCksXFxuMjEyMzpcXHRcXHRcXHRNVF9UT1BfTFBDUl9IT1NUX0JBTkRfU1RBVCk7XFxuMjEyNDpcXHRcXG4yMTI1OlxcdFxcdHJldHVybiAwO1xcbjIxMjY6XFx0fVxcbjIxMjc6XFx0XFxuMjEyODpcXHRzdGF0aWMgaW50XFxuMjEyOTpcXHRtdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcXG4yMTMwOlxcdHtcXG4yMTMxOlxcdFxcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM2OjI0LjYzMjc4MjMyNFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjU2MDA0OTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBRRU1VIENyYXNoIFNjZW5hcmlvKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXQ3OTE1X2RyaXZlcl9vd25gIGZ1bmN0aW9uIGFuZCBJIHNlZSBpdCdzIHBvbGxpbmcgYSBoYXJkd2FyZSByZWdpc3Rlci4gSW4gUUVNVSwgd2l0aG91dCBhbnkgcmVhbCBoYXJkd2FyZSwgdGhhdCBwb2xsIGlzIGp1c3QgZ29pbmcgdG8gdGltZW91dCBhbmQgaW1tZWRpYXRlbHkgcmV0dXJuIGFuIGAtRUlPYCBlcnJvci4gUmlnaHQsIG1ha2VzIHNlbnNlLiBBbmQgYmVjYXVzZSBvZiB0aGF0IGluaXRpYWwgZmFpbHVyZSwgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAsIGBtdDc5MTVfbWN1X2luaXRgLCBhbmQgdGhlbiBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIGFsbCByZXR1cm4gYC1FSU9gIGluIGEgY2FzY2FkZSBlZmZlY3QuIFVsdGltYXRlbHksIHRoaXMgbGVhZHMgdG8gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGZhaWxpbmcgYmVmb3JlIGl0IGV2ZW4gZ2V0cyB0byBjYWxsIGBtdDc5MTVfdGhlcm1hbF9pbml0YC4gU28sIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYG10NzkxNV90aGVybWFsX2luaXRgIGlzIG5ldmVyIGV2ZW4gZ29pbmcgdG8gYmUgcmVhY2hlZCB3aGVuIHJ1bm5pbmcgaW4gUUVNVSB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcy5cblxuQnV0Li4uIGhhbmcgb24gYSBtaW51dGUuIFdoYXQgaWYgc3l6a2FsbGVyIGlzIGJlaW5nIHVzZWQ/IFNwZWNpZmljYWxseSwgd2hhdCBpZiBpdCdzIHVzaW5nIGBzeXpfcGNpX2RldmljZV9hZGRgPyBUaGF0IGNhbiBtYXAgZmFrZSBNTUlPIG1lbW9yeS4gTm93LCB0aGF0J3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gQmVjYXVzZSBgbXQ3Nl9wb2xsX21zZWNgIGlzIHJlYWRpbmcgZnJvbSB0aGF0IHBvdGVudGlhbGx5IGZha2UgTU1JTyBtZW1vcnkuIElmIHRoZSBmYWtlIG1lbW9yeSBpcyBqdXN0IHplcm8taW5pdGlhbGl6ZWQsIHRoYXQgbWVhbnMgYE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVRgLCB3aGljaCBJJ20gcHJldHR5IHN1cmUgaXMgYSBiaXRtYXNrLCAqY291bGQqIGJlIHplcm8uIEFuZCBpZiBpdCdzIHplcm8sIGBtdDc2X3BvbGxfbXNlY2AgY291bGQgYWN0dWFsbHkgc3VjY2VlZCEgVGhpcyBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGEgc2NlbmFyaW8gd2hlcmUgdGhlIGluaXRpYWxpemF0aW9uIGNvbnRpbnVlcyBldmVuIHRob3VnaCBpdCBzaG91bGQgaGF2ZSBmYWlsZWQsIGFuZCB0aGF0IGNvdWxkIHRyaWdnZXIgYSBjcmFzaCBkb3duIHRoZSBsaW5lLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBjaGVjayB3aGF0IGBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTl9TVEFUYCBhY3R1YWxseSBob2xkcy4gVGhpcyB3YXJyYW50cyBhIGNsb3NlciBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDkwMCwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM2OjMxLjg4ODc4OTUzOVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2NTM5ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjExMj1zdGF0aWMgaW50IG10NzkxNV9kcml2ZXJfb3duKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTE1LVxcdGlmICghbXQ3Nl9wb2xsX21zZWMoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjExNjpcXHRcXHRcXHQgICAgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVCwgMCwgNTAwKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMTctXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiVGltZW91dCBmb3IgZHJpdmVyIG93blxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdzLmg9NTA9ZW51bSBvZmZzX3JldiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdzLmgtMTEwMS0jZGVmaW5lIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTlxcdEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3JlZ3MuaDoxMTAyOiNkZWZpbmUgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVFxcdEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3JlZ3MuaC0xMTAzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjozMS45MzM0NTA2OTRaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc3NjYyMTI3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlcidzIEluaXRpYWxpemF0aW9uIExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciB0aGUgbXQ3OTE1IGRyaXZlciwgYW5kIHNvbWV0aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQuIElmIHRoaXMgXCJmYWtlIE1NSU8gbWVtb3J5XCIgaXMgaW5pdGlhbGl6ZWQgdG8gemVybywgdGhlbiB0aGUgYE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVRgIGJpdCwgd2hpY2ggaXMgYml0IDIsIHdpbGwgYWxzbyBiZSB6ZXJvLiBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBgbXQ3Nl9wb2xsX21zZWNgIGlzIGJlaW5nIHVzZWQsIHdoaWNoIGlzIGVzc2VudGlhbGx5IGNoZWNraW5nIGEgY29uZGl0aW9uIHVzaW5nIGEgcmVhZC1tb2RpZnktY29tcGFyZSBvcGVyYXRpb24uIFNwZWNpZmljYWxseSwgaXQgdGVzdHMgd2hldGhlciB0aGUgcmVzdWx0IG9mIGAocmVhZGwoYWRkcikgXHUwMDI2IG1hc2spID09IHZhbGAuIEluIG91ciBjYXNlLCB0aGUgYG1hc2tgIGlzIHRoYXQgYE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVRgIGJpdCwgYW5kIHRoZSBkZXNpcmVkIGB2YWxgIGlzIHplcm8uXG5cblRoZXJlZm9yZSwgaWYgdGhpcyBmYWtlIE1NSU8gaXMgemVybywgdGhlbiB3ZSdyZSBwZXJmb3JtaW5nIGEgYml0d2lzZSBBTkQgYmV0d2VlbiB6ZXJvIGFuZCBiaXQgMiwgd2hpY2ggd2lsbCBpbmV2aXRhYmx5IHJlc3VsdCBpbiB6ZXJvLiBDb25zZXF1ZW50bHksIHRoZSBjaGVjayBgKDAgXHUwMDI2IEJJVCgyKSkgPT0gMGAgaXMgdHJ1ZSEgSXQgKmFsd2F5cyogc3VjY2VlZHMuIFRoaXMgY291bGQgbWVhbiBgbXQ3OTE1X2RyaXZlcl9vd25gIG1pZ2h0IHRoaW5rIGl0J3Mgc3VjY2Vzc2Z1bGx5IGNsYWltZWQgb3duZXJzaGlwIHdoZW4gaW4gcmVhbGl0eSwgc29tZXRoaW5nIGlzIGZ1bmRhbWVudGFsbHkgd3JvbmcgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBUaGF0J3MgYSBodWdlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5ISBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBpbXBsaWNhdGlvbiBvZiB0aGlzLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgd2hhdCBoYXBwZW5zIGluIGBtdDc5MTVfbG9hZF9maXJtd2FyZShkZXYpYC4gTGV0J3Mgc2VlIGlmIHRoYXQgYWxzbyBhc3N1bWVzIGV2ZXJ5dGhpbmcgaXMgZmluZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjAyMSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjozNy43MTAwNzUwMjNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDgxODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkxNV9sb2FkX2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTI5PW10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjE0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTQyOnN0YXRpYyBpbnQgbXQ3OTE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI0MTA9aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDI5OlxcdHJldCA9IG10NzkxNV9sb2FkX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQzMC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjozNy43NTQxNjUwODlaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgyMzkxMTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG10NzkxNV9sb2FkX2Zpcm13YXJlYCBmdW5jdGlvbi4gSSBzZWUgdGhpcyBhIGxvdCwgZXNwZWNpYWxseSB3aXRoIG5ld2VyIFdpRmkgY2hpcHNldHM7IGZpcm13YXJlIGxvYWRpbmcgaXMgYWx3YXlzIGEgY3JpdGljYWwgcGllY2UuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBoaWdoLWxldmVsIGFyY2hpdGVjdHVyZTogaXMgdGhpcyBhIHNpbXBsZSB0cmFuc2ZlciwgYSBtb3JlIGNvbXBsZXggYm9vdCBwcm9jZXNzLCBvciBzb21ldGhpbmcgaW4gYmV0d2Vlbj8gV2hhdCBraW5kIG9mIG1lbW9yeSBhY2Nlc3MgYXJlIHdlIHRhbGtpbmcgYWJvdXQ/XG5cbk5leHQsIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIG9idmlvdXM6IGVycm9yIGhhbmRsaW5nLiBGaXJtd2FyZSBsb2FkaW5nIGlzIG5vdG9yaW91c2x5IHNlbnNpdGl2ZS4gSSB3YW50IHRvIHNlZSBob3cgcm9idXN0IHRoZSBlcnJvciBjaGVja3MgYXJlLCB3aGF0IGtpbmQgb2YgcmV0cnkgbWVjaGFuaXNtcyBhcmUgaW4gcGxhY2UgKGlmIGFueSksIGFuZCBob3cgaXQgZGVhbHMgd2l0aCBjb21tb24gZmFpbHVyZSBzY2VuYXJpb3MgbGlrZSBjaGVja3N1bSBlcnJvcnMgb3IgY29tbXVuaWNhdGlvbiB0aW1lb3V0cy4gQXJlIHRoZXJlIGRldGFpbGVkIGVycm9yIGNvZGVzPyBBcmUgdGhleSBtZWFuaW5nZnVsP1xuXG5UaGVuLCBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBvciBpbml0aWFsaXphdGlvbiBzdGVwcyBiZWZvcmUgdGhlIGFjdHVhbCBmaXJtd2FyZSBkb3dubG9hZC4gQXJlIHRoZXJlIGFueSBoYXJkd2FyZS1zcGVjaWZpYyByZWdpc3RlciB3cml0ZXMgaW52b2x2ZWQ/IEFueSBpbml0aWFsIHBvd2VyLXVwIHNlcXVlbmNlcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRldmljZSBzdGF0ZSBiZWZvcmUgdGhlIGZpcm13YXJlIHRha2VzIG92ZXIuXG5cbkknbGwgYmUgYXNzZXNzaW5nIHRoZSBtZXRob2Qgb2YgZGF0YSB0cmFuc2ZlciwgaXMgdGhpcyBETUEsIG9yIFBJTz8gSG93IGlzIHRoZSBjb21tdW5pY2F0aW9uIHByb3RvY29sIGltcGxlbWVudGVkPyBJcyB0aGlzIGEgc3RhbmRhcmQgaW50ZXJmYWNlLCBvciBhIHByb3ByaWV0YXJ5IG9uZT8gVW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyBkYXRhIHRyYW5zZmVyIG1lY2hhbmlzbSB3aWxsIGJlIGNyaXRpY2FsIGZvciBkZWJ1Z2dpbmcgcG90ZW50aWFsIGlzc3Vlcy5cblxuRmluYWxseSwgSSdsbCBiZSBjaGVja2luZyBmb3IgYW55IHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zLiBBcmUgdGhlcmUgYW55IGNoZWNrcyBmb3Igc2lnbmVkIGZpcm13YXJlPyBBbnkgYW50aS1yb2xsYmFjayBtZWNoYW5pc21zPyBTZWN1cmUgYm9vdCBjb25zaWRlcmF0aW9ucz8gRmlybXdhcmUgdXBkYXRlcyBjYW4gYmUgYSBwcmltZSBhdHRhY2sgdmVjdG9yLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGV5J3JlIGhhbmRsaW5nIHRoYXQuIEJhc2ljYWxseSwgSSB3YW50IHRvIHNlZSBpZiB0aGlzIGlzIHJvYnVzdCBhbmQgc2VjdXJlLCBvciBpZiBpdCdzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIEknbSBnb2luZyB0byBsb29rIGZvciBhcmVhcyB3aGVyZSBJIGNhbiBpbnRyb2R1Y2UgYSBmdXp6aW5nIGF0dGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI5MDMsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjo0NC41NzgwNzk2OTlaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxNDIsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTQyOlxcdHN0YXRpYyBpbnQgbXQ3OTE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4yMTQzOlxcdHtcXG4yMTQ0OlxcdFxcdGludCByZXQ7XFxuMjE0NTpcXHRcXG4yMTQ2OlxcdFxcdC8qIFJlbGVhc2UgU2VtYXBob3JlIGlmIHRha2VuIGJ5IHByZXZpb3VzIGZhaWxlZCBhdHRlbXB0ICovXFxuMjE0NzpcXHRcXHRyZXQgPSBtdDc2X2Nvbm5hY19tY3VfcGF0Y2hfc2VtX2N0cmwoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgZmFsc2UpO1xcbjIxNDg6XFx0XFx0aWYgKHJldCAhPSBQQVRDSF9SRUxfU0VNX1NVQ0NFU1MpIHtcXG4yMTQ5OlxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIkNvdWxkIG5vdCByZWxlYXNlIHNlbWFwaG9yZVxcXFxuXFxcIik7XFxuMjE1MDpcXHRcXHRcXHQvKiBDb250aW51ZSBhbnl3YXlzICovXFxuMjE1MTpcXHRcXHR9XFxuMjE1MjpcXHRcXG4yMTUzOlxcdFxcdC8qIEFsd2F5cyByZXN0YXJ0IE1DVSBmaXJtd2FyZSAqL1xcbjIxNTQ6XFx0XFx0bXQ3Nl9jb25uYWNfbWN1X3Jlc3RhcnQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuMjE1NTpcXHRcXG4yMTU2OlxcdFxcdC8qIENoZWNrIGlmIE1DVSBpcyByZWFkeSAqL1xcbjIxNTc6XFx0XFx0cmV0ID0gbXQ3OTE1X2Zpcm13YXJlX3N0YXRlKGRldiwgZmFsc2UpO1xcbjIxNTg6XFx0XFx0aWYgKHJldCkge1xcbjIxNTk6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRmlybXdhcmUgZGlkIG5vdCBlbnRlciBkb3dubG9hZCBzdGF0ZVxcXFxuXFxcIik7XFxuMjE2MDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjIxNjE6XFx0XFx0fVxcbjIxNjI6XFx0XFxuMjE2MzpcXHRcXHRyZXQgPSBtdDc2X2Nvbm5hYzJfbG9hZF9wYXRjaChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBmd19uYW1lX3ZhcihkZXYsIFJPTV9QQVRDSCkpO1xcbjIxNjQ6XFx0XFx0aWYgKHJldClcXG4yMTY1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjE2NjpcXHRcXG4yMTY3OlxcdFxcdHJldCA9IG10NzZfY29ubmFjMl9sb2FkX3JhbShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBmd19uYW1lX3ZhcihkZXYsIEZJUk1XQVJFX1dNKSxcXG4yMTY4OlxcdFxcdFxcdFxcdFxcdCAgICBmd19uYW1lKGRldiwgRklSTVdBUkVfV0EpKTtcXG4yMTY5OlxcdFxcdGlmIChyZXQpXFxuMjE3MDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjIxNzE6XFx0XFxuMjE3MjpcXHRcXHRyZXQgPSBtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCB0cnVlKTtcXG4yMTczOlxcdFxcdGlmIChyZXQpXFxuMjE3NDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjIxNzU6XFx0XFxuMjE3NjpcXHRcXHRtdDc2X3F1ZXVlX3R4X2NsZWFudXAoZGV2LCBkZXYtXFx1MDAzZW10NzYucV9tY3VbTVRfTUNVUV9GV0RMXSwgZmFsc2UpO1xcbjIxNzc6XFx0XFxuMjE3ODpcXHRcXHRkZXZfZGJnKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJGaXJtd2FyZSBpbml0IGRvbmVcXFxcblxcXCIpO1xcbjIxNzk6XFx0XFxuMjE4MDpcXHRcXHRyZXR1cm4gMDtcXG4yMTgxOlxcdH1cXG4yMTgyOlxcdFxcbjIxODM6XFx0aW50IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1OCB0eXBlLCB1OCBjdHJsKVxcbjIxODQ6XFx0e1xcbjIxODU6XFx0XFx0c3RydWN0IHtcXG4yMTg2OlxcdFxcdFxcdHU4IGN0cmxfdmFsO1xcbjIxODc6XFx0XFx0XFx0dTggcGFkWzNdO1xcbjIxODg6XFx0XFx0fSBkYXRhID0ge1xcbjIxODk6XFx0XFx0XFx0LmN0cmxfdmFsID0gY3RybFxcbjIxOTA6XFx0XFx0fTtcXG4yMTkxOlxcdFxcbjIxOTI6XFx0XFx0aWYgKHR5cGUgPT0gTUNVX0ZXX0xPR19XQSlcXG4yMTkzOlxcdFxcdFxcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfV0FfRVhUX0NNRChGV19MT0dfMl9IT1NUKSxcXG4yMTk0OlxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2ZGF0YSwgc2l6ZW9mKGRhdGEpLCB0cnVlKTtcXG4yMTk1OlxcdFxcbjIxOTY6XFx0XFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKEZXX0xPR18yX0hPU1QpLCBcXHUwMDI2ZGF0YSxcXG4yMTk3OlxcdFxcdFxcdFxcdFxcdCBzaXplb2YoZGF0YSksIHRydWUpO1xcbjIxOTg6XFx0fVxcbjIxOTk6XFx0XFxuMjIwMDpcXHRpbnQgbXQ3OTE1X21jdV9md19kYmdfY3RybChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgbW9kdWxlLCB1OCBsZXZlbClcXG4yMjAxOlxcdHtcXG4yMjAyOlxcdFxcdHN0cnVjdCB7XFxuMjIwMzpcXHRcXHRcXHR1OCB2ZXI7XFxuMjIwNDpcXHRcXHRcXHR1OCBwYWQ7XFxuMjIwNTpcXHRcXHRcXHRfX2xlMTYgbGVuO1xcbjIyMDY6XFx0XFx0XFx0dTggbGV2ZWw7XFxuMjIwNzpcXHRcXHRcXHR1OCByc3ZbM107XFxuMjIwODpcXHRcXHRcXHRfX2xlMzIgbW9kdWxlX2lkeDtcXG4yMjA5OlxcdFxcdH0gZGF0YSA9IHtcXG4yMjEwOlxcdFxcdFxcdC5tb2R1bGVfaWR4ID0gY3B1X3RvX2xlMzIobW9kdWxlKSxcXG4yMjExOlxcdFxcdFxcdC5sZXZlbCA9IGxldmVsLFxcbjIyMTI6XFx0XFx0fTtcXG4yMjEzOlxcdFxcbjIyMTQ6XFx0XFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKEZXX0RCR19DVFJMKSwgXFx1MDAyNmRhdGEsXFxuMjIxNTpcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKGRhdGEpLCBmYWxzZSk7XFxuMjIxNjpcXHR9XFxuMjIxNzpcXHRcXG4yMjE4OlxcdGludCBtdDc5MTVfbWN1X211cnVfZGVidWdfc2V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgZW5hYmxlZClcXG4yMjE5OlxcdHtcXG4yMjIwOlxcdFxcdHN0cnVjdCB7XFxuMjIyMTpcXHRcXHRcXHRfX2xlMzIgY21kO1xcbjIyMjI6XFx0XFx0XFx0dTggZW5hYmxlO1xcbjIyMjM6XFx0XFx0fSBkYXRhID0ge1xcbjIyMjQ6XFx0XFx0XFx0LmNtZCA9IGNwdV90b19sZTMyKE1VUlVfU0VUX1RYQ19UWF9TVEFUU19FTiksXFxuMjIyNTpcXHRcXHRcXHQuZW5hYmxlID0gZW5hYmxlZCxcXG4yMjI2OlxcdFxcdH07XFxuMjIyNzpcXHRcXG4yMjI4OlxcdFxcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfRVhUX0NNRChNVVJVX0NUUkwpLCBcXHUwMDI2ZGF0YSxcXG4yMjI5OlxcdFxcdFxcdFxcdFxcdHNpemVvZihkYXRhKSwgZmFsc2UpO1xcbjIyMzA6XFx0fVxcbjIyMzE6XFx0XFxuMjIzMjpcXHRpbnQgbXQ3OTE1X21jdV9tdXJ1X2RlYnVnX2dldChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbjIyMzM6XFx0e1xcbjIyMzQ6XFx0XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbjIyMzU6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4yMjM2OlxcdFxcdHN0cnVjdCBtdDc5MTVfbWN1X211cnVfc3RhdHMgKm11X3N0YXRzO1xcbjIyMzc6XFx0XFx0aW50IHJldDtcXG4yMjM4OlxcdFxcbjIyMzk6XFx0XFx0c3RydWN0IHtcXG4yMjQwOlxcdFxcdFxcdF9fbGUzMiBjbWQ7XFxuMjI0MTpcXHRcXHRcXHR1OCBiYW5kX2lkeDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6NDQuNTc4MjU5MDA5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MjQ5NzI2NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB3aGF0J3MgaGFwcGVuaW5nLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkZpcm13YXJlIExvYWRpbmcgU2VxdWVuY2UgRGVlcCBEaXZlKipcblxuT2theSwgc28gYG10NzkxNV9sb2FkX2Zpcm13YXJlYCBpcyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGdldHRpbmcgdGhlIGZpcm13YXJlIG9udG8gdGhlIE1UNzkxNSBkZXZpY2UuIEkgc2VlIHRoYXQgaXQga2lja3MgdGhpbmdzIG9mZiB3aXRoIGEgY2FsbCB0byBgbXQ3OTE1X2Zpcm13YXJlX3N0YXRlKGRldiwgZmFsc2UpYC4gTmF0dXJhbGx5LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBgbXQ3OTE1X2Zpcm13YXJlX3N0YXRlYCBmdW5jdGlvbiAqZG9lcyouIEkgbmVlZCB0byBzZWUgaWYgaXQgc2V0cyB1cCBhbnkgcHJlY29uZGl0aW9ucywgaW5pdGlhbGl6ZXMgYW55IGhhcmR3YXJlIHJlZ2lzdGVycywgb3IgbWF5YmUgZXZlbiBhdHRlbXB0cyBhIGJhc2ljIGhhbmRzaGFrZSB3aXRoIHRoZSBkZXZpY2UgYmVmb3JlIHRoZSBtb3JlIGludm9sdmVkIGxvYWRpbmcgcHJvY2VzcyBzdGFydHMuIFRoZSBgZmFsc2VgIGFyZ3VtZW50IGlzIGludGVyZXN0aW5nIHRvbzsgaXQncyBsaWtlbHkgaW5kaWNhdGluZyBhIHBhcnRpY3VsYXIgc3RhdGUgdG8gYmUgc2V0IGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGZ1bmN0aW9uLiBJIHdvdWxkIGJlIGN1cmlvdXMgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgZW50YWlscy4gVGhpcyB3aWxsIGRlZmluaXRlbHkgZ2l2ZSBtZSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyBkdXJpbmcgdGhlIGZpcm13YXJlIGxvYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0OTAxLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNjo0OC40MDMyMzUzODFaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMjgsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxMjg6XFx0c3RhdGljIGludFxcbjIxMjk6XFx0bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXFxuMjEzMDpcXHR7XFxuMjEzMTpcXHRcXHR1MzIgc3RhdGUgPSBGSUVMRF9QUkVQKE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxcbjIxMzI6XFx0XFx0XFx0XFx0ICAgICAgIHdhID8gRldfU1RBVEVfUkRZIDogRldfU1RBVEVfRldfRE9XTkxPQUQpO1xcbjIxMzM6XFx0XFxuMjEzNDpcXHRcXHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX01JU0MsIE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxcbjIxMzU6XFx0XFx0XFx0XFx0ICAgIHN0YXRlLCAxMDAwKSkge1xcbjIxMzY6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiVGltZW91dCBmb3IgaW5pdGlhbGl6aW5nIGZpcm13YXJlXFxcXG5cXFwiKTtcXG4yMTM3OlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjIxMzg6XFx0XFx0fVxcbjIxMzk6XFx0XFx0cmV0dXJuIDA7XFxuMjE0MDpcXHR9XFxuMjE0MTpcXHRcXG4yMTQyOlxcdHN0YXRpYyBpbnQgbXQ3OTE1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6NDguNDAzNDIwNzkxWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMTE1MDc3MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgdGhlIEZpcm13YXJlIERvd25sb2FkIFN0YXRlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBgbXQ3OTE1X2Zpcm13YXJlX3N0YXRlYCBmdW5jdGlvbiBkZXRlcm1pbmVzIGlmIHRoZSBmaXJtd2FyZSBoYXMgYmVlbiBkb3dubG9hZGVkLiBUaGUgY29kZSBpcyBwZXJpb2RpY2FsbHkgY2hlY2tpbmcgdGhlIGBNVF9UT1BfTUlTQ2AgcmVnaXN0ZXIsIHNwZWNpZmljYWxseSB0aGUgYE1UX1RPUF9NSVNDX0ZXX1NUQVRFYCBmaWVsZCB3aXRoaW4gaXQuIEl0J3Mgc3VwcG9zZWQgdG8gYmUgY29tcGFyaW5nIHRoaXMgdmFsdWUgdG8gYSB0YXJnZXQgYHN0YXRlYCwgYW5kIGlkZWFsbHksIHRoaXMgd291bGQgdGVsbCB1cyBpZiB0aGUgZG93bmxvYWQgaXMgY29tcGxldGUuXG5cbkhvd2V2ZXIsIHRoZXJlJ3MgYSBwb3RlbnRpYWwgZ290Y2hhIGhlcmUuIFRoZSBjb2RlIG1lbnRpb25zIHRoYXQgaWYgdGhlIGZha2UgTU1JTyBtZW1vcnkgcmVnaW9uIGlzIHNldCB0byB6ZXJvLCB0aGVuIHRoZSBgTVRfVE9QX01JU0NfRldfU1RBVEVgIHdpbGwgYWxzbyBldmFsdWF0ZSB0byB6ZXJvLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgd2UgbmVlZCB0byBjb25zaWRlciB3aGF0IHRoZSBleHBlY3RlZCB2YWx1ZSwgdGhlIHRhcmdldCBzdGF0ZSwgYWN0dWFsbHkgKmlzKi4gVGhlIGNvZGUgaXMgZXhwbGljaXRseSBjb21wYXJpbmcgdG8gYHN0YXRlYCwgd2hpY2ggaXMgZGVmaW5lZCB1c2luZyBgRklFTERfUFJFUGAsIHNwZWNpZmljYWxseSB1c2luZyBgRldfU1RBVEVfRldfRE9XTkxPQURgLiBTbywgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBGV19TVEFURV9GV19ET1dOTE9BRGAgaXMgd2hhdCB3ZSAqZXhwZWN0KiB0byBzZWUgZHVyaW5nIHRoZSBmaXJtd2FyZSBkb3dubG9hZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTQ4MywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM2OjUyLjcxNDkzMDk1MloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM5NzQzMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRldfU1RBVEVfRldfRE9XTkxPQURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIxMjk9bXQ3OTE1X2Zpcm13YXJlX3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgd2EpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMxLVxcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjEzMjpcXHRcXHRcXHQgICAgICAgd2EgPyBGV19TVEFURV9SRFkgOiBGV19TVEFURV9GV19ET1dOTE9BRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjEzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6MzY6NTIuNzU4OTA4NzU3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NzYzNjc4MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBGV19TVEFURV9GV19ET1dOTE9BRGAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIHJpZ2h0IGluLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGBGV19TVEFURV9GV19ET1dOTE9BRGAgZGVmaW5pdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiAqcHJlY2lzZWx5KiB3aGF0IHRoaXMgc3RhdGUgc2lnbmlmaWVzIHdpdGhpbiB0aGUgZmlybXdhcmUgZG93bmxvYWQgcHJvY2Vzcy4gSSBuZWVkIHRvIGJlIHN1cmUgSSBoYXZlIGEgY2xlYXIgYW5kIGFjY3VyYXRlIG1lbnRhbCBtb2RlbC4gV2hhdCBhc3N1bXB0aW9ucyBhcmUgYmFrZWQgaW50byB0aGlzIHN0YXRlPyBBcmUgdGhlcmUgYW55IHN1YnRsZSBudWFuY2VzIGluIGl0cyBpbXBsZW1lbnRhdGlvbiB0aGF0IEkgbWlnaHQgaGF2ZSBvdmVybG9va2VkIGR1cmluZyB0aGUgaW5pdGlhbCByZXZpZXc/IEFyZSB0aGVyZSBwb3RlbnRpYWwgYXJlYXMgb2YgdnVsbmVyYWJpbGl0eSBJIGNhbiBxdWlja2x5IGlkZW50aWZ5IHRocm91Z2ggYSBkZWZpbml0aW9uIHJldmlldy4gSSBoYXZlIHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG1hdGNoZXMgdGhlIGltcGxlbWVudGF0aW9uLiBTbywgbGV0J3MgZ2V0IGludG8gdGhlIGRldGFpbHMsIGFuZCBtYWtlIHN1cmUgbXkgbWluZCBpcyB3b3JraW5nIHdpdGggdGhpcyBzcGVjaWZpYyBjb250ZXh0IGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYwNzQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNzowMS40MzUyODAzMzRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTc0NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZXX1NUQVRFX0ZXX0RPV05MT0FEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMTI5PW10NzkxNV9maXJtd2FyZV9zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHdhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjEzMS1cXHR1MzIgc3RhdGUgPSBGSUVMRF9QUkVQKE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIxMzI6XFx0XFx0XFx0ICAgICAgIHdhID8gRldfU1RBVEVfUkRZIDogRldfU1RBVEVfRldfRE9XTkxPQUQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM3OjAxLjQ4MDI2MTU0OVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzc4NzE1NDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgRmlybXdhcmUgRG93bmxvYWQgU3RhdGVzKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgZmlybXdhcmUgZG93bmxvYWQgcHJvY2VzcyBpcyBiZWhhdmluZywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG10NzZgIGFuZCBgbXQ3OTE1YCBkcml2ZXJzLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBGV19TVEFURV9GV19ET1dOTE9BRGAgc3RhdGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2hlbiB0aGF0IHNwZWNpZmljIHN0YXRlIGlzIGFjdGl2ZS4gV2hhdCB0cmlnZ2VycyBpdD8gV2hhdCBhY3Rpb25zIGRvZXMgaXQgZGljdGF0ZT8gV2hhdCBhcmUgdGhlIHBvc3NpYmxlIGVycm9yIGNvbmRpdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3RhdGUsIGFuZCBob3cgYXJlIHRoZXkgaGFuZGxlZD8gSXQncyBhbGwgYWJvdXQgZW5zdXJpbmcgdGhlIGZpcm13YXJlIHVwZGF0ZXMgYXJlIHJvYnVzdCBhbmQgcmVsaWFibGUsIHNvIGdldHRpbmcgYSBzb2xpZCBncmFzcCBvbiB0aGF0IHBhcnRpY3VsYXIgZmxhZyBpcyBjcnVjaWFsLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjUwNiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM3OjA1LjI1ODk3OTU3NloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM2NTUzMjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRldfU1RBVEVfRldfRE9XTkxPQURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTQzMz1zdGF0aWMgaW50IG10NzYxNV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNDM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE0NDA6XFx0aWYgKHZhbCAhPSBGV19TVEFURV9GV19ET1dOTE9BRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NDEtXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRmlybXdhcmUgaXMgbm90IHJlYWR5IGZvciBkb3dubG9hZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xNDYzPXN0YXRpYyBpbnQgbXQ3NjIyX2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NzAtXFx0dmFsID0gbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9UT1BfT0ZGX1JTViwgTVRfVE9QX09GRl9SU1ZfRldfU1RBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE0NzE6XFx0aWYgKHZhbCAhPSBGV19TVEFURV9GV19ET1dOTE9BRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE0NzItXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRmlybXdhcmUgaXMgbm90IHJlYWR5IGZvciBkb3dubG9hZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oPTExNDQ9ZW51bSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaC0xMTQ1LVxcdEZXX1NUQVRFX0lOSVRJQUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaDoxMTQ2OlxcdEZXX1NUQVRFX0ZXX0RPV05MT0FELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgtMTE0Ny1cXHRGV19TVEFURV9OT1JNQUxfT1BFUkFUSU9OLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjEyOT1tdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIxMzEtXFx0dTMyIHN0YXRlID0gRklFTERfUFJFUChNVF9UT1BfTUlTQ19GV19TVEFURSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMTMyOlxcdFxcdFxcdCAgICAgICB3YSA/IEZXX1NUQVRFX1JEWSA6IEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMTMzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9MzU3Nz1zdGF0aWMgaW50IG10Nzk5Nl9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNTgyLVxcdC8qIG1ha2Ugc3VyZSBmdyBpcyBkb3dubG9hZCBzdGF0ZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM1ODM6XFx0aWYgKG10Nzk5Nl9maXJtd2FyZV9zdGF0ZShkZXYsIEZXX1NUQVRFX0ZXX0RPV05MT0FEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM1ODQtXFx0XFx0LyogcmVzdGFydCBmaXJtd2FyZSBvbmNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4NS1cXHRcXHRtdDc5OTZfbWN1X3Jlc3RhcnQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzU4NjpcXHRcXHRyZXQgPSBtdDc5OTZfZmlybXdhcmVfc3RhdGUoZGV2LCBGV19TVEFURV9GV19ET1dOTE9BRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzU4Ny1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz0zNzcyPXZvaWQgbXQ3OTk2X21jdV9leGl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzc0LVxcdG10Nzk5Nl9tY3VfcmVzdGFydChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzozNzc1OlxcdGlmIChtdDc5OTZfZmlybXdhcmVfc3RhdGUoZGV2LCBGV19TVEFURV9GV19ET1dOTE9BRCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzc2LVxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIkZhaWxlZCB0byBleGl0IG1jdVxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM3OjA1LjMzMjY0MDczOVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTc1NjI4MzI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVucmVhY2hhYmlsaXR5IG9mIG10NzkxNV90aGVybWFsX2luaXQgaW4gUUVNVSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaWYgYEZXX1NUQVRFX0ZXX0RPV05MT0FEYCBpcyBzZXQgdG8gMSwgdGhlbiB0aGUgYEZJRUxEX1BSRVBgIG1hY3JvIHdpbGwgcHJvZHVjZSBhIG5vbi16ZXJvIHZhbHVlLiBIb3dldmVyLCB0aGUgY3JpdGljYWwgaXNzdWUgc2VlbXMgdG8gYmUgd2l0aCB0aGUgZmFrZSBNTUlPIG1lbW9yeSBpbiBRRU1VLiBJZiB0aGF0IG1lbW9yeSBpcyBpbml0aWFsaXplZCB0byAwLCB0aGUgYG10NzZfcG9sbF9tc2VjYCBmdW5jdGlvbiB3aWxsIGluZXZpdGFibHkgdGltZW91dCBiZWNhdXNlIGl0J3MgbG9va2luZyBmb3IgYSBub24temVybyBzdGF0ZS5cblxuVGhpcyB0aW1lb3V0IGxlYWRzIHRvIGEgY2FzY2FkaW5nIHNlcmllcyBvZiBmYWlsdXJlczogYG10NzkxNV9maXJtd2FyZV9zdGF0ZWAgcmV0dXJucyBgLUVJT2AsIGZvbGxvd2VkIGJ5IGBtdDc5MTVfbG9hZF9maXJtd2FyZWAsIGBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmVgLCBgbXQ3OTE1X21jdV9pbml0YCwgYG10NzkxNV9pbml0X2hhcmR3YXJlYCwgYW5kIGZpbmFsbHkgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGFsbCBmYWlsaW5nLiBUaGUgZmFpbHVyZSBpbiBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgaXMgdGhlIGtleSDigJMgaXQgcHJldmVudHMgdGhlIGNhbGwgdG8gYG10NzkxNV90aGVybWFsX2luaXRgLiBUaHVzLCBJIGNhbiBjb25maWRlbnRseSBzdGF0ZSB0aGF0IGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyB1bnJlYWNoYWJsZSBpbiB0aGlzIHNjZW5hcmlvLlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIHRoZSBhbHRlcm5hdGl2ZTogd2hhdCBpZiB0aGUgZmFrZSBNTUlPICppc24ndCogemVybz8gU3l6a2FsbGVyJ3MgYHN5el9wY2lfZGV2aWNlX2FkZGAgZG9lc24ndCBnaXZlIHVzIGR5bmFtaWMgY29udHJvbCBvdmVyIE1NSU8gcmVhZHMuIFN1cmUsIGl0IGNhbiBtYXAgbWVtb3J5LCBhbmQgd2UgY2FuICp3cml0ZSogdG8gaXQsIGJ1dCB0aGUgZHJpdmVyICpyZWFkcyogZnJvbSBpdC4gSWYgdGhlIGRyaXZlciByZWFkcyBiZWZvcmUgYW55IHdyaXRlcyBmcm9tIFN5emthbGxlciBvY2N1ciwgd2UncmUgYmFjayB0byB6ZXJvLiBTeXprYWxsZXIgY2FuIHdyaXRlIHZhbHVlcyB0byB0aGUgZmFrZSBNTUlPIG1lbW9yeSwgYnV0IGl0IGRvZXNuJ3Qga25vdyB3aGljaCBhZGRyZXNzIHRvIHdyaXRlIHdoYXQgdG8gcGFzcyB0aGUgcG9sbGluZy4gSXQncyBpbXByb2JhYmxlIHRoYXQgU3l6a2FsbGVyIGNvdWxkIG1hbmFnZSB0byBzYXRpc2Z5IGFsbCB0aGUgZHJpdmVyJ3MgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gY2hlY2tzLCBmaXJtd2FyZSBzdGF0ZSBjaGVja3MsIGFuZCBldmVyeXRoaW5nIGVsc2UsIGp1c3QgYnkgcmFuZG9tIHdyaXRlcy5cblxuRnVydGhlcm1vcmUsIGBtdDc2X2Nvbm5hYzJfbG9hZF9wYXRjaGAgYW5kIGBtdDc2X2Nvbm5hYzJfbG9hZF9yYW1gIGRlbWFuZCB0aGUgcHJlc2VuY2Ugb2YgbGVnaXRpbWF0ZSBmaXJtd2FyZSBmaWxlcy4gV2hpbGUgU3l6a2FsbGVyIG1pZ2h0IGhhdmUgc29tZSBkdW1teSBmaWxlcywgdGhleSBhcmUgdW5saWtlbHkgdG8gYmUgdmFsaWQgZW5vdWdoIHRvIHJlc3BvbmQgdG8gTUNVIGNvbW1hbmRzLCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgYWxsIHRoZSBzdGF0ZXMgdGhlIGZpcm13YXJlIGhhcyB0byBiZS5cblxuQWZ0ZXIgdGhlIGZpcm13YXJlIGlzIGxvYWRlZCwgYG10NzkxNV9maXJtd2FyZV9zdGF0ZShkZXYsIHRydWUpYCBjaGVja3MgZm9yIGBGV19TVEFURV9SRFlgICh3aGljaCBpcyAzKS4gQXNzdW1pbmcgd2Ugc29tZWhvdyBnZXQgcGFzdCB0aGF0LCB0aGUgZHJpdmVyIHN0YXJ0cyBzZW5kaW5nIE1DVSBjb21tYW5kcyB2aWEgYG10NzZfbWN1X3NlbmRfbXNnYCwgY29tbWFuZHMgbGlrZSBgbXQ3OTE1X21jdV9md19sb2dfMl9ob3N0YCwgYG10NzkxNV9tY3Vfc2V0X213ZHNgLCBgbXQ3OTE1X21jdV9zZXRfbXVydV9jdHJsYCwgYW5kIGBtdDc5MTVfbWN1X2luaXRfcnhfYWlydGltZWAsIHdoaWNoIGFsbCByZWx5IG9uIERNQSByaW5ncyBvciBNTUlPIGZvciByZXNwb25zZXMuIFdpdGggbm8gcmVhbCBNQ1UgcHJlc2VudCwgdGhpcyB3aWxsIHVuZG91YnRlZGx5IHRpbWVvdXQgYW5kIGZhaWwsIGVuc3VyaW5nIHRoYXQgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAgZmFpbHMgYWdhaW4uXG5cblRoZXJlZm9yZSwgd2hldGhlciB0aGUgZmFrZSBNTUlPIGlzIGluaXRpYWxpemVkIHRvIDAgb3Igc29tZXRoaW5nIGVsc2UsIHRoZSBmaW5hbCBjb25jbHVzaW9uIGlzIHN0aWxsIHRoYXQgYG10NzkxNV90aGVybWFsX2luaXRgIGlzIG5vdCByZWFjaGFibGUgaW4gUUVNVS5cbkxldCBtZSBxdWlja2x5IGNoZWNrIGlmIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBpcyBjYWxsZWQgYW55d2hlcmUgZWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgwMzAsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6Mzc6MTcuMDg4OTI3MzM1WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njg3ODk5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfdGhlcm1hbF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTk5PXN0YXRpYyB2b2lkIG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0yMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjIxMzpzdGF0aWMgaW50IG10NzkxNV90aGVybWFsX2luaXQoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMjE0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz03MzA9bXQ3OTE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjc2MjpcXHRyZXQgPSBtdDc5MTVfdGhlcm1hbF9pbml0KHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTc2My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTEyNTg9aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMjk3OlxcdHJldCA9IG10NzkxNV90aGVybWFsX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI5OC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNDozNzoxNy4xMzU4MTA2OVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDcwMzk3NzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkFuYWx5emluZyB0aGUgbXQ3OTE1IERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBzbyB0aGVzZSBgbXQ3OTE1X3JlZ2lzdGVyX2V4dF9waHlgIGFuZCBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgZnVuY3Rpb25zLi4uIHRoZSB0ZXh0IGluZGljYXRlcyB0aGV5J3JlIG9ubHkgY2FsbGVkIHdpdGhpbiBgbXQ3OTE1X3JlZ2lzdGVyX2V4dF9waHlgIGFuZCBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAuIFRoZXkncmUgYm90aCBjYWxsZWQgZHVyaW5nIHRoZSBkZXZpY2UgcHJvYmUsIGFuZCBjcnVjaWFsbHksICphZnRlciogYG10NzkxNV9pbml0X2hhcmR3YXJlYC4gVGhhdCB0ZWxscyBtZSB0aGVzZSBhcmVuJ3QgcGFydCBvZiB0aGUgaW5pdGlhbCBoYXJkd2FyZSBzZXR1cCBpdHNlbGYuIFRoZXkgc2VlbSB0byBiZSByZWdpc3RlcmluZyBzb21ldGhpbmcsIGxpa2VseSByZXNvdXJjZXMgb3IgY2FwYWJpbGl0aWVzLCB3aXRoIHRoZSBrZXJuZWwgYWZ0ZXIgdGhlIGhhcmR3YXJlIGlzIGluaXRpYWxpemVkLiBUaGUgaW1wbGljYXRpb24gYmVpbmcgdGhleSBhcmUgcHJvYmFibHkgcGFydCBvZiBhIGxhdGUtc3RhZ2UgcmVnaXN0ZXIgb3BlcmF0aW9uLiBTaW5jZSB0aGV5J3JlIG9ubHkgY2FsbGVkIGluIHByb2JlIGFuZCBvbmx5IGFmdGVyIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCB0aGV5IHdvdWxkIGJlIHVucmVhY2hhYmxlIGluIFFFTVUgYmVjYXVzZSB0aGUgZGV2aWNlIHByb2JlIGlzbid0IHJ1bm5pbmcuXG5cbkhvbGQgb24gYSBzZWNvbmQuLi4gd2hhdCBhYm91dCBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGA/IEkgaGF2ZSB0byBjb25zaWRlciBpdHMgcGxhY2VtZW50IGFuZCB0aW1pbmcgaW4gdGhlIGxpZmVjeWNsZSwgb3RoZXJ3aXNlIHRoZXJlIGlzIG5vIHRydWUgYXNzZXNzbWVudCBvZiB0aGUgaW1wYWN0LiBUaGUgZm9jdXMgb24gXCJyZWdpc3RlclwiIGltcGxpZXMgaXQgbWlnaHQgYmUgcmVsYXRlZCB0byBcInVucmVnaXN0ZXJcIiwgYW5kIGl0cyBjb250ZXh0IGluIHRoZSBwcm9iZSBvciByZW1vdmFsIHBoYXNlcyBpcyBhbHNvIGltcG9ydGFudCB0byBkZXRlcm1pbmUgaXRzIHJlYWNoIGluIFFFTVUuIFRoYXQncyBhIGNydWNpYWwgcGllY2Ugb2YgdGhlIHB1enpsZSBJIG5lZWQgdG8gZXhwbG9yZSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTk5OCwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM3OjIyLjIwNjIxMDg2WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjM4NTk1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZV9vcHMgbXQ3OTE1X3R6X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjE5OTpzdGF0aWMgdm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTIwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MjEzPXN0YXRpYyBpbnQgbXQ3OTE1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTI1Ni1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoyNTc6XFx0XFx0bXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0yNTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTIzND1zdGF0aWMgdm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI0MjpcXHRtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyNDMtXFx0bXQ3Nl91bnJlZ2lzdGVyX3BoeShtcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjU4PWludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTMyNi11bnJlZ190aGVybWFsOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMzI3OlxcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTMyOC11bnJlZ19kZXY6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MTMzOD12b2lkIG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEzNDQtXFx0bXQ3OTE1X2NvcmVkdW1wX3VucmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTM0NTpcXHRtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEzNDYtXFx0bXQ3Nl91bnJlZ2lzdGVyX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6Mzc6MjIuMjUyNjAzNDI1WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NTUzMDU4MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIG10NzkxNSBUaGVybWFsIFVucmVnaXN0cmF0aW9uIFBhdGhzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGZ1bmN0aW9uIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIHVuZGVyIHRoZSBjb25kaXRpb25zIHdlJ3JlIGNvbmNlcm5lZCBhYm91dCwgcGFydGljdWxhcmx5IHdpdGhpbiBhIFFFTVUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbkhlcmUncyBteSByZWFzb25pbmc6IGl0IGxvb2tzIGxpa2UgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGdldHMgY2FsbGVkIHVuZGVyIHNldmVyYWwgY2lyY3Vtc3RhbmNlczogZXJyb3IgcGF0aHMgd2l0aGluIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBhbmQgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLCBhbmQgYWxzbyBmcm9tIGBtdDc5MTVfdW5yZWdpc3Rlcl9leHRfcGh5YCBhbmQgYG10NzkxNV91bnJlZ2lzdGVyX2RldmljZWAuIFRoZSBpc3N1ZSBpcywgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGNhbiBmYWlsIGVhcmx5LiBJZiB0aGlzIGhhcHBlbnMsIHRoZSBjb2RlIGZsb3cgbGlrZWx5IGp1bXBzIHRvIGEgY2xlYW51cCByb3V0aW5lIGxpa2UgYGZyZWVfcGh5MmAgb3IgYHN0b3BfaHdgLCB3aGljaCBieXBhc3NlcyB0aGUgY2FsbCB0byBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGAgZW50aXJlbHkuIEZ1cnRoZXJtb3JlLCBgbXQ3OTE1X3VucmVnaXN0ZXJfZGV2aWNlYCBpcyBub3JtYWxseSBjYWxsZWQgZnJvbSBgbXQ3OTE1X3BjaV9yZW1vdmVgIG9yIGBtdDc5OHhfd21hY19yZW1vdmVgLCBidXQgYmVjYXVzZSBvZiB0aGUgaW5pdGlhbCBmYWlsdXJlIG9mIGBtdDc5MTVfcGNpX3Byb2JlYCwgYG10NzkxNV9wY2lfcmVtb3ZlYCBpcyBuZXZlciBleGVjdXRlZC4gQ29uc2VxdWVudGx5LCB0aGlzIG1ha2VzIGBtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsYCB1bnJlYWNoYWJsZS5cblxuU2luY2UgdGhlc2UgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBRRU1VLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gd2UncmUgY29uc2lkZXJpbmcsIEknbSBsZWFuaW5nIHRvd2FyZCBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSByZXF1aXJlbWVudHMsIGp1c3QgdG8gbWFrZSBzdXJlLiBPa2F5LCB0aGUgaW5zdHJ1Y3Rpb25zIHN0YXRlIHRoYXQgd2Ugc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSB3aXRoaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyBhIHBlcmZlY3QgZml0ISBgbXQ3OTE1YCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFdpLUZpIGRyaXZlciwgYW5kIGl0IHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkIGluIFFFTVUuIEdpdmVuIHRoaXMgYW5kIHRoYXQgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB0aGlzIGRyaXZlciwgaXQncyBjbGVhcjogYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEyNTksIk91dHB1dFRva2VucyI6MTQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE0OjM3OjMwLjIwNzkxMTUyN1oiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBNVDc5MTUgUENJZSBXaS1GaSBkcml2ZXIgKG10NzkxNSkgdG8gZml4IGEgdGhlcm1hbCB6b25lIHVucmVnaXN0cmF0aW9uIGlzc3VlLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgdG8gaW5pdGlhbGl6ZSAoZS5nLiwgcGFzc2luZyBkcml2ZXIgb3duZXJzaGlwIGNoZWNrcywgZmlybXdhcmUgbG9hZGluZywgYW5kIE1DVSBjb21tdW5pY2F0aW9uKS4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW4gYG10NzkxNV90aGVybWFsX2luaXRgIGFuZCBgbXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbGAgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTE1IFBDSWUgV2ktRmkgZHJpdmVyIChtdDc5MTUpIHRvIGZpeCBhIHRoZXJtYWwgem9uZSB1bnJlZ2lzdHJhdGlvbiBpc3N1ZS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGluaXRpYWxpemUgKGUuZy4sIHBhc3NpbmcgZHJpdmVyIG93bmVyc2hpcCBjaGVja3MsIGZpcm13YXJlIGxvYWRpbmcsIGFuZCBNQ1UgY29tbXVuaWNhdGlvbikuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGluIGBtdDc5MTVfdGhlcm1hbF9pbml0YCBhbmQgYG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWxgIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTQ6Mzc6MzAuMjA3OTM3Nzg3WiIsIlNlcSI6NTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowvv489[1] Phase: Running StartedAt: 2026-08-10 14:37:41 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv489[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-10 14:37:41 +0000 UTC FinishedAt: 2026-08-10 14:37: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,}