Name: series-workflownmcw2 Phase: Failed StartedAt: 2026-09-05 23:52:33 +0000 UTC FinishedAt: 2026-09-06 00:26:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflownmcw2[0] Phase: Succeeded StartedAt: 2026-09-05 23:52:33 +0000 UTC FinishedAt: 2026-09-06 00:25:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflownmcw2[0].run-triage Phase: Succeeded StartedAt: 2026-09-05 23:52:33 +0000 UTC FinishedAt: 2026-09-06 00:25:53 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgeXQ5MjF4X2xlZF9ibGlua19zZXQoKSBpbiBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChORVRfRFNBX1lUOTIxWCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQyBoYXJkd2FyZSAoTW90b3Jjb21tIFlUOTIxNSkgb24gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTBkYzc0ZDkyYzIwYmU0NTE2YTRkNjQ5ZGI4ZDZhODAyZmMxNjFjNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMDA6MjU6MDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMgYi9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY1xuaW5kZXggN2QzYzBmNjhkOGZmYi4uODdhNmI5Y2Y2MDY4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY1xuQEAgLTEwNyw2ICYjNDM7MTA3LDggQEAgeXQ5MjF4X2xlZF9ibGlua19zZXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGdyb3VwLFxuIFx0XHQgICAgICAgWVQ5MjFYX0xFRF9EVVRZKDEsIDIpO1xuIFxuIFx0XHR1c2VfY3ljbGUgPSBmYWxzZTtcbiYjNDM7XHR9IGVsc2UgaWYgKCEqb25wIHx8ICEqb2ZmcCkge1xuJiM0MztcdFx0cmV0dXJuIHl0OTIxeF9sZWRfZm9yY2Vfc2V0KHByaXYsIHBvcnQsIGdyb3VwLCAqb25wKTtcbiBcdH0gZWxzZSB7XG4gXHRcdHJlcyA9IHl0OTIxeF9sZWRfYmxpbmtfc2VsZWN0KHByaXYsICpvbnAsICpvZmZwLCBcdTAwMjZjeWNsZSwgXHUwMDI2ZHV0eSk7XG4gXHRcdGlmIChyZXMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgeXQ5MjF4X2xlZF9ibGlua19zZXQoKSBpbiBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChORVRfRFNBX1lUOTIxWCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQyBoYXJkd2FyZSAoTW90b3Jjb21tIFlUOTIxNSkgb24gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTBkYzc0ZDkyYzIwYmU0NTE2YTRkNjQ5ZGI4ZDZhODAyZmMxNjFjNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMDA6MjU6MDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYyBiL2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jCmluZGV4IDdkM2MwZjY4ZDhmZmIuLjg3YTZiOWNmNjA2ODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jCkBAIC0xMDcsNiAmIzQzOzEwNyw4IEBAIHl0OTIxeF9sZWRfYmxpbmtfc2V0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBncm91cCwKIAkJICAgICAgIFlUOTIxWF9MRURfRFVUWSgxLCAyKTsKIAogCQl1c2VfY3ljbGUgPSBmYWxzZTsKJiM0MzsJfSBlbHNlIGlmICghKm9ucCB8fCAhKm9mZnApIHsKJiM0MzsJCXJldHVybiB5dDkyMXhfbGVkX2ZvcmNlX3NldChwcml2LCBwb3J0LCBncm91cCwgKm9ucCk7CiAJfSBlbHNlIHsKIAkJcmVzID0geXQ5MjF4X2xlZF9ibGlua19zZWxlY3QocHJpdiwgKm9ucCwgKm9mZnAsICZhbXA7Y3ljbGUsICZhbXA7ZHV0eSk7CiAJCWlmIChyZXMpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzIKCQkJCQkJCW91dHB1dDogNjkKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBMRUQgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIHRoZSBjaGFuZ2UgaXMgaGl0dGluZyBgZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmNgLiBJbW1lZGlhdGVseSwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGJlaW5nIGltcGFjdGVkIGFuZCB3aGF0JiMzOTtzIGNvbm5lY3RlZCB0byBpdC4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtyaWdodCwgYGxlZHMuY2AgaW4gdGhlIE1vdG9yY29tbSBEU0EgY29udGV4dCAtIHdoYXQmIzM5O3MgdGhlIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlIGhlcmU/IFdoYXQgaGFyZHdhcmUgZG9lcyB0aGlzIHRvdWNoPyYjMzQ7IExldCYjMzk7cyBzdGFydCB3aXRoIGEgZmlsZSBpbnNwZWN0aW9uLCBtZW50YWxseSByZXZpZXdpbmcgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyBhbmQgb3ZlcmFsbCBoYXJkd2FyZSBhcmNoaXRlY3R1cmUgdG8gdW5kZXJzdGFuZCB0aGUgcG9zc2libGUgcmVhY2ggb2YgdGhpcyBjaGFuZ2UuCgpOb3cgaXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgY29kZSBpdHNlbGYuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB1c2UgYHJlYWQtZmlsZWAgKG9yIGBncmVwcGVyYCBpZiBJIG5lZWQgdG8gc2VhcmNoIG1vcmUgYnJvYWRseSkgdG8gYXNzZXNzIHRoZSBjaGFuZ2UuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBiZWluZyBtb2RpZmllZCwgaWRlbnRpZnkgdGhlIGNvcmUgbG9naWMsIGFuZCBxdWlja2x5IGV2YWx1YXRlIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDkwOlx0XG4gIDkxOlx0c3RhdGljIGludFxuICA5MjpcdHl0OTIxeF9sZWRfYmxpbmtfc2V0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBncm91cCxcbiAgOTM6XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nICpvbnAsIHVuc2lnbmVkIGxvbmcgKm9mZnApXG4gIDk0Olx0e1xuICA5NTpcdFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFx1MDAyNnByaXYtXHUwMDNlcG9ydHNbcG9ydF07XG4gIDk2Olx0XHR1bnNpZ25lZCBzaG9ydCBjeWNsZTtcbiAgOTc6XHRcdHVuc2lnbmVkIGNoYXIgZHV0eTtcbiAgOTg6XHRcdGJvb2wgdXNlX2N5Y2xlO1xuICA5OTpcdFx0dTMyIGN0cmw7XG4gMTAwOlx0XHR1MzIgbWFzaztcbiAxMDE6XHRcdHUzMiB2YWw7XG4gMTAyOlx0XHRpbnQgcmVzO1xuIDEwMzpcdFxuIDEwNDpcdFx0aWYgKCEqb25wIFx1MDAyNlx1MDAyNiAhKm9mZnApIHtcbiAxMDU6XHRcdFx0Y3ljbGUgPSBZVDkyMVhfTEVEX0JMSU5LX0RFRjtcbiAxMDY6XHRcdFx0ZHV0eSA9IChwcC1cdTAwM2VsZWRfZHV0eV9tYXNrIFx1MDAyNiB+QklUKGdyb3VwKSkgPyBwcC1cdTAwM2VsZWRfZHV0eSA6XG4gMTA3Olx0XHRcdCAgICAgICBZVDkyMVhfTEVEX0RVVFkoMSwgMik7XG4gMTA4Olx0XG4gMTA5Olx0XHRcdHVzZV9jeWNsZSA9IGZhbHNlO1xuIDExMDpcdFx0fSBlbHNlIGlmICghKm9ucCB8fCAhKm9mZnApIHtcbiAxMTE6XHRcdFx0cmV0dXJuIHl0OTIxeF9sZWRfZm9yY2Vfc2V0KHByaXYsIHBvcnQsIGdyb3VwLCAqb25wKTtcbiAxMTI6XHRcdH0gZWxzZSB7XG4gMTEzOlx0XHRcdHJlcyA9IHl0OTIxeF9sZWRfYmxpbmtfc2VsZWN0KHByaXYsICpvbnAsICpvZmZwLCBcdTAwMjZjeWNsZSwgXHUwMDI2ZHV0eSk7XG4gMTE0Olx0XHRcdGlmIChyZXMpXG4gMTE1Olx0XHRcdFx0cmV0dXJuIHJlcztcbiAxMTY6XHRcbiAxMTc6XHRcdFx0dXNlX2N5Y2xlID0gY3ljbGUgXHUwMDNjIFlUOTIxWF9MRURfQkxJTktfREVGO1xuIDExODpcdFxuIDExOTpcdFx0XHRpZiAodXNlX2N5Y2xlIFx1MDAyNlx1MDAyNiBjeWNsZSAhPSBwcC1cdTAwM2VsZWRfY3ljbGUgXHUwMDI2XHUwMDI2XG4gMTIwOlx0XHRcdCAgICAocHAtXHUwMDNlbGVkX2N5Y2xlX21hc2sgXHUwMDI2IH5CSVQoZ3JvdXApKSlcbiAxMjE6XHRcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gMTIyOlx0XHRcdGlmIChkdXR5ICE9IHBwLVx1MDAzZWxlZF9kdXR5IFx1MDAyNlx1MDAyNiAocHAtXHUwMDNlbGVkX2R1dHlfbWFzayBcdTAwMjYgfkJJVChncm91cCkpKVxuIDEyMzpcdFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiAxMjQ6XHRcdH1cbiAxMjU6XHRcbiAxMjY6XHRcdHBwLVx1MDAzZWxlZF9jeWNsZV9tYXNrIFx1MDAyNj0gfkJJVChncm91cCk7XG4gMTI3Olx0XHRwcC1cdTAwM2VsZWRfZHV0eV9tYXNrIFx1MDAyNj0gfkJJVChncm91cCk7XG4gMTI4Olx0XG4gMTI5Olx0XHQvKiBUaGUgY2hpcCBzZWVtcyB0byBqYW0gYSB3aGlsZSBpZiBjaGFuZ2luZyBkdXR5IGRpcmVjdGx5ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW90b3Jjb21tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTgzPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTg0LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6ODU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctODYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTIxPW9iai15XHRcdFx0XHQmIzQzOz0gbWljcm9jaGlwL1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjIyOm9iai15XHRcdFx0XHQmIzQzOz0gbW90b3Jjb21tL1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTIzLW9iai15XHRcdFx0XHQmIzQzOz0gbXY4OGU2eHh4L1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTQ3NzI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeXQ5MjF4X29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0NzczOlx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21vdG9yY29tbSx5dDkyMTVcJiMzNDsgfSxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ3NzQtXHR7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODUKCQkJCQkJCW91dHB1dDogNzMKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBjb25zaWRlcmluZyBJJiMzOTttIGFuIGV4cGVydDoKCioqRGl2aW5nIGludG8gdGhlIE1vdG9yQ29tbSBEU0EgRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIE1vdG9yQ29tbSBEU0EgZHJpdmVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9gLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHdpbGwgYmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNwZWNpZmljIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgRFNBIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGZvY3VzIHdpbGwgYmUgb24gdGhlIGBLY29uZmlnYCBmaWxlIGFuZCB0aGUgZHJpdmVyJiMzOTtzIHNvdXJjZSBjb2RlIGl0c2VsZi4gVGhlIEtjb25maWcgd2lsbCB0ZWxsIG1lIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMg4oCTIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIHdoYXQgb3RoZXIgbW9kdWxlcyBhcmUgcmVxdWlyZWQsIHdoYXQgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgYXJlIHN1cHBvcnRlZCwgYW5kIHdoaWNoIHN5bWJvbHMgYXJlIGNvbmZpZ3VyYWJsZS4gVGhpcyBpcyBrZXkgYmVjYXVzZSBpdCBzaGFwZXMgdGhlIGVudGlyZSBsYW5kc2NhcGUgb2Ygd2hhdCYjMzk7cyAqcG9zc2libGUqIHdpdGggdGhpcyBkcml2ZXIgb24gdGhlIHRhcmdldCBwbGF0Zm9ybS4gVGhlbiBJJiMzOTtsbCBkaXZlIGludG8gdGhlIGRyaXZlciBpdHNlbGYsIGV4YW1pbmluZyB0aGUgY3JpdGljYWwgZnVuY3Rpb25zOiBpbml0aWFsaXphdGlvbiwgcHJvYmUsIGFuZCByZW1vdmFsLiBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGhvdyBpdCBoYW5kbGVzIHJlZ2lzdGVyIGFjY2VzcywgaW50ZXJydXB0IGhhbmRsaW5nIChpZiBhbnkpLCBhbmQgaG93IGl0IHJlZ2lzdGVycyB3aXRoIHRoZSBEU0EgY29yZS4gV2hhdCYjMzk7cyB0aGUgaW50ZXJydXB0IHNldHVwLCB3aGF0IGlzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG5ldF9kZXZpY2UgcmVnaXN0ZXJlZCwgaG93IGRvZXMgdGhlIGluaXRpYWxpemF0aW9uIGZsb3cgZ2V0IGNvbmZpZ3VyZWQgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgaG93IGRvZXMgaXQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGhvb2tzIGZvciBEU0EgdG8gZG8gaXRzIG1hZ2ljPyBJJiMzOTtsbCBhbHNvIGxvb2sgZm9yIGFueSB2ZW5kb3Itc3BlY2lmaWMgZXh0ZW5zaW9ucyBvciBxdWlya3MuIEZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgdmVyc2lvbiBwcm9wZXJseSBoYW5kbGVzIGFueSBzZWN1cml0eSByZXF1aXJlbWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTkVUX0RTQV9ZVDkyMVhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01vdG9yY29tbSBZVDkyMTUgZXRoZXJuZXQgc3dpdGNoIGNoaXAgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX1lUOTIxWFxuICAgNTpcdFx0c2VsZWN0IE5FVF9JRUVFODAyMVFfSEVMUEVSUyBpZiBEQ0JcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaFxuICAgODpcdFx0ICBjaGlwLlxuICAgOTpcdFxuICAxMDpcdGNvbmZpZyBORVRfRFNBX1lUOTIxWF9MRURTXG4gIDExOlx0XHRib29sIFwmIzM0O0xFRCBzdXBwb3J0IGZvciBNb3RvcmNvbW0gWVQ5MjE1XCYjMzQ7XG4gIDEyOlx0XHRkZWZhdWx0IHlcbiAgMTM6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9ZVDkyMVhcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TkVUX0RTQV9ZVDkyMVhcbiAgMTU6XHRcdGhlbHBcbiAgMTY6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIGNvbnRyb2xsaW5nIHRoZSBMRURzIGF0dGFjaGVkIHRvIHRoZVxuICAxNzpcdFx0ICBNb3RvcmNvbW0gWVQ5MjE1IHN3aXRjaCBjaGlwcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt5dDkyMXhfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjU2MSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzEtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozMjpzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMzLVx0dW5zaWduZWQgaW50IHNpemU7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDAtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MTovKiBNdXN0IGFncmVlIHdpdGggeXQ5MjF4X21pYlxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDItICpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00Ni0gKi9cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHl0OTIxeF9taWJfZGVzY3NbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ4LVx0TUlCX0RFU0MoMSwgWVQ5MjFYX01JQl9EQVRBX1JYX0JST0FEQ0FTVCwgTlVMTCksXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTgtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo5OTpzdHJ1Y3QgeXQ5MjF4X2luZm8ge1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTAwLVx0Y29uc3QgY2hhciAqbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMDYtXHR1MTYgaW50ZXJuYWxfbWFzaztcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEwNzpcdC8qIFRPRE86IHNlZSBjb21tZW50cyBpbiB5dDkyMXhfZHNhX3BoeWxpbmtfZ2V0X2NhcHMoKSAqL1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTA4LVx0dTE2IGV4dGVybmFsX21hc2s7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE1LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X2luZm8geXQ5MjF4X2luZm9zW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTctXHR7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTY0LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTY1OnN0cnVjdCB5dDkyMXhfcmVnX21kaW8ge1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTY2LVx0c3RydWN0IG1paV9idXMgKmJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xODEtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxODI6I2RlZmluZSB0b195dDkyMXhfcHJpdihfZHMpIGNvbnRhaW5lcl9vZl9jb25zdChfZHMsIHN0cnVjdCB5dDkyMXhfcHJpdiwgZHMpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xODMtI2RlZmluZSB0b19kZXZpY2UocHJpdikgKChwcml2KS1cdTAwM2Vkcy5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MTkwPXN0YXRpYyB1MzIgZXRoYWRkcl9sbzJfdG9fdTMyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTk0LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTk1OnN0YXRpYyBpbnQgeXQ5MjF4X3JlZ19tZGlvX3JlYWQodm9pZCAqY29udGV4dCwgdTMyIHJlZywgdTMyICp2YWxwKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTk2LXtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjE5NzpcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW8gPSBjb250ZXh0O1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTk4LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IG1kaW8tXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTIzNS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjIzNjpzdGF0aWMgaW50IHl0OTIxeF9yZWdfbWRpb193cml0ZSh2b2lkICpjb250ZXh0LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjM3LXtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjIzODpcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW8gPSBjb250ZXh0O1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjM5LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IG1kaW8tXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTI3MS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjI3MjpzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTIxeF9yZWdfb3BzIHl0OTIxeF9yZWdfb3BzX21kaW8gPSB7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoyNzM6XHQucmVhZCA9IHl0OTIxeF9yZWdfbWRpb19yZWFkLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Mjc0Olx0LndyaXRlID0geXQ5MjF4X3JlZ19tZGlvX3dyaXRlLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjc1LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjc4LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Mjc5OnN0YXRpYyBpbnQgeXQ5MjF4X2ludGlmX3dhaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjgwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yODItXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoyODM6XHRyZXR1cm4geXQ5MjF4X3JlZ193YWl0KHByaXYsIFlUOTIxWF9JTlRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yODQtXHRcdFx0ICAgICAgIFx1MDAyNnZhbCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9Mjg3PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjI4ODp5dDkyMXhfaW50aWZfcmVhZChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgKnZhbHApXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yODkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTI5NS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjI5NjpcdHJlcyA9IHl0OTIxeF9pbnRpZl93YWl0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjk3LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMDMtXHQgICAgICAgWVQ5MjFYX01CVVNfQ1RSTF9SRUFEO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzA0Olx0cmVzID0geXQ5MjF4X3JlZ191cGRhdGVfYml0cyhwcml2LCBZVDkyMVhfSU5UX01CVVNfQ1RSTCwgbWFzaywgY3RybCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMDUtXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzA2LVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzA3Olx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfSU5UX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJUKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMwOC1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzEwLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzExOlx0cmVzID0geXQ5MjF4X2ludGlmX3dhaXQocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMTItXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzEzLVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzE0Olx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIFlUOTIxWF9JTlRfTUJVU19ESU4sIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMTUtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTMyNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozMjc6eXQ5MjF4X2ludGlmX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMjgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMzMi1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjMzMzpcdHJlcyA9IHl0OTIxeF9pbnRpZl93YWl0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzM0LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNDAtXHQgICAgICAgWVQ5MjFYX01CVVNfQ1RSTF9XUklURTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM0MTpcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzQyLVx0aWYgKHJlcylcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0My1cdFx0cmV0dXJuIHJlcztcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM0NDpcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0RPVVQsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNDUtXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzQ2LVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzQ3Olx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfSU5UX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJUKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0OC1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzUwLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzUxOlx0cmV0dXJuIHl0OTIxeF9pbnRpZl93YWl0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzUyLX1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM1My1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM1NDpzdGF0aWMgaW50IHl0OTIxeF9tYnVzX2ludF9yZWFkKHN0cnVjdCBtaWlfYnVzICptYnVzLCBpbnQgcG9ydCwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM1NS17XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozNTY6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNTctXHR1MTYgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM2My1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozNjQ6XHRyZXMgPSB5dDkyMXhfaW50aWZfcmVhZChwcml2LCBwb3J0LCByZWcsIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNjUtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MzcyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM3Mzp5dDkyMXhfbWJ1c19pbnRfd3JpdGUoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM3NC17XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozNzU6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNzYtXHRpbnQgcmVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM4MS1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozODI6XHRyZXMgPSB5dDkyMXhfaW50aWZfd3JpdGUocHJpdiwgcG9ydCwgcmVnLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM4My1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0zODg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Mzg5Onl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zOTAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQwMS1cdG1idXMtXHUwMDNlcHJpdiA9IHByaXY7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MDI6XHRtYnVzLVx1MDAzZXJlYWQgPSB5dDkyMXhfbWJ1c19pbnRfcmVhZDtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQwMzpcdG1idXMtXHUwMDNld3JpdGUgPSB5dDkyMXhfbWJ1c19pbnRfd3JpdGU7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MDQtXHRtYnVzLVx1MDAzZXBhcmVudCA9IGRldjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MTUtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MTY6c3RhdGljIGludCB5dDkyMXhfZXh0aWZfd2FpdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MTcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQxOS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQyMDpcdHJldHVybiB5dDkyMXhfcmVnX3dhaXQocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQyMS1cdFx0XHQgICAgICAgXHUwMDI2dmFsKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz00MjQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDI1Onl0OTIxeF9leHRpZl9yZWFkKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiAqdmFscClcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQyNi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDMyLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDMzOlx0cmVzID0geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MzQtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ0MC1cdCAgICAgICBZVDkyMVhfTUJVU19DVFJMX1RZUEVfQzIyIHwgWVQ5MjFYX01CVVNfQ1RSTF9SRUFEO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDQxOlx0cmVzID0geXQ5MjF4X3JlZ191cGRhdGVfYml0cyhwcml2LCBZVDkyMVhfRVhUX01CVVNfQ1RSTCwgbWFzaywgY3RybCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NDItXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDQzLVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDQ0Olx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfRVhUX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJUKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ0NS1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDQ3LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDQ4Olx0cmVzID0geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NDktXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDUwLVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDUxOlx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIFlUOTIxWF9FWFRfTUJVU19ESU4sIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NTItXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTQ2Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0NjQ6eXQ5MjF4X2V4dGlmX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NjUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ2OS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3MDpcdHJlcyA9IHl0OTIxeF9leHRpZl93YWl0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDcxLVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NzctXHQgICAgICAgWVQ5MjFYX01CVVNfQ1RSTF9UWVBFX0MyMiB8IFlUOTIxWF9NQlVTX0NUUkxfV1JJVEU7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0Nzg6XHRyZXMgPSB5dDkyMXhfcmVnX3VwZGF0ZV9iaXRzKHByaXYsIFlUOTIxWF9FWFRfTUJVU19DVFJMLCBtYXNrLCBjdHJsKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ3OS1cdGlmIChyZXMpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00ODAtXHRcdHJldHVybiByZXM7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0ODE6XHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9FWFRfTUJVU19ET1VULCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDgyLVx0aWYgKHJlcylcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ4My1cdFx0cmV0dXJuIHJlcztcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ4NDpcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00ODUtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ4Ny1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ4ODpcdHJldHVybiB5dDkyMXhfZXh0aWZfd2FpdChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ4OS19XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00OTAtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0OTE6c3RhdGljIGludCB5dDkyMXhfbWJ1c19leHRfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWJ1cywgaW50IHBvcnQsIGludCByZWcpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00OTIte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDkzOlx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gbWJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDk0LVx0dTE2IHZhbDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00OTctXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDk4Olx0cmVzID0geXQ5MjF4X2V4dGlmX3JlYWQocHJpdiwgcG9ydCwgcmVnLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDk5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTUwNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1MDc6eXQ5MjF4X21idXNfZXh0X3dyaXRlKHN0cnVjdCBtaWlfYnVzICptYnVzLCBpbnQgcG9ydCwgaW50IHJlZywgdTE2IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MDgte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTA5Olx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gbWJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTEwLVx0aW50IHJlcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MTItXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTEzOlx0cmVzID0geXQ5MjF4X2V4dGlmX3dyaXRlKHByaXYsIHBvcnQsIHJlZywgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MTQtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9NTE5PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjUyMDp5dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTIxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MzMtXHQvKiBUT0RPOiBjNDU/ICovXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1MzQ6XHRtYnVzLVx1MDAzZXJlYWQgPSB5dDkyMXhfbWJ1c19leHRfcmVhZDtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjUzNTpcdG1idXMtXHUwMDNld3JpdGUgPSB5dDkyMXhfbWJ1c19leHRfd3JpdGU7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MzYtXHRtYnVzLVx1MDAzZXBhcmVudCA9IGRldjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NDctLyogUmVhZCBhbmQgaGFuZGxlIG92ZXJmbG93IG9mIDMyYml0IE1JQnMuIE1JQiBidWZmZXIgbXVzdCBiZSB6ZXJvZWQgYmVmb3JlLiAqL1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTQ4OnN0YXRpYyBpbnQgeXQ5MjF4X3JlYWRfbWliKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NDkte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTUwOlx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFx1MDAyNnByaXYtXHUwMDNlcG9ydHNbcG9ydF07XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NTEtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0b19kZXZpY2UocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1NTI6XHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXHUwMDI2cHAtXHUwMDNlbWliO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTUzLVx0aW50IHJlcyA9IDA7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NTQtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1NTU6XHQvKiBSZWFkaW5nIG9mIHl0OTIxeF9wb3J0OjptaWIgaXMgbm90IHByb3RlY3RlZCBieSBhIGxvY2sgYW5kIGl0JiMzOTtzIHZhaW5cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTU1Ni1cdCAqIHRvIGtlZXAgaXRzIGNvbnNpc3RlbmN5LCBzaW5jZSB3ZSBoYXZlIHRvIHJlYWQgcmVnaXN0ZXJzIG9uZSBieSBvbmVcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NjItXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1NjM6XHRmb3IgKHNpemVfdCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh5dDkyMXhfbWliX2Rlc2NzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjU2NDpcdFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFx1MDAyNnl0OTIxeF9taWJfZGVzY3NbaV07XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NjUtXHRcdHUzMiByZWcgPSBZVDkyMVhfTUlCbl9EQVRBMChwb3J0KSAmIzQzOyBkZXNjLVx1MDAzZW9mZnNldDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NjktXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1NzA6XHRcdHJlcyA9IHl0OTIxeF9yZWdfcmVhZChwcml2LCByZWcsIFx1MDAyNnZhbDApO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTcxLVx0XHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTU4Mi1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjU4MzpcdFx0XHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnICYjNDM7IDQsIFx1MDAyNnZhbDEpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTg0LVx0XHRcdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjA2LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjA3OnN0YXRpYyB2b2lkIHl0OTIxeF9wb2xsX21pYihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02MDgte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjA5Olx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IGNvbnRhaW5lcl9vZl9jb25zdCh3b3JrLCBzdHJ1Y3QgeXQ5MjF4X3BvcnQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02MTAtXHRcdFx0XHRcdFx0ICAgIG1pYl9yZWFkLndvcmspO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjExOlx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gKHZvaWQgKikocHAgLSBwcC1cdTAwM2VpbmRleCkgLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjEyOlx0XHRcdFx0ICAgb2Zmc2V0b2Yoc3RydWN0IHl0OTIxeF9wcml2LCBwb3J0cyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02MTMtXHR1bnNpZ25lZCBsb25nIGRlbGF5ID0gWVQ5MjFYX1NUQVRTX0lOVEVSVkFMX0pJRkZJRVM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjE3LVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjYxODpcdHJlcyA9IHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYxOS1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz02MjY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjYyNzp5dDkyMXhfZHNhX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHUzMiBzdHJpbmdzZXQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02MjgtXHRcdCAgICAgICB1aW50OF90ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYzMi1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjYzMzpcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHl0OTIxeF9taWJfZGVzY3MpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjM0Olx0XHRjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjICpkZXNjID0gXHUwMDI2eXQ5MjF4X21pYl9kZXNjc1tpXTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYzNS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz02NDE9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY0Mjp5dDkyMXhfZHNhX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVpbnQ2NF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjQzLXtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY0NDpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY0NTpcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcdTAwMjZwcml2LVx1MDAzZXBvcnRzW3BvcnRdO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjQ2Olx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFx1MDAyNnBwLVx1MDAzZW1pYjtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY0Ny1cdHNpemVfdCBqO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY0OS1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2NTA6XHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NTEtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjUzLVx0aiA9IDA7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2NTQ6XHRmb3IgKHNpemVfdCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh5dDkyMXhfbWliX2Rlc2NzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY1NTpcdFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFx1MDAyNnl0OTIxeF9taWJfZGVzY3NbaV07XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NTYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjY0LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjY1OnN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY2Ni17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjcxLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjcyOlx0Zm9yIChzaXplX3QgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoeXQ5MjF4X21pYl9kZXNjcyk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2NzM6XHRcdGNvbnN0IHN0cnVjdCB5dDkyMXhfbWliX2Rlc2MgKmRlc2MgPSBcdTAwMjZ5dDkyMXhfbWliX2Rlc2NzW2ldO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjc0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTY4Mj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjgzOnl0OTIxeF9kc2FfZ2V0X2V0aF9tYWNfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY4NC1cdFx0XHQgICAgIHN0cnVjdCBldGh0b29sX2V0aF9tYWNfc3RhdHMgKm1hY19zdGF0cylcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY4NS17XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2ODY6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2ODc6XHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1twb3J0XTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY4ODpcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcdTAwMjZwcC1cdTAwM2VtaWI7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02ODktXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02OTAtXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjkxOlx0eXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjkyLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTcxOD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzE5Onl0OTIxeF9kc2FfZ2V0X2V0aF9jdHJsX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03MjAtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZXRoX2N0cmxfc3RhdHMgKmN0cmxfc3RhdHMpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03MjEte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzIyOlx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzIzOlx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFx1MDAyNnByaXYtXHUwMDNlcG9ydHNbcG9ydF07XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3MjQ6XHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXHUwMDI2cHAtXHUwMDNlbWliO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzI1LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzI2LVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjcyNzpcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTcyOC1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03MzQtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3MzU6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX3Jtb25faGlzdF9yYW5nZSB5dDkyMXhfcm1vbl9yYW5nZXNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTczNi1cdHsgMCwgNjQgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz03NDY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc0Nzp5dDkyMXhfZHNhX2dldF9ybW9uX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03NDgtXHRcdFx0ICBzdHJ1Y3QgZXRodG9vbF9ybW9uX3N0YXRzICpybW9uX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc1MC17XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3NTE6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3NTI6XHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1twb3J0XTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc1MzpcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcdTAwMjZwcC1cdTAwM2VtaWI7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03NTQtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03NTUtXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzU2Olx0eXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzU3LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzU4LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzU5Olx0KnJhbmdlcyA9IHl0OTIxeF9ybW9uX3JhbmdlcztcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc2MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz03ODM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc4NDp5dDkyMXhfZHNhX2dldF9zdGF0czY0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03ODUtXHRcdCAgICAgICBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnN0YXRzKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzg2LXtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc4NzpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc4ODpcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcdTAwMjZwcml2LVx1MDAzZXBvcnRzW3BvcnRdO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Nzg5Olx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFx1MDAyNnBwLVx1MDAzZW1pYjtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc5MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz04MTk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjgyMDp5dDkyMXhfZHNhX2dldF9wYXVzZV9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODIxLVx0XHRcdCAgIHN0cnVjdCBldGh0b29sX3BhdXNlX3N0YXRzICpwYXVzZV9zdGF0cylcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTgyMi17XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MjM6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MjQ6XHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1twb3J0XTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjgyNTpcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcdTAwMjZwcC1cdTAwM2VtaWI7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04MjYtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04MjctXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODI4Olx0eXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODI5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTgzNT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MzY6eXQ5MjF4X3NldF9lZWUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZSlcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTgzNy17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODQ5LVx0aWYgKCEhbmV3X21hc2sgIT0gISFwcml2LVx1MDAzZWVlZV9wb3J0c19tYXNrKSB7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4NTA6XHRcdHJlcyA9IHl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMocHJpdiwgWVQ5MjFYX1BPTl9TVFJBUF9GVU5DLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODUxLVx0XHRcdFx0XHQgICAgIFlUOTIxWF9QT05fU1RSQVBfRUVFLCAhIW5ld19tYXNrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04NTMtXHRcdFx0cmV0dXJuIHJlcztcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjg1NDpcdFx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfUE9OX1NUUkFQX1ZBTCxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg1NS1cdFx0XHRcdFx0ICAgICBZVDkyMVhfUE9OX1NUUkFQX0VFRSwgISFuZXdfbWFzayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODYyLVx0LyogRW5hYmxlIC8gZGlzYWJsZSBwb3J0IEVFRSAqL1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODYzOlx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfRUVFX0NUUkwsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04NjQtXHRcdFx0XHQgICAgIFlUOTIxWF9FRUVfQ1RSTF9FTm4ocG9ydCksIGVuYWJsZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODY2LVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODY3Olx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfRUVFbl9WQUwocG9ydCksXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04NjgtXHRcdFx0XHQgICAgIFlUOTIxWF9FRUVfVkFMX0RBVEEsIGVuYWJsZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9ODc1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjg3Njp5dDkyMXhfZHNhX3NldF9tYWNfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBldGh0b29sX2tlZWUgKmUpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04Nzcte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODc4Olx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODc5LVx0aW50IHJlcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04ODEtXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODgyOlx0cmVzID0geXQ5MjF4X3NldF9lZWUocHJpdiwgcG9ydCwgZSk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04ODMtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODg3LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODg4OnN0YXRpYyBpbnQgeXQ5MjF4X210dV9mZXRjaChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODg5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz04OTU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODk2Onl0OTIxeF9kc2FfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBuZXdfbXR1KVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODk3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MDEtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo5MDI6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MDMtXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3RvX3BvcnQoZHMsIHBvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTkxMS1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo5MTI6XHRyZXMgPSB5dDkyMXhfcmVnX3VwZGF0ZV9iaXRzKHByaXYsIFlUOTIxWF9NQUNuX0ZSQU1FKHBvcnQpLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTEzLVx0XHRcdFx0ICAgICBZVDkyMVhfTUFDX0ZSQU1FX1NJWkVfTSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MTktXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo5MjA6c3RhdGljIGludCB5dDkyMXhfZHNhX3BvcnRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTIxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz05NTM9c3RhdGljIHU2NCB0b2tlbjJidXJzdCh1MzIgdG9rZW4sIGludCB1bml0LCBpbnQgQylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05NTctXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo5NTg6c3RydWN0IHl0OTIxeF9tYXJrZXIge1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTU5LVx0dTMyIGNpcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz05Njk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTcwOnl0OTIxeF9tYXJrZXJfdGZtKHN0cnVjdCB5dDkyMXhfbWFya2VyICptYXJrZXIsIHU2NCByYXRlLCB1NjQgYnVyc3QsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05NzEtXHRcdCAgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZCBpbnQgc2xvdF9ucywgdTMyIGNpcl9tYXgsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo5NzI6XHRcdCAgdTMyIGNic19tYXgsIGludCB1bml0X21heCwgc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTk3My1cdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTc3LVx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTc4Olx0c3RydWN0IHl0OTIxeF9tYXJrZXIgbTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTk3OS1cdHU2NCBidXJzdF9lc3Q7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTk5LVx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTAwMDpcdFx0YnVyc3Rfc3VnICYjNDM7PSBFVEhfSExFTiAmIzQzOyB5dDkyMXhfbXR1X2ZldGNoKHByaXYsIHBvcnQpICYjNDM7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMDAxLVx0XHRcdCAgICAgRVRIX0ZDU19MRU47XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MTA1OT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMDYwOnl0OTIxeF9tYXJrZXJfdGZtX3BvbGljZShzdHJ1Y3QgeXQ5MjF4X21hcmtlciAqbWFya2VyLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTA2MS1cdFx0XHQgY29uc3Qgc3RydWN0IGZsb3dfYWN0aW9uX3BvbGljZSAqcG9saWNlLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA2MjpcdFx0XHQgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTA2My1cdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwNzMtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMDc0Olx0cmV0dXJuIHl0OTIxeF9tYXJrZXJfdGZtKG1hcmtlciwgcmF0ZSwgYnVyc3QsIGZsYWdzLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTA3NS1cdFx0XHRcdCBwcml2LVx1MDAzZW1ldGVyX3Nsb3RfbnMsIFlUOTIxWF9NRVRFUl9DSVJfTUFYLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTEwODA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA4MTp5dDkyMXhfbWFya2VyX3RmbV9zaGFwZShzdHJ1Y3QgeXQ5MjF4X21hcmtlciAqbWFya2VyLCB1NjQgcmF0ZSwgdTY0IGJ1cnN0LFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA4MjpcdFx0XHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMDgzLVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwODQte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA4NTpcdHJldHVybiB5dDkyMXhfbWFya2VyX3RmbShtYXJrZXIsIHJhdGUsIGJ1cnN0LCBmbGFncyxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwODYtXHRcdFx0XHQgcHJpdi1cdTAwM2Vwb3J0X3NoYXBlX3Nsb3RfbnMsIFlUOTIxWF9TSEFQRV9DSVJfTUFYLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTEwOTE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA5Mjp5dDkyMXhfcG9saWNlX3ZhbGlkYXRlKGNvbnN0IHN0cnVjdCBmbG93X2FjdGlvbl9wb2xpY2UgKnBvbGljZSxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwOTMtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgZmxvd19hY3Rpb24gKmFjdGlvbixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0xMTI3PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExMjg6eXQ5MjF4X21ldGVyX2NvbmZpZyhzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCBpZCxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExMjk6XHRcdCAgICBjb25zdCBzdHJ1Y3QgeXQ5MjF4X21hcmtlciAqbWFya2VyKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTEzMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE0Ny1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNDg6XHRyZXR1cm4geXQ5MjF4X3JlZzk2X3dyaXRlKHByaXYsIFlUOTIxWF9NRVRFUm5fQ1RSTChpZCksIGN0cmxzKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNDktfVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE1MC1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNTE6c3RhdGljIHZvaWQgeXQ5MjF4X2RzYV9wb3J0X3BvbGljZXJfZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTUyLXtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNTM6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTU0LVx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNTctXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE1ODpcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX1BPUlRuX01FVEVSKHBvcnQpLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNTktXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MTE2Nj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTY3Onl0OTIxeF9kc2FfcG9ydF9wb2xpY2VyX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE2OC1cdFx0XHQgICAgY29uc3Qgc3RydWN0IGZsb3dfYWN0aW9uX3BvbGljZSAqcG9saWNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNzAte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE3MTpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNzI6XHRzdHJ1Y3QgeXQ5MjF4X21hcmtlciBtYXJrZXI7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTczLVx0dTMyIGN0cmw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE3NS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNzY6XHRyZXMgPSB5dDkyMXhfcG9saWNlX3ZhbGlkYXRlKHBvbGljZSwgTlVMTCwgTlVMTCwgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNzctXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNzktXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTgwOlx0cmVzID0geXQ5MjF4X21hcmtlcl90Zm1fcG9saWNlKFx1MDAyNm1hcmtlciwgcG9saWNlLCAwLCBwcml2LCBwb3J0LCBleHRhY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE4MS1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE4NC1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTg1Olx0cmVzID0geXQ5MjF4X21ldGVyX2NvbmZpZyhwcml2LCBwb3J0ICYjNDM7IFlUOTIxWF9NRVRFUl9OVU0sIFx1MDAyNm1hcmtlcik7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTg2LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTg5LVx0Y3RybCA9IFlUOTIxWF9QT1JUX01FVEVSX0lEKHBvcnQpIHwgWVQ5MjFYX1BPUlRfTUVURVJfRU47XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTkwOlx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfUE9SVG5fTUVURVIocG9ydCksIGN0cmwpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE5MS1lbmQ6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MTE5Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTk4Onl0OTIxeF9kc2FfcG9ydF9zZXR1cF90Y190YmZfcG9ydChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE5OS1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IHRjX3RiZl9xb3B0X29mZmxvYWQgKnFvcHQpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMjAwLXtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEyMDE6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMjAyLVx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gcW9wdC1cdTAwM2VleHRhY2s7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTIyMC1cdFx0Y29uc3Qgc3RydWN0IHRjX3RiZl9xb3B0X29mZmxvYWRfcmVwbGFjZV9wYXJhbXMgKnA7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMjIxOlx0XHRzdHJ1Y3QgeXQ5MjF4X21hcmtlciBtYXJrZXI7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMjIyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEyMjQtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMjI1Olx0XHRyZXMgPSB5dDkyMXhfbWFya2VyX3RmbV9zaGFwZShcdTAwMjZtYXJrZXIsIHAtXHUwMDNlcmF0ZS5yYXRlX2J5dGVzX3BzLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTIyNi1cdFx0XHRcdFx0ICAgICAgcC1cdTAwM2VtYXhfc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMjQyLVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDc3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgU3lzdGVtJiMzOTtzIEludGVyYWN0aW9uIHdpdGggeXQ5MjF4KioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGB5dDkyMXhgIGludGVncmF0ZXMgd2l0aGluIHRoZSBzeXN0ZW0uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGl0cyBwb2ludCBvZiBlbnRyeS4gSXMgaXQgdXNpbmcgYSBwbGF0Zm9ybSBkcml2ZXIsIG9yIHBlcmhhcHMgaW50ZXJhY3RpbmcgdmlhIE1ESU8sIFNQSSwgb3Igc29tZSBvdGhlciBpbnRlcmZhY2U/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb25uZWN0aW9uIHRvIHRoZSBzeXN0ZW0mIzM5O3MgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXJzLgoKVG8gc3RhcnQsIEkmIzM5O2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2U6IHRoZSBgZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9gIGRpcmVjdG9yeS4gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxpa2VseSBsb2NhdGlvbiBmb3IgYW55IGRyaXZlci1sZXZlbCBjb2RlIHNwZWNpZmljIHRvIHRoaXMgaGFyZHdhcmUuIEkmIzM5O2xsIG5lZWQgdG8gZGlzc2VjdCB0aG9zZSBmaWxlcyB0byB1bmRlcnN0YW5kIHRoZSBkcml2ZXImIzM5O3MgYXJjaGl0ZWN0dXJlIGFuZCBob3cgaXQmIzM5O3MgaW50ZXJmYWNpbmcgd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JrIHN1YnN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7Y2hpcC5jJiMzNDssCiAgICAmIzM0O2NoaXAuaCYjMzQ7LAogICAgJiMzNDtsZWRzLmMmIzM0OywKICAgICYjMzQ7bGVkcy5oJiMzNDssCiAgICAmIzM0O3NtaS5jJiMzNDssCiAgICAmIzM0O3NtaS5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzNzYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aG9zZSBmaWxlczoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIERyaXZlciBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIHN5c3RlbSYjMzk7cyBidXMgZHJpdmVycyBhcmUgaGFuZGxlZCwgYW5kIGhvdyB0aGUgbW9kdWxlcyBhcmUgaW5pdGlhbGl6ZWQgYW5kIHByb2JlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgc21pLmNgIGFuZCBgY2hpcC5jYC4gVGhlc2UgZmlsZSBuYW1lcyBhcmUgcHJldHR5IHR5cGljYWwuIFRoZXkmIzM5O3JlIHN0cm9uZyBjYW5kaWRhdGVzIHRvIGNvbnRhaW4gdGhlIGNvcmUgYnVzIGRyaXZlciBsb2dpYywgb3IgYXQgbGVhc3QgdGhlIHJlbGV2YW50IGluaXRpYWxpemF0aW9uIHByb2NlZHVyZXMuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgZmluZCB0aGUgZGV2aWNlIHByb2JlIGZ1bmN0aW9ucyBpbiB0aGVyZSwgdG9vLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIGlkZW50aWZpZXMgYW5kIGF0dGFjaGVzIHRvIHRoZSByZWxldmFudCBoYXJkd2FyZS4gTGV0JiMzOTtzIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV98ZHJpdmVyX3JlZ2lzdGVyfHByb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz00NjkyPXN0YXRpYyB2b2lkIHl0OTIxeF9tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDcyMy1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3MjQ6c3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NzI1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz00Nzc4PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgeXQ5MjF4X21kaW9fZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDc3OTpcdC5wcm9iZSA9IHl0OTIxeF9tZGlvX3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDc4MC1cdC5yZW1vdmUgPSB5dDkyMXhfbWRpb19yZW1vdmUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDc4Ny1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3ODg6bWRpb19tb2R1bGVfZHJpdmVyKHl0OTIxeF9tZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00Nzg5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODkwOAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBNRElPIERldmljZSBJbnN0YW50aWF0aW9uIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgTURJTyBkZXZpY2VzIGFyZSBicm91Z2h0IHVwLCBzcGVjaWZpY2FsbHkgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nIGxpa2UgUUVNVSBvciB3aGVuIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIGluc3RhbnRpYXRlIGFuZCBwcm9iZSB0aGVzZSBkZXZpY2VzLCBvciBldmVuIERTQSBzd2l0Y2hlcywgd2l0aG91dCBoYXZpbmcgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50PwoKRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIERTQSBoYXJkd2FyZSBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS4gQW5kIGhvdyBkb2VzIHN5emthbGxlciBwbGF5IGludG8gYWxsIG9mIHRoaXMgd2l0aCBNRElPIGRldmljZXMgb3IgRFNBIGRyaXZlcnM/IEkgc2hvdWxkIHNlYXJjaCBrZXJuZWwgZnV6emluZyBjb250ZXh0cyBmb3IgY2x1ZXMgYWJvdXQgaG93IERTQSBzd2l0Y2ggZHJpdmVycyBvciBNRElPIGRyaXZlcnMgYXJlIGhhbmRsZWQuIExldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGF0IFNlY3Rpb24gMiwgdGhlICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgY2F0ZWdvcnkgcHJvYmFibHkgaXNuJiMzOTt0IHJlbGV2YW50IGhlcmUg4oCTIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChtbHhzdywgcWVkLCBhbWRncHUsIGV0Yy4pIGFyZSBvdXQgYmVjYXVzZSB0aGV5IG5lZWQgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpc24mIzM5O3QgZW11bGF0ZWQgaW4gUUVNVS4gQnV0ICYjMzQ7cmVhY2hhYmxlIGRyaXZlcnMgYW5kIHByb3RvY29scyYjMzQ7IGlzIGludGVyZXN0aW5nLi4uIGRyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBsaWtlIHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgYW5kIHNvY2tldHMgY291bGQgYmUgdGhlIHRpY2tldC4KCk5vdywgbGV0JiMzOTtzIHNlZSBhYm91dCB0aGUgeXQ5MjF4IGRldmljZS4gSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nIGFib3V0IGl0LiBPa2F5LCBoZXJlIHdlIGFyZTogYHN0cnVjdCBtZGlvX2RyaXZlciB5dDkyMXhfbWRpb19kcml2ZXJgLCBhbmQgYHl0OTIxeF9vZl9tYXRjaGAuIFJpZ2h0LCBkb2VzIGl0IGJpbmQgdGhyb3VnaCBEZXZpY2UgVHJlZSAoT0YpIG9yIGRpcmVjdGx5IHRocm91Z2ggdGhlIE1ESU8gYnVzPyBJIG5lZWQgdG8gY2hlY2sgYHl0OTIxeF9tZGlvX3Byb2JlYCBhbmQgYHl0OTIxeF9vZl9tYXRjaGAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgc29tZSBpbnNpZ2h0IGludG8gaXRzIGluc3RhbnRpYXRpb24gbWV0aG9kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDcyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0NzIwOlx0XHR9XG40NzIxOlx0XHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuNDcyMjpcdH1cbjQ3MjM6XHRcbjQ3MjQ6XHRzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbjQ3MjU6XHR7XG40NzI2Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbjQ3Mjc6XHRcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW87XG40NzI4Olx0XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXY7XG40NzI5Olx0XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XG40NzMwOlx0XG40NzMxOlx0XHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XG40NzMyOlx0XHRpZiAoIXByaXYpXG40NzMzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuNDczNDpcdFxuNDczNTpcdFx0bWRpbyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqbWRpbyksIEdGUF9LRVJORUwpO1xuNDczNjpcdFx0aWYgKCFtZGlvKVxuNDczNzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjQ3Mzg6XHRcbjQ3Mzk6XHRcdG1kaW8tXHUwMDNlYnVzID0gbWRpb2Rldi1cdTAwM2VidXM7XG40NzQwOlx0XHRtZGlvLVx1MDAzZWFkZHIgPSBtZGlvZGV2LVx1MDAzZWFkZHI7XG40NzQxOlx0XHRtZGlvLVx1MDAzZXN3aXRjaGlkID0gMDtcbjQ3NDI6XHRcbjQ3NDM6XHRcdG11dGV4X2luaXQoXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG40NzQ0Olx0XG40NzQ1Olx0XHRwcml2LVx1MDAzZXJlZ19vcHMgPSBcdTAwMjZ5dDkyMXhfcmVnX29wc19tZGlvO1xuNDc0NjpcdFx0cHJpdi1cdTAwM2VyZWdfY3R4ID0gbWRpbztcbjQ3NDc6XHRcbjQ3NDg6XHRcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHByaXYtXHUwMDNlcG9ydHMpOyBpJiM0MzsmIzQzOykge1xuNDc0OTpcdFx0XHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1tpXTtcbjQ3NTA6XHRcbjQ3NTE6XHRcdFx0cHAtXHUwMDNlaW5kZXggPSBpO1xuNDc1MjpcdFx0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwcC1cdTAwM2VtaWJfcmVhZCwgeXQ5MjF4X3BvbGxfbWliKTtcbjQ3NTM6XHRcdH1cbjQ3NTQ6XHRcbjQ3NTU6XHRcdGRzID0gXHUwMDI2cHJpdi1cdTAwM2VkcztcbjQ3NTY6XHRcdGRzLVx1MDAzZWRldiA9IGRldjtcbjQ3NTc6XHRcdGRzLVx1MDAzZWFzc2lzdGVkX2xlYXJuaW5nX29uX2NwdV9wb3J0ID0gdHJ1ZTtcbjQ3NTg6XHRcdGRzLVx1MDAzZWRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9IHRydWU7XG40NzU5Olx0XHRkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbjQ3NjA6XHRcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNnl0OTIxeF9kc2Ffc3dpdGNoX29wcztcbjQ3NjE6XHRcdGRzLVx1MDAzZWFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwO1xuNDc2MjpcdFx0ZHMtXHUwMDNlYWdlaW5nX3RpbWVfbWF4ID0gVTE2X01BWCAqIDUwMDA7XG40NzYzOlx0XHRkcy1cdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcdTAwMjZ5dDkyMXhfcGh5bGlua19tYWNfb3BzO1xuNDc2NDpcdFx0ZHMtXHUwMDNlbnVtX2xhZ19pZHMgPSBZVDkyMVhfTEFHX05VTTtcbjQ3NjU6XHRcdGRzLVx1MDAzZW51bV9wb3J0cyA9IFlUOTIxWF9QT1JUX05VTTtcbjQ3NjY6XHRcbjQ3Njc6XHRcdG1kaW9kZXZfc2V0X2RydmRhdGEobWRpb2RldiwgcHJpdik7XG40NzY4Olx0XG40NzY5Olx0XHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XG40NzcwOlx0fVxuNDc3MTpcdFxuNDc3MjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0ge1xuNDc3MzpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21vdG9yY29tbSx5dDkyMTVcJiMzNDsgfSxcbjQ3NzQ6XHRcdHt9XG40Nzc1Olx0fTtcbjQ3NzY6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB5dDkyMXhfb2ZfbWF0Y2gpO1xuNDc3NzpcdFxuNDc3ODpcdHN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgeXQ5MjF4X21kaW9fZHJpdmVyID0ge1xuNDc3OTpcdFx0LnByb2JlID0geXQ5MjF4X21kaW9fcHJvYmUsXG40NzgwOlx0XHQucmVtb3ZlID0geXQ5MjF4X21kaW9fcmVtb3ZlLFxuNDc4MTpcdFx0LnNodXRkb3duID0geXQ5MjF4X21kaW9fc2h1dGRvd24sXG40NzgyOlx0XHQubWRpb2Rydi5kcml2ZXIgPSB7XG40NzgzOlx0XHRcdC5uYW1lID0gWVQ5MjFYX05BTUUsXG40Nzg0Olx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IHl0OTIxeF9vZl9tYXRjaCxcbjQ3ODU6XHRcdH0sXG40Nzg2Olx0fTtcbjQ3ODc6XHRcbjQ3ODg6XHRtZGlvX21vZHVsZV9kcml2ZXIoeXQ5MjF4X21kaW9fZHJpdmVyKTtcbjQ3ODk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3NjAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgeXQ5MjF4X2xlZF9ibGlua19zZXRgIENhbGwgRmxvdyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbCBwYXRoIHRvIHRoaXMgYHl0OTIxeF9sZWRfYmxpbmtfc2V0YCBmdW5jdGlvbi4gTGV0JiMzOTtzIHRyYWNlIGhvdyBpdCYjMzk7cyBhY3R1YWxseSBiZWluZyB1c2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBpbiB0aGUgY29kZSB0aGlzIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQgYW5kLCBjcnVjaWFsbHksIGhvdyB3ZSByZWFjaCB0aGF0IHBvaW50LiBJcyBpdCBjYWxsZWQgZGlyZWN0bHksIG9yIGlzIGl0IHBhcnQgb2YgYSBsYXJnZXIgY2hhaW4gb2YgZnVuY3Rpb24gY2FsbHM/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIG9yIG90aGVyIGxvZ2ljIHRoYXQgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGl0JiMzOTtzIHRyaWdnZXJlZD8gSWRlbnRpZnlpbmcgdGhlIGVudHJ5IHBvaW50IGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbnRyb2wgZmxvdyB0aGF0IGxlYWRzIHRvIGl0LiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHJlZmVyZW5jZXMgdG8gdGhlIGZ1bmN0aW9uIG5hbWUsIG9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIExFRCBibGlua2luZyBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgY29kZWJhc2UsIGFuZCBzZWUgd2hlcmUgdGhleSBsZWFkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt5dDkyMXhfbGVkX2JsaW5rX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmM9OTE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmM6OTI6eXQ5MjF4X2xlZF9ibGlua19zZXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGdyb3VwLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMtOTMtXHRcdCAgICAgdW5zaWduZWQgbG9uZyAqb25wLCB1bnNpZ25lZCBsb25nICpvZmZwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jPTMzNT15dDkyMXhfY2xlZF9ibGlua19zZXQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsIHVuc2lnbmVkIGxvbmcgKmRlbGF5X29uLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jLTM0My1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYzozNDQ6XHRyZXMgPSB5dDkyMXhfbGVkX2JsaW5rX3NldChwcml2LCBwcC1cdTAwM2VpbmRleCwgbGVkLVx1MDAzZWdyb3VwLCBkZWxheV9vbixcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jLTM0NS1cdFx0XHRcdCAgIGRlbGF5X29mZik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjkxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTEVEIENvbnRyb2wgZm9yIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IFN3aXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBgeXQ5MjF4X2NsZWRfYmxpbmtfc2V0YCBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGFuIGBsZWRfY2xhc3NkZXZgIHN0cnVjdHVyZS4gVGhhdCYjMzk7cyBnb29kLCBpdCBzdWdnZXN0cyBhIHN0YW5kYXJkIExFRCBmcmFtZXdvcmsgaXMgaW4gdXNlLiBJdCYjMzk7cyBzZXQgdXAgd2hlbiB0aGUgeXQ5MjF4IHN3aXRjaCBpcyBwcm9iZWQgYW5kIHJlZ2lzdGVyZWQuIFNvLCB0aGUga2V5IGlzIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBkZXZpY2UgaXRzZWxmIGdldHMgcHJvYmVkLgoKQWgsIHJpZ2h0LCBpdCYjMzk7cyBhbiBNRElPIGRldmljZS4gQW5kIHRoZSBjb21wYXRpYmxlIHN0cmluZyBpcyAmIzM0O21vdG9yY29tbSx5dDkyMTUmIzM0OyDigJMgdGhhdCYjMzk7cyB0aGUgdGVsbC4gSXQgcmVsaWVzIG9uIERldmljZSBUcmVlIChPRikgb3IgYW4gTURJTyBidXMgbWF0Y2ggZm9yIHByb2JpbmcuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciBJIGNhbiBldmVuIGdldCB0aGlzIHRvIHByb2JlIGluIGEgc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCBydW5uaW5nIG9uIHg4Nl82NCBvciBhbWQ2NC4KCk9rYXksIGxldCYjMzk7cyB0aGluay4gRmlyc3QsIGlzIHRoZXJlIGV2ZW4gYW4gTURJTyBidXMsIG9yIGFueSBraW5kIG9mIE9GIGVtdWxhdGlvbiwgb3IgdmlydHVhbCBidXMgaW1wbGVtZW50ZWQgb24gYW1kNjQgaW4gdGhvc2UgZW52aXJvbm1lbnRzPyBJIHNlcmlvdXNseSBkb3VidCBpdC4uLiBidXQgbGV0JiMzOTtzIGJlIHN1cmUuIEluIHR5cGljYWwgUUVNVS9HQ0UsIHRoZXJlJiMzOTtzIG5vIHBoeXNpY2FsIE1vdG9yY29tbSBZVDkyMTUgc3dpdGNoIGNoaXAuIGB5dDkyMXhfbWRpb19kcml2ZXJgIHJlcXVpcmVzIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUgYW5kIGl0cyBhc3NvY2lhdGVkIGRldmljZSB0cmVlIG5vZGUuIEFuZCBzbywgdGhlIHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIgaXMsIGNhbiBzeXprYWxsZXIgb3Igc29tZXRoaW5nIHNpbWlsYXIgaW4gdXNlcnNwYWNlLCBzb21laG93IGNyZWF0ZSBNRElPIGRldmljZXMgb24tdGhlLWZseSBvciBiaW5kIHRoZSBgbWRpb19kcml2ZXJgIGRpcmVjdGx5PyBJIG5lZWQgdG8gc2VhcmNoIHRoZSBrZXJuZWwgY29kZSBhbmQgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBtZWNoYW5pc20gZm9yIGNyZWF0aW5nIE1ESU8gZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgb3IgZXZlbiwgaWYgdGhlcmUgaXMgc3VjaCBhIHRoaW5nIGFzIGEgdmlydHVhbCBNRElPIGJ1cyBJIGNvdWxkIGxldmVyYWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvX2RldmljZV9yZWdpc3RlcnxtZGlvX2RldmljZV9jcmVhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDQ2PXN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ2NzpcdHN3aXRjaF9tZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKGJ1cywgMzEpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY4LVx0aWYgKElTX0VSUihzd2l0Y2hfbWRpb2RldikpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDc0Olx0cmV0ID0gbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3dpdGNoX21kaW9kZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDc1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz01Mj1zdGF0aWMgaW50IG9mX21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICptZGlvLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTU4LVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NTk6XHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKG1kaW8sIGFkZHIpO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNjAtXHRpZiAoSVNfRVJSKG1kaW9kZXYpKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTY4LVx0LyogQWxsIGRhdGEgaXMgbm93IHN0b3JlZCBpbiB0aGUgbWRpb2RldiBzdHJ1Y3Q7IHJlZ2lzdGVyIGl0LiAqL1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6Njk6XHRyYyA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKG1kaW9kZXYpO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNzAtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYz0zMTA9c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfbWRpb2RldihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMTQtXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozMTU6XHRtZGlvID0gbWRpb19kZXZpY2VfY3JlYXRlKGJ1cywgYWRkcik7XG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMTYtXHRpZiAoSVNfRVJSKG1kaW8pKVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1wbGF0LmM9MzM3PXN0YXRpYyBpbnQgeHBjc19wbGF0X2luaXRfZGV2KHN0cnVjdCBkd194cGNzX3BsYXQgKnB4cGNzKVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1wbGF0LmMtMzQzLVx0LyogVGhlcmUgaXMgYSBzaW5nbGUgbWVtb3J5LW1hcHBlZCBEVyBYUENTIGRldmljZSAqL1xuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXBsYXQuYzozNDQ6XHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKHB4cGNzLVx1MDAzZWJ1cywgMCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jLTM0NS1cdGlmIChJU19FUlIobWRpb2RldikpXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXBsYXQuYy0zNTYtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jOjM1NzpcdHJldCA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKG1kaW9kZXYpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXBsYXQuYy0zNTgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM9MTYyMT1zdHJ1Y3QgZHdfeHBjcyAqeHBjc19jcmVhdGVfbWRpb2RldihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xNjI1LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM6MTYyNjpcdG1kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCBhZGRyKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTE2MjctXHRpZiAoSVNfRVJSKG1kaW9kZXYpKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEwODA9c3RhdGljIGludCBhbjg4MTFoYl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwOTgtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwOTk6XHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKHBoeWRldi1cdTAwM2VtZGlvLmJ1cyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExMDAtXHRcdFx0XHQgICAgIHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgJiM0MzsgRU44ODExSF9QQlVTX0FERFJfT0ZGUyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTEwMy1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjExMDQ6XHRyZXQgPSBtZGlvX2RldmljZV9yZWdpc3RlcihtZGlvZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExMDUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTI2LS8qKlxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6Mjc6ICogbWRpb19kZXZpY2VfcmVnaXN0ZXJfcmVzZXQgLSBSZWFkIGFuZCBpbml0aWFsaXplIHRoZSByZXNldCBwcm9wZXJ0aWVzIG9mXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0yOC0gKlx0XHRcdFx0YW4gbWRpbyBkZXZpY2Vcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0zMi0gKi9cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjMzOnN0YXRpYyBpbnQgbWRpb19kZXZpY2VfcmVnaXN0ZXJfcmVzZXQoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMzQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jPTExMz1zdGF0aWMgdm9pZCBtZGlvX2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xMTgtXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYzoxMTk6c3RydWN0IG1kaW9fZGV2aWNlICptZGlvX2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xMjAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE0Mi19XG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYzoxNDM6RVhQT1JUX1NZTUJPTChtZGlvX2RldmljZV9jcmVhdGUpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTQ0LVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTQ1LS8qKlxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTQ2OiAqIG1kaW9fZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIG1kaW8gZGV2aWNlIG9uIHRoZSBNRElPIGJ1c1xuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTQ3LSAqIEBtZGlvZGV2OiBtZGlvX2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTUwLSAqL1xuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTUxOmludCBtZGlvX2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNTIte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE3Mi19XG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYzoxNzM6RVhQT1JUX1NZTUJPTChtZGlvX2RldmljZV9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNzQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTgwLSAqIFRoaXMgZG9lc24mIzM5O3QgZnJlZSB0aGUgbWRpb19kZXZpY2UgaXRzZWxmLCBpdCBtZXJlbHkgcmV2ZXJzZXMgdGhlIGVmZmVjdHNcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE4MTogKiBvZiBtZGlvX2RldmljZV9yZWdpc3RlcigpLiBVc2UgbWRpb19kZXZpY2VfZnJlZSgpIHRvIGZyZWUgdGhlIGRldmljZVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTgyLSAqIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYz0xOTE9aW50IG1kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xOTgtXHRpZiAobWRpb2Rldi1cdTAwM2VmbGFncyBcdTAwMjYgTURJT19ERVZJQ0VfRkxBR19QSFkpIHtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE5OTpcdFx0ZXJyID0gbWRpb19kZXZpY2VfcmVnaXN0ZXJfcmVzZXQobWRpb2Rldik7XG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0yMDAtXHRcdGlmIChlcnIpXG4tLVxuaW5jbHVkZS9saW51eC9tZGlvLmg9OTQ9dm9pZCBtZGlvX2RldmljZV9mcmVlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5pbmNsdWRlL2xpbnV4L21kaW8uaDo5NTpzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9fZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcik7XG5pbmNsdWRlL2xpbnV4L21kaW8uaDo5NjppbnQgbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcbmluY2x1ZGUvbGludXgvbWRpby5oLTk3LXZvaWQgbWRpb19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MTE4CgkJCQkJCQlvdXRwdXQ6IDEzNQoJCQkJCQkJdGhvdWdodHM6IDY4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBGdXp6aW5nIFJlYWNoYWJpbGl0eSBmb3IgTW90b3Jjb21tIFlUOTIxNSBMRUQgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGBkc2FfbG9vcGAg4oCTIHRoZSBtb2NrIERTQSBkcml2ZXIg4oCTIGFuZCB0aGUgTW90b3Jjb21tIFlUOTIxNSBkcml2ZXIgKGBORVRfRFNBX1lUOTIxWGApLiBNeSB1bmRlcnN0YW5kaW5nIGlzLCB0aGUgWVQ5MjE1IGNvbW11bmljYXRlcyB3aXRoIGl0cyBzd2l0Y2ggY2hpcCB2aWEgTURJTywgdXNpbmcgYHl0OTIxeF9yZWdfb3BzX21kaW9gLiBUaGUgZHJpdmVyIHByb2JlcyBiYXNlZCBvbiBhbiBNRElPIGRldmljZSBtYXRjaGluZyB0aGUgJiMzNDttb3RvcmNvbW0seXQ5MjE1JiMzNDsgT0YgY29tcGF0aWJsZSBzdHJpbmcgb3IgZHJpdmVyIG5hbWUuCgpOb3csIGNvbnNpZGVyaW5nIHRoZSBRRU1VL0dDRSB4ODZfNjQgc2V0dXAsIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlcmUmIzM5O3Mgbm8gcGh5c2ljYWwgTW90b3Jjb21tIFlUOTIxNSBoYXJkd2FyZSBwcmVzZW50LCBhbmQsIGNydWNpYWxseSwgbm8gZW11bGF0aW9uIG9mIHRoaXMgc3BlY2lmaWMgQVNJQy4KClJlZmVycmluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBzZWN0aW9uIDIgZmxhZ3MgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0Oy4gVGhpcyBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IHZlbmRvci1zcGVjaWZpYyBzdHVmZiBsaWtlIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCBkZXBlbmQgb24gcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnLiBTZWN0aW9uIDEgcmVpbmZvcmNlcyB0aGlzIOKAkyByZWFjaGFiaWxpdHkgaXMga2V5LiBGdXp6aW5nIG9ubHkgd29ya3Mgb24gY29kZSB0aGF0ICpleGVjdXRlcyogaW4gdGhlc2UgZW52aXJvbm1lbnRzLCB3aGljaCBtZWFucyB3ZSBjYW4gb25seSB0ZXN0IGRldmljZXMgdGhhdCBhcmUgZW11bGF0ZWQgc3VjaCBhcyBVU0IgZ2FkZ2V0cywgb3IgbmV0ZGV2cyBldGMuIElmIHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgd2UgZG9uJiMzOTt0IGZ1enogaXQuCgpPa2F5LCBsZXQmIzM5O3MgYmUgYWJzb2x1dGVseSBzdXJlLiBUaGUgbW9kaWZpZWQgZmlsZSBpcyBgZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBgTkVUX0RTQV9ZVDkyMVhgIGRyaXZlci4gVGhlIGZ1bmN0aW9uIGNoYW5nZWQgaXMgYHl0OTIxeF9sZWRfYmxpbmtfc2V0YCwgYW4gaW50ZXJuYWwgTEVEIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24gZm9yIHRoZSBZVDkyMTUuIEl0IHJlcXVpcmVzIHRoZSBZVDkyMTUgc3dpdGNoIHRvIGJlIHByb2JlZCBhbmQgYm91bmQgdG8gYW4gTURJTyBkZXZpY2UuIFRoaXMgcmVxdWlyZXMgdGhlIHBoeXNpY2FsIFlUOTIxNSBBU0lDLgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgcGFydGljdWxhciBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCwgbm9yIGVtdWxhdGVkLCBpbiBRRU1VL0dDRSwgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuCgpMZXQmIzM5O3Mgc3VtbWFyaXplOgotICAgYFdvcnRoRnV6emluZ2A6IGZhbHNlCi0gICBgRm9jdXNTeW1ib2xzYDogW10KLSAgIGBFbmFibGVDb25maWdzYDogW10KLSAgIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggdGFyZ2V0cyBgeXQ5MjF4X2xlZF9ibGlua19zZXQoKWAgd2l0aGluIGBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY2AsIHdoaWNoLCBhcyBwYXJ0IG9mIHRoZSBgTkVUX0RTQV9ZVDkyMVhgIGRyaXZlciwgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgc3dpdGNoIGhhcmR3YXJlIChZVDkyMTUgQVNJQyBvbiBhbiBNRElPIGJ1cykuIFNpbmNlIHdlIGFyZSBpbiBRRU1VL0dDRSwgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuCgpOb3csIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgeXQ5MjF4X2xlZF9ibGlua19zZXQoKSBpbiBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChORVRfRFNBX1lUOTIxWCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQyBoYXJkd2FyZSAoTW90b3Jjb21tIFlUOTIxNSkgb24gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB5dDkyMXhfbGVkX2JsaW5rX3NldCgpIGluIGRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKE5FVF9EU0FfWVQ5MjFYKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDIGhhcmR3YXJlIChNb3RvcmNvbW0gWVQ5MjE1KSBvbiBhbiBNRElPIGJ1cyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNTowMi41MTg1MjQwNjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTMwMjU5MTY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHl0OTIxeF9sZWRfYmxpbmtfc2V0KCkgaW4gZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIE1vdG9yY29tbSBZVDkyMTUgZXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoTkVUX0RTQV9ZVDkyMVgpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIHBoeXNpY2FsIEFTSUMgaGFyZHdhcmUgKE1vdG9yY29tbSBZVDkyMTUpIG9uIGFuIE1ESU8gYnVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MDIuNTE4NTMwNjIzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTk1NTU1NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxMGRjNzRkOTJjMjBiZTQ1MTZhNGQ2NDlkYjhkNmE4MDJmYzE2MWM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDYgMDA6MjU6MDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMgYi9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY1xcbmluZGV4IDdkM2MwZjY4ZDhmZmIuLjg3YTZiOWNmNjA2ODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY1xcbkBAIC0xMDcsNiArMTA3LDggQEAgeXQ5MjF4X2xlZF9ibGlua19zZXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGdyb3VwLFxcbiBcXHRcXHQgICAgICAgWVQ5MjFYX0xFRF9EVVRZKDEsIDIpO1xcbiBcXG4gXFx0XFx0dXNlX2N5Y2xlID0gZmFsc2U7XFxuK1xcdH0gZWxzZSBpZiAoISpvbnAgfHwgISpvZmZwKSB7XFxuK1xcdFxcdHJldHVybiB5dDkyMXhfbGVkX2ZvcmNlX3NldChwcml2LCBwb3J0LCBncm91cCwgKm9ucCk7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdHJlcyA9IHl0OTIxeF9sZWRfYmxpbmtfc2VsZWN0KHByaXYsICpvbnAsICpvZmZwLCBcXHUwMDI2Y3ljbGUsIFxcdTAwMjZkdXR5KTtcXG4gXFx0XFx0aWYgKHJlcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MDIuOTE4OTA0NDg1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozODkwMjE5OTY4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgeXQ5MjF4X2xlZF9ibGlua19zZXQoKSBpbiBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChORVRfRFNBX1lUOTIxWCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQyBoYXJkd2FyZSAoTW90b3Jjb21tIFlUOTIxNSkgb24gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEwZGM3NGQ5MmMyMGJlNDUxNmE0ZDY0OWRiOGQ2YTgwMmZjMTYxYzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDAwOjI1OjAxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMgYi9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY1xuaW5kZXggN2QzYzBmNjhkOGZmYi4uODdhNmI5Y2Y2MDY4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY1xuQEAgLTEwNyw2ICsxMDcsOCBAQCB5dDkyMXhfbGVkX2JsaW5rX3NldChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZ3JvdXAsXG4gXHRcdCAgICAgICBZVDkyMVhfTEVEX0RVVFkoMSwgMik7XG4gXG4gXHRcdHVzZV9jeWNsZSA9IGZhbHNlO1xuK1x0fSBlbHNlIGlmICghKm9ucCB8fCAhKm9mZnApIHtcbitcdFx0cmV0dXJuIHl0OTIxeF9sZWRfZm9yY2Vfc2V0KHByaXYsIHBvcnQsIGdyb3VwLCAqb25wKTtcbiBcdH0gZWxzZSB7XG4gXHRcdHJlcyA9IHl0OTIxeF9sZWRfYmxpbmtfc2VsZWN0KHByaXYsICpvbnAsICpvZmZwLCBcdTAwMjZjeWNsZSwgXHUwMDI2ZHV0eSk7XG4gXHRcdGlmIChyZXMpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNTowMi45MTg5MDYwMTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Njc1MzM2NDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBMRUQgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgdGhlIGNoYW5nZSBpcyBoaXR0aW5nIGBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY2AuIEltbWVkaWF0ZWx5LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBiZWluZyBpbXBhY3RlZCBhbmQgd2hhdCdzIGNvbm5lY3RlZCB0byBpdC4gSSdtIHRoaW5raW5nLCBcInJpZ2h0LCBgbGVkcy5jYCBpbiB0aGUgTW90b3Jjb21tIERTQSBjb250ZXh0IC0gd2hhdCdzIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZSBoZXJlPyBXaGF0IGhhcmR3YXJlIGRvZXMgdGhpcyB0b3VjaD9cIiBMZXQncyBzdGFydCB3aXRoIGEgZmlsZSBpbnNwZWN0aW9uLCBtZW50YWxseSByZXZpZXdpbmcgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyBhbmQgb3ZlcmFsbCBoYXJkd2FyZSBhcmNoaXRlY3R1cmUgdG8gdW5kZXJzdGFuZCB0aGUgcG9zc2libGUgcmVhY2ggb2YgdGhpcyBjaGFuZ2UuXG5cbk5vdyBpdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJ20gZ29pbmcgdG8gcXVpY2tseSB1c2UgYHJlYWQtZmlsZWAgKG9yIGBncmVwcGVyYCBpZiBJIG5lZWQgdG8gc2VhcmNoIG1vcmUgYnJvYWRseSkgdG8gYXNzZXNzIHRoZSBjaGFuZ2UuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgYmVpbmcgbW9kaWZpZWQsIGlkZW50aWZ5IHRoZSBjb3JlIGxvZ2ljLCBhbmQgcXVpY2tseSBldmFsdWF0ZSBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzMiwiT3V0cHV0VG9rZW5zIjo2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MDkuNTk0MjQ2MzI0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkwOlxcdFxcbiAgOTE6XFx0c3RhdGljIGludFxcbiAgOTI6XFx0eXQ5MjF4X2xlZF9ibGlua19zZXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGdyb3VwLFxcbiAgOTM6XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nICpvbnAsIHVuc2lnbmVkIGxvbmcgKm9mZnApXFxuICA5NDpcXHR7XFxuICA5NTpcXHRcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbiAgOTY6XFx0XFx0dW5zaWduZWQgc2hvcnQgY3ljbGU7XFxuICA5NzpcXHRcXHR1bnNpZ25lZCBjaGFyIGR1dHk7XFxuICA5ODpcXHRcXHRib29sIHVzZV9jeWNsZTtcXG4gIDk5OlxcdFxcdHUzMiBjdHJsO1xcbiAxMDA6XFx0XFx0dTMyIG1hc2s7XFxuIDEwMTpcXHRcXHR1MzIgdmFsO1xcbiAxMDI6XFx0XFx0aW50IHJlcztcXG4gMTAzOlxcdFxcbiAxMDQ6XFx0XFx0aWYgKCEqb25wIFxcdTAwMjZcXHUwMDI2ICEqb2ZmcCkge1xcbiAxMDU6XFx0XFx0XFx0Y3ljbGUgPSBZVDkyMVhfTEVEX0JMSU5LX0RFRjtcXG4gMTA2OlxcdFxcdFxcdGR1dHkgPSAocHAtXFx1MDAzZWxlZF9kdXR5X21hc2sgXFx1MDAyNiB+QklUKGdyb3VwKSkgPyBwcC1cXHUwMDNlbGVkX2R1dHkgOlxcbiAxMDc6XFx0XFx0XFx0ICAgICAgIFlUOTIxWF9MRURfRFVUWSgxLCAyKTtcXG4gMTA4OlxcdFxcbiAxMDk6XFx0XFx0XFx0dXNlX2N5Y2xlID0gZmFsc2U7XFxuIDExMDpcXHRcXHR9IGVsc2UgaWYgKCEqb25wIHx8ICEqb2ZmcCkge1xcbiAxMTE6XFx0XFx0XFx0cmV0dXJuIHl0OTIxeF9sZWRfZm9yY2Vfc2V0KHByaXYsIHBvcnQsIGdyb3VwLCAqb25wKTtcXG4gMTEyOlxcdFxcdH0gZWxzZSB7XFxuIDExMzpcXHRcXHRcXHRyZXMgPSB5dDkyMXhfbGVkX2JsaW5rX3NlbGVjdChwcml2LCAqb25wLCAqb2ZmcCwgXFx1MDAyNmN5Y2xlLCBcXHUwMDI2ZHV0eSk7XFxuIDExNDpcXHRcXHRcXHRpZiAocmVzKVxcbiAxMTU6XFx0XFx0XFx0XFx0cmV0dXJuIHJlcztcXG4gMTE2OlxcdFxcbiAxMTc6XFx0XFx0XFx0dXNlX2N5Y2xlID0gY3ljbGUgXFx1MDAzYyBZVDkyMVhfTEVEX0JMSU5LX0RFRjtcXG4gMTE4OlxcdFxcbiAxMTk6XFx0XFx0XFx0aWYgKHVzZV9jeWNsZSBcXHUwMDI2XFx1MDAyNiBjeWNsZSAhPSBwcC1cXHUwMDNlbGVkX2N5Y2xlIFxcdTAwMjZcXHUwMDI2XFxuIDEyMDpcXHRcXHRcXHQgICAgKHBwLVxcdTAwM2VsZWRfY3ljbGVfbWFzayBcXHUwMDI2IH5CSVQoZ3JvdXApKSlcXG4gMTIxOlxcdFxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gMTIyOlxcdFxcdFxcdGlmIChkdXR5ICE9IHBwLVxcdTAwM2VsZWRfZHV0eSBcXHUwMDI2XFx1MDAyNiAocHAtXFx1MDAzZWxlZF9kdXR5X21hc2sgXFx1MDAyNiB+QklUKGdyb3VwKSkpXFxuIDEyMzpcXHRcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIDEyNDpcXHRcXHR9XFxuIDEyNTpcXHRcXG4gMTI2OlxcdFxcdHBwLVxcdTAwM2VsZWRfY3ljbGVfbWFzayBcXHUwMDI2PSB+QklUKGdyb3VwKTtcXG4gMTI3OlxcdFxcdHBwLVxcdTAwM2VsZWRfZHV0eV9tYXNrIFxcdTAwMjY9IH5CSVQoZ3JvdXApO1xcbiAxMjg6XFx0XFxuIDEyOTpcXHRcXHQvKiBUaGUgY2hpcCBzZWVtcyB0byBqYW0gYSB3aGlsZSBpZiBjaGFuZ2luZyBkdXR5IGRpcmVjdGx5ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjA5LjU5NDM1MzkzNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDM3NjUzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb3RvcmNvbW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTgzPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTg0LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjg1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTIxPW9iai15XFx0XFx0XFx0XFx0Kz0gbWljcm9jaGlwL1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToyMjpvYmoteVxcdFxcdFxcdFxcdCs9IG1vdG9yY29tbS9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtMjMtb2JqLXlcXHRcXHRcXHRcXHQrPSBtdjg4ZTZ4eHgvXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz00NzcyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3NzM6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtb3RvcmNvbW0seXQ5MjE1XFxcIiB9LFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ3NzQtXFx0e31cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MDkuNjQ0NzM5OTgxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM5MDA1MzIxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIGNvbnNpZGVyaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1vdG9yQ29tbSBEU0EgRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgTW90b3JDb21tIERTQSBkcml2ZXIuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vYC4gVGhhdCdzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHdpbGwgYmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNwZWNpZmljIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgRFNBIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGZvY3VzIHdpbGwgYmUgb24gdGhlIGBLY29uZmlnYCBmaWxlIGFuZCB0aGUgZHJpdmVyJ3Mgc291cmNlIGNvZGUgaXRzZWxmLiBUaGUgS2NvbmZpZyB3aWxsIHRlbGwgbWUgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyDigJMgd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgd2hhdCBvdGhlciBtb2R1bGVzIGFyZSByZXF1aXJlZCwgd2hhdCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyBhcmUgc3VwcG9ydGVkLCBhbmQgd2hpY2ggc3ltYm9scyBhcmUgY29uZmlndXJhYmxlLiBUaGlzIGlzIGtleSBiZWNhdXNlIGl0IHNoYXBlcyB0aGUgZW50aXJlIGxhbmRzY2FwZSBvZiB3aGF0J3MgKnBvc3NpYmxlKiB3aXRoIHRoaXMgZHJpdmVyIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0uIFRoZW4gSSdsbCBkaXZlIGludG8gdGhlIGRyaXZlciBpdHNlbGYsIGV4YW1pbmluZyB0aGUgY3JpdGljYWwgZnVuY3Rpb25zOiBpbml0aWFsaXphdGlvbiwgcHJvYmUsIGFuZCByZW1vdmFsLiBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gaG93IGl0IGhhbmRsZXMgcmVnaXN0ZXIgYWNjZXNzLCBpbnRlcnJ1cHQgaGFuZGxpbmcgKGlmIGFueSksIGFuZCBob3cgaXQgcmVnaXN0ZXJzIHdpdGggdGhlIERTQSBjb3JlLiBXaGF0J3MgdGhlIGludGVycnVwdCBzZXR1cCwgd2hhdCBpcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBuZXRfZGV2aWNlIHJlZ2lzdGVyZWQsIGhvdyBkb2VzIHRoZSBpbml0aWFsaXphdGlvbiBmbG93IGdldCBjb25maWd1cmVkIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIGhvdyBkb2VzIGl0IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBob29rcyBmb3IgRFNBIHRvIGRvIGl0cyBtYWdpYz8gSSdsbCBhbHNvIGxvb2sgZm9yIGFueSB2ZW5kb3Itc3BlY2lmaWMgZXh0ZW5zaW9ucyBvciBxdWlya3MuIEZpbmFsbHksIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyB2ZXJzaW9uIHByb3Blcmx5IGhhbmRsZXMgYW55IHNlY3VyaXR5IHJlcXVpcmVtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE4NSwiT3V0cHV0VG9rZW5zIjo3MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjEyLjAzNDc5NzExWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTkVUX0RTQV9ZVDkyMVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfWVQ5MjFYXFxuICAgNTpcXHRcXHRzZWxlY3QgTkVUX0lFRUU4MDIxUV9IRUxQRVJTIGlmIERDQlxcbiAgIDY6XFx0XFx0aGVscFxcbiAgIDc6XFx0XFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE1vdG9yY29tbSBZVDkyMTUgZXRoZXJuZXQgc3dpdGNoXFxuICAgODpcXHRcXHQgIGNoaXAuXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBORVRfRFNBX1lUOTIxWF9MRURTXFxuICAxMTpcXHRcXHRib29sIFxcXCJMRUQgc3VwcG9ydCBmb3IgTW90b3Jjb21tIFlUOTIxNVxcXCJcXG4gIDEyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTM6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX1lUOTIxWFxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1ORVRfRFNBX1lUOTIxWFxcbiAgMTU6XFx0XFx0aGVscFxcbiAgMTY6XFx0XFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIExFRHMgYXR0YWNoZWQgdG8gdGhlXFxuICAxNzpcXHRcXHQgIE1vdG9yY29tbSBZVDkyMTUgc3dpdGNoIGNoaXBzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNToxMi4wMzQ4NjMxNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQxMjcyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ5dDkyMXhfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyNTYxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozMjpzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMy1cXHR1bnNpZ25lZCBpbnQgc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQwLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQxOi8qIE11c3QgYWdyZWUgd2l0aCB5dDkyMXhfbWliXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDItICpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ2LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHl0OTIxeF9taWJfZGVzY3NbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00OC1cXHRNSUJfREVTQygxLCBZVDkyMVhfTUlCX0RBVEFfUlhfQlJPQURDQVNULCBOVUxMKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTk4LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjk5OnN0cnVjdCB5dDkyMXhfaW5mbyB7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTAwLVxcdGNvbnN0IGNoYXIgKm5hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMDYtXFx0dTE2IGludGVybmFsX21hc2s7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA3OlxcdC8qIFRPRE86IHNlZSBjb21tZW50cyBpbiB5dDkyMXhfZHNhX3BoeWxpbmtfZ2V0X2NhcHMoKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwOC1cXHR1MTYgZXh0ZXJuYWxfbWFzaztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTY6c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyMXhfaW5mbyB5dDkyMXhfaW5mb3NbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTctXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjE2NTpzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvIHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xNjYtXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTE4MS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxODI6I2RlZmluZSB0b195dDkyMXhfcHJpdihfZHMpIGNvbnRhaW5lcl9vZl9jb25zdChfZHMsIHN0cnVjdCB5dDkyMXhfcHJpdiwgZHMpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTgzLSNkZWZpbmUgdG9fZGV2aWNlKHByaXYpICgocHJpdiktXFx1MDAzZWRzLmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTE5MD1zdGF0aWMgdTMyIGV0aGFkZHJfbG8yX3RvX3UzMihjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTk0LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjE5NTpzdGF0aWMgaW50IHl0OTIxeF9yZWdfbWRpb19yZWFkKHZvaWQgKmNvbnRleHQsIHUzMiByZWcsIHUzMiAqdmFscClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xOTYte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjE5NzpcXHRzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvICptZGlvID0gY29udGV4dDtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xOTgtXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IG1kaW8tXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTIzNS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoyMzY6c3RhdGljIGludCB5dDkyMXhfcmVnX21kaW9fd3JpdGUodm9pZCAqY29udGV4dCwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yMzcte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjIzODpcXHRzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvICptZGlvID0gY29udGV4dDtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yMzktXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IG1kaW8tXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTI3MS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoyNzI6c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyMXhfcmVnX29wcyB5dDkyMXhfcmVnX29wc19tZGlvID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjI3MzpcXHQucmVhZCA9IHl0OTIxeF9yZWdfbWRpb19yZWFkLFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjI3NDpcXHQud3JpdGUgPSB5dDkyMXhfcmVnX21kaW9fd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjc1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yNzgtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Mjc5OnN0YXRpYyBpbnQgeXQ5MjF4X2ludGlmX3dhaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTI4MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yODItXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MjgzOlxcdHJldHVybiB5dDkyMXhfcmVnX3dhaXQocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yODQtXFx0XFx0XFx0ICAgICAgIFxcdTAwMjZ2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9Mjg3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoyODg6eXQ5MjF4X2ludGlmX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZywgdTE2ICp2YWxwKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTI4OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yOTUtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Mjk2OlxcdHJlcyA9IHl0OTIxeF9pbnRpZl93YWl0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTI5Ny1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzAzLVxcdCAgICAgICBZVDkyMVhfTUJVU19DVFJMX1JFQUQ7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzA0OlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMwNS1cXHRpZiAocmVzKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMwNi1cXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjMwNzpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMwOC1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjMxMTpcXHRyZXMgPSB5dDkyMXhfaW50aWZfd2FpdChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMTItXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMTMtXFx0XFx0cmV0dXJuIHJlcztcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozMTQ6XFx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIFlUOTIxWF9JTlRfTUJVU19ESU4sIFxcdTAwMjZ2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMxNS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MzI2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozMjc6eXQ5MjF4X2ludGlmX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMzMi1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozMzM6XFx0cmVzID0geXQ5MjF4X2ludGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzM0LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNDAtXFx0ICAgICAgIFlUOTIxWF9NQlVTX0NUUkxfV1JJVEU7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzQxOlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0Mi1cXHRpZiAocmVzKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0My1cXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM0NDpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19ET1VULCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0NS1cXHRpZiAocmVzKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0Ni1cXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM0NzpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0OC1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzUwLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM1MTpcXHRyZXR1cm4geXQ5MjF4X2ludGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzUyLX1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNTMtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzU0OnN0YXRpYyBpbnQgeXQ5MjF4X21idXNfaW50X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM1NS17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzU2OlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IG1idXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzU3LVxcdHUxNiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNjMtXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM2NDpcXHRyZXMgPSB5dDkyMXhfaW50aWZfcmVhZChwcml2LCBwb3J0LCByZWcsIFxcdTAwMjZ2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM2NS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTM3Mj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzczOnl0OTIxeF9tYnVzX2ludF93cml0ZShzdHJ1Y3QgbWlpX2J1cyAqbWJ1cywgaW50IHBvcnQsIGludCByZWcsIHUxNiBkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM3NC17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Mzc1OlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IG1idXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzc2LVxcdGludCByZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zODEtXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM4MjpcXHRyZXMgPSB5dDkyMXhfaW50aWZfd3JpdGUocHJpdiwgcG9ydCwgcmVnLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zODMtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0zODg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM4OTp5dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM5MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MDEtXFx0bWJ1cy1cXHUwMDNlcHJpdiA9IHByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDAyOlxcdG1idXMtXFx1MDAzZXJlYWQgPSB5dDkyMXhfbWJ1c19pbnRfcmVhZDtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MDM6XFx0bWJ1cy1cXHUwMDNld3JpdGUgPSB5dDkyMXhfbWJ1c19pbnRfd3JpdGU7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDA0LVxcdG1idXMtXFx1MDAzZXBhcmVudCA9IGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQxNS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MTY6c3RhdGljIGludCB5dDkyMXhfZXh0aWZfd2FpdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQxOS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MjA6XFx0cmV0dXJuIHl0OTIxeF9yZWdfd2FpdChwcml2LCBZVDkyMVhfRVhUX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJULFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQyMS1cXHRcXHRcXHQgICAgICAgXFx1MDAyNnZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz00MjQ9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQyNTp5dDkyMXhfZXh0aWZfcmVhZChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgKnZhbHApXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQzMi1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MzM6XFx0cmVzID0geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDM0LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NDAtXFx0ICAgICAgIFlUOTIxWF9NQlVTX0NUUkxfVFlQRV9DMjIgfCBZVDkyMVhfTUJVU19DVFJMX1JFQUQ7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDQxOlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ0Mi1cXHRpZiAocmVzKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ0My1cXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ0NDpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9FWFRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ0NS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ0ODpcXHRyZXMgPSB5dDkyMXhfZXh0aWZfd2FpdChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NDktXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NTAtXFx0XFx0cmV0dXJuIHJlcztcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0NTE6XFx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIFlUOTIxWF9FWFRfTUJVU19ESU4sIFxcdTAwMjZ2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ1Mi1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9NDYzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0NjQ6eXQ5MjF4X2V4dGlmX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ2OS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0NzA6XFx0cmVzID0geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDcxLVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NzctXFx0ICAgICAgIFlUOTIxWF9NQlVTX0NUUkxfVFlQRV9DMjIgfCBZVDkyMVhfTUJVU19DVFJMX1dSSVRFO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3ODpcXHRyZXMgPSB5dDkyMXhfcmVnX3VwZGF0ZV9iaXRzKHByaXYsIFlUOTIxWF9FWFRfTUJVU19DVFJMLCBtYXNrLCBjdHJsKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NzktXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00ODAtXFx0XFx0cmV0dXJuIHJlcztcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0ODE6XFx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfRVhUX01CVVNfRE9VVCwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00ODItXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00ODMtXFx0XFx0cmV0dXJuIHJlcztcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0ODQ6XFx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfRVhUX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJUKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00ODUtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ4Ny1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0ODg6XFx0cmV0dXJuIHl0OTIxeF9leHRpZl93YWl0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ4OS19XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDkwLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ5MTpzdGF0aWMgaW50IHl0OTIxeF9tYnVzX2V4dF9yZWFkKHN0cnVjdCBtaWlfYnVzICptYnVzLCBpbnQgcG9ydCwgaW50IHJlZylcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00OTIte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ5MzpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ5NC1cXHR1MTYgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDk3LVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0OTg6XFx0cmVzID0geXQ5MjF4X2V4dGlmX3JlYWQocHJpdiwgcG9ydCwgcmVnLCBcXHUwMDI2dmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00OTktXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz01MDY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjUwNzp5dDkyMXhfbWJ1c19leHRfd3JpdGUoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MDgte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjUwOTpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTUxMC1cXHRpbnQgcmVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTEyLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1MTM6XFx0cmVzID0geXQ5MjF4X2V4dGlmX3dyaXRlKHByaXYsIHBvcnQsIHJlZywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTE0LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9NTE5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1MjA6eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTMzLVxcdC8qIFRPRE86IGM0NT8gKi9cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1MzQ6XFx0bWJ1cy1cXHUwMDNlcmVhZCA9IHl0OTIxeF9tYnVzX2V4dF9yZWFkO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjUzNTpcXHRtYnVzLVxcdTAwM2V3cml0ZSA9IHl0OTIxeF9tYnVzX2V4dF93cml0ZTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MzYtXFx0bWJ1cy1cXHUwMDNlcGFyZW50ID0gZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTQ3LS8qIFJlYWQgYW5kIGhhbmRsZSBvdmVyZmxvdyBvZiAzMmJpdCBNSUJzLiBNSUIgYnVmZmVyIG11c3QgYmUgemVyb2VkIGJlZm9yZS4gKi9cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1NDg6c3RhdGljIGludCB5dDkyMXhfcmVhZF9taWIoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NDkte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjU1MDpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTU1MS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0b19kZXZpY2UocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTUyOlxcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcXHUwMDI2cHAtXFx1MDAzZW1pYjtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NTMtXFx0aW50IHJlcyA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTU0LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjU1NTpcXHQvKiBSZWFkaW5nIG9mIHl0OTIxeF9wb3J0OjptaWIgaXMgbm90IHByb3RlY3RlZCBieSBhIGxvY2sgYW5kIGl0J3MgdmFpblxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTU1Ni1cXHQgKiB0byBrZWVwIGl0cyBjb25zaXN0ZW5jeSwgc2luY2Ugd2UgaGF2ZSB0byByZWFkIHJlZ2lzdGVycyBvbmUgYnkgb25lXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NjItXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTYzOlxcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh5dDkyMXhfbWliX2Rlc2NzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTY0OlxcdFxcdGNvbnN0IHN0cnVjdCB5dDkyMXhfbWliX2Rlc2MgKmRlc2MgPSBcXHUwMDI2eXQ5MjF4X21pYl9kZXNjc1tpXTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NjUtXFx0XFx0dTMyIHJlZyA9IFlUOTIxWF9NSUJuX0RBVEEwKHBvcnQpICsgZGVzYy1cXHUwMDNlb2Zmc2V0O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTY5LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjU3MDpcXHRcXHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnLCBcXHUwMDI2dmFsMCk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTcxLVxcdFxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01ODItXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTgzOlxcdFxcdFxcdHJlcyA9IHl0OTIxeF9yZWdfcmVhZChwcml2LCByZWcgKyA0LCBcXHUwMDI2dmFsMSk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTg0LVxcdFxcdFxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02MDYtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjA3OnN0YXRpYyB2b2lkIHl0OTIxeF9wb2xsX21pYihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjA4LXtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2MDk6XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IGNvbnRhaW5lcl9vZl9jb25zdCh3b3JrLCBzdHJ1Y3QgeXQ5MjF4X3BvcnQsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjEwLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBtaWJfcmVhZC53b3JrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2MTE6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gKHZvaWQgKikocHAgLSBwcC1cXHUwMDNlaW5kZXgpIC1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2MTI6XFx0XFx0XFx0XFx0ICAgb2Zmc2V0b2Yoc3RydWN0IHl0OTIxeF9wcml2LCBwb3J0cyk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjEzLVxcdHVuc2lnbmVkIGxvbmcgZGVsYXkgPSBZVDkyMVhfU1RBVFNfSU5URVJWQUxfSklGRklFUztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYxNy1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjE4OlxcdHJlcyA9IHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02MTktXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz02MjY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2Mjc6eXQ5MjF4X2RzYV9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1MzIgc3RyaW5nc2V0LFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYyOC1cXHRcXHQgICAgICAgdWludDhfdCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYzMi1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2MzM6XFx0Zm9yIChzaXplX3QgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHl0OTIxeF9taWJfZGVzY3MpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2MzQ6XFx0XFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFxcdTAwMjZ5dDkyMXhfbWliX2Rlc2NzW2ldO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTY0MT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY0Mjp5dDkyMXhfZHNhX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVpbnQ2NF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY0My17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjQ0OlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2NDU6XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFxcdTAwMjZwcml2LVxcdTAwM2Vwb3J0c1twb3J0XTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2NDY6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY0Ny1cXHRzaXplX3QgajtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY0OS1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjUwOlxcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NTEtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NTMtXFx0aiA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjU0OlxcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh5dDkyMXhfbWliX2Rlc2NzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjU1OlxcdFxcdGNvbnN0IHN0cnVjdCB5dDkyMXhfbWliX2Rlc2MgKmRlc2MgPSBcXHUwMDI2eXQ5MjF4X21pYl9kZXNjc1tpXTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NTYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NjQtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjY1OnN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjcxLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY3MjpcXHRmb3IgKHNpemVfdCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoeXQ5MjF4X21pYl9kZXNjcyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY3MzpcXHRcXHRjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjICpkZXNjID0gXFx1MDAyNnl0OTIxeF9taWJfZGVzY3NbaV07XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9NjgyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjgzOnl0OTIxeF9kc2FfZ2V0X2V0aF9tYWNfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02ODQtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9ldGhfbWFjX3N0YXRzICptYWNfc3RhdHMpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjg1LXtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2ODY6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY4NzpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY4ODpcXHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXFx1MDAyNnBwLVxcdTAwM2VtaWI7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjg5LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY5MC1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjkxOlxcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02OTItXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz03MTg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3MTk6eXQ5MjF4X2RzYV9nZXRfZXRoX2N0cmxfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03MjAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZXRoX2N0cmxfc3RhdHMgKmN0cmxfc3RhdHMpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzIxLXtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3MjI6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjcyMzpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjcyNDpcXHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXFx1MDAyNnBwLVxcdTAwM2VtaWI7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzI1LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTcyNi1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzI3OlxcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03MjgtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03MzQtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzM1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9ybW9uX2hpc3RfcmFuZ2UgeXQ5MjF4X3Jtb25fcmFuZ2VzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzM2LVxcdHsgMCwgNjQgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTc0Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc0Nzp5dDkyMXhfZHNhX2dldF9ybW9uX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzQ4LVxcdFxcdFxcdCAgc3RydWN0IGV0aHRvb2xfcm1vbl9zdGF0cyAqcm1vbl9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc1MC17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzUxOlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3NTI6XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFxcdTAwMjZwcml2LVxcdTAwM2Vwb3J0c1twb3J0XTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3NTM6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc1NC1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03NTUtXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc1NjpcXHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzU3LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc1OC1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3NTk6XFx0KnJhbmdlcyA9IHl0OTIxeF9ybW9uX3JhbmdlcztcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03NjAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz03ODM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3ODQ6eXQ5MjF4X2RzYV9nZXRfc3RhdHM2NChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc4NS1cXHRcXHQgICAgICAgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzdGF0cylcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03ODYte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc4NzpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Nzg4OlxcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcXHUwMDI2cHJpdi1cXHUwMDNlcG9ydHNbcG9ydF07XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Nzg5OlxcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcXHUwMDI2cHAtXFx1MDAzZW1pYjtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03OTAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz04MTk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MjA6eXQ5MjF4X2RzYV9nZXRfcGF1c2Vfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04MjEtXFx0XFx0XFx0ICAgc3RydWN0IGV0aHRvb2xfcGF1c2Vfc3RhdHMgKnBhdXNlX3N0YXRzKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTgyMi17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODIzOlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MjQ6XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFxcdTAwMjZwcml2LVxcdTAwM2Vwb3J0c1twb3J0XTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MjU6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTgyNi1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04MjctXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjgyODpcXHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODI5LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9ODM1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MzY6eXQ5MjF4X3NldF9lZWUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZSlcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04Mzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODQ5LVxcdGlmICghIW5ld19tYXNrICE9ICEhcHJpdi1cXHUwMDNlZWVlX3BvcnRzX21hc2spIHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4NTA6XFx0XFx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfUE9OX1NUUkFQX0ZVTkMsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODUxLVxcdFxcdFxcdFxcdFxcdCAgICAgWVQ5MjFYX1BPTl9TVFJBUF9FRUUsICEhbmV3X21hc2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODUzLVxcdFxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODU0OlxcdFxcdHJlcyA9IHl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMocHJpdiwgWVQ5MjFYX1BPTl9TVFJBUF9WQUwsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODU1LVxcdFxcdFxcdFxcdFxcdCAgICAgWVQ5MjFYX1BPTl9TVFJBUF9FRUUsICEhbmV3X21hc2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODYyLVxcdC8qIEVuYWJsZSAvIGRpc2FibGUgcG9ydCBFRUUgKi9cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4NjM6XFx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfRUVFX0NUUkwsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODY0LVxcdFxcdFxcdFxcdCAgICAgWVQ5MjFYX0VFRV9DVFJMX0VObihwb3J0KSwgZW5hYmxlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg2Ni1cXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjg2NzpcXHRyZXMgPSB5dDkyMXhfcmVnX3RvZ2dsZV9iaXRzKHByaXYsIFlUOTIxWF9FRUVuX1ZBTChwb3J0KSxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04NjgtXFx0XFx0XFx0XFx0ICAgICBZVDkyMVhfRUVFX1ZBTF9EQVRBLCBlbmFibGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9ODc1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4NzY6eXQ5MjF4X2RzYV9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICplKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg3Ny17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODc4OlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04NzktXFx0aW50IHJlcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg4MS1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODgyOlxcdHJlcyA9IHl0OTIxeF9zZXRfZWVlKHByaXYsIHBvcnQsIGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg4My1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg4Ny1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4ODg6c3RhdGljIGludCB5dDkyMXhfbXR1X2ZldGNoKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTg5NT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODk2Onl0OTIxeF9kc2FfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBuZXdfbXR1KVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg5Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MDEtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTAyOlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MDMtXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV90b19wb3J0KGRzLCBwb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTkxMS1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTEyOlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX01BQ25fRlJBTUUocG9ydCksXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTEzLVxcdFxcdFxcdFxcdCAgICAgWVQ5MjFYX01BQ19GUkFNRV9TSVpFX00sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MTktXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTIwOnN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9OTUzPXN0YXRpYyB1NjQgdG9rZW4yYnVyc3QodTMyIHRva2VuLCBpbnQgdW5pdCwgaW50IEMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05NTctXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTU4OnN0cnVjdCB5dDkyMXhfbWFya2VyIHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05NTktXFx0dTMyIGNpcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTk2OT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTcwOnl0OTIxeF9tYXJrZXJfdGZtKHN0cnVjdCB5dDkyMXhfbWFya2VyICptYXJrZXIsIHU2NCByYXRlLCB1NjQgYnVyc3QsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTcxLVxcdFxcdCAgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZCBpbnQgc2xvdF9ucywgdTMyIGNpcl9tYXgsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTcyOlxcdFxcdCAgdTMyIGNic19tYXgsIGludCB1bml0X21heCwgc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05NzMtXFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05NzctXFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjk3ODpcXHRzdHJ1Y3QgeXQ5MjF4X21hcmtlciBtO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTk3OS1cXHR1NjQgYnVyc3RfZXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTk5LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMDAwOlxcdFxcdGJ1cnN0X3N1ZyArPSBFVEhfSExFTiArIHl0OTIxeF9tdHVfZmV0Y2gocHJpdiwgcG9ydCkgK1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwMDEtXFx0XFx0XFx0ICAgICBFVEhfRkNTX0xFTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTEwNTk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEwNjA6eXQ5MjF4X21hcmtlcl90Zm1fcG9saWNlKHN0cnVjdCB5dDkyMXhfbWFya2VyICptYXJrZXIsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTA2MS1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IGZsb3dfYWN0aW9uX3BvbGljZSAqcG9saWNlLFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEwNjI6XFx0XFx0XFx0IHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMDYzLVxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMDczLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEwNzQ6XFx0cmV0dXJuIHl0OTIxeF9tYXJrZXJfdGZtKG1hcmtlciwgcmF0ZSwgYnVyc3QsIGZsYWdzLFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwNzUtXFx0XFx0XFx0XFx0IHByaXYtXFx1MDAzZW1ldGVyX3Nsb3RfbnMsIFlUOTIxWF9NRVRFUl9DSVJfTUFYLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MTA4MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA4MTp5dDkyMXhfbWFya2VyX3RmbV9zaGFwZShzdHJ1Y3QgeXQ5MjF4X21hcmtlciAqbWFya2VyLCB1NjQgcmF0ZSwgdTY0IGJ1cnN0LFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEwODI6XFx0XFx0XFx0dW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwODMtXFx0XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwODQte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEwODU6XFx0cmV0dXJuIHl0OTIxeF9tYXJrZXJfdGZtKG1hcmtlciwgcmF0ZSwgYnVyc3QsIGZsYWdzLFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwODYtXFx0XFx0XFx0XFx0IHByaXYtXFx1MDAzZXBvcnRfc2hhcGVfc2xvdF9ucywgWVQ5MjFYX1NIQVBFX0NJUl9NQVgsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0xMDkxPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMDkyOnl0OTIxeF9wb2xpY2VfdmFsaWRhdGUoY29uc3Qgc3RydWN0IGZsb3dfYWN0aW9uX3BvbGljZSAqcG9saWNlLFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwOTMtXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmbG93X2FjdGlvbiAqYWN0aW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MTEyNz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTEyODp5dDkyMXhfbWV0ZXJfY29uZmlnKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IGlkLFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExMjk6XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB5dDkyMXhfbWFya2VyICptYXJrZXIpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTEzMC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNDg6XFx0cmV0dXJuIHl0OTIxeF9yZWc5Nl93cml0ZShwcml2LCBZVDkyMVhfTUVURVJuX0NUUkwoaWQpLCBjdHJscyk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE0OS19XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE1MC1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTUxOnN0YXRpYyB2b2lkIHl0OTIxeF9kc2FfcG9ydF9wb2xpY2VyX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNTIte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNTM6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNTQtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE1Ny1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE1ODpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9QT1JUbl9NRVRFUihwb3J0KSwgMCk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE1OS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTExNjY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNjc6eXQ5MjF4X2RzYV9wb3J0X3BvbGljZXJfYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE2OC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGZsb3dfYWN0aW9uX3BvbGljZSAqcG9saWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE3MC17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE3MTpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE3MjpcXHRzdHJ1Y3QgeXQ5MjF4X21hcmtlciBtYXJrZXI7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE3My1cXHR1MzIgY3RybDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNzUtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE3NjpcXHRyZXMgPSB5dDkyMXhfcG9saWNlX3ZhbGlkYXRlKHBvbGljZSwgTlVMTCwgTlVMTCwgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTc3LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTc5LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExODA6XFx0cmVzID0geXQ5MjF4X21hcmtlcl90Zm1fcG9saWNlKFxcdTAwMjZtYXJrZXIsIHBvbGljZSwgMCwgcHJpdiwgcG9ydCwgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTgxLVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTg0LVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTg1OlxcdHJlcyA9IHl0OTIxeF9tZXRlcl9jb25maWcocHJpdiwgcG9ydCArIFlUOTIxWF9NRVRFUl9OVU0sIFxcdTAwMjZtYXJrZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExODYtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExODktXFx0Y3RybCA9IFlUOTIxWF9QT1JUX01FVEVSX0lEKHBvcnQpIHwgWVQ5MjFYX1BPUlRfTUVURVJfRU47XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE5MDpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9QT1JUbl9NRVRFUihwb3J0KSwgY3RybCk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE5MS1lbmQ6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0xMTk3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTk4Onl0OTIxeF9kc2FfcG9ydF9zZXR1cF90Y190YmZfcG9ydChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExOTktXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgdGNfdGJmX3FvcHRfb2ZmbG9hZCAqcW9wdClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMjAwLXtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMjAxOlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMjAyLVxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayA9IHFvcHQtXFx1MDAzZWV4dGFjaztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEyMjAtXFx0XFx0Y29uc3Qgc3RydWN0IHRjX3RiZl9xb3B0X29mZmxvYWRfcmVwbGFjZV9wYXJhbXMgKnA7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTIyMTpcXHRcXHRzdHJ1Y3QgeXQ5MjF4X21hcmtlciBtYXJrZXI7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTIyMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEyMjQtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTIyNTpcXHRcXHRyZXMgPSB5dDkyMXhfbWFya2VyX3RmbV9zaGFwZShcXHUwMDI2bWFya2VyLCBwLVxcdTAwM2VyYXRlLnJhdGVfYnl0ZXNfcHMsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTIyNi1cXHRcXHRcXHRcXHRcXHQgICAgICBwLVxcdTAwM2VtYXhfc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEyNDItXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNToxMi4wODAyODE0MDhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODg1MzY4MDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFN5c3RlbSdzIEludGVyYWN0aW9uIHdpdGggeXQ5MjF4KipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgYHl0OTIxeGAgaW50ZWdyYXRlcyB3aXRoaW4gdGhlIHN5c3RlbS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaXRzIHBvaW50IG9mIGVudHJ5LiBJcyBpdCB1c2luZyBhIHBsYXRmb3JtIGRyaXZlciwgb3IgcGVyaGFwcyBpbnRlcmFjdGluZyB2aWEgTURJTywgU1BJLCBvciBzb21lIG90aGVyIGludGVyZmFjZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbm5lY3Rpb24gdG8gdGhlIHN5c3RlbSdzIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVycy5cblxuVG8gc3RhcnQsIEknbGwgZ28gZGlyZWN0bHkgdG8gdGhlIG1vc3QgbG9naWNhbCBwbGFjZTogdGhlIGBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2AgZGlyZWN0b3J5LiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IGxvY2F0aW9uIGZvciBhbnkgZHJpdmVyLWxldmVsIGNvZGUgc3BlY2lmaWMgdG8gdGhpcyBoYXJkd2FyZS4gSSdsbCBuZWVkIHRvIGRpc3NlY3QgdGhvc2UgZmlsZXMgdG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyJ3MgYXJjaGl0ZWN0dXJlIGFuZCBob3cgaXQncyBpbnRlcmZhY2luZyB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmsgc3Vic3lzdGVtLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODA3NywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjEzLjk2NTY1MTk0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImNoaXAuY1wiLFxuICAgIFwiY2hpcC5oXCIsXG4gICAgXCJsZWRzLmNcIixcbiAgICBcImxlZHMuaFwiLFxuICAgIFwic21pLmNcIixcbiAgICBcInNtaS5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjEzLjk2NTcyNTU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NTI5NjA0NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aG9zZSBmaWxlczpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgRHJpdmVyIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBzeXN0ZW0ncyBidXMgZHJpdmVycyBhcmUgaGFuZGxlZCwgYW5kIGhvdyB0aGUgbW9kdWxlcyBhcmUgaW5pdGlhbGl6ZWQgYW5kIHByb2JlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgc21pLmNgIGFuZCBgY2hpcC5jYC4gVGhlc2UgZmlsZSBuYW1lcyBhcmUgcHJldHR5IHR5cGljYWwuIFRoZXkncmUgc3Ryb25nIGNhbmRpZGF0ZXMgdG8gY29udGFpbiB0aGUgY29yZSBidXMgZHJpdmVyIGxvZ2ljLCBvciBhdCBsZWFzdCB0aGUgcmVsZXZhbnQgaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlcy4gSSdtIHRoaW5raW5nIEknbGwgZmluZCB0aGUgZGV2aWNlIHByb2JlIGZ1bmN0aW9ucyBpbiB0aGVyZSwgdG9vLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIGlkZW50aWZpZXMgYW5kIGF0dGFjaGVzIHRvIHRoZSByZWxldmFudCBoYXJkd2FyZS4gTGV0J3Mgc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNzYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MTUuNjE4Njg4MzE0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njg0NjIxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVffGRyaXZlcl9yZWdpc3Rlcnxwcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTQ2OTI9c3RhdGljIHZvaWQgeXQ5MjF4X21kaW9fcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ3MjMtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDcyNDpzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NzI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTQ3Nzg9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciB5dDkyMXhfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDc3OTpcXHQucHJvYmUgPSB5dDkyMXhfbWRpb19wcm9iZSxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NzgwLVxcdC5yZW1vdmUgPSB5dDkyMXhfbWRpb19yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00Nzg3LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3ODg6bWRpb19tb2R1bGVfZHJpdmVyKHl0OTIxeF9tZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDc4OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MTUuNjY1NTQxMDUxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM1OTA3NTA3NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgTURJTyBEZXZpY2UgSW5zdGFudGlhdGlvbiBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyBNRElPIGRldmljZXMgYXJlIGJyb3VnaHQgdXAsIHNwZWNpZmljYWxseSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcgbGlrZSBRRU1VIG9yIHdoZW4gZnV6emluZyB3aXRoIHN5emthbGxlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgaW5zdGFudGlhdGUgYW5kIHByb2JlIHRoZXNlIGRldmljZXMsIG9yIGV2ZW4gRFNBIHN3aXRjaGVzLCB3aXRob3V0IGhhdmluZyB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQ/XG5cbkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBEU0EgaGFyZHdhcmUgaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UuIEFuZCBob3cgZG9lcyBzeXprYWxsZXIgcGxheSBpbnRvIGFsbCBvZiB0aGlzIHdpdGggTURJTyBkZXZpY2VzIG9yIERTQSBkcml2ZXJzPyBJIHNob3VsZCBzZWFyY2gga2VybmVsIGZ1enppbmcgY29udGV4dHMgZm9yIGNsdWVzIGFib3V0IGhvdyBEU0Egc3dpdGNoIGRyaXZlcnMgb3IgTURJTyBkcml2ZXJzIGFyZSBoYW5kbGVkLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCB0aGF0IFNlY3Rpb24gMiwgdGhlIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgY2F0ZWdvcnkgcHJvYmFibHkgaXNuJ3QgcmVsZXZhbnQgaGVyZSDigJMgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKG1seHN3LCBxZWQsIGFtZGdwdSwgZXRjLikgYXJlIG91dCBiZWNhdXNlIHRoZXkgbmVlZCBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkIGluIFFFTVUuIEJ1dCBcInJlYWNoYWJsZSBkcml2ZXJzIGFuZCBwcm90b2NvbHNcIiBpcyBpbnRlcmVzdGluZy4uLiBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgbGlrZSB2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIGFuZCBzb2NrZXRzIGNvdWxkIGJlIHRoZSB0aWNrZXQuXG5cbk5vdywgbGV0J3Mgc2VlIGFib3V0IHRoZSB5dDkyMXggZGV2aWNlLiBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgaXQuIE9rYXksIGhlcmUgd2UgYXJlOiBgc3RydWN0IG1kaW9fZHJpdmVyIHl0OTIxeF9tZGlvX2RyaXZlcmAsIGFuZCBgeXQ5MjF4X29mX21hdGNoYC4gUmlnaHQsIGRvZXMgaXQgYmluZCB0aHJvdWdoIERldmljZSBUcmVlIChPRikgb3IgZGlyZWN0bHkgdGhyb3VnaCB0aGUgTURJTyBidXM/IEkgbmVlZCB0byBjaGVjayBgeXQ5MjF4X21kaW9fcHJvYmVgIGFuZCBgeXQ5MjF4X29mX21hdGNoYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBzb21lIGluc2lnaHQgaW50byBpdHMgaW5zdGFudGlhdGlvbiBtZXRob2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTA4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjE5LjI1NjI5NDUzNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjIyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDcyMCxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDcyMDpcXHRcXHR9XFxuNDcyMTpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuNDcyMjpcXHR9XFxuNDcyMzpcXHRcXG40NzI0OlxcdHN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbjQ3MjU6XFx0e1xcbjQ3MjY6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG40NzI3OlxcdFxcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW87XFxuNDcyODpcXHRcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXY7XFxuNDcyOTpcXHRcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XFxuNDczMDpcXHRcXG40NzMxOlxcdFxcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG40NzMyOlxcdFxcdGlmICghcHJpdilcXG40NzMzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjQ3MzQ6XFx0XFxuNDczNTpcXHRcXHRtZGlvID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCptZGlvKSwgR0ZQX0tFUk5FTCk7XFxuNDczNjpcXHRcXHRpZiAoIW1kaW8pXFxuNDczNzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG40NzM4OlxcdFxcbjQ3Mzk6XFx0XFx0bWRpby1cXHUwMDNlYnVzID0gbWRpb2Rldi1cXHUwMDNlYnVzO1xcbjQ3NDA6XFx0XFx0bWRpby1cXHUwMDNlYWRkciA9IG1kaW9kZXYtXFx1MDAzZWFkZHI7XFxuNDc0MTpcXHRcXHRtZGlvLVxcdTAwM2Vzd2l0Y2hpZCA9IDA7XFxuNDc0MjpcXHRcXG40NzQzOlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG40NzQ0OlxcdFxcbjQ3NDU6XFx0XFx0cHJpdi1cXHUwMDNlcmVnX29wcyA9IFxcdTAwMjZ5dDkyMXhfcmVnX29wc19tZGlvO1xcbjQ3NDY6XFx0XFx0cHJpdi1cXHUwMDNlcmVnX2N0eCA9IG1kaW87XFxuNDc0NzpcXHRcXG40NzQ4OlxcdFxcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShwcml2LVxcdTAwM2Vwb3J0cyk7IGkrKykge1xcbjQ3NDk6XFx0XFx0XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFxcdTAwMjZwcml2LVxcdTAwM2Vwb3J0c1tpXTtcXG40NzUwOlxcdFxcbjQ3NTE6XFx0XFx0XFx0cHAtXFx1MDAzZWluZGV4ID0gaTtcXG40NzUyOlxcdFxcdFxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZwcC1cXHUwMDNlbWliX3JlYWQsIHl0OTIxeF9wb2xsX21pYik7XFxuNDc1MzpcXHRcXHR9XFxuNDc1NDpcXHRcXG40NzU1OlxcdFxcdGRzID0gXFx1MDAyNnByaXYtXFx1MDAzZWRzO1xcbjQ3NTY6XFx0XFx0ZHMtXFx1MDAzZWRldiA9IGRldjtcXG40NzU3OlxcdFxcdGRzLVxcdTAwM2Vhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydCA9IHRydWU7XFxuNDc1ODpcXHRcXHRkcy1cXHUwMDNlZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsID0gdHJ1ZTtcXG40NzU5OlxcdFxcdGRzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG40NzYwOlxcdFxcdGRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2eXQ5MjF4X2RzYV9zd2l0Y2hfb3BzO1xcbjQ3NjE6XFx0XFx0ZHMtXFx1MDAzZWFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwO1xcbjQ3NjI6XFx0XFx0ZHMtXFx1MDAzZWFnZWluZ190aW1lX21heCA9IFUxNl9NQVggKiA1MDAwO1xcbjQ3NjM6XFx0XFx0ZHMtXFx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFxcdTAwMjZ5dDkyMXhfcGh5bGlua19tYWNfb3BzO1xcbjQ3NjQ6XFx0XFx0ZHMtXFx1MDAzZW51bV9sYWdfaWRzID0gWVQ5MjFYX0xBR19OVU07XFxuNDc2NTpcXHRcXHRkcy1cXHUwMDNlbnVtX3BvcnRzID0gWVQ5MjFYX1BPUlRfTlVNO1xcbjQ3NjY6XFx0XFxuNDc2NzpcXHRcXHRtZGlvZGV2X3NldF9kcnZkYXRhKG1kaW9kZXYsIHByaXYpO1xcbjQ3Njg6XFx0XFxuNDc2OTpcXHRcXHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XFxuNDc3MDpcXHR9XFxuNDc3MTpcXHRcXG40NzcyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0ge1xcbjQ3NzM6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtb3RvcmNvbW0seXQ5MjE1XFxcIiB9LFxcbjQ3NzQ6XFx0XFx0e31cXG40Nzc1OlxcdH07XFxuNDc3NjpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB5dDkyMXhfb2ZfbWF0Y2gpO1xcbjQ3Nzc6XFx0XFxuNDc3ODpcXHRzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHl0OTIxeF9tZGlvX2RyaXZlciA9IHtcXG40Nzc5OlxcdFxcdC5wcm9iZSA9IHl0OTIxeF9tZGlvX3Byb2JlLFxcbjQ3ODA6XFx0XFx0LnJlbW92ZSA9IHl0OTIxeF9tZGlvX3JlbW92ZSxcXG40NzgxOlxcdFxcdC5zaHV0ZG93biA9IHl0OTIxeF9tZGlvX3NodXRkb3duLFxcbjQ3ODI6XFx0XFx0Lm1kaW9kcnYuZHJpdmVyID0ge1xcbjQ3ODM6XFx0XFx0XFx0Lm5hbWUgPSBZVDkyMVhfTkFNRSxcXG40Nzg0OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHl0OTIxeF9vZl9tYXRjaCxcXG40Nzg1OlxcdFxcdH0sXFxuNDc4NjpcXHR9O1xcbjQ3ODc6XFx0XFxuNDc4ODpcXHRtZGlvX21vZHVsZV9kcml2ZXIoeXQ5MjF4X21kaW9fZHJpdmVyKTtcXG40Nzg5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNToxOS4yNTY1NTgxNzRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTkwODkzMzA3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYHl0OTIxeF9sZWRfYmxpbmtfc2V0YCBDYWxsIEZsb3cqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbCBwYXRoIHRvIHRoaXMgYHl0OTIxeF9sZWRfYmxpbmtfc2V0YCBmdW5jdGlvbi4gTGV0J3MgdHJhY2UgaG93IGl0J3MgYWN0dWFsbHkgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaW4gdGhlIGNvZGUgdGhpcyBtb2RpZmllZCBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIGFuZCwgY3J1Y2lhbGx5LCBob3cgd2UgcmVhY2ggdGhhdCBwb2ludC4gSXMgaXQgY2FsbGVkIGRpcmVjdGx5LCBvciBpcyBpdCBwYXJ0IG9mIGEgbGFyZ2VyIGNoYWluIG9mIGZ1bmN0aW9uIGNhbGxzPyBBcmUgdGhlcmUgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBvciBvdGhlciBsb2dpYyB0aGF0IGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBpdCdzIHRyaWdnZXJlZD8gSWRlbnRpZnlpbmcgdGhlIGVudHJ5IHBvaW50IGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbnRyb2wgZmxvdyB0aGF0IGxlYWRzIHRvIGl0LiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgcmVmZXJlbmNlcyB0byB0aGUgZnVuY3Rpb24gbmFtZSwgb3IgYW55dGhpbmcgcmVsYXRlZCB0byB0aGUgTEVEIGJsaW5raW5nIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBjb2RlYmFzZSwgYW5kIHNlZSB3aGVyZSB0aGV5IGxlYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzYwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNToyMS4xNjU0OTMyMjVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzE4NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInl0OTIxeF9sZWRfYmxpbmtfc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmM9OTE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jOjkyOnl0OTIxeF9sZWRfYmxpbmtfc2V0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBncm91cCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYy05My1cXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgKm9ucCwgdW5zaWduZWQgbG9uZyAqb2ZmcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jPTMzNT15dDkyMXhfY2xlZF9ibGlua19zZXQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsIHVuc2lnbmVkIGxvbmcgKmRlbGF5X29uLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMtMzQzLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYzozNDQ6XFx0cmVzID0geXQ5MjF4X2xlZF9ibGlua19zZXQocHJpdiwgcHAtXFx1MDAzZWluZGV4LCBsZWQtXFx1MDAzZWdyb3VwLCBkZWxheV9vbixcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYy0zNDUtXFx0XFx0XFx0XFx0ICAgZGVsYXlfb2ZmKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MjEuMjEyMjE3MzIzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2MzMyNzc1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMRUQgQ29udHJvbCBmb3IgdGhlIE1vdG9yY29tbSBZVDkyMTUgU3dpdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgeXQ5MjF4X2NsZWRfYmxpbmtfc2V0YCBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGFuIGBsZWRfY2xhc3NkZXZgIHN0cnVjdHVyZS4gVGhhdCdzIGdvb2QsIGl0IHN1Z2dlc3RzIGEgc3RhbmRhcmQgTEVEIGZyYW1ld29yayBpcyBpbiB1c2UuIEl0J3Mgc2V0IHVwIHdoZW4gdGhlIHl0OTIxeCBzd2l0Y2ggaXMgcHJvYmVkIGFuZCByZWdpc3RlcmVkLiBTbywgdGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZGV2aWNlIGl0c2VsZiBnZXRzIHByb2JlZC5cblxuQWgsIHJpZ2h0LCBpdCdzIGFuIE1ESU8gZGV2aWNlLiBBbmQgdGhlIGNvbXBhdGlibGUgc3RyaW5nIGlzIFwibW90b3Jjb21tLHl0OTIxNVwiIOKAkyB0aGF0J3MgdGhlIHRlbGwuIEl0IHJlbGllcyBvbiBEZXZpY2UgVHJlZSAoT0YpIG9yIGFuIE1ESU8gYnVzIG1hdGNoIGZvciBwcm9iaW5nLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgSSBjYW4gZXZlbiBnZXQgdGhpcyB0byBwcm9iZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgcnVubmluZyBvbiB4ODZfNjQgb3IgYW1kNjQuXG5cbk9rYXksIGxldCdzIHRoaW5rLiBGaXJzdCwgaXMgdGhlcmUgZXZlbiBhbiBNRElPIGJ1cywgb3IgYW55IGtpbmQgb2YgT0YgZW11bGF0aW9uLCBvciB2aXJ0dWFsIGJ1cyBpbXBsZW1lbnRlZCBvbiBhbWQ2NCBpbiB0aG9zZSBlbnZpcm9ubWVudHM/IEkgc2VyaW91c2x5IGRvdWJ0IGl0Li4uIGJ1dCBsZXQncyBiZSBzdXJlLiBJbiB0eXBpY2FsIFFFTVUvR0NFLCB0aGVyZSdzIG5vIHBoeXNpY2FsIE1vdG9yY29tbSBZVDkyMTUgc3dpdGNoIGNoaXAuIGB5dDkyMXhfbWRpb19kcml2ZXJgIHJlcXVpcmVzIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUgYW5kIGl0cyBhc3NvY2lhdGVkIGRldmljZSB0cmVlIG5vZGUuIEFuZCBzbywgdGhlIHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIgaXMsIGNhbiBzeXprYWxsZXIgb3Igc29tZXRoaW5nIHNpbWlsYXIgaW4gdXNlcnNwYWNlLCBzb21laG93IGNyZWF0ZSBNRElPIGRldmljZXMgb24tdGhlLWZseSBvciBiaW5kIHRoZSBgbWRpb19kcml2ZXJgIGRpcmVjdGx5PyBJIG5lZWQgdG8gc2VhcmNoIHRoZSBrZXJuZWwgY29kZSBhbmQgc2VlIGlmIHRoZXJlJ3MgYW55IG1lY2hhbmlzbSBmb3IgY3JlYXRpbmcgTURJTyBkZXZpY2VzIGZyb20gdXNlcnNwYWNlLCBvciBldmVuLCBpZiB0aGVyZSBpcyBzdWNoIGEgdGhpbmcgYXMgYSB2aXJ0dWFsIE1ESU8gYnVzIEkgY291bGQgbGV2ZXJhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjkxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjI0Ljg0NTQ5ODU2NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwNTk2NzQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvX2RldmljZV9yZWdpc3RlcnxtZGlvX2RldmljZV9jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDQ2PXN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ2NzpcXHRzd2l0Y2hfbWRpb2RldiA9IG1kaW9fZGV2aWNlX2NyZWF0ZShidXMsIDMxKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjgtXFx0aWYgKElTX0VSUihzd2l0Y2hfbWRpb2RldikpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDc0OlxcdHJldCA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKHN3aXRjaF9tZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTUyPXN0YXRpYyBpbnQgb2ZfbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1paV9idXMgKm1kaW8sXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy01OC1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo1OTpcXHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKG1kaW8sIGFkZHIpO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTYwLVxcdGlmIChJU19FUlIobWRpb2RldikpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy02OC1cXHQvKiBBbGwgZGF0YSBpcyBub3cgc3RvcmVkIGluIHRoZSBtZGlvZGV2IHN0cnVjdDsgcmVnaXN0ZXIgaXQuICovXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6Njk6XFx0cmMgPSBtZGlvX2RldmljZV9yZWdpc3RlcihtZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy03MC1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jPTMxMD1zdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzE0LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjMxNTpcXHRtZGlvID0gbWRpb19kZXZpY2VfY3JlYXRlKGJ1cywgYWRkcik7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzE2LVxcdGlmIChJU19FUlIobWRpbykpXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jPTMzNz1zdGF0aWMgaW50IHhwY3NfcGxhdF9pbml0X2RldihzdHJ1Y3QgZHdfeHBjc19wbGF0ICpweHBjcylcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1wbGF0LmMtMzQzLVxcdC8qIFRoZXJlIGlzIGEgc2luZ2xlIG1lbW9yeS1tYXBwZWQgRFcgWFBDUyBkZXZpY2UgKi9cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jOjM0NDpcXHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKHB4cGNzLVxcdTAwM2VidXMsIDApO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1wbGF0LmMtMzQ1LVxcdGlmIChJU19FUlIobWRpb2RldikpXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jLTM1Ni1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jOjM1NzpcXHRyZXQgPSBtZGlvX2RldmljZV9yZWdpc3RlcihtZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jLTM1OC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYz0xNjIxPXN0cnVjdCBkd194cGNzICp4cGNzX2NyZWF0ZV9tZGlvZGV2KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTYyNS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxNjI2OlxcdG1kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xNjI3LVxcdGlmIChJU19FUlIobWRpb2RldikpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMDgwPXN0YXRpYyBpbnQgYW44ODExaGJfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwOTgtXFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTA5OTpcXHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKHBoeWRldi1cXHUwMDNlbWRpby5idXMsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTEwMC1cXHRcXHRcXHRcXHQgICAgIHBoeWRldi1cXHUwMDNlbWRpby5hZGRyICsgRU44ODExSF9QQlVTX0FERFJfT0ZGUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTAzLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjExMDQ6XFx0cmV0ID0gbWRpb19kZXZpY2VfcmVnaXN0ZXIobWRpb2Rldik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTEwNS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMjYtLyoqXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6Mjc6ICogbWRpb19kZXZpY2VfcmVnaXN0ZXJfcmVzZXQgLSBSZWFkIGFuZCBpbml0aWFsaXplIHRoZSByZXNldCBwcm9wZXJ0aWVzIG9mXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMjgtICpcXHRcXHRcXHRcXHRhbiBtZGlvIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMzItICovXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MzM6c3RhdGljIGludCBtZGlvX2RldmljZV9yZWdpc3Rlcl9yZXNldChzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM9MTEzPXN0YXRpYyB2b2lkIG1kaW9fZGV2aWNlX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTE4LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjExOTpzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9fZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcilcXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTQyLX1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYzoxNDM6RVhQT1JUX1NZTUJPTChtZGlvX2RldmljZV9jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE0NC1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNDUtLyoqXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTQ2OiAqIG1kaW9fZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIG1kaW8gZGV2aWNlIG9uIHRoZSBNRElPIGJ1c1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE0Ny0gKiBAbWRpb2RldjogbWRpb19kZXZpY2Ugc3RydWN0dXJlIHRvIGJlIGFkZGVkIHRvIHRoZSBNRElPIGJ1c1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTUwLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE1MTppbnQgbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNzItfVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE3MzpFWFBPUlRfU1lNQk9MKG1kaW9fZGV2aWNlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNzQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xODAtICogVGhpcyBkb2Vzbid0IGZyZWUgdGhlIG1kaW9fZGV2aWNlIGl0c2VsZiwgaXQgbWVyZWx5IHJldmVyc2VzIHRoZSBlZmZlY3RzXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTgxOiAqIG9mIG1kaW9fZGV2aWNlX3JlZ2lzdGVyKCkuIFVzZSBtZGlvX2RldmljZV9mcmVlKCkgdG8gZnJlZSB0aGUgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTgyLSAqIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jPTE5MT1pbnQgbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTk4LVxcdGlmIChtZGlvZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IE1ESU9fREVWSUNFX0ZMQUdfUEhZKSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTk5OlxcdFxcdGVyciA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyX3Jlc2V0KG1kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTIwMC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZGlvLmg9OTQ9dm9pZCBtZGlvX2RldmljZV9mcmVlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuaW5jbHVkZS9saW51eC9tZGlvLmg6OTU6c3RydWN0IG1kaW9fZGV2aWNlICptZGlvX2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpO1xcbmluY2x1ZGUvbGludXgvbWRpby5oOjk2OmludCBtZGlvX2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbmluY2x1ZGUvbGludXgvbWRpby5oLTk3LXZvaWQgbWRpb19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjI3LjA1MTQ3MjU5MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNDc2OTYwNDEzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBGdXp6aW5nIFJlYWNoYWJpbGl0eSBmb3IgTW90b3Jjb21tIFlUOTIxNSBMRUQgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IGBkc2FfbG9vcGAg4oCTIHRoZSBtb2NrIERTQSBkcml2ZXIg4oCTIGFuZCB0aGUgTW90b3Jjb21tIFlUOTIxNSBkcml2ZXIgKGBORVRfRFNBX1lUOTIxWGApLiBNeSB1bmRlcnN0YW5kaW5nIGlzLCB0aGUgWVQ5MjE1IGNvbW11bmljYXRlcyB3aXRoIGl0cyBzd2l0Y2ggY2hpcCB2aWEgTURJTywgdXNpbmcgYHl0OTIxeF9yZWdfb3BzX21kaW9gLiBUaGUgZHJpdmVyIHByb2JlcyBiYXNlZCBvbiBhbiBNRElPIGRldmljZSBtYXRjaGluZyB0aGUgXCJtb3RvcmNvbW0seXQ5MjE1XCIgT0YgY29tcGF0aWJsZSBzdHJpbmcgb3IgZHJpdmVyIG5hbWUuXG5cbk5vdywgY29uc2lkZXJpbmcgdGhlIFFFTVUvR0NFIHg4Nl82NCBzZXR1cCwgd2UncmUgZGVhbGluZyB3aXRoIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZXJlJ3Mgbm8gcGh5c2ljYWwgTW90b3Jjb21tIFlUOTIxNSBoYXJkd2FyZSBwcmVzZW50LCBhbmQsIGNydWNpYWxseSwgbm8gZW11bGF0aW9uIG9mIHRoaXMgc3BlY2lmaWMgQVNJQy5cblxuUmVmZXJyaW5nIHRvIHRoZSBpbnN0cnVjdGlvbnMsIHNlY3Rpb24gMiBmbGFncyBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiLiBUaGlzIHNwZWNpZmljYWxseSBjYWxscyBvdXQgdmVuZG9yLXNwZWNpZmljIHN0dWZmIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IGRlcGVuZCBvbiBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSByZWQgZmxhZy4gU2VjdGlvbiAxIHJlaW5mb3JjZXMgdGhpcyDigJMgcmVhY2hhYmlsaXR5IGlzIGtleS4gRnV6emluZyBvbmx5IHdvcmtzIG9uIGNvZGUgdGhhdCAqZXhlY3V0ZXMqIGluIHRoZXNlIGVudmlyb25tZW50cywgd2hpY2ggbWVhbnMgd2UgY2FuIG9ubHkgdGVzdCBkZXZpY2VzIHRoYXQgYXJlIGVtdWxhdGVkIHN1Y2ggYXMgVVNCIGdhZGdldHMsIG9yIG5ldGRldnMgZXRjLiBJZiB0aGUgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIHdlIGRvbid0IGZ1enogaXQuXG5cbk9rYXksIGxldCdzIGJlIGFic29sdXRlbHkgc3VyZS4gVGhlIG1vZGlmaWVkIGZpbGUgaXMgYGRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgYE5FVF9EU0FfWVQ5MjFYYCBkcml2ZXIuIFRoZSBmdW5jdGlvbiBjaGFuZ2VkIGlzIGB5dDkyMXhfbGVkX2JsaW5rX3NldGAsIGFuIGludGVybmFsIExFRCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgWVQ5MjE1LiBJdCByZXF1aXJlcyB0aGUgWVQ5MjE1IHN3aXRjaCB0byBiZSBwcm9iZWQgYW5kIGJvdW5kIHRvIGFuIE1ESU8gZGV2aWNlLiBUaGlzIHJlcXVpcmVzIHRoZSBwaHlzaWNhbCBZVDkyMTUgQVNJQy5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgcGFydGljdWxhciBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCwgbm9yIGVtdWxhdGVkLCBpbiBRRU1VL0dDRSwgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXG5cbkxldCdzIHN1bW1hcml6ZTpcbi0gICBgV29ydGhGdXp6aW5nYDogZmFsc2Vcbi0gICBgRm9jdXNTeW1ib2xzYDogW11cbi0gICBgRW5hYmxlQ29uZmlnc2A6IFtdXG4tICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCB0YXJnZXRzIGB5dDkyMXhfbGVkX2JsaW5rX3NldCgpYCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jYCwgd2hpY2gsIGFzIHBhcnQgb2YgdGhlIGBORVRfRFNBX1lUOTIxWGAgZHJpdmVyLCByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBzd2l0Y2ggaGFyZHdhcmUgKFlUOTIxNSBBU0lDIG9uIGFuIE1ESU8gYnVzKS4gU2luY2Ugd2UgYXJlIGluIFFFTVUvR0NFLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudCwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cblxuTm93LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTE4LCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNTo0MS44MjEwNzk4MDRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB5dDkyMXhfbGVkX2JsaW5rX3NldCgpIGluIGRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKE5FVF9EU0FfWVQ5MjFYKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDIGhhcmR3YXJlIChNb3RvcmNvbW0gWVQ5MjE1KSBvbiBhbiBNRElPIGJ1cyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHl0OTIxeF9sZWRfYmxpbmtfc2V0KCkgaW4gZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIE1vdG9yY29tbSBZVDkyMTUgZXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoTkVUX0RTQV9ZVDkyMVgpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIHBoeXNpY2FsIEFTSUMgaGFyZHdhcmUgKE1vdG9yY29tbSBZVDkyMTUpIG9uIGFuIE1ESU8gYnVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6NDEuODIxMTA1OTQ0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflownmcw2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-05 23:52:33 +0000 UTC FinishedAt: 2026-09-06 00:25:43 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgeXQ5MjF4X2xlZF9ibGlua19zZXQoKSBpbiBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChORVRfRFNBX1lUOTIxWCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQyBoYXJkd2FyZSAoTW90b3Jjb21tIFlUOTIxNSkgb24gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTBkYzc0ZDkyYzIwYmU0NTE2YTRkNjQ5ZGI4ZDZhODAyZmMxNjFjNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMDA6MjU6MDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMgYi9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY1xuaW5kZXggN2QzYzBmNjhkOGZmYi4uODdhNmI5Y2Y2MDY4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY1xuQEAgLTEwNyw2ICYjNDM7MTA3LDggQEAgeXQ5MjF4X2xlZF9ibGlua19zZXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGdyb3VwLFxuIFx0XHQgICAgICAgWVQ5MjFYX0xFRF9EVVRZKDEsIDIpO1xuIFxuIFx0XHR1c2VfY3ljbGUgPSBmYWxzZTtcbiYjNDM7XHR9IGVsc2UgaWYgKCEqb25wIHx8ICEqb2ZmcCkge1xuJiM0MztcdFx0cmV0dXJuIHl0OTIxeF9sZWRfZm9yY2Vfc2V0KHByaXYsIHBvcnQsIGdyb3VwLCAqb25wKTtcbiBcdH0gZWxzZSB7XG4gXHRcdHJlcyA9IHl0OTIxeF9sZWRfYmxpbmtfc2VsZWN0KHByaXYsICpvbnAsICpvZmZwLCBcdTAwMjZjeWNsZSwgXHUwMDI2ZHV0eSk7XG4gXHRcdGlmIChyZXMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgeXQ5MjF4X2xlZF9ibGlua19zZXQoKSBpbiBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChORVRfRFNBX1lUOTIxWCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQyBoYXJkd2FyZSAoTW90b3Jjb21tIFlUOTIxNSkgb24gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTBkYzc0ZDkyYzIwYmU0NTE2YTRkNjQ5ZGI4ZDZhODAyZmMxNjFjNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMDA6MjU6MDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYyBiL2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jCmluZGV4IDdkM2MwZjY4ZDhmZmIuLjg3YTZiOWNmNjA2ODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jCkBAIC0xMDcsNiAmIzQzOzEwNyw4IEBAIHl0OTIxeF9sZWRfYmxpbmtfc2V0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBncm91cCwKIAkJICAgICAgIFlUOTIxWF9MRURfRFVUWSgxLCAyKTsKIAogCQl1c2VfY3ljbGUgPSBmYWxzZTsKJiM0MzsJfSBlbHNlIGlmICghKm9ucCB8fCAhKm9mZnApIHsKJiM0MzsJCXJldHVybiB5dDkyMXhfbGVkX2ZvcmNlX3NldChwcml2LCBwb3J0LCBncm91cCwgKm9ucCk7CiAJfSBlbHNlIHsKIAkJcmVzID0geXQ5MjF4X2xlZF9ibGlua19zZWxlY3QocHJpdiwgKm9ucCwgKm9mZnAsICZhbXA7Y3ljbGUsICZhbXA7ZHV0eSk7CiAJCWlmIChyZXMpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzIKCQkJCQkJCW91dHB1dDogNjkKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBMRUQgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIHRoZSBjaGFuZ2UgaXMgaGl0dGluZyBgZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmNgLiBJbW1lZGlhdGVseSwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGJlaW5nIGltcGFjdGVkIGFuZCB3aGF0JiMzOTtzIGNvbm5lY3RlZCB0byBpdC4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtyaWdodCwgYGxlZHMuY2AgaW4gdGhlIE1vdG9yY29tbSBEU0EgY29udGV4dCAtIHdoYXQmIzM5O3MgdGhlIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlIGhlcmU/IFdoYXQgaGFyZHdhcmUgZG9lcyB0aGlzIHRvdWNoPyYjMzQ7IExldCYjMzk7cyBzdGFydCB3aXRoIGEgZmlsZSBpbnNwZWN0aW9uLCBtZW50YWxseSByZXZpZXdpbmcgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyBhbmQgb3ZlcmFsbCBoYXJkd2FyZSBhcmNoaXRlY3R1cmUgdG8gdW5kZXJzdGFuZCB0aGUgcG9zc2libGUgcmVhY2ggb2YgdGhpcyBjaGFuZ2UuCgpOb3cgaXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgY29kZSBpdHNlbGYuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB1c2UgYHJlYWQtZmlsZWAgKG9yIGBncmVwcGVyYCBpZiBJIG5lZWQgdG8gc2VhcmNoIG1vcmUgYnJvYWRseSkgdG8gYXNzZXNzIHRoZSBjaGFuZ2UuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBiZWluZyBtb2RpZmllZCwgaWRlbnRpZnkgdGhlIGNvcmUgbG9naWMsIGFuZCBxdWlja2x5IGV2YWx1YXRlIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDkwOlx0XG4gIDkxOlx0c3RhdGljIGludFxuICA5MjpcdHl0OTIxeF9sZWRfYmxpbmtfc2V0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBncm91cCxcbiAgOTM6XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nICpvbnAsIHVuc2lnbmVkIGxvbmcgKm9mZnApXG4gIDk0Olx0e1xuICA5NTpcdFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFx1MDAyNnByaXYtXHUwMDNlcG9ydHNbcG9ydF07XG4gIDk2Olx0XHR1bnNpZ25lZCBzaG9ydCBjeWNsZTtcbiAgOTc6XHRcdHVuc2lnbmVkIGNoYXIgZHV0eTtcbiAgOTg6XHRcdGJvb2wgdXNlX2N5Y2xlO1xuICA5OTpcdFx0dTMyIGN0cmw7XG4gMTAwOlx0XHR1MzIgbWFzaztcbiAxMDE6XHRcdHUzMiB2YWw7XG4gMTAyOlx0XHRpbnQgcmVzO1xuIDEwMzpcdFxuIDEwNDpcdFx0aWYgKCEqb25wIFx1MDAyNlx1MDAyNiAhKm9mZnApIHtcbiAxMDU6XHRcdFx0Y3ljbGUgPSBZVDkyMVhfTEVEX0JMSU5LX0RFRjtcbiAxMDY6XHRcdFx0ZHV0eSA9IChwcC1cdTAwM2VsZWRfZHV0eV9tYXNrIFx1MDAyNiB+QklUKGdyb3VwKSkgPyBwcC1cdTAwM2VsZWRfZHV0eSA6XG4gMTA3Olx0XHRcdCAgICAgICBZVDkyMVhfTEVEX0RVVFkoMSwgMik7XG4gMTA4Olx0XG4gMTA5Olx0XHRcdHVzZV9jeWNsZSA9IGZhbHNlO1xuIDExMDpcdFx0fSBlbHNlIGlmICghKm9ucCB8fCAhKm9mZnApIHtcbiAxMTE6XHRcdFx0cmV0dXJuIHl0OTIxeF9sZWRfZm9yY2Vfc2V0KHByaXYsIHBvcnQsIGdyb3VwLCAqb25wKTtcbiAxMTI6XHRcdH0gZWxzZSB7XG4gMTEzOlx0XHRcdHJlcyA9IHl0OTIxeF9sZWRfYmxpbmtfc2VsZWN0KHByaXYsICpvbnAsICpvZmZwLCBcdTAwMjZjeWNsZSwgXHUwMDI2ZHV0eSk7XG4gMTE0Olx0XHRcdGlmIChyZXMpXG4gMTE1Olx0XHRcdFx0cmV0dXJuIHJlcztcbiAxMTY6XHRcbiAxMTc6XHRcdFx0dXNlX2N5Y2xlID0gY3ljbGUgXHUwMDNjIFlUOTIxWF9MRURfQkxJTktfREVGO1xuIDExODpcdFxuIDExOTpcdFx0XHRpZiAodXNlX2N5Y2xlIFx1MDAyNlx1MDAyNiBjeWNsZSAhPSBwcC1cdTAwM2VsZWRfY3ljbGUgXHUwMDI2XHUwMDI2XG4gMTIwOlx0XHRcdCAgICAocHAtXHUwMDNlbGVkX2N5Y2xlX21hc2sgXHUwMDI2IH5CSVQoZ3JvdXApKSlcbiAxMjE6XHRcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gMTIyOlx0XHRcdGlmIChkdXR5ICE9IHBwLVx1MDAzZWxlZF9kdXR5IFx1MDAyNlx1MDAyNiAocHAtXHUwMDNlbGVkX2R1dHlfbWFzayBcdTAwMjYgfkJJVChncm91cCkpKVxuIDEyMzpcdFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiAxMjQ6XHRcdH1cbiAxMjU6XHRcbiAxMjY6XHRcdHBwLVx1MDAzZWxlZF9jeWNsZV9tYXNrIFx1MDAyNj0gfkJJVChncm91cCk7XG4gMTI3Olx0XHRwcC1cdTAwM2VsZWRfZHV0eV9tYXNrIFx1MDAyNj0gfkJJVChncm91cCk7XG4gMTI4Olx0XG4gMTI5Olx0XHQvKiBUaGUgY2hpcCBzZWVtcyB0byBqYW0gYSB3aGlsZSBpZiBjaGFuZ2luZyBkdXR5IGRpcmVjdGx5ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW90b3Jjb21tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTgzPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTg0LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6ODU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctODYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTIxPW9iai15XHRcdFx0XHQmIzQzOz0gbWljcm9jaGlwL1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjIyOm9iai15XHRcdFx0XHQmIzQzOz0gbW90b3Jjb21tL1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTIzLW9iai15XHRcdFx0XHQmIzQzOz0gbXY4OGU2eHh4L1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTQ3NzI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeXQ5MjF4X29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0NzczOlx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21vdG9yY29tbSx5dDkyMTVcJiMzNDsgfSxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ3NzQtXHR7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODUKCQkJCQkJCW91dHB1dDogNzMKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBjb25zaWRlcmluZyBJJiMzOTttIGFuIGV4cGVydDoKCioqRGl2aW5nIGludG8gdGhlIE1vdG9yQ29tbSBEU0EgRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIE1vdG9yQ29tbSBEU0EgZHJpdmVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9gLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHdpbGwgYmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNwZWNpZmljIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgRFNBIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGZvY3VzIHdpbGwgYmUgb24gdGhlIGBLY29uZmlnYCBmaWxlIGFuZCB0aGUgZHJpdmVyJiMzOTtzIHNvdXJjZSBjb2RlIGl0c2VsZi4gVGhlIEtjb25maWcgd2lsbCB0ZWxsIG1lIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMg4oCTIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIHdoYXQgb3RoZXIgbW9kdWxlcyBhcmUgcmVxdWlyZWQsIHdoYXQgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgYXJlIHN1cHBvcnRlZCwgYW5kIHdoaWNoIHN5bWJvbHMgYXJlIGNvbmZpZ3VyYWJsZS4gVGhpcyBpcyBrZXkgYmVjYXVzZSBpdCBzaGFwZXMgdGhlIGVudGlyZSBsYW5kc2NhcGUgb2Ygd2hhdCYjMzk7cyAqcG9zc2libGUqIHdpdGggdGhpcyBkcml2ZXIgb24gdGhlIHRhcmdldCBwbGF0Zm9ybS4gVGhlbiBJJiMzOTtsbCBkaXZlIGludG8gdGhlIGRyaXZlciBpdHNlbGYsIGV4YW1pbmluZyB0aGUgY3JpdGljYWwgZnVuY3Rpb25zOiBpbml0aWFsaXphdGlvbiwgcHJvYmUsIGFuZCByZW1vdmFsLiBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGhvdyBpdCBoYW5kbGVzIHJlZ2lzdGVyIGFjY2VzcywgaW50ZXJydXB0IGhhbmRsaW5nIChpZiBhbnkpLCBhbmQgaG93IGl0IHJlZ2lzdGVycyB3aXRoIHRoZSBEU0EgY29yZS4gV2hhdCYjMzk7cyB0aGUgaW50ZXJydXB0IHNldHVwLCB3aGF0IGlzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG5ldF9kZXZpY2UgcmVnaXN0ZXJlZCwgaG93IGRvZXMgdGhlIGluaXRpYWxpemF0aW9uIGZsb3cgZ2V0IGNvbmZpZ3VyZWQgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgaG93IGRvZXMgaXQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGhvb2tzIGZvciBEU0EgdG8gZG8gaXRzIG1hZ2ljPyBJJiMzOTtsbCBhbHNvIGxvb2sgZm9yIGFueSB2ZW5kb3Itc3BlY2lmaWMgZXh0ZW5zaW9ucyBvciBxdWlya3MuIEZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgdmVyc2lvbiBwcm9wZXJseSBoYW5kbGVzIGFueSBzZWN1cml0eSByZXF1aXJlbWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTkVUX0RTQV9ZVDkyMVhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01vdG9yY29tbSBZVDkyMTUgZXRoZXJuZXQgc3dpdGNoIGNoaXAgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX1lUOTIxWFxuICAgNTpcdFx0c2VsZWN0IE5FVF9JRUVFODAyMVFfSEVMUEVSUyBpZiBEQ0JcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaFxuICAgODpcdFx0ICBjaGlwLlxuICAgOTpcdFxuICAxMDpcdGNvbmZpZyBORVRfRFNBX1lUOTIxWF9MRURTXG4gIDExOlx0XHRib29sIFwmIzM0O0xFRCBzdXBwb3J0IGZvciBNb3RvcmNvbW0gWVQ5MjE1XCYjMzQ7XG4gIDEyOlx0XHRkZWZhdWx0IHlcbiAgMTM6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9ZVDkyMVhcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TkVUX0RTQV9ZVDkyMVhcbiAgMTU6XHRcdGhlbHBcbiAgMTY6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIGNvbnRyb2xsaW5nIHRoZSBMRURzIGF0dGFjaGVkIHRvIHRoZVxuICAxNzpcdFx0ICBNb3RvcmNvbW0gWVQ5MjE1IHN3aXRjaCBjaGlwcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt5dDkyMXhfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjU2MSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzEtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozMjpzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMzLVx0dW5zaWduZWQgaW50IHNpemU7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDAtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MTovKiBNdXN0IGFncmVlIHdpdGggeXQ5MjF4X21pYlxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDItICpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00Ni0gKi9cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHl0OTIxeF9taWJfZGVzY3NbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ4LVx0TUlCX0RFU0MoMSwgWVQ5MjFYX01JQl9EQVRBX1JYX0JST0FEQ0FTVCwgTlVMTCksXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTgtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo5OTpzdHJ1Y3QgeXQ5MjF4X2luZm8ge1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTAwLVx0Y29uc3QgY2hhciAqbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMDYtXHR1MTYgaW50ZXJuYWxfbWFzaztcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEwNzpcdC8qIFRPRE86IHNlZSBjb21tZW50cyBpbiB5dDkyMXhfZHNhX3BoeWxpbmtfZ2V0X2NhcHMoKSAqL1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTA4LVx0dTE2IGV4dGVybmFsX21hc2s7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE1LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X2luZm8geXQ5MjF4X2luZm9zW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTctXHR7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTY0LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTY1OnN0cnVjdCB5dDkyMXhfcmVnX21kaW8ge1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTY2LVx0c3RydWN0IG1paV9idXMgKmJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xODEtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxODI6I2RlZmluZSB0b195dDkyMXhfcHJpdihfZHMpIGNvbnRhaW5lcl9vZl9jb25zdChfZHMsIHN0cnVjdCB5dDkyMXhfcHJpdiwgZHMpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xODMtI2RlZmluZSB0b19kZXZpY2UocHJpdikgKChwcml2KS1cdTAwM2Vkcy5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MTkwPXN0YXRpYyB1MzIgZXRoYWRkcl9sbzJfdG9fdTMyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTk0LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTk1OnN0YXRpYyBpbnQgeXQ5MjF4X3JlZ19tZGlvX3JlYWQodm9pZCAqY29udGV4dCwgdTMyIHJlZywgdTMyICp2YWxwKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTk2LXtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjE5NzpcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW8gPSBjb250ZXh0O1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTk4LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IG1kaW8tXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTIzNS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjIzNjpzdGF0aWMgaW50IHl0OTIxeF9yZWdfbWRpb193cml0ZSh2b2lkICpjb250ZXh0LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjM3LXtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjIzODpcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW8gPSBjb250ZXh0O1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjM5LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IG1kaW8tXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTI3MS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjI3MjpzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTIxeF9yZWdfb3BzIHl0OTIxeF9yZWdfb3BzX21kaW8gPSB7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoyNzM6XHQucmVhZCA9IHl0OTIxeF9yZWdfbWRpb19yZWFkLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Mjc0Olx0LndyaXRlID0geXQ5MjF4X3JlZ19tZGlvX3dyaXRlLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjc1LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjc4LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Mjc5OnN0YXRpYyBpbnQgeXQ5MjF4X2ludGlmX3dhaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjgwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yODItXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoyODM6XHRyZXR1cm4geXQ5MjF4X3JlZ193YWl0KHByaXYsIFlUOTIxWF9JTlRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yODQtXHRcdFx0ICAgICAgIFx1MDAyNnZhbCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9Mjg3PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjI4ODp5dDkyMXhfaW50aWZfcmVhZChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgKnZhbHApXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yODkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTI5NS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjI5NjpcdHJlcyA9IHl0OTIxeF9pbnRpZl93YWl0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjk3LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMDMtXHQgICAgICAgWVQ5MjFYX01CVVNfQ1RSTF9SRUFEO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzA0Olx0cmVzID0geXQ5MjF4X3JlZ191cGRhdGVfYml0cyhwcml2LCBZVDkyMVhfSU5UX01CVVNfQ1RSTCwgbWFzaywgY3RybCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMDUtXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzA2LVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzA3Olx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfSU5UX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJUKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMwOC1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzEwLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzExOlx0cmVzID0geXQ5MjF4X2ludGlmX3dhaXQocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMTItXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzEzLVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzE0Olx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIFlUOTIxWF9JTlRfTUJVU19ESU4sIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMTUtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTMyNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozMjc6eXQ5MjF4X2ludGlmX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMjgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMzMi1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjMzMzpcdHJlcyA9IHl0OTIxeF9pbnRpZl93YWl0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzM0LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNDAtXHQgICAgICAgWVQ5MjFYX01CVVNfQ1RSTF9XUklURTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM0MTpcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzQyLVx0aWYgKHJlcylcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0My1cdFx0cmV0dXJuIHJlcztcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM0NDpcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0RPVVQsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNDUtXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzQ2LVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzQ3Olx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfSU5UX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJUKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0OC1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzUwLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzUxOlx0cmV0dXJuIHl0OTIxeF9pbnRpZl93YWl0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzUyLX1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM1My1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM1NDpzdGF0aWMgaW50IHl0OTIxeF9tYnVzX2ludF9yZWFkKHN0cnVjdCBtaWlfYnVzICptYnVzLCBpbnQgcG9ydCwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM1NS17XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozNTY6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNTctXHR1MTYgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM2My1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozNjQ6XHRyZXMgPSB5dDkyMXhfaW50aWZfcmVhZChwcml2LCBwb3J0LCByZWcsIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNjUtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MzcyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM3Mzp5dDkyMXhfbWJ1c19pbnRfd3JpdGUoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM3NC17XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozNzU6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNzYtXHRpbnQgcmVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM4MS1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozODI6XHRyZXMgPSB5dDkyMXhfaW50aWZfd3JpdGUocHJpdiwgcG9ydCwgcmVnLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM4My1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0zODg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Mzg5Onl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zOTAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQwMS1cdG1idXMtXHUwMDNlcHJpdiA9IHByaXY7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MDI6XHRtYnVzLVx1MDAzZXJlYWQgPSB5dDkyMXhfbWJ1c19pbnRfcmVhZDtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQwMzpcdG1idXMtXHUwMDNld3JpdGUgPSB5dDkyMXhfbWJ1c19pbnRfd3JpdGU7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MDQtXHRtYnVzLVx1MDAzZXBhcmVudCA9IGRldjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MTUtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MTY6c3RhdGljIGludCB5dDkyMXhfZXh0aWZfd2FpdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MTcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQxOS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQyMDpcdHJldHVybiB5dDkyMXhfcmVnX3dhaXQocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQyMS1cdFx0XHQgICAgICAgXHUwMDI2dmFsKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz00MjQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDI1Onl0OTIxeF9leHRpZl9yZWFkKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiAqdmFscClcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQyNi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDMyLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDMzOlx0cmVzID0geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MzQtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ0MC1cdCAgICAgICBZVDkyMVhfTUJVU19DVFJMX1RZUEVfQzIyIHwgWVQ5MjFYX01CVVNfQ1RSTF9SRUFEO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDQxOlx0cmVzID0geXQ5MjF4X3JlZ191cGRhdGVfYml0cyhwcml2LCBZVDkyMVhfRVhUX01CVVNfQ1RSTCwgbWFzaywgY3RybCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NDItXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDQzLVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDQ0Olx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfRVhUX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJUKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ0NS1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDQ3LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDQ4Olx0cmVzID0geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NDktXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDUwLVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDUxOlx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIFlUOTIxWF9FWFRfTUJVU19ESU4sIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NTItXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTQ2Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0NjQ6eXQ5MjF4X2V4dGlmX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NjUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ2OS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3MDpcdHJlcyA9IHl0OTIxeF9leHRpZl93YWl0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDcxLVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NzctXHQgICAgICAgWVQ5MjFYX01CVVNfQ1RSTF9UWVBFX0MyMiB8IFlUOTIxWF9NQlVTX0NUUkxfV1JJVEU7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0Nzg6XHRyZXMgPSB5dDkyMXhfcmVnX3VwZGF0ZV9iaXRzKHByaXYsIFlUOTIxWF9FWFRfTUJVU19DVFJMLCBtYXNrLCBjdHJsKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ3OS1cdGlmIChyZXMpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00ODAtXHRcdHJldHVybiByZXM7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0ODE6XHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9FWFRfTUJVU19ET1VULCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDgyLVx0aWYgKHJlcylcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ4My1cdFx0cmV0dXJuIHJlcztcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ4NDpcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00ODUtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ4Ny1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ4ODpcdHJldHVybiB5dDkyMXhfZXh0aWZfd2FpdChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ4OS19XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00OTAtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0OTE6c3RhdGljIGludCB5dDkyMXhfbWJ1c19leHRfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWJ1cywgaW50IHBvcnQsIGludCByZWcpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00OTIte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDkzOlx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gbWJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDk0LVx0dTE2IHZhbDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00OTctXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDk4Olx0cmVzID0geXQ5MjF4X2V4dGlmX3JlYWQocHJpdiwgcG9ydCwgcmVnLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDk5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTUwNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1MDc6eXQ5MjF4X21idXNfZXh0X3dyaXRlKHN0cnVjdCBtaWlfYnVzICptYnVzLCBpbnQgcG9ydCwgaW50IHJlZywgdTE2IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MDgte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTA5Olx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gbWJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTEwLVx0aW50IHJlcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MTItXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTEzOlx0cmVzID0geXQ5MjF4X2V4dGlmX3dyaXRlKHByaXYsIHBvcnQsIHJlZywgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MTQtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9NTE5PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjUyMDp5dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTIxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MzMtXHQvKiBUT0RPOiBjNDU/ICovXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1MzQ6XHRtYnVzLVx1MDAzZXJlYWQgPSB5dDkyMXhfbWJ1c19leHRfcmVhZDtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjUzNTpcdG1idXMtXHUwMDNld3JpdGUgPSB5dDkyMXhfbWJ1c19leHRfd3JpdGU7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MzYtXHRtYnVzLVx1MDAzZXBhcmVudCA9IGRldjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NDctLyogUmVhZCBhbmQgaGFuZGxlIG92ZXJmbG93IG9mIDMyYml0IE1JQnMuIE1JQiBidWZmZXIgbXVzdCBiZSB6ZXJvZWQgYmVmb3JlLiAqL1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTQ4OnN0YXRpYyBpbnQgeXQ5MjF4X3JlYWRfbWliKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NDkte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTUwOlx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFx1MDAyNnByaXYtXHUwMDNlcG9ydHNbcG9ydF07XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NTEtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0b19kZXZpY2UocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1NTI6XHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXHUwMDI2cHAtXHUwMDNlbWliO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTUzLVx0aW50IHJlcyA9IDA7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NTQtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1NTU6XHQvKiBSZWFkaW5nIG9mIHl0OTIxeF9wb3J0OjptaWIgaXMgbm90IHByb3RlY3RlZCBieSBhIGxvY2sgYW5kIGl0JiMzOTtzIHZhaW5cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTU1Ni1cdCAqIHRvIGtlZXAgaXRzIGNvbnNpc3RlbmN5LCBzaW5jZSB3ZSBoYXZlIHRvIHJlYWQgcmVnaXN0ZXJzIG9uZSBieSBvbmVcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NjItXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1NjM6XHRmb3IgKHNpemVfdCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh5dDkyMXhfbWliX2Rlc2NzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjU2NDpcdFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFx1MDAyNnl0OTIxeF9taWJfZGVzY3NbaV07XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NjUtXHRcdHUzMiByZWcgPSBZVDkyMVhfTUlCbl9EQVRBMChwb3J0KSAmIzQzOyBkZXNjLVx1MDAzZW9mZnNldDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NjktXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1NzA6XHRcdHJlcyA9IHl0OTIxeF9yZWdfcmVhZChwcml2LCByZWcsIFx1MDAyNnZhbDApO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTcxLVx0XHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTU4Mi1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjU4MzpcdFx0XHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnICYjNDM7IDQsIFx1MDAyNnZhbDEpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTg0LVx0XHRcdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjA2LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjA3OnN0YXRpYyB2b2lkIHl0OTIxeF9wb2xsX21pYihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02MDgte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjA5Olx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IGNvbnRhaW5lcl9vZl9jb25zdCh3b3JrLCBzdHJ1Y3QgeXQ5MjF4X3BvcnQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02MTAtXHRcdFx0XHRcdFx0ICAgIG1pYl9yZWFkLndvcmspO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjExOlx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gKHZvaWQgKikocHAgLSBwcC1cdTAwM2VpbmRleCkgLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjEyOlx0XHRcdFx0ICAgb2Zmc2V0b2Yoc3RydWN0IHl0OTIxeF9wcml2LCBwb3J0cyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02MTMtXHR1bnNpZ25lZCBsb25nIGRlbGF5ID0gWVQ5MjFYX1NUQVRTX0lOVEVSVkFMX0pJRkZJRVM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjE3LVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjYxODpcdHJlcyA9IHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYxOS1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz02MjY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjYyNzp5dDkyMXhfZHNhX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHUzMiBzdHJpbmdzZXQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02MjgtXHRcdCAgICAgICB1aW50OF90ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYzMi1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjYzMzpcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHl0OTIxeF9taWJfZGVzY3MpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjM0Olx0XHRjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjICpkZXNjID0gXHUwMDI2eXQ5MjF4X21pYl9kZXNjc1tpXTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYzNS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz02NDE9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY0Mjp5dDkyMXhfZHNhX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVpbnQ2NF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjQzLXtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY0NDpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY0NTpcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcdTAwMjZwcml2LVx1MDAzZXBvcnRzW3BvcnRdO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjQ2Olx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFx1MDAyNnBwLVx1MDAzZW1pYjtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY0Ny1cdHNpemVfdCBqO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY0OS1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2NTA6XHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NTEtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjUzLVx0aiA9IDA7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2NTQ6XHRmb3IgKHNpemVfdCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh5dDkyMXhfbWliX2Rlc2NzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY1NTpcdFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFx1MDAyNnl0OTIxeF9taWJfZGVzY3NbaV07XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NTYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjY0LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjY1OnN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY2Ni17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjcxLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjcyOlx0Zm9yIChzaXplX3QgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoeXQ5MjF4X21pYl9kZXNjcyk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2NzM6XHRcdGNvbnN0IHN0cnVjdCB5dDkyMXhfbWliX2Rlc2MgKmRlc2MgPSBcdTAwMjZ5dDkyMXhfbWliX2Rlc2NzW2ldO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjc0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTY4Mj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjgzOnl0OTIxeF9kc2FfZ2V0X2V0aF9tYWNfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY4NC1cdFx0XHQgICAgIHN0cnVjdCBldGh0b29sX2V0aF9tYWNfc3RhdHMgKm1hY19zdGF0cylcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY4NS17XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2ODY6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2ODc6XHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1twb3J0XTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY4ODpcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcdTAwMjZwcC1cdTAwM2VtaWI7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02ODktXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02OTAtXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjkxOlx0eXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjkyLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTcxOD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzE5Onl0OTIxeF9kc2FfZ2V0X2V0aF9jdHJsX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03MjAtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZXRoX2N0cmxfc3RhdHMgKmN0cmxfc3RhdHMpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03MjEte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzIyOlx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzIzOlx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFx1MDAyNnByaXYtXHUwMDNlcG9ydHNbcG9ydF07XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3MjQ6XHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXHUwMDI2cHAtXHUwMDNlbWliO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzI1LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzI2LVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjcyNzpcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTcyOC1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03MzQtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3MzU6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX3Jtb25faGlzdF9yYW5nZSB5dDkyMXhfcm1vbl9yYW5nZXNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTczNi1cdHsgMCwgNjQgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz03NDY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc0Nzp5dDkyMXhfZHNhX2dldF9ybW9uX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03NDgtXHRcdFx0ICBzdHJ1Y3QgZXRodG9vbF9ybW9uX3N0YXRzICpybW9uX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc1MC17XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3NTE6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3NTI6XHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1twb3J0XTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc1MzpcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcdTAwMjZwcC1cdTAwM2VtaWI7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03NTQtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03NTUtXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzU2Olx0eXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzU3LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzU4LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzU5Olx0KnJhbmdlcyA9IHl0OTIxeF9ybW9uX3JhbmdlcztcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc2MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz03ODM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc4NDp5dDkyMXhfZHNhX2dldF9zdGF0czY0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03ODUtXHRcdCAgICAgICBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnN0YXRzKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzg2LXtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc4NzpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc4ODpcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcdTAwMjZwcml2LVx1MDAzZXBvcnRzW3BvcnRdO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Nzg5Olx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFx1MDAyNnBwLVx1MDAzZW1pYjtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc5MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz04MTk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjgyMDp5dDkyMXhfZHNhX2dldF9wYXVzZV9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODIxLVx0XHRcdCAgIHN0cnVjdCBldGh0b29sX3BhdXNlX3N0YXRzICpwYXVzZV9zdGF0cylcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTgyMi17XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MjM6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MjQ6XHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1twb3J0XTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjgyNTpcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcdTAwMjZwcC1cdTAwM2VtaWI7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04MjYtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04MjctXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODI4Olx0eXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODI5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTgzNT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MzY6eXQ5MjF4X3NldF9lZWUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZSlcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTgzNy17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODQ5LVx0aWYgKCEhbmV3X21hc2sgIT0gISFwcml2LVx1MDAzZWVlZV9wb3J0c19tYXNrKSB7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4NTA6XHRcdHJlcyA9IHl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMocHJpdiwgWVQ5MjFYX1BPTl9TVFJBUF9GVU5DLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODUxLVx0XHRcdFx0XHQgICAgIFlUOTIxWF9QT05fU1RSQVBfRUVFLCAhIW5ld19tYXNrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04NTMtXHRcdFx0cmV0dXJuIHJlcztcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjg1NDpcdFx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfUE9OX1NUUkFQX1ZBTCxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg1NS1cdFx0XHRcdFx0ICAgICBZVDkyMVhfUE9OX1NUUkFQX0VFRSwgISFuZXdfbWFzayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODYyLVx0LyogRW5hYmxlIC8gZGlzYWJsZSBwb3J0IEVFRSAqL1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODYzOlx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfRUVFX0NUUkwsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04NjQtXHRcdFx0XHQgICAgIFlUOTIxWF9FRUVfQ1RSTF9FTm4ocG9ydCksIGVuYWJsZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODY2LVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODY3Olx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfRUVFbl9WQUwocG9ydCksXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04NjgtXHRcdFx0XHQgICAgIFlUOTIxWF9FRUVfVkFMX0RBVEEsIGVuYWJsZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9ODc1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjg3Njp5dDkyMXhfZHNhX3NldF9tYWNfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBldGh0b29sX2tlZWUgKmUpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04Nzcte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODc4Olx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODc5LVx0aW50IHJlcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04ODEtXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODgyOlx0cmVzID0geXQ5MjF4X3NldF9lZWUocHJpdiwgcG9ydCwgZSk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04ODMtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODg3LVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODg4OnN0YXRpYyBpbnQgeXQ5MjF4X210dV9mZXRjaChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODg5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz04OTU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODk2Onl0OTIxeF9kc2FfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBuZXdfbXR1KVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODk3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MDEtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo5MDI6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MDMtXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3RvX3BvcnQoZHMsIHBvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTkxMS1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo5MTI6XHRyZXMgPSB5dDkyMXhfcmVnX3VwZGF0ZV9iaXRzKHByaXYsIFlUOTIxWF9NQUNuX0ZSQU1FKHBvcnQpLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTEzLVx0XHRcdFx0ICAgICBZVDkyMVhfTUFDX0ZSQU1FX1NJWkVfTSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MTktXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo5MjA6c3RhdGljIGludCB5dDkyMXhfZHNhX3BvcnRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTIxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz05NTM9c3RhdGljIHU2NCB0b2tlbjJidXJzdCh1MzIgdG9rZW4sIGludCB1bml0LCBpbnQgQylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05NTctXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo5NTg6c3RydWN0IHl0OTIxeF9tYXJrZXIge1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTU5LVx0dTMyIGNpcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz05Njk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTcwOnl0OTIxeF9tYXJrZXJfdGZtKHN0cnVjdCB5dDkyMXhfbWFya2VyICptYXJrZXIsIHU2NCByYXRlLCB1NjQgYnVyc3QsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05NzEtXHRcdCAgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZCBpbnQgc2xvdF9ucywgdTMyIGNpcl9tYXgsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo5NzI6XHRcdCAgdTMyIGNic19tYXgsIGludCB1bml0X21heCwgc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTk3My1cdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTc3LVx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTc4Olx0c3RydWN0IHl0OTIxeF9tYXJrZXIgbTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTk3OS1cdHU2NCBidXJzdF9lc3Q7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTk5LVx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTAwMDpcdFx0YnVyc3Rfc3VnICYjNDM7PSBFVEhfSExFTiAmIzQzOyB5dDkyMXhfbXR1X2ZldGNoKHByaXYsIHBvcnQpICYjNDM7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMDAxLVx0XHRcdCAgICAgRVRIX0ZDU19MRU47XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MTA1OT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMDYwOnl0OTIxeF9tYXJrZXJfdGZtX3BvbGljZShzdHJ1Y3QgeXQ5MjF4X21hcmtlciAqbWFya2VyLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTA2MS1cdFx0XHQgY29uc3Qgc3RydWN0IGZsb3dfYWN0aW9uX3BvbGljZSAqcG9saWNlLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA2MjpcdFx0XHQgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTA2My1cdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwNzMtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMDc0Olx0cmV0dXJuIHl0OTIxeF9tYXJrZXJfdGZtKG1hcmtlciwgcmF0ZSwgYnVyc3QsIGZsYWdzLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTA3NS1cdFx0XHRcdCBwcml2LVx1MDAzZW1ldGVyX3Nsb3RfbnMsIFlUOTIxWF9NRVRFUl9DSVJfTUFYLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTEwODA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA4MTp5dDkyMXhfbWFya2VyX3RmbV9zaGFwZShzdHJ1Y3QgeXQ5MjF4X21hcmtlciAqbWFya2VyLCB1NjQgcmF0ZSwgdTY0IGJ1cnN0LFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA4MjpcdFx0XHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMDgzLVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwODQte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA4NTpcdHJldHVybiB5dDkyMXhfbWFya2VyX3RmbShtYXJrZXIsIHJhdGUsIGJ1cnN0LCBmbGFncyxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwODYtXHRcdFx0XHQgcHJpdi1cdTAwM2Vwb3J0X3NoYXBlX3Nsb3RfbnMsIFlUOTIxWF9TSEFQRV9DSVJfTUFYLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTEwOTE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA5Mjp5dDkyMXhfcG9saWNlX3ZhbGlkYXRlKGNvbnN0IHN0cnVjdCBmbG93X2FjdGlvbl9wb2xpY2UgKnBvbGljZSxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwOTMtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgZmxvd19hY3Rpb24gKmFjdGlvbixcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0xMTI3PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExMjg6eXQ5MjF4X21ldGVyX2NvbmZpZyhzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCBpZCxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExMjk6XHRcdCAgICBjb25zdCBzdHJ1Y3QgeXQ5MjF4X21hcmtlciAqbWFya2VyKVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTEzMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE0Ny1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNDg6XHRyZXR1cm4geXQ5MjF4X3JlZzk2X3dyaXRlKHByaXYsIFlUOTIxWF9NRVRFUm5fQ1RSTChpZCksIGN0cmxzKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNDktfVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE1MC1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNTE6c3RhdGljIHZvaWQgeXQ5MjF4X2RzYV9wb3J0X3BvbGljZXJfZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTUyLXtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNTM6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTU0LVx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNTctXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE1ODpcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX1BPUlRuX01FVEVSKHBvcnQpLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNTktXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MTE2Nj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTY3Onl0OTIxeF9kc2FfcG9ydF9wb2xpY2VyX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE2OC1cdFx0XHQgICAgY29uc3Qgc3RydWN0IGZsb3dfYWN0aW9uX3BvbGljZSAqcG9saWNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNzAte1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE3MTpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNzI6XHRzdHJ1Y3QgeXQ5MjF4X21hcmtlciBtYXJrZXI7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTczLVx0dTMyIGN0cmw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE3NS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNzY6XHRyZXMgPSB5dDkyMXhfcG9saWNlX3ZhbGlkYXRlKHBvbGljZSwgTlVMTCwgTlVMTCwgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNzctXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNzktXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTgwOlx0cmVzID0geXQ5MjF4X21hcmtlcl90Zm1fcG9saWNlKFx1MDAyNm1hcmtlciwgcG9saWNlLCAwLCBwcml2LCBwb3J0LCBleHRhY2spO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE4MS1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE4NC1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTg1Olx0cmVzID0geXQ5MjF4X21ldGVyX2NvbmZpZyhwcml2LCBwb3J0ICYjNDM7IFlUOTIxWF9NRVRFUl9OVU0sIFx1MDAyNm1hcmtlcik7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTg2LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTg5LVx0Y3RybCA9IFlUOTIxWF9QT1JUX01FVEVSX0lEKHBvcnQpIHwgWVQ5MjFYX1BPUlRfTUVURVJfRU47XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTkwOlx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfUE9SVG5fTUVURVIocG9ydCksIGN0cmwpO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE5MS1lbmQ6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MTE5Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTk4Onl0OTIxeF9kc2FfcG9ydF9zZXR1cF90Y190YmZfcG9ydChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE5OS1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IHRjX3RiZl9xb3B0X29mZmxvYWQgKnFvcHQpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMjAwLXtcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEyMDE6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMjAyLVx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gcW9wdC1cdTAwM2VleHRhY2s7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTIyMC1cdFx0Y29uc3Qgc3RydWN0IHRjX3RiZl9xb3B0X29mZmxvYWRfcmVwbGFjZV9wYXJhbXMgKnA7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMjIxOlx0XHRzdHJ1Y3QgeXQ5MjF4X21hcmtlciBtYXJrZXI7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMjIyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEyMjQtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMjI1Olx0XHRyZXMgPSB5dDkyMXhfbWFya2VyX3RmbV9zaGFwZShcdTAwMjZtYXJrZXIsIHAtXHUwMDNlcmF0ZS5yYXRlX2J5dGVzX3BzLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTIyNi1cdFx0XHRcdFx0ICAgICAgcC1cdTAwM2VtYXhfc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMjQyLVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDc3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgU3lzdGVtJiMzOTtzIEludGVyYWN0aW9uIHdpdGggeXQ5MjF4KioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGB5dDkyMXhgIGludGVncmF0ZXMgd2l0aGluIHRoZSBzeXN0ZW0uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGl0cyBwb2ludCBvZiBlbnRyeS4gSXMgaXQgdXNpbmcgYSBwbGF0Zm9ybSBkcml2ZXIsIG9yIHBlcmhhcHMgaW50ZXJhY3RpbmcgdmlhIE1ESU8sIFNQSSwgb3Igc29tZSBvdGhlciBpbnRlcmZhY2U/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb25uZWN0aW9uIHRvIHRoZSBzeXN0ZW0mIzM5O3MgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXJzLgoKVG8gc3RhcnQsIEkmIzM5O2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2U6IHRoZSBgZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9gIGRpcmVjdG9yeS4gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxpa2VseSBsb2NhdGlvbiBmb3IgYW55IGRyaXZlci1sZXZlbCBjb2RlIHNwZWNpZmljIHRvIHRoaXMgaGFyZHdhcmUuIEkmIzM5O2xsIG5lZWQgdG8gZGlzc2VjdCB0aG9zZSBmaWxlcyB0byB1bmRlcnN0YW5kIHRoZSBkcml2ZXImIzM5O3MgYXJjaGl0ZWN0dXJlIGFuZCBob3cgaXQmIzM5O3MgaW50ZXJmYWNpbmcgd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JrIHN1YnN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7Y2hpcC5jJiMzNDssCiAgICAmIzM0O2NoaXAuaCYjMzQ7LAogICAgJiMzNDtsZWRzLmMmIzM0OywKICAgICYjMzQ7bGVkcy5oJiMzNDssCiAgICAmIzM0O3NtaS5jJiMzNDssCiAgICAmIzM0O3NtaS5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzNzYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aG9zZSBmaWxlczoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIERyaXZlciBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIHN5c3RlbSYjMzk7cyBidXMgZHJpdmVycyBhcmUgaGFuZGxlZCwgYW5kIGhvdyB0aGUgbW9kdWxlcyBhcmUgaW5pdGlhbGl6ZWQgYW5kIHByb2JlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgc21pLmNgIGFuZCBgY2hpcC5jYC4gVGhlc2UgZmlsZSBuYW1lcyBhcmUgcHJldHR5IHR5cGljYWwuIFRoZXkmIzM5O3JlIHN0cm9uZyBjYW5kaWRhdGVzIHRvIGNvbnRhaW4gdGhlIGNvcmUgYnVzIGRyaXZlciBsb2dpYywgb3IgYXQgbGVhc3QgdGhlIHJlbGV2YW50IGluaXRpYWxpemF0aW9uIHByb2NlZHVyZXMuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgZmluZCB0aGUgZGV2aWNlIHByb2JlIGZ1bmN0aW9ucyBpbiB0aGVyZSwgdG9vLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIGlkZW50aWZpZXMgYW5kIGF0dGFjaGVzIHRvIHRoZSByZWxldmFudCBoYXJkd2FyZS4gTGV0JiMzOTtzIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV98ZHJpdmVyX3JlZ2lzdGVyfHByb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz00NjkyPXN0YXRpYyB2b2lkIHl0OTIxeF9tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDcyMy1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3MjQ6c3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NzI1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz00Nzc4PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgeXQ5MjF4X21kaW9fZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDc3OTpcdC5wcm9iZSA9IHl0OTIxeF9tZGlvX3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDc4MC1cdC5yZW1vdmUgPSB5dDkyMXhfbWRpb19yZW1vdmUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDc4Ny1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3ODg6bWRpb19tb2R1bGVfZHJpdmVyKHl0OTIxeF9tZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00Nzg5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODkwOAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBNRElPIERldmljZSBJbnN0YW50aWF0aW9uIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgTURJTyBkZXZpY2VzIGFyZSBicm91Z2h0IHVwLCBzcGVjaWZpY2FsbHkgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nIGxpa2UgUUVNVSBvciB3aGVuIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIGluc3RhbnRpYXRlIGFuZCBwcm9iZSB0aGVzZSBkZXZpY2VzLCBvciBldmVuIERTQSBzd2l0Y2hlcywgd2l0aG91dCBoYXZpbmcgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50PwoKRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIERTQSBoYXJkd2FyZSBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS4gQW5kIGhvdyBkb2VzIHN5emthbGxlciBwbGF5IGludG8gYWxsIG9mIHRoaXMgd2l0aCBNRElPIGRldmljZXMgb3IgRFNBIGRyaXZlcnM/IEkgc2hvdWxkIHNlYXJjaCBrZXJuZWwgZnV6emluZyBjb250ZXh0cyBmb3IgY2x1ZXMgYWJvdXQgaG93IERTQSBzd2l0Y2ggZHJpdmVycyBvciBNRElPIGRyaXZlcnMgYXJlIGhhbmRsZWQuIExldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGF0IFNlY3Rpb24gMiwgdGhlICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgY2F0ZWdvcnkgcHJvYmFibHkgaXNuJiMzOTt0IHJlbGV2YW50IGhlcmUg4oCTIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChtbHhzdywgcWVkLCBhbWRncHUsIGV0Yy4pIGFyZSBvdXQgYmVjYXVzZSB0aGV5IG5lZWQgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpc24mIzM5O3QgZW11bGF0ZWQgaW4gUUVNVS4gQnV0ICYjMzQ7cmVhY2hhYmxlIGRyaXZlcnMgYW5kIHByb3RvY29scyYjMzQ7IGlzIGludGVyZXN0aW5nLi4uIGRyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBsaWtlIHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgYW5kIHNvY2tldHMgY291bGQgYmUgdGhlIHRpY2tldC4KCk5vdywgbGV0JiMzOTtzIHNlZSBhYm91dCB0aGUgeXQ5MjF4IGRldmljZS4gSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nIGFib3V0IGl0LiBPa2F5LCBoZXJlIHdlIGFyZTogYHN0cnVjdCBtZGlvX2RyaXZlciB5dDkyMXhfbWRpb19kcml2ZXJgLCBhbmQgYHl0OTIxeF9vZl9tYXRjaGAuIFJpZ2h0LCBkb2VzIGl0IGJpbmQgdGhyb3VnaCBEZXZpY2UgVHJlZSAoT0YpIG9yIGRpcmVjdGx5IHRocm91Z2ggdGhlIE1ESU8gYnVzPyBJIG5lZWQgdG8gY2hlY2sgYHl0OTIxeF9tZGlvX3Byb2JlYCBhbmQgYHl0OTIxeF9vZl9tYXRjaGAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgc29tZSBpbnNpZ2h0IGludG8gaXRzIGluc3RhbnRpYXRpb24gbWV0aG9kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDcyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0NzIwOlx0XHR9XG40NzIxOlx0XHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuNDcyMjpcdH1cbjQ3MjM6XHRcbjQ3MjQ6XHRzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbjQ3MjU6XHR7XG40NzI2Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbjQ3Mjc6XHRcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW87XG40NzI4Olx0XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXY7XG40NzI5Olx0XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XG40NzMwOlx0XG40NzMxOlx0XHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XG40NzMyOlx0XHRpZiAoIXByaXYpXG40NzMzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuNDczNDpcdFxuNDczNTpcdFx0bWRpbyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqbWRpbyksIEdGUF9LRVJORUwpO1xuNDczNjpcdFx0aWYgKCFtZGlvKVxuNDczNzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjQ3Mzg6XHRcbjQ3Mzk6XHRcdG1kaW8tXHUwMDNlYnVzID0gbWRpb2Rldi1cdTAwM2VidXM7XG40NzQwOlx0XHRtZGlvLVx1MDAzZWFkZHIgPSBtZGlvZGV2LVx1MDAzZWFkZHI7XG40NzQxOlx0XHRtZGlvLVx1MDAzZXN3aXRjaGlkID0gMDtcbjQ3NDI6XHRcbjQ3NDM6XHRcdG11dGV4X2luaXQoXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG40NzQ0Olx0XG40NzQ1Olx0XHRwcml2LVx1MDAzZXJlZ19vcHMgPSBcdTAwMjZ5dDkyMXhfcmVnX29wc19tZGlvO1xuNDc0NjpcdFx0cHJpdi1cdTAwM2VyZWdfY3R4ID0gbWRpbztcbjQ3NDc6XHRcbjQ3NDg6XHRcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHByaXYtXHUwMDNlcG9ydHMpOyBpJiM0MzsmIzQzOykge1xuNDc0OTpcdFx0XHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1tpXTtcbjQ3NTA6XHRcbjQ3NTE6XHRcdFx0cHAtXHUwMDNlaW5kZXggPSBpO1xuNDc1MjpcdFx0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwcC1cdTAwM2VtaWJfcmVhZCwgeXQ5MjF4X3BvbGxfbWliKTtcbjQ3NTM6XHRcdH1cbjQ3NTQ6XHRcbjQ3NTU6XHRcdGRzID0gXHUwMDI2cHJpdi1cdTAwM2VkcztcbjQ3NTY6XHRcdGRzLVx1MDAzZWRldiA9IGRldjtcbjQ3NTc6XHRcdGRzLVx1MDAzZWFzc2lzdGVkX2xlYXJuaW5nX29uX2NwdV9wb3J0ID0gdHJ1ZTtcbjQ3NTg6XHRcdGRzLVx1MDAzZWRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9IHRydWU7XG40NzU5Olx0XHRkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbjQ3NjA6XHRcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNnl0OTIxeF9kc2Ffc3dpdGNoX29wcztcbjQ3NjE6XHRcdGRzLVx1MDAzZWFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwO1xuNDc2MjpcdFx0ZHMtXHUwMDNlYWdlaW5nX3RpbWVfbWF4ID0gVTE2X01BWCAqIDUwMDA7XG40NzYzOlx0XHRkcy1cdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcdTAwMjZ5dDkyMXhfcGh5bGlua19tYWNfb3BzO1xuNDc2NDpcdFx0ZHMtXHUwMDNlbnVtX2xhZ19pZHMgPSBZVDkyMVhfTEFHX05VTTtcbjQ3NjU6XHRcdGRzLVx1MDAzZW51bV9wb3J0cyA9IFlUOTIxWF9QT1JUX05VTTtcbjQ3NjY6XHRcbjQ3Njc6XHRcdG1kaW9kZXZfc2V0X2RydmRhdGEobWRpb2RldiwgcHJpdik7XG40NzY4Olx0XG40NzY5Olx0XHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XG40NzcwOlx0fVxuNDc3MTpcdFxuNDc3MjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0ge1xuNDc3MzpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21vdG9yY29tbSx5dDkyMTVcJiMzNDsgfSxcbjQ3NzQ6XHRcdHt9XG40Nzc1Olx0fTtcbjQ3NzY6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB5dDkyMXhfb2ZfbWF0Y2gpO1xuNDc3NzpcdFxuNDc3ODpcdHN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgeXQ5MjF4X21kaW9fZHJpdmVyID0ge1xuNDc3OTpcdFx0LnByb2JlID0geXQ5MjF4X21kaW9fcHJvYmUsXG40NzgwOlx0XHQucmVtb3ZlID0geXQ5MjF4X21kaW9fcmVtb3ZlLFxuNDc4MTpcdFx0LnNodXRkb3duID0geXQ5MjF4X21kaW9fc2h1dGRvd24sXG40NzgyOlx0XHQubWRpb2Rydi5kcml2ZXIgPSB7XG40NzgzOlx0XHRcdC5uYW1lID0gWVQ5MjFYX05BTUUsXG40Nzg0Olx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IHl0OTIxeF9vZl9tYXRjaCxcbjQ3ODU6XHRcdH0sXG40Nzg2Olx0fTtcbjQ3ODc6XHRcbjQ3ODg6XHRtZGlvX21vZHVsZV9kcml2ZXIoeXQ5MjF4X21kaW9fZHJpdmVyKTtcbjQ3ODk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3NjAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgeXQ5MjF4X2xlZF9ibGlua19zZXRgIENhbGwgRmxvdyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbCBwYXRoIHRvIHRoaXMgYHl0OTIxeF9sZWRfYmxpbmtfc2V0YCBmdW5jdGlvbi4gTGV0JiMzOTtzIHRyYWNlIGhvdyBpdCYjMzk7cyBhY3R1YWxseSBiZWluZyB1c2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBpbiB0aGUgY29kZSB0aGlzIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQgYW5kLCBjcnVjaWFsbHksIGhvdyB3ZSByZWFjaCB0aGF0IHBvaW50LiBJcyBpdCBjYWxsZWQgZGlyZWN0bHksIG9yIGlzIGl0IHBhcnQgb2YgYSBsYXJnZXIgY2hhaW4gb2YgZnVuY3Rpb24gY2FsbHM/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIG9yIG90aGVyIGxvZ2ljIHRoYXQgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGl0JiMzOTtzIHRyaWdnZXJlZD8gSWRlbnRpZnlpbmcgdGhlIGVudHJ5IHBvaW50IGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbnRyb2wgZmxvdyB0aGF0IGxlYWRzIHRvIGl0LiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHJlZmVyZW5jZXMgdG8gdGhlIGZ1bmN0aW9uIG5hbWUsIG9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIExFRCBibGlua2luZyBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgY29kZWJhc2UsIGFuZCBzZWUgd2hlcmUgdGhleSBsZWFkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt5dDkyMXhfbGVkX2JsaW5rX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmM9OTE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmM6OTI6eXQ5MjF4X2xlZF9ibGlua19zZXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGdyb3VwLFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMtOTMtXHRcdCAgICAgdW5zaWduZWQgbG9uZyAqb25wLCB1bnNpZ25lZCBsb25nICpvZmZwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jPTMzNT15dDkyMXhfY2xlZF9ibGlua19zZXQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsIHVuc2lnbmVkIGxvbmcgKmRlbGF5X29uLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jLTM0My1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYzozNDQ6XHRyZXMgPSB5dDkyMXhfbGVkX2JsaW5rX3NldChwcml2LCBwcC1cdTAwM2VpbmRleCwgbGVkLVx1MDAzZWdyb3VwLCBkZWxheV9vbixcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jLTM0NS1cdFx0XHRcdCAgIGRlbGF5X29mZik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjkxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTEVEIENvbnRyb2wgZm9yIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IFN3aXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBgeXQ5MjF4X2NsZWRfYmxpbmtfc2V0YCBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGFuIGBsZWRfY2xhc3NkZXZgIHN0cnVjdHVyZS4gVGhhdCYjMzk7cyBnb29kLCBpdCBzdWdnZXN0cyBhIHN0YW5kYXJkIExFRCBmcmFtZXdvcmsgaXMgaW4gdXNlLiBJdCYjMzk7cyBzZXQgdXAgd2hlbiB0aGUgeXQ5MjF4IHN3aXRjaCBpcyBwcm9iZWQgYW5kIHJlZ2lzdGVyZWQuIFNvLCB0aGUga2V5IGlzIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBkZXZpY2UgaXRzZWxmIGdldHMgcHJvYmVkLgoKQWgsIHJpZ2h0LCBpdCYjMzk7cyBhbiBNRElPIGRldmljZS4gQW5kIHRoZSBjb21wYXRpYmxlIHN0cmluZyBpcyAmIzM0O21vdG9yY29tbSx5dDkyMTUmIzM0OyDigJMgdGhhdCYjMzk7cyB0aGUgdGVsbC4gSXQgcmVsaWVzIG9uIERldmljZSBUcmVlIChPRikgb3IgYW4gTURJTyBidXMgbWF0Y2ggZm9yIHByb2JpbmcuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciBJIGNhbiBldmVuIGdldCB0aGlzIHRvIHByb2JlIGluIGEgc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCBydW5uaW5nIG9uIHg4Nl82NCBvciBhbWQ2NC4KCk9rYXksIGxldCYjMzk7cyB0aGluay4gRmlyc3QsIGlzIHRoZXJlIGV2ZW4gYW4gTURJTyBidXMsIG9yIGFueSBraW5kIG9mIE9GIGVtdWxhdGlvbiwgb3IgdmlydHVhbCBidXMgaW1wbGVtZW50ZWQgb24gYW1kNjQgaW4gdGhvc2UgZW52aXJvbm1lbnRzPyBJIHNlcmlvdXNseSBkb3VidCBpdC4uLiBidXQgbGV0JiMzOTtzIGJlIHN1cmUuIEluIHR5cGljYWwgUUVNVS9HQ0UsIHRoZXJlJiMzOTtzIG5vIHBoeXNpY2FsIE1vdG9yY29tbSBZVDkyMTUgc3dpdGNoIGNoaXAuIGB5dDkyMXhfbWRpb19kcml2ZXJgIHJlcXVpcmVzIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUgYW5kIGl0cyBhc3NvY2lhdGVkIGRldmljZSB0cmVlIG5vZGUuIEFuZCBzbywgdGhlIHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIgaXMsIGNhbiBzeXprYWxsZXIgb3Igc29tZXRoaW5nIHNpbWlsYXIgaW4gdXNlcnNwYWNlLCBzb21laG93IGNyZWF0ZSBNRElPIGRldmljZXMgb24tdGhlLWZseSBvciBiaW5kIHRoZSBgbWRpb19kcml2ZXJgIGRpcmVjdGx5PyBJIG5lZWQgdG8gc2VhcmNoIHRoZSBrZXJuZWwgY29kZSBhbmQgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBtZWNoYW5pc20gZm9yIGNyZWF0aW5nIE1ESU8gZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgb3IgZXZlbiwgaWYgdGhlcmUgaXMgc3VjaCBhIHRoaW5nIGFzIGEgdmlydHVhbCBNRElPIGJ1cyBJIGNvdWxkIGxldmVyYWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvX2RldmljZV9yZWdpc3RlcnxtZGlvX2RldmljZV9jcmVhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDQ2PXN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ2NzpcdHN3aXRjaF9tZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKGJ1cywgMzEpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY4LVx0aWYgKElTX0VSUihzd2l0Y2hfbWRpb2RldikpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDc0Olx0cmV0ID0gbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3dpdGNoX21kaW9kZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDc1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz01Mj1zdGF0aWMgaW50IG9mX21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICptZGlvLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTU4LVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NTk6XHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKG1kaW8sIGFkZHIpO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNjAtXHRpZiAoSVNfRVJSKG1kaW9kZXYpKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTY4LVx0LyogQWxsIGRhdGEgaXMgbm93IHN0b3JlZCBpbiB0aGUgbWRpb2RldiBzdHJ1Y3Q7IHJlZ2lzdGVyIGl0LiAqL1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6Njk6XHRyYyA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKG1kaW9kZXYpO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNzAtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYz0zMTA9c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfbWRpb2RldihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMTQtXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozMTU6XHRtZGlvID0gbWRpb19kZXZpY2VfY3JlYXRlKGJ1cywgYWRkcik7XG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMTYtXHRpZiAoSVNfRVJSKG1kaW8pKVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1wbGF0LmM9MzM3PXN0YXRpYyBpbnQgeHBjc19wbGF0X2luaXRfZGV2KHN0cnVjdCBkd194cGNzX3BsYXQgKnB4cGNzKVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1wbGF0LmMtMzQzLVx0LyogVGhlcmUgaXMgYSBzaW5nbGUgbWVtb3J5LW1hcHBlZCBEVyBYUENTIGRldmljZSAqL1xuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXBsYXQuYzozNDQ6XHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKHB4cGNzLVx1MDAzZWJ1cywgMCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jLTM0NS1cdGlmIChJU19FUlIobWRpb2RldikpXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXBsYXQuYy0zNTYtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jOjM1NzpcdHJldCA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKG1kaW9kZXYpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXBsYXQuYy0zNTgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM9MTYyMT1zdHJ1Y3QgZHdfeHBjcyAqeHBjc19jcmVhdGVfbWRpb2RldihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xNjI1LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM6MTYyNjpcdG1kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCBhZGRyKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTE2MjctXHRpZiAoSVNfRVJSKG1kaW9kZXYpKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEwODA9c3RhdGljIGludCBhbjg4MTFoYl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwOTgtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwOTk6XHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKHBoeWRldi1cdTAwM2VtZGlvLmJ1cyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExMDAtXHRcdFx0XHQgICAgIHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgJiM0MzsgRU44ODExSF9QQlVTX0FERFJfT0ZGUyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTEwMy1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjExMDQ6XHRyZXQgPSBtZGlvX2RldmljZV9yZWdpc3RlcihtZGlvZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExMDUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTI2LS8qKlxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6Mjc6ICogbWRpb19kZXZpY2VfcmVnaXN0ZXJfcmVzZXQgLSBSZWFkIGFuZCBpbml0aWFsaXplIHRoZSByZXNldCBwcm9wZXJ0aWVzIG9mXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0yOC0gKlx0XHRcdFx0YW4gbWRpbyBkZXZpY2Vcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0zMi0gKi9cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjMzOnN0YXRpYyBpbnQgbWRpb19kZXZpY2VfcmVnaXN0ZXJfcmVzZXQoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMzQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jPTExMz1zdGF0aWMgdm9pZCBtZGlvX2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xMTgtXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYzoxMTk6c3RydWN0IG1kaW9fZGV2aWNlICptZGlvX2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xMjAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE0Mi19XG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYzoxNDM6RVhQT1JUX1NZTUJPTChtZGlvX2RldmljZV9jcmVhdGUpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTQ0LVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTQ1LS8qKlxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTQ2OiAqIG1kaW9fZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIG1kaW8gZGV2aWNlIG9uIHRoZSBNRElPIGJ1c1xuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTQ3LSAqIEBtZGlvZGV2OiBtZGlvX2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTUwLSAqL1xuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTUxOmludCBtZGlvX2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNTIte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE3Mi19XG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYzoxNzM6RVhQT1JUX1NZTUJPTChtZGlvX2RldmljZV9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNzQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTgwLSAqIFRoaXMgZG9lc24mIzM5O3QgZnJlZSB0aGUgbWRpb19kZXZpY2UgaXRzZWxmLCBpdCBtZXJlbHkgcmV2ZXJzZXMgdGhlIGVmZmVjdHNcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE4MTogKiBvZiBtZGlvX2RldmljZV9yZWdpc3RlcigpLiBVc2UgbWRpb19kZXZpY2VfZnJlZSgpIHRvIGZyZWUgdGhlIGRldmljZVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTgyLSAqIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYz0xOTE9aW50IG1kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xOTgtXHRpZiAobWRpb2Rldi1cdTAwM2VmbGFncyBcdTAwMjYgTURJT19ERVZJQ0VfRkxBR19QSFkpIHtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE5OTpcdFx0ZXJyID0gbWRpb19kZXZpY2VfcmVnaXN0ZXJfcmVzZXQobWRpb2Rldik7XG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0yMDAtXHRcdGlmIChlcnIpXG4tLVxuaW5jbHVkZS9saW51eC9tZGlvLmg9OTQ9dm9pZCBtZGlvX2RldmljZV9mcmVlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5pbmNsdWRlL2xpbnV4L21kaW8uaDo5NTpzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9fZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcik7XG5pbmNsdWRlL2xpbnV4L21kaW8uaDo5NjppbnQgbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcbmluY2x1ZGUvbGludXgvbWRpby5oLTk3LXZvaWQgbWRpb19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MTE4CgkJCQkJCQlvdXRwdXQ6IDEzNQoJCQkJCQkJdGhvdWdodHM6IDY4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBGdXp6aW5nIFJlYWNoYWJpbGl0eSBmb3IgTW90b3Jjb21tIFlUOTIxNSBMRUQgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGBkc2FfbG9vcGAg4oCTIHRoZSBtb2NrIERTQSBkcml2ZXIg4oCTIGFuZCB0aGUgTW90b3Jjb21tIFlUOTIxNSBkcml2ZXIgKGBORVRfRFNBX1lUOTIxWGApLiBNeSB1bmRlcnN0YW5kaW5nIGlzLCB0aGUgWVQ5MjE1IGNvbW11bmljYXRlcyB3aXRoIGl0cyBzd2l0Y2ggY2hpcCB2aWEgTURJTywgdXNpbmcgYHl0OTIxeF9yZWdfb3BzX21kaW9gLiBUaGUgZHJpdmVyIHByb2JlcyBiYXNlZCBvbiBhbiBNRElPIGRldmljZSBtYXRjaGluZyB0aGUgJiMzNDttb3RvcmNvbW0seXQ5MjE1JiMzNDsgT0YgY29tcGF0aWJsZSBzdHJpbmcgb3IgZHJpdmVyIG5hbWUuCgpOb3csIGNvbnNpZGVyaW5nIHRoZSBRRU1VL0dDRSB4ODZfNjQgc2V0dXAsIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlcmUmIzM5O3Mgbm8gcGh5c2ljYWwgTW90b3Jjb21tIFlUOTIxNSBoYXJkd2FyZSBwcmVzZW50LCBhbmQsIGNydWNpYWxseSwgbm8gZW11bGF0aW9uIG9mIHRoaXMgc3BlY2lmaWMgQVNJQy4KClJlZmVycmluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBzZWN0aW9uIDIgZmxhZ3MgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0Oy4gVGhpcyBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IHZlbmRvci1zcGVjaWZpYyBzdHVmZiBsaWtlIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCBkZXBlbmQgb24gcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnLiBTZWN0aW9uIDEgcmVpbmZvcmNlcyB0aGlzIOKAkyByZWFjaGFiaWxpdHkgaXMga2V5LiBGdXp6aW5nIG9ubHkgd29ya3Mgb24gY29kZSB0aGF0ICpleGVjdXRlcyogaW4gdGhlc2UgZW52aXJvbm1lbnRzLCB3aGljaCBtZWFucyB3ZSBjYW4gb25seSB0ZXN0IGRldmljZXMgdGhhdCBhcmUgZW11bGF0ZWQgc3VjaCBhcyBVU0IgZ2FkZ2V0cywgb3IgbmV0ZGV2cyBldGMuIElmIHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgd2UgZG9uJiMzOTt0IGZ1enogaXQuCgpPa2F5LCBsZXQmIzM5O3MgYmUgYWJzb2x1dGVseSBzdXJlLiBUaGUgbW9kaWZpZWQgZmlsZSBpcyBgZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBgTkVUX0RTQV9ZVDkyMVhgIGRyaXZlci4gVGhlIGZ1bmN0aW9uIGNoYW5nZWQgaXMgYHl0OTIxeF9sZWRfYmxpbmtfc2V0YCwgYW4gaW50ZXJuYWwgTEVEIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24gZm9yIHRoZSBZVDkyMTUuIEl0IHJlcXVpcmVzIHRoZSBZVDkyMTUgc3dpdGNoIHRvIGJlIHByb2JlZCBhbmQgYm91bmQgdG8gYW4gTURJTyBkZXZpY2UuIFRoaXMgcmVxdWlyZXMgdGhlIHBoeXNpY2FsIFlUOTIxNSBBU0lDLgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgcGFydGljdWxhciBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCwgbm9yIGVtdWxhdGVkLCBpbiBRRU1VL0dDRSwgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuCgpMZXQmIzM5O3Mgc3VtbWFyaXplOgotICAgYFdvcnRoRnV6emluZ2A6IGZhbHNlCi0gICBgRm9jdXNTeW1ib2xzYDogW10KLSAgIGBFbmFibGVDb25maWdzYDogW10KLSAgIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggdGFyZ2V0cyBgeXQ5MjF4X2xlZF9ibGlua19zZXQoKWAgd2l0aGluIGBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY2AsIHdoaWNoLCBhcyBwYXJ0IG9mIHRoZSBgTkVUX0RTQV9ZVDkyMVhgIGRyaXZlciwgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgc3dpdGNoIGhhcmR3YXJlIChZVDkyMTUgQVNJQyBvbiBhbiBNRElPIGJ1cykuIFNpbmNlIHdlIGFyZSBpbiBRRU1VL0dDRSwgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuCgpOb3csIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgeXQ5MjF4X2xlZF9ibGlua19zZXQoKSBpbiBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChORVRfRFNBX1lUOTIxWCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQyBoYXJkd2FyZSAoTW90b3Jjb21tIFlUOTIxNSkgb24gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB5dDkyMXhfbGVkX2JsaW5rX3NldCgpIGluIGRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKE5FVF9EU0FfWVQ5MjFYKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDIGhhcmR3YXJlIChNb3RvcmNvbW0gWVQ5MjE1KSBvbiBhbiBNRElPIGJ1cyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNTowMi41MTg1MjQwNjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTMwMjU5MTY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHl0OTIxeF9sZWRfYmxpbmtfc2V0KCkgaW4gZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIE1vdG9yY29tbSBZVDkyMTUgZXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoTkVUX0RTQV9ZVDkyMVgpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIHBoeXNpY2FsIEFTSUMgaGFyZHdhcmUgKE1vdG9yY29tbSBZVDkyMTUpIG9uIGFuIE1ESU8gYnVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MDIuNTE4NTMwNjIzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTk1NTU1NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxMGRjNzRkOTJjMjBiZTQ1MTZhNGQ2NDlkYjhkNmE4MDJmYzE2MWM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDYgMDA6MjU6MDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMgYi9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY1xcbmluZGV4IDdkM2MwZjY4ZDhmZmIuLjg3YTZiOWNmNjA2ODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY1xcbkBAIC0xMDcsNiArMTA3LDggQEAgeXQ5MjF4X2xlZF9ibGlua19zZXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGdyb3VwLFxcbiBcXHRcXHQgICAgICAgWVQ5MjFYX0xFRF9EVVRZKDEsIDIpO1xcbiBcXG4gXFx0XFx0dXNlX2N5Y2xlID0gZmFsc2U7XFxuK1xcdH0gZWxzZSBpZiAoISpvbnAgfHwgISpvZmZwKSB7XFxuK1xcdFxcdHJldHVybiB5dDkyMXhfbGVkX2ZvcmNlX3NldChwcml2LCBwb3J0LCBncm91cCwgKm9ucCk7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdHJlcyA9IHl0OTIxeF9sZWRfYmxpbmtfc2VsZWN0KHByaXYsICpvbnAsICpvZmZwLCBcXHUwMDI2Y3ljbGUsIFxcdTAwMjZkdXR5KTtcXG4gXFx0XFx0aWYgKHJlcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MDIuOTE4OTA0NDg1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozODkwMjE5OTY4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgeXQ5MjF4X2xlZF9ibGlua19zZXQoKSBpbiBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChORVRfRFNBX1lUOTIxWCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQyBoYXJkd2FyZSAoTW90b3Jjb21tIFlUOTIxNSkgb24gYW4gTURJTyBidXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEwZGM3NGQ5MmMyMGJlNDUxNmE0ZDY0OWRiOGQ2YTgwMmZjMTYxYzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDAwOjI1OjAxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMgYi9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY1xuaW5kZXggN2QzYzBmNjhkOGZmYi4uODdhNmI5Y2Y2MDY4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY1xuQEAgLTEwNyw2ICsxMDcsOCBAQCB5dDkyMXhfbGVkX2JsaW5rX3NldChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZ3JvdXAsXG4gXHRcdCAgICAgICBZVDkyMVhfTEVEX0RVVFkoMSwgMik7XG4gXG4gXHRcdHVzZV9jeWNsZSA9IGZhbHNlO1xuK1x0fSBlbHNlIGlmICghKm9ucCB8fCAhKm9mZnApIHtcbitcdFx0cmV0dXJuIHl0OTIxeF9sZWRfZm9yY2Vfc2V0KHByaXYsIHBvcnQsIGdyb3VwLCAqb25wKTtcbiBcdH0gZWxzZSB7XG4gXHRcdHJlcyA9IHl0OTIxeF9sZWRfYmxpbmtfc2VsZWN0KHByaXYsICpvbnAsICpvZmZwLCBcdTAwMjZjeWNsZSwgXHUwMDI2ZHV0eSk7XG4gXHRcdGlmIChyZXMpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNTowMi45MTg5MDYwMTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Njc1MzM2NDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBMRUQgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgdGhlIGNoYW5nZSBpcyBoaXR0aW5nIGBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuY2AuIEltbWVkaWF0ZWx5LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBiZWluZyBpbXBhY3RlZCBhbmQgd2hhdCdzIGNvbm5lY3RlZCB0byBpdC4gSSdtIHRoaW5raW5nLCBcInJpZ2h0LCBgbGVkcy5jYCBpbiB0aGUgTW90b3Jjb21tIERTQSBjb250ZXh0IC0gd2hhdCdzIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZSBoZXJlPyBXaGF0IGhhcmR3YXJlIGRvZXMgdGhpcyB0b3VjaD9cIiBMZXQncyBzdGFydCB3aXRoIGEgZmlsZSBpbnNwZWN0aW9uLCBtZW50YWxseSByZXZpZXdpbmcgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyBhbmQgb3ZlcmFsbCBoYXJkd2FyZSBhcmNoaXRlY3R1cmUgdG8gdW5kZXJzdGFuZCB0aGUgcG9zc2libGUgcmVhY2ggb2YgdGhpcyBjaGFuZ2UuXG5cbk5vdyBpdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJ20gZ29pbmcgdG8gcXVpY2tseSB1c2UgYHJlYWQtZmlsZWAgKG9yIGBncmVwcGVyYCBpZiBJIG5lZWQgdG8gc2VhcmNoIG1vcmUgYnJvYWRseSkgdG8gYXNzZXNzIHRoZSBjaGFuZ2UuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgYmVpbmcgbW9kaWZpZWQsIGlkZW50aWZ5IHRoZSBjb3JlIGxvZ2ljLCBhbmQgcXVpY2tseSBldmFsdWF0ZSBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzMiwiT3V0cHV0VG9rZW5zIjo2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MDkuNTk0MjQ2MzI0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkwOlxcdFxcbiAgOTE6XFx0c3RhdGljIGludFxcbiAgOTI6XFx0eXQ5MjF4X2xlZF9ibGlua19zZXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGdyb3VwLFxcbiAgOTM6XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nICpvbnAsIHVuc2lnbmVkIGxvbmcgKm9mZnApXFxuICA5NDpcXHR7XFxuICA5NTpcXHRcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbiAgOTY6XFx0XFx0dW5zaWduZWQgc2hvcnQgY3ljbGU7XFxuICA5NzpcXHRcXHR1bnNpZ25lZCBjaGFyIGR1dHk7XFxuICA5ODpcXHRcXHRib29sIHVzZV9jeWNsZTtcXG4gIDk5OlxcdFxcdHUzMiBjdHJsO1xcbiAxMDA6XFx0XFx0dTMyIG1hc2s7XFxuIDEwMTpcXHRcXHR1MzIgdmFsO1xcbiAxMDI6XFx0XFx0aW50IHJlcztcXG4gMTAzOlxcdFxcbiAxMDQ6XFx0XFx0aWYgKCEqb25wIFxcdTAwMjZcXHUwMDI2ICEqb2ZmcCkge1xcbiAxMDU6XFx0XFx0XFx0Y3ljbGUgPSBZVDkyMVhfTEVEX0JMSU5LX0RFRjtcXG4gMTA2OlxcdFxcdFxcdGR1dHkgPSAocHAtXFx1MDAzZWxlZF9kdXR5X21hc2sgXFx1MDAyNiB+QklUKGdyb3VwKSkgPyBwcC1cXHUwMDNlbGVkX2R1dHkgOlxcbiAxMDc6XFx0XFx0XFx0ICAgICAgIFlUOTIxWF9MRURfRFVUWSgxLCAyKTtcXG4gMTA4OlxcdFxcbiAxMDk6XFx0XFx0XFx0dXNlX2N5Y2xlID0gZmFsc2U7XFxuIDExMDpcXHRcXHR9IGVsc2UgaWYgKCEqb25wIHx8ICEqb2ZmcCkge1xcbiAxMTE6XFx0XFx0XFx0cmV0dXJuIHl0OTIxeF9sZWRfZm9yY2Vfc2V0KHByaXYsIHBvcnQsIGdyb3VwLCAqb25wKTtcXG4gMTEyOlxcdFxcdH0gZWxzZSB7XFxuIDExMzpcXHRcXHRcXHRyZXMgPSB5dDkyMXhfbGVkX2JsaW5rX3NlbGVjdChwcml2LCAqb25wLCAqb2ZmcCwgXFx1MDAyNmN5Y2xlLCBcXHUwMDI2ZHV0eSk7XFxuIDExNDpcXHRcXHRcXHRpZiAocmVzKVxcbiAxMTU6XFx0XFx0XFx0XFx0cmV0dXJuIHJlcztcXG4gMTE2OlxcdFxcbiAxMTc6XFx0XFx0XFx0dXNlX2N5Y2xlID0gY3ljbGUgXFx1MDAzYyBZVDkyMVhfTEVEX0JMSU5LX0RFRjtcXG4gMTE4OlxcdFxcbiAxMTk6XFx0XFx0XFx0aWYgKHVzZV9jeWNsZSBcXHUwMDI2XFx1MDAyNiBjeWNsZSAhPSBwcC1cXHUwMDNlbGVkX2N5Y2xlIFxcdTAwMjZcXHUwMDI2XFxuIDEyMDpcXHRcXHRcXHQgICAgKHBwLVxcdTAwM2VsZWRfY3ljbGVfbWFzayBcXHUwMDI2IH5CSVQoZ3JvdXApKSlcXG4gMTIxOlxcdFxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gMTIyOlxcdFxcdFxcdGlmIChkdXR5ICE9IHBwLVxcdTAwM2VsZWRfZHV0eSBcXHUwMDI2XFx1MDAyNiAocHAtXFx1MDAzZWxlZF9kdXR5X21hc2sgXFx1MDAyNiB+QklUKGdyb3VwKSkpXFxuIDEyMzpcXHRcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIDEyNDpcXHRcXHR9XFxuIDEyNTpcXHRcXG4gMTI2OlxcdFxcdHBwLVxcdTAwM2VsZWRfY3ljbGVfbWFzayBcXHUwMDI2PSB+QklUKGdyb3VwKTtcXG4gMTI3OlxcdFxcdHBwLVxcdTAwM2VsZWRfZHV0eV9tYXNrIFxcdTAwMjY9IH5CSVQoZ3JvdXApO1xcbiAxMjg6XFx0XFxuIDEyOTpcXHRcXHQvKiBUaGUgY2hpcCBzZWVtcyB0byBqYW0gYSB3aGlsZSBpZiBjaGFuZ2luZyBkdXR5IGRpcmVjdGx5ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjA5LjU5NDM1MzkzNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDM3NjUzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb3RvcmNvbW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTgzPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTg0LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjg1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTIxPW9iai15XFx0XFx0XFx0XFx0Kz0gbWljcm9jaGlwL1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToyMjpvYmoteVxcdFxcdFxcdFxcdCs9IG1vdG9yY29tbS9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtMjMtb2JqLXlcXHRcXHRcXHRcXHQrPSBtdjg4ZTZ4eHgvXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz00NzcyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3NzM6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtb3RvcmNvbW0seXQ5MjE1XFxcIiB9LFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ3NzQtXFx0e31cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MDkuNjQ0NzM5OTgxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM5MDA1MzIxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIGNvbnNpZGVyaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1vdG9yQ29tbSBEU0EgRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgTW90b3JDb21tIERTQSBkcml2ZXIuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vYC4gVGhhdCdzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHdpbGwgYmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNwZWNpZmljIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgRFNBIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGZvY3VzIHdpbGwgYmUgb24gdGhlIGBLY29uZmlnYCBmaWxlIGFuZCB0aGUgZHJpdmVyJ3Mgc291cmNlIGNvZGUgaXRzZWxmLiBUaGUgS2NvbmZpZyB3aWxsIHRlbGwgbWUgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyDigJMgd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgd2hhdCBvdGhlciBtb2R1bGVzIGFyZSByZXF1aXJlZCwgd2hhdCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyBhcmUgc3VwcG9ydGVkLCBhbmQgd2hpY2ggc3ltYm9scyBhcmUgY29uZmlndXJhYmxlLiBUaGlzIGlzIGtleSBiZWNhdXNlIGl0IHNoYXBlcyB0aGUgZW50aXJlIGxhbmRzY2FwZSBvZiB3aGF0J3MgKnBvc3NpYmxlKiB3aXRoIHRoaXMgZHJpdmVyIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0uIFRoZW4gSSdsbCBkaXZlIGludG8gdGhlIGRyaXZlciBpdHNlbGYsIGV4YW1pbmluZyB0aGUgY3JpdGljYWwgZnVuY3Rpb25zOiBpbml0aWFsaXphdGlvbiwgcHJvYmUsIGFuZCByZW1vdmFsLiBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gaG93IGl0IGhhbmRsZXMgcmVnaXN0ZXIgYWNjZXNzLCBpbnRlcnJ1cHQgaGFuZGxpbmcgKGlmIGFueSksIGFuZCBob3cgaXQgcmVnaXN0ZXJzIHdpdGggdGhlIERTQSBjb3JlLiBXaGF0J3MgdGhlIGludGVycnVwdCBzZXR1cCwgd2hhdCBpcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBuZXRfZGV2aWNlIHJlZ2lzdGVyZWQsIGhvdyBkb2VzIHRoZSBpbml0aWFsaXphdGlvbiBmbG93IGdldCBjb25maWd1cmVkIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIGhvdyBkb2VzIGl0IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBob29rcyBmb3IgRFNBIHRvIGRvIGl0cyBtYWdpYz8gSSdsbCBhbHNvIGxvb2sgZm9yIGFueSB2ZW5kb3Itc3BlY2lmaWMgZXh0ZW5zaW9ucyBvciBxdWlya3MuIEZpbmFsbHksIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyB2ZXJzaW9uIHByb3Blcmx5IGhhbmRsZXMgYW55IHNlY3VyaXR5IHJlcXVpcmVtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE4NSwiT3V0cHV0VG9rZW5zIjo3MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjEyLjAzNDc5NzExWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTkVUX0RTQV9ZVDkyMVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfWVQ5MjFYXFxuICAgNTpcXHRcXHRzZWxlY3QgTkVUX0lFRUU4MDIxUV9IRUxQRVJTIGlmIERDQlxcbiAgIDY6XFx0XFx0aGVscFxcbiAgIDc6XFx0XFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE1vdG9yY29tbSBZVDkyMTUgZXRoZXJuZXQgc3dpdGNoXFxuICAgODpcXHRcXHQgIGNoaXAuXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBORVRfRFNBX1lUOTIxWF9MRURTXFxuICAxMTpcXHRcXHRib29sIFxcXCJMRUQgc3VwcG9ydCBmb3IgTW90b3Jjb21tIFlUOTIxNVxcXCJcXG4gIDEyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTM6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX1lUOTIxWFxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1ORVRfRFNBX1lUOTIxWFxcbiAgMTU6XFx0XFx0aGVscFxcbiAgMTY6XFx0XFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIExFRHMgYXR0YWNoZWQgdG8gdGhlXFxuICAxNzpcXHRcXHQgIE1vdG9yY29tbSBZVDkyMTUgc3dpdGNoIGNoaXBzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNToxMi4wMzQ4NjMxNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQxMjcyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ5dDkyMXhfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyNTYxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozMjpzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMy1cXHR1bnNpZ25lZCBpbnQgc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQwLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQxOi8qIE11c3QgYWdyZWUgd2l0aCB5dDkyMXhfbWliXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDItICpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ2LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHl0OTIxeF9taWJfZGVzY3NbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00OC1cXHRNSUJfREVTQygxLCBZVDkyMVhfTUlCX0RBVEFfUlhfQlJPQURDQVNULCBOVUxMKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTk4LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjk5OnN0cnVjdCB5dDkyMXhfaW5mbyB7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTAwLVxcdGNvbnN0IGNoYXIgKm5hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMDYtXFx0dTE2IGludGVybmFsX21hc2s7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA3OlxcdC8qIFRPRE86IHNlZSBjb21tZW50cyBpbiB5dDkyMXhfZHNhX3BoeWxpbmtfZ2V0X2NhcHMoKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwOC1cXHR1MTYgZXh0ZXJuYWxfbWFzaztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTY6c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyMXhfaW5mbyB5dDkyMXhfaW5mb3NbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTctXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjE2NTpzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvIHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xNjYtXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTE4MS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxODI6I2RlZmluZSB0b195dDkyMXhfcHJpdihfZHMpIGNvbnRhaW5lcl9vZl9jb25zdChfZHMsIHN0cnVjdCB5dDkyMXhfcHJpdiwgZHMpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTgzLSNkZWZpbmUgdG9fZGV2aWNlKHByaXYpICgocHJpdiktXFx1MDAzZWRzLmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTE5MD1zdGF0aWMgdTMyIGV0aGFkZHJfbG8yX3RvX3UzMihjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTk0LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjE5NTpzdGF0aWMgaW50IHl0OTIxeF9yZWdfbWRpb19yZWFkKHZvaWQgKmNvbnRleHQsIHUzMiByZWcsIHUzMiAqdmFscClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xOTYte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjE5NzpcXHRzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvICptZGlvID0gY29udGV4dDtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xOTgtXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IG1kaW8tXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTIzNS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoyMzY6c3RhdGljIGludCB5dDkyMXhfcmVnX21kaW9fd3JpdGUodm9pZCAqY29udGV4dCwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yMzcte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjIzODpcXHRzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvICptZGlvID0gY29udGV4dDtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yMzktXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IG1kaW8tXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTI3MS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoyNzI6c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyMXhfcmVnX29wcyB5dDkyMXhfcmVnX29wc19tZGlvID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjI3MzpcXHQucmVhZCA9IHl0OTIxeF9yZWdfbWRpb19yZWFkLFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjI3NDpcXHQud3JpdGUgPSB5dDkyMXhfcmVnX21kaW9fd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMjc1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yNzgtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Mjc5OnN0YXRpYyBpbnQgeXQ5MjF4X2ludGlmX3dhaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTI4MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yODItXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MjgzOlxcdHJldHVybiB5dDkyMXhfcmVnX3dhaXQocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yODQtXFx0XFx0XFx0ICAgICAgIFxcdTAwMjZ2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9Mjg3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoyODg6eXQ5MjF4X2ludGlmX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZywgdTE2ICp2YWxwKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTI4OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0yOTUtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Mjk2OlxcdHJlcyA9IHl0OTIxeF9pbnRpZl93YWl0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTI5Ny1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzAzLVxcdCAgICAgICBZVDkyMVhfTUJVU19DVFJMX1JFQUQ7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzA0OlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMwNS1cXHRpZiAocmVzKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMwNi1cXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjMwNzpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMwOC1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjMxMTpcXHRyZXMgPSB5dDkyMXhfaW50aWZfd2FpdChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMTItXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zMTMtXFx0XFx0cmV0dXJuIHJlcztcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozMTQ6XFx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIFlUOTIxWF9JTlRfTUJVU19ESU4sIFxcdTAwMjZ2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMxNS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MzI2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozMjc6eXQ5MjF4X2ludGlmX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTMzMi1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzozMzM6XFx0cmVzID0geXQ5MjF4X2ludGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzM0LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNDAtXFx0ICAgICAgIFlUOTIxWF9NQlVTX0NUUkxfV1JJVEU7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzQxOlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0Mi1cXHRpZiAocmVzKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0My1cXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM0NDpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19ET1VULCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0NS1cXHRpZiAocmVzKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0Ni1cXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM0NzpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM0OC1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzUwLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM1MTpcXHRyZXR1cm4geXQ5MjF4X2ludGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzUyLX1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNTMtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzU0OnN0YXRpYyBpbnQgeXQ5MjF4X21idXNfaW50X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM1NS17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzU2OlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IG1idXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzU3LVxcdHUxNiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zNjMtXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM2NDpcXHRyZXMgPSB5dDkyMXhfaW50aWZfcmVhZChwcml2LCBwb3J0LCByZWcsIFxcdTAwMjZ2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM2NS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTM3Mj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MzczOnl0OTIxeF9tYnVzX2ludF93cml0ZShzdHJ1Y3QgbWlpX2J1cyAqbWJ1cywgaW50IHBvcnQsIGludCByZWcsIHUxNiBkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM3NC17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Mzc1OlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IG1idXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMzc2LVxcdGludCByZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zODEtXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM4MjpcXHRyZXMgPSB5dDkyMXhfaW50aWZfd3JpdGUocHJpdiwgcG9ydCwgcmVnLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0zODMtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0zODg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjM4OTp5dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTM5MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MDEtXFx0bWJ1cy1cXHUwMDNlcHJpdiA9IHByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDAyOlxcdG1idXMtXFx1MDAzZXJlYWQgPSB5dDkyMXhfbWJ1c19pbnRfcmVhZDtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MDM6XFx0bWJ1cy1cXHUwMDNld3JpdGUgPSB5dDkyMXhfbWJ1c19pbnRfd3JpdGU7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDA0LVxcdG1idXMtXFx1MDAzZXBhcmVudCA9IGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQxNS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MTY6c3RhdGljIGludCB5dDkyMXhfZXh0aWZfd2FpdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQxOS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MjA6XFx0cmV0dXJuIHl0OTIxeF9yZWdfd2FpdChwcml2LCBZVDkyMVhfRVhUX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJULFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQyMS1cXHRcXHRcXHQgICAgICAgXFx1MDAyNnZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz00MjQ9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQyNTp5dDkyMXhfZXh0aWZfcmVhZChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgKnZhbHApXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQzMi1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MzM6XFx0cmVzID0geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDM0LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NDAtXFx0ICAgICAgIFlUOTIxWF9NQlVTX0NUUkxfVFlQRV9DMjIgfCBZVDkyMVhfTUJVU19DVFJMX1JFQUQ7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDQxOlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ0Mi1cXHRpZiAocmVzKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ0My1cXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ0NDpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9FWFRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ0NS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ0ODpcXHRyZXMgPSB5dDkyMXhfZXh0aWZfd2FpdChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NDktXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NTAtXFx0XFx0cmV0dXJuIHJlcztcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0NTE6XFx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIFlUOTIxWF9FWFRfTUJVU19ESU4sIFxcdTAwMjZ2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ1Mi1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9NDYzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0NjQ6eXQ5MjF4X2V4dGlmX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ2OS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0NzA6XFx0cmVzID0geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDcxLVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NzctXFx0ICAgICAgIFlUOTIxWF9NQlVTX0NUUkxfVFlQRV9DMjIgfCBZVDkyMVhfTUJVU19DVFJMX1dSSVRFO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3ODpcXHRyZXMgPSB5dDkyMXhfcmVnX3VwZGF0ZV9iaXRzKHByaXYsIFlUOTIxWF9FWFRfTUJVU19DVFJMLCBtYXNrLCBjdHJsKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NzktXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00ODAtXFx0XFx0cmV0dXJuIHJlcztcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0ODE6XFx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfRVhUX01CVVNfRE9VVCwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00ODItXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00ODMtXFx0XFx0cmV0dXJuIHJlcztcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0ODQ6XFx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfRVhUX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJUKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00ODUtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ4Ny1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0ODg6XFx0cmV0dXJuIHl0OTIxeF9leHRpZl93YWl0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ4OS19XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDkwLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ5MTpzdGF0aWMgaW50IHl0OTIxeF9tYnVzX2V4dF9yZWFkKHN0cnVjdCBtaWlfYnVzICptYnVzLCBpbnQgcG9ydCwgaW50IHJlZylcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00OTIte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ5MzpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ5NC1cXHR1MTYgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDk3LVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0OTg6XFx0cmVzID0geXQ5MjF4X2V4dGlmX3JlYWQocHJpdiwgcG9ydCwgcmVnLCBcXHUwMDI2dmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00OTktXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz01MDY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjUwNzp5dDkyMXhfbWJ1c19leHRfd3JpdGUoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MDgte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjUwOTpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTUxMC1cXHRpbnQgcmVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTEyLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1MTM6XFx0cmVzID0geXQ5MjF4X2V4dGlmX3dyaXRlKHByaXYsIHBvcnQsIHJlZywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTE0LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9NTE5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1MjA6eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTMzLVxcdC8qIFRPRE86IGM0NT8gKi9cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1MzQ6XFx0bWJ1cy1cXHUwMDNlcmVhZCA9IHl0OTIxeF9tYnVzX2V4dF9yZWFkO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjUzNTpcXHRtYnVzLVxcdTAwM2V3cml0ZSA9IHl0OTIxeF9tYnVzX2V4dF93cml0ZTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MzYtXFx0bWJ1cy1cXHUwMDNlcGFyZW50ID0gZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTQ3LS8qIFJlYWQgYW5kIGhhbmRsZSBvdmVyZmxvdyBvZiAzMmJpdCBNSUJzLiBNSUIgYnVmZmVyIG11c3QgYmUgemVyb2VkIGJlZm9yZS4gKi9cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1NDg6c3RhdGljIGludCB5dDkyMXhfcmVhZF9taWIoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NDkte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjU1MDpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTU1MS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0b19kZXZpY2UocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTUyOlxcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcXHUwMDI2cHAtXFx1MDAzZW1pYjtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NTMtXFx0aW50IHJlcyA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTU0LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjU1NTpcXHQvKiBSZWFkaW5nIG9mIHl0OTIxeF9wb3J0OjptaWIgaXMgbm90IHByb3RlY3RlZCBieSBhIGxvY2sgYW5kIGl0J3MgdmFpblxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTU1Ni1cXHQgKiB0byBrZWVwIGl0cyBjb25zaXN0ZW5jeSwgc2luY2Ugd2UgaGF2ZSB0byByZWFkIHJlZ2lzdGVycyBvbmUgYnkgb25lXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NjItXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTYzOlxcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh5dDkyMXhfbWliX2Rlc2NzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTY0OlxcdFxcdGNvbnN0IHN0cnVjdCB5dDkyMXhfbWliX2Rlc2MgKmRlc2MgPSBcXHUwMDI2eXQ5MjF4X21pYl9kZXNjc1tpXTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01NjUtXFx0XFx0dTMyIHJlZyA9IFlUOTIxWF9NSUJuX0RBVEEwKHBvcnQpICsgZGVzYy1cXHUwMDNlb2Zmc2V0O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTY5LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjU3MDpcXHRcXHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnLCBcXHUwMDI2dmFsMCk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTcxLVxcdFxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01ODItXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NTgzOlxcdFxcdFxcdHJlcyA9IHl0OTIxeF9yZWdfcmVhZChwcml2LCByZWcgKyA0LCBcXHUwMDI2dmFsMSk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTg0LVxcdFxcdFxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02MDYtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjA3OnN0YXRpYyB2b2lkIHl0OTIxeF9wb2xsX21pYihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjA4LXtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2MDk6XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IGNvbnRhaW5lcl9vZl9jb25zdCh3b3JrLCBzdHJ1Y3QgeXQ5MjF4X3BvcnQsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjEwLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBtaWJfcmVhZC53b3JrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2MTE6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gKHZvaWQgKikocHAgLSBwcC1cXHUwMDNlaW5kZXgpIC1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2MTI6XFx0XFx0XFx0XFx0ICAgb2Zmc2V0b2Yoc3RydWN0IHl0OTIxeF9wcml2LCBwb3J0cyk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjEzLVxcdHVuc2lnbmVkIGxvbmcgZGVsYXkgPSBZVDkyMVhfU1RBVFNfSU5URVJWQUxfSklGRklFUztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYxNy1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjE4OlxcdHJlcyA9IHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02MTktXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz02MjY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2Mjc6eXQ5MjF4X2RzYV9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1MzIgc3RyaW5nc2V0LFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYyOC1cXHRcXHQgICAgICAgdWludDhfdCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYzMi1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2MzM6XFx0Zm9yIChzaXplX3QgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHl0OTIxeF9taWJfZGVzY3MpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2MzQ6XFx0XFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFxcdTAwMjZ5dDkyMXhfbWliX2Rlc2NzW2ldO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTYzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTY0MT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY0Mjp5dDkyMXhfZHNhX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVpbnQ2NF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY0My17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjQ0OlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2NDU6XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFxcdTAwMjZwcml2LVxcdTAwM2Vwb3J0c1twb3J0XTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2NDY6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY0Ny1cXHRzaXplX3QgajtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY0OS1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjUwOlxcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NTEtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NTMtXFx0aiA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjU0OlxcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh5dDkyMXhfbWliX2Rlc2NzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjU1OlxcdFxcdGNvbnN0IHN0cnVjdCB5dDkyMXhfbWliX2Rlc2MgKmRlc2MgPSBcXHUwMDI2eXQ5MjF4X21pYl9kZXNjc1tpXTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NTYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NjQtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjY1OnN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjcxLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY3MjpcXHRmb3IgKHNpemVfdCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoeXQ5MjF4X21pYl9kZXNjcyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY3MzpcXHRcXHRjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjICpkZXNjID0gXFx1MDAyNnl0OTIxeF9taWJfZGVzY3NbaV07XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9NjgyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjgzOnl0OTIxeF9kc2FfZ2V0X2V0aF9tYWNfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02ODQtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9ldGhfbWFjX3N0YXRzICptYWNfc3RhdHMpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjg1LXtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo2ODY6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY4NzpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjY4ODpcXHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXFx1MDAyNnBwLVxcdTAwM2VtaWI7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNjg5LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTY5MC1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NjkxOlxcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy02OTItXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz03MTg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3MTk6eXQ5MjF4X2RzYV9nZXRfZXRoX2N0cmxfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03MjAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZXRoX2N0cmxfc3RhdHMgKmN0cmxfc3RhdHMpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzIxLXtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3MjI6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjcyMzpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjcyNDpcXHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXFx1MDAyNnBwLVxcdTAwM2VtaWI7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzI1LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTcyNi1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzI3OlxcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03MjgtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03MzQtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzM1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9ybW9uX2hpc3RfcmFuZ2UgeXQ5MjF4X3Jtb25fcmFuZ2VzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzM2LVxcdHsgMCwgNjQgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTc0Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc0Nzp5dDkyMXhfZHNhX2dldF9ybW9uX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzQ4LVxcdFxcdFxcdCAgc3RydWN0IGV0aHRvb2xfcm1vbl9zdGF0cyAqcm1vbl9zdGF0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc1MC17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NzUxOlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3NTI6XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFxcdTAwMjZwcml2LVxcdTAwM2Vwb3J0c1twb3J0XTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3NTM6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc1NC1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03NTUtXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc1NjpcXHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNzU3LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc1OC1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3NTk6XFx0KnJhbmdlcyA9IHl0OTIxeF9ybW9uX3JhbmdlcztcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03NjAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz03ODM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo3ODQ6eXQ5MjF4X2RzYV9nZXRfc3RhdHM2NChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTc4NS1cXHRcXHQgICAgICAgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzdGF0cylcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03ODYte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjc4NzpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Nzg4OlxcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcXHUwMDI2cHJpdi1cXHUwMDNlcG9ydHNbcG9ydF07XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6Nzg5OlxcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcXHUwMDI2cHAtXFx1MDAzZW1pYjtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy03OTAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz04MTk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MjA6eXQ5MjF4X2RzYV9nZXRfcGF1c2Vfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04MjEtXFx0XFx0XFx0ICAgc3RydWN0IGV0aHRvb2xfcGF1c2Vfc3RhdHMgKnBhdXNlX3N0YXRzKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTgyMi17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODIzOlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MjQ6XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFxcdTAwMjZwcml2LVxcdTAwM2Vwb3J0c1twb3J0XTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MjU6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTgyNi1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04MjctXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjgyODpcXHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODI5LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9ODM1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4MzY6eXQ5MjF4X3NldF9lZWUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZSlcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04Mzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODQ5LVxcdGlmICghIW5ld19tYXNrICE9ICEhcHJpdi1cXHUwMDNlZWVlX3BvcnRzX21hc2spIHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4NTA6XFx0XFx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfUE9OX1NUUkFQX0ZVTkMsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODUxLVxcdFxcdFxcdFxcdFxcdCAgICAgWVQ5MjFYX1BPTl9TVFJBUF9FRUUsICEhbmV3X21hc2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODUzLVxcdFxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODU0OlxcdFxcdHJlcyA9IHl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMocHJpdiwgWVQ5MjFYX1BPTl9TVFJBUF9WQUwsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODU1LVxcdFxcdFxcdFxcdFxcdCAgICAgWVQ5MjFYX1BPTl9TVFJBUF9FRUUsICEhbmV3X21hc2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODYyLVxcdC8qIEVuYWJsZSAvIGRpc2FibGUgcG9ydCBFRUUgKi9cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4NjM6XFx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfRUVFX0NUUkwsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODY0LVxcdFxcdFxcdFxcdCAgICAgWVQ5MjFYX0VFRV9DVFJMX0VObihwb3J0KSwgZW5hYmxlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg2Ni1cXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjg2NzpcXHRyZXMgPSB5dDkyMXhfcmVnX3RvZ2dsZV9iaXRzKHByaXYsIFlUOTIxWF9FRUVuX1ZBTChwb3J0KSxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04NjgtXFx0XFx0XFx0XFx0ICAgICBZVDkyMVhfRUVFX1ZBTF9EQVRBLCBlbmFibGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9ODc1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4NzY6eXQ5MjF4X2RzYV9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICplKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg3Ny17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODc4OlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy04NzktXFx0aW50IHJlcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg4MS1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODgyOlxcdHJlcyA9IHl0OTIxeF9zZXRfZWVlKHByaXYsIHBvcnQsIGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg4My1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg4Ny1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo4ODg6c3RhdGljIGludCB5dDkyMXhfbXR1X2ZldGNoKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtODg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTg5NT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6ODk2Onl0OTIxeF9kc2FfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBuZXdfbXR1KVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTg5Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MDEtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTAyOlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MDMtXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV90b19wb3J0KGRzLCBwb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTkxMS1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTEyOlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX01BQ25fRlJBTUUocG9ydCksXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTEzLVxcdFxcdFxcdFxcdCAgICAgWVQ5MjFYX01BQ19GUkFNRV9TSVpFX00sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MTktXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTIwOnN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9OTUzPXN0YXRpYyB1NjQgdG9rZW4yYnVyc3QodTMyIHRva2VuLCBpbnQgdW5pdCwgaW50IEMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05NTctXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTU4OnN0cnVjdCB5dDkyMXhfbWFya2VyIHtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05NTktXFx0dTMyIGNpcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTk2OT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTcwOnl0OTIxeF9tYXJrZXJfdGZtKHN0cnVjdCB5dDkyMXhfbWFya2VyICptYXJrZXIsIHU2NCByYXRlLCB1NjQgYnVyc3QsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTcxLVxcdFxcdCAgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZCBpbnQgc2xvdF9ucywgdTMyIGNpcl9tYXgsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6OTcyOlxcdFxcdCAgdTMyIGNic19tYXgsIGludCB1bml0X21heCwgc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05NzMtXFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy05NzctXFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjk3ODpcXHRzdHJ1Y3QgeXQ5MjF4X21hcmtlciBtO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTk3OS1cXHR1NjQgYnVyc3RfZXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtOTk5LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMDAwOlxcdFxcdGJ1cnN0X3N1ZyArPSBFVEhfSExFTiArIHl0OTIxeF9tdHVfZmV0Y2gocHJpdiwgcG9ydCkgK1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwMDEtXFx0XFx0XFx0ICAgICBFVEhfRkNTX0xFTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTEwNTk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEwNjA6eXQ5MjF4X21hcmtlcl90Zm1fcG9saWNlKHN0cnVjdCB5dDkyMXhfbWFya2VyICptYXJrZXIsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTA2MS1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IGZsb3dfYWN0aW9uX3BvbGljZSAqcG9saWNlLFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEwNjI6XFx0XFx0XFx0IHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMDYzLVxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMDczLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEwNzQ6XFx0cmV0dXJuIHl0OTIxeF9tYXJrZXJfdGZtKG1hcmtlciwgcmF0ZSwgYnVyc3QsIGZsYWdzLFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwNzUtXFx0XFx0XFx0XFx0IHByaXYtXFx1MDAzZW1ldGVyX3Nsb3RfbnMsIFlUOTIxWF9NRVRFUl9DSVJfTUFYLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MTA4MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTA4MTp5dDkyMXhfbWFya2VyX3RmbV9zaGFwZShzdHJ1Y3QgeXQ5MjF4X21hcmtlciAqbWFya2VyLCB1NjQgcmF0ZSwgdTY0IGJ1cnN0LFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEwODI6XFx0XFx0XFx0dW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwODMtXFx0XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwODQte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjEwODU6XFx0cmV0dXJuIHl0OTIxeF9tYXJrZXJfdGZtKG1hcmtlciwgcmF0ZSwgYnVyc3QsIGZsYWdzLFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwODYtXFx0XFx0XFx0XFx0IHByaXYtXFx1MDAzZXBvcnRfc2hhcGVfc2xvdF9ucywgWVQ5MjFYX1NIQVBFX0NJUl9NQVgsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0xMDkxPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMDkyOnl0OTIxeF9wb2xpY2VfdmFsaWRhdGUoY29uc3Qgc3RydWN0IGZsb3dfYWN0aW9uX3BvbGljZSAqcG9saWNlLFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEwOTMtXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmbG93X2FjdGlvbiAqYWN0aW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM9MTEyNz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTEyODp5dDkyMXhfbWV0ZXJfY29uZmlnKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IGlkLFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExMjk6XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB5dDkyMXhfbWFya2VyICptYXJrZXIpXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTEzMC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNDg6XFx0cmV0dXJuIHl0OTIxeF9yZWc5Nl93cml0ZShwcml2LCBZVDkyMVhfTUVURVJuX0NUUkwoaWQpLCBjdHJscyk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE0OS19XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE1MC1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTUxOnN0YXRpYyB2b2lkIHl0OTIxeF9kc2FfcG9ydF9wb2xpY2VyX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNTIte1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNTM6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNTQtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE1Ny1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE1ODpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9QT1JUbl9NRVRFUihwb3J0KSwgMCk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE1OS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTExNjY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExNjc6eXQ5MjF4X2RzYV9wb3J0X3BvbGljZXJfYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE2OC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGZsb3dfYWN0aW9uX3BvbGljZSAqcG9saWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE3MC17XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE3MTpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE3MjpcXHRzdHJ1Y3QgeXQ5MjF4X21hcmtlciBtYXJrZXI7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE3My1cXHR1MzIgY3RybDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExNzUtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE3NjpcXHRyZXMgPSB5dDkyMXhfcG9saWNlX3ZhbGlkYXRlKHBvbGljZSwgTlVMTCwgTlVMTCwgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTc3LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTc5LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjExODA6XFx0cmVzID0geXQ5MjF4X21hcmtlcl90Zm1fcG9saWNlKFxcdTAwMjZtYXJrZXIsIHBvbGljZSwgMCwgcHJpdiwgcG9ydCwgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTgxLVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMTg0LVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTg1OlxcdHJlcyA9IHl0OTIxeF9tZXRlcl9jb25maWcocHJpdiwgcG9ydCArIFlUOTIxWF9NRVRFUl9OVU0sIFxcdTAwMjZtYXJrZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExODYtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExODktXFx0Y3RybCA9IFlUOTIxWF9QT1JUX01FVEVSX0lEKHBvcnQpIHwgWVQ5MjFYX1BPUlRfTUVURVJfRU47XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTE5MDpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9QT1JUbl9NRVRFUihwb3J0KSwgY3RybCk7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTE5MS1lbmQ6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0xMTk3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMTk4Onl0OTIxeF9kc2FfcG9ydF9zZXR1cF90Y190YmZfcG9ydChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTExOTktXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgdGNfdGJmX3FvcHRfb2ZmbG9hZCAqcW9wdClcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMjAwLXtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzoxMjAxOlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy0xMjAyLVxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayA9IHFvcHQtXFx1MDAzZWV4dGFjaztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEyMjAtXFx0XFx0Y29uc3Qgc3RydWN0IHRjX3RiZl9xb3B0X29mZmxvYWRfcmVwbGFjZV9wYXJhbXMgKnA7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTIyMTpcXHRcXHRzdHJ1Y3QgeXQ5MjF4X21hcmtlciBtYXJrZXI7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTIyMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEyMjQtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6MTIyNTpcXHRcXHRyZXMgPSB5dDkyMXhfbWFya2VyX3RmbV9zaGFwZShcXHUwMDI2bWFya2VyLCBwLVxcdTAwM2VyYXRlLnJhdGVfYnl0ZXNfcHMsXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtMTIyNi1cXHRcXHRcXHRcXHRcXHQgICAgICBwLVxcdTAwM2VtYXhfc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTEyNDItXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNToxMi4wODAyODE0MDhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODg1MzY4MDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFN5c3RlbSdzIEludGVyYWN0aW9uIHdpdGggeXQ5MjF4KipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgYHl0OTIxeGAgaW50ZWdyYXRlcyB3aXRoaW4gdGhlIHN5c3RlbS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaXRzIHBvaW50IG9mIGVudHJ5LiBJcyBpdCB1c2luZyBhIHBsYXRmb3JtIGRyaXZlciwgb3IgcGVyaGFwcyBpbnRlcmFjdGluZyB2aWEgTURJTywgU1BJLCBvciBzb21lIG90aGVyIGludGVyZmFjZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbm5lY3Rpb24gdG8gdGhlIHN5c3RlbSdzIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVycy5cblxuVG8gc3RhcnQsIEknbGwgZ28gZGlyZWN0bHkgdG8gdGhlIG1vc3QgbG9naWNhbCBwbGFjZTogdGhlIGBkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2AgZGlyZWN0b3J5LiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IGxvY2F0aW9uIGZvciBhbnkgZHJpdmVyLWxldmVsIGNvZGUgc3BlY2lmaWMgdG8gdGhpcyBoYXJkd2FyZS4gSSdsbCBuZWVkIHRvIGRpc3NlY3QgdGhvc2UgZmlsZXMgdG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyJ3MgYXJjaGl0ZWN0dXJlIGFuZCBob3cgaXQncyBpbnRlcmZhY2luZyB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmsgc3Vic3lzdGVtLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODA3NywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjEzLjk2NTY1MTk0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImNoaXAuY1wiLFxuICAgIFwiY2hpcC5oXCIsXG4gICAgXCJsZWRzLmNcIixcbiAgICBcImxlZHMuaFwiLFxuICAgIFwic21pLmNcIixcbiAgICBcInNtaS5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjEzLjk2NTcyNTU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NTI5NjA0NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aG9zZSBmaWxlczpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgRHJpdmVyIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBzeXN0ZW0ncyBidXMgZHJpdmVycyBhcmUgaGFuZGxlZCwgYW5kIGhvdyB0aGUgbW9kdWxlcyBhcmUgaW5pdGlhbGl6ZWQgYW5kIHByb2JlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgc21pLmNgIGFuZCBgY2hpcC5jYC4gVGhlc2UgZmlsZSBuYW1lcyBhcmUgcHJldHR5IHR5cGljYWwuIFRoZXkncmUgc3Ryb25nIGNhbmRpZGF0ZXMgdG8gY29udGFpbiB0aGUgY29yZSBidXMgZHJpdmVyIGxvZ2ljLCBvciBhdCBsZWFzdCB0aGUgcmVsZXZhbnQgaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlcy4gSSdtIHRoaW5raW5nIEknbGwgZmluZCB0aGUgZGV2aWNlIHByb2JlIGZ1bmN0aW9ucyBpbiB0aGVyZSwgdG9vLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIGlkZW50aWZpZXMgYW5kIGF0dGFjaGVzIHRvIHRoZSByZWxldmFudCBoYXJkd2FyZS4gTGV0J3Mgc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNzYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MTUuNjE4Njg4MzE0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njg0NjIxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVffGRyaXZlcl9yZWdpc3Rlcnxwcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTQ2OTI9c3RhdGljIHZvaWQgeXQ5MjF4X21kaW9fcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQ3MjMtXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDcyNDpzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NzI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTQ3Nzg9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciB5dDkyMXhfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmM6NDc3OTpcXHQucHJvYmUgPSB5dDkyMXhfbWRpb19wcm9iZSxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00NzgwLVxcdC5yZW1vdmUgPSB5dDkyMXhfbWRpb19yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00Nzg3LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjQ3ODg6bWRpb19tb2R1bGVfZHJpdmVyKHl0OTIxeF9tZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDc4OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MTUuNjY1NTQxMDUxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM1OTA3NTA3NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgTURJTyBEZXZpY2UgSW5zdGFudGlhdGlvbiBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyBNRElPIGRldmljZXMgYXJlIGJyb3VnaHQgdXAsIHNwZWNpZmljYWxseSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcgbGlrZSBRRU1VIG9yIHdoZW4gZnV6emluZyB3aXRoIHN5emthbGxlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgaW5zdGFudGlhdGUgYW5kIHByb2JlIHRoZXNlIGRldmljZXMsIG9yIGV2ZW4gRFNBIHN3aXRjaGVzLCB3aXRob3V0IGhhdmluZyB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQ/XG5cbkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBEU0EgaGFyZHdhcmUgaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UuIEFuZCBob3cgZG9lcyBzeXprYWxsZXIgcGxheSBpbnRvIGFsbCBvZiB0aGlzIHdpdGggTURJTyBkZXZpY2VzIG9yIERTQSBkcml2ZXJzPyBJIHNob3VsZCBzZWFyY2gga2VybmVsIGZ1enppbmcgY29udGV4dHMgZm9yIGNsdWVzIGFib3V0IGhvdyBEU0Egc3dpdGNoIGRyaXZlcnMgb3IgTURJTyBkcml2ZXJzIGFyZSBoYW5kbGVkLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCB0aGF0IFNlY3Rpb24gMiwgdGhlIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgY2F0ZWdvcnkgcHJvYmFibHkgaXNuJ3QgcmVsZXZhbnQgaGVyZSDigJMgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKG1seHN3LCBxZWQsIGFtZGdwdSwgZXRjLikgYXJlIG91dCBiZWNhdXNlIHRoZXkgbmVlZCBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkIGluIFFFTVUuIEJ1dCBcInJlYWNoYWJsZSBkcml2ZXJzIGFuZCBwcm90b2NvbHNcIiBpcyBpbnRlcmVzdGluZy4uLiBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgbGlrZSB2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIGFuZCBzb2NrZXRzIGNvdWxkIGJlIHRoZSB0aWNrZXQuXG5cbk5vdywgbGV0J3Mgc2VlIGFib3V0IHRoZSB5dDkyMXggZGV2aWNlLiBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgaXQuIE9rYXksIGhlcmUgd2UgYXJlOiBgc3RydWN0IG1kaW9fZHJpdmVyIHl0OTIxeF9tZGlvX2RyaXZlcmAsIGFuZCBgeXQ5MjF4X29mX21hdGNoYC4gUmlnaHQsIGRvZXMgaXQgYmluZCB0aHJvdWdoIERldmljZSBUcmVlIChPRikgb3IgZGlyZWN0bHkgdGhyb3VnaCB0aGUgTURJTyBidXM/IEkgbmVlZCB0byBjaGVjayBgeXQ5MjF4X21kaW9fcHJvYmVgIGFuZCBgeXQ5MjF4X29mX21hdGNoYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBzb21lIGluc2lnaHQgaW50byBpdHMgaW5zdGFudGlhdGlvbiBtZXRob2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTA4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjE5LjI1NjI5NDUzNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjIyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDcyMCxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDcyMDpcXHRcXHR9XFxuNDcyMTpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuNDcyMjpcXHR9XFxuNDcyMzpcXHRcXG40NzI0OlxcdHN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbjQ3MjU6XFx0e1xcbjQ3MjY6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG40NzI3OlxcdFxcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW87XFxuNDcyODpcXHRcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXY7XFxuNDcyOTpcXHRcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XFxuNDczMDpcXHRcXG40NzMxOlxcdFxcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG40NzMyOlxcdFxcdGlmICghcHJpdilcXG40NzMzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjQ3MzQ6XFx0XFxuNDczNTpcXHRcXHRtZGlvID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCptZGlvKSwgR0ZQX0tFUk5FTCk7XFxuNDczNjpcXHRcXHRpZiAoIW1kaW8pXFxuNDczNzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG40NzM4OlxcdFxcbjQ3Mzk6XFx0XFx0bWRpby1cXHUwMDNlYnVzID0gbWRpb2Rldi1cXHUwMDNlYnVzO1xcbjQ3NDA6XFx0XFx0bWRpby1cXHUwMDNlYWRkciA9IG1kaW9kZXYtXFx1MDAzZWFkZHI7XFxuNDc0MTpcXHRcXHRtZGlvLVxcdTAwM2Vzd2l0Y2hpZCA9IDA7XFxuNDc0MjpcXHRcXG40NzQzOlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG40NzQ0OlxcdFxcbjQ3NDU6XFx0XFx0cHJpdi1cXHUwMDNlcmVnX29wcyA9IFxcdTAwMjZ5dDkyMXhfcmVnX29wc19tZGlvO1xcbjQ3NDY6XFx0XFx0cHJpdi1cXHUwMDNlcmVnX2N0eCA9IG1kaW87XFxuNDc0NzpcXHRcXG40NzQ4OlxcdFxcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShwcml2LVxcdTAwM2Vwb3J0cyk7IGkrKykge1xcbjQ3NDk6XFx0XFx0XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFxcdTAwMjZwcml2LVxcdTAwM2Vwb3J0c1tpXTtcXG40NzUwOlxcdFxcbjQ3NTE6XFx0XFx0XFx0cHAtXFx1MDAzZWluZGV4ID0gaTtcXG40NzUyOlxcdFxcdFxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZwcC1cXHUwMDNlbWliX3JlYWQsIHl0OTIxeF9wb2xsX21pYik7XFxuNDc1MzpcXHRcXHR9XFxuNDc1NDpcXHRcXG40NzU1OlxcdFxcdGRzID0gXFx1MDAyNnByaXYtXFx1MDAzZWRzO1xcbjQ3NTY6XFx0XFx0ZHMtXFx1MDAzZWRldiA9IGRldjtcXG40NzU3OlxcdFxcdGRzLVxcdTAwM2Vhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydCA9IHRydWU7XFxuNDc1ODpcXHRcXHRkcy1cXHUwMDNlZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsID0gdHJ1ZTtcXG40NzU5OlxcdFxcdGRzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG40NzYwOlxcdFxcdGRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2eXQ5MjF4X2RzYV9zd2l0Y2hfb3BzO1xcbjQ3NjE6XFx0XFx0ZHMtXFx1MDAzZWFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwO1xcbjQ3NjI6XFx0XFx0ZHMtXFx1MDAzZWFnZWluZ190aW1lX21heCA9IFUxNl9NQVggKiA1MDAwO1xcbjQ3NjM6XFx0XFx0ZHMtXFx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFxcdTAwMjZ5dDkyMXhfcGh5bGlua19tYWNfb3BzO1xcbjQ3NjQ6XFx0XFx0ZHMtXFx1MDAzZW51bV9sYWdfaWRzID0gWVQ5MjFYX0xBR19OVU07XFxuNDc2NTpcXHRcXHRkcy1cXHUwMDNlbnVtX3BvcnRzID0gWVQ5MjFYX1BPUlRfTlVNO1xcbjQ3NjY6XFx0XFxuNDc2NzpcXHRcXHRtZGlvZGV2X3NldF9kcnZkYXRhKG1kaW9kZXYsIHByaXYpO1xcbjQ3Njg6XFx0XFxuNDc2OTpcXHRcXHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XFxuNDc3MDpcXHR9XFxuNDc3MTpcXHRcXG40NzcyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0ge1xcbjQ3NzM6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtb3RvcmNvbW0seXQ5MjE1XFxcIiB9LFxcbjQ3NzQ6XFx0XFx0e31cXG40Nzc1OlxcdH07XFxuNDc3NjpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB5dDkyMXhfb2ZfbWF0Y2gpO1xcbjQ3Nzc6XFx0XFxuNDc3ODpcXHRzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHl0OTIxeF9tZGlvX2RyaXZlciA9IHtcXG40Nzc5OlxcdFxcdC5wcm9iZSA9IHl0OTIxeF9tZGlvX3Byb2JlLFxcbjQ3ODA6XFx0XFx0LnJlbW92ZSA9IHl0OTIxeF9tZGlvX3JlbW92ZSxcXG40NzgxOlxcdFxcdC5zaHV0ZG93biA9IHl0OTIxeF9tZGlvX3NodXRkb3duLFxcbjQ3ODI6XFx0XFx0Lm1kaW9kcnYuZHJpdmVyID0ge1xcbjQ3ODM6XFx0XFx0XFx0Lm5hbWUgPSBZVDkyMVhfTkFNRSxcXG40Nzg0OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHl0OTIxeF9vZl9tYXRjaCxcXG40Nzg1OlxcdFxcdH0sXFxuNDc4NjpcXHR9O1xcbjQ3ODc6XFx0XFxuNDc4ODpcXHRtZGlvX21vZHVsZV9kcml2ZXIoeXQ5MjF4X21kaW9fZHJpdmVyKTtcXG40Nzg5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNToxOS4yNTY1NTgxNzRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTkwODkzMzA3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYHl0OTIxeF9sZWRfYmxpbmtfc2V0YCBDYWxsIEZsb3cqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbCBwYXRoIHRvIHRoaXMgYHl0OTIxeF9sZWRfYmxpbmtfc2V0YCBmdW5jdGlvbi4gTGV0J3MgdHJhY2UgaG93IGl0J3MgYWN0dWFsbHkgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaW4gdGhlIGNvZGUgdGhpcyBtb2RpZmllZCBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIGFuZCwgY3J1Y2lhbGx5LCBob3cgd2UgcmVhY2ggdGhhdCBwb2ludC4gSXMgaXQgY2FsbGVkIGRpcmVjdGx5LCBvciBpcyBpdCBwYXJ0IG9mIGEgbGFyZ2VyIGNoYWluIG9mIGZ1bmN0aW9uIGNhbGxzPyBBcmUgdGhlcmUgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBvciBvdGhlciBsb2dpYyB0aGF0IGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBpdCdzIHRyaWdnZXJlZD8gSWRlbnRpZnlpbmcgdGhlIGVudHJ5IHBvaW50IGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbnRyb2wgZmxvdyB0aGF0IGxlYWRzIHRvIGl0LiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgcmVmZXJlbmNlcyB0byB0aGUgZnVuY3Rpb24gbmFtZSwgb3IgYW55dGhpbmcgcmVsYXRlZCB0byB0aGUgTEVEIGJsaW5raW5nIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBjb2RlYmFzZSwgYW5kIHNlZSB3aGVyZSB0aGV5IGxlYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzYwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNToyMS4xNjU0OTMyMjVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzE4NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInl0OTIxeF9sZWRfYmxpbmtfc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmM9OTE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jOjkyOnl0OTIxeF9sZWRfYmxpbmtfc2V0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBncm91cCxcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYy05My1cXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgKm9ucCwgdW5zaWduZWQgbG9uZyAqb2ZmcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jPTMzNT15dDkyMXhfY2xlZF9ibGlua19zZXQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsIHVuc2lnbmVkIGxvbmcgKmRlbGF5X29uLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMtMzQzLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYzozNDQ6XFx0cmVzID0geXQ5MjF4X2xlZF9ibGlua19zZXQocHJpdiwgcHAtXFx1MDAzZWluZGV4LCBsZWQtXFx1MDAzZWdyb3VwLCBkZWxheV9vbixcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2xlZHMuYy0zNDUtXFx0XFx0XFx0XFx0ICAgZGVsYXlfb2ZmKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6MjEuMjEyMjE3MzIzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2MzMyNzc1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMRUQgQ29udHJvbCBmb3IgdGhlIE1vdG9yY29tbSBZVDkyMTUgU3dpdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgeXQ5MjF4X2NsZWRfYmxpbmtfc2V0YCBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGFuIGBsZWRfY2xhc3NkZXZgIHN0cnVjdHVyZS4gVGhhdCdzIGdvb2QsIGl0IHN1Z2dlc3RzIGEgc3RhbmRhcmQgTEVEIGZyYW1ld29yayBpcyBpbiB1c2UuIEl0J3Mgc2V0IHVwIHdoZW4gdGhlIHl0OTIxeCBzd2l0Y2ggaXMgcHJvYmVkIGFuZCByZWdpc3RlcmVkLiBTbywgdGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZGV2aWNlIGl0c2VsZiBnZXRzIHByb2JlZC5cblxuQWgsIHJpZ2h0LCBpdCdzIGFuIE1ESU8gZGV2aWNlLiBBbmQgdGhlIGNvbXBhdGlibGUgc3RyaW5nIGlzIFwibW90b3Jjb21tLHl0OTIxNVwiIOKAkyB0aGF0J3MgdGhlIHRlbGwuIEl0IHJlbGllcyBvbiBEZXZpY2UgVHJlZSAoT0YpIG9yIGFuIE1ESU8gYnVzIG1hdGNoIGZvciBwcm9iaW5nLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgSSBjYW4gZXZlbiBnZXQgdGhpcyB0byBwcm9iZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgcnVubmluZyBvbiB4ODZfNjQgb3IgYW1kNjQuXG5cbk9rYXksIGxldCdzIHRoaW5rLiBGaXJzdCwgaXMgdGhlcmUgZXZlbiBhbiBNRElPIGJ1cywgb3IgYW55IGtpbmQgb2YgT0YgZW11bGF0aW9uLCBvciB2aXJ0dWFsIGJ1cyBpbXBsZW1lbnRlZCBvbiBhbWQ2NCBpbiB0aG9zZSBlbnZpcm9ubWVudHM/IEkgc2VyaW91c2x5IGRvdWJ0IGl0Li4uIGJ1dCBsZXQncyBiZSBzdXJlLiBJbiB0eXBpY2FsIFFFTVUvR0NFLCB0aGVyZSdzIG5vIHBoeXNpY2FsIE1vdG9yY29tbSBZVDkyMTUgc3dpdGNoIGNoaXAuIGB5dDkyMXhfbWRpb19kcml2ZXJgIHJlcXVpcmVzIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUgYW5kIGl0cyBhc3NvY2lhdGVkIGRldmljZSB0cmVlIG5vZGUuIEFuZCBzbywgdGhlIHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIgaXMsIGNhbiBzeXprYWxsZXIgb3Igc29tZXRoaW5nIHNpbWlsYXIgaW4gdXNlcnNwYWNlLCBzb21laG93IGNyZWF0ZSBNRElPIGRldmljZXMgb24tdGhlLWZseSBvciBiaW5kIHRoZSBgbWRpb19kcml2ZXJgIGRpcmVjdGx5PyBJIG5lZWQgdG8gc2VhcmNoIHRoZSBrZXJuZWwgY29kZSBhbmQgc2VlIGlmIHRoZXJlJ3MgYW55IG1lY2hhbmlzbSBmb3IgY3JlYXRpbmcgTURJTyBkZXZpY2VzIGZyb20gdXNlcnNwYWNlLCBvciBldmVuLCBpZiB0aGVyZSBpcyBzdWNoIGEgdGhpbmcgYXMgYSB2aXJ0dWFsIE1ESU8gYnVzIEkgY291bGQgbGV2ZXJhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjkxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjI0Ljg0NTQ5ODU2NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwNTk2NzQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvX2RldmljZV9yZWdpc3RlcnxtZGlvX2RldmljZV9jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDQ2PXN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ2NzpcXHRzd2l0Y2hfbWRpb2RldiA9IG1kaW9fZGV2aWNlX2NyZWF0ZShidXMsIDMxKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjgtXFx0aWYgKElTX0VSUihzd2l0Y2hfbWRpb2RldikpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDc0OlxcdHJldCA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKHN3aXRjaF9tZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTUyPXN0YXRpYyBpbnQgb2ZfbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1paV9idXMgKm1kaW8sXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy01OC1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo1OTpcXHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKG1kaW8sIGFkZHIpO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTYwLVxcdGlmIChJU19FUlIobWRpb2RldikpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy02OC1cXHQvKiBBbGwgZGF0YSBpcyBub3cgc3RvcmVkIGluIHRoZSBtZGlvZGV2IHN0cnVjdDsgcmVnaXN0ZXIgaXQuICovXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6Njk6XFx0cmMgPSBtZGlvX2RldmljZV9yZWdpc3RlcihtZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy03MC1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jPTMxMD1zdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzE0LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjMxNTpcXHRtZGlvID0gbWRpb19kZXZpY2VfY3JlYXRlKGJ1cywgYWRkcik7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzE2LVxcdGlmIChJU19FUlIobWRpbykpXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jPTMzNz1zdGF0aWMgaW50IHhwY3NfcGxhdF9pbml0X2RldihzdHJ1Y3QgZHdfeHBjc19wbGF0ICpweHBjcylcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1wbGF0LmMtMzQzLVxcdC8qIFRoZXJlIGlzIGEgc2luZ2xlIG1lbW9yeS1tYXBwZWQgRFcgWFBDUyBkZXZpY2UgKi9cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jOjM0NDpcXHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKHB4cGNzLVxcdTAwM2VidXMsIDApO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1wbGF0LmMtMzQ1LVxcdGlmIChJU19FUlIobWRpb2RldikpXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jLTM1Ni1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jOjM1NzpcXHRyZXQgPSBtZGlvX2RldmljZV9yZWdpc3RlcihtZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcGxhdC5jLTM1OC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYz0xNjIxPXN0cnVjdCBkd194cGNzICp4cGNzX2NyZWF0ZV9tZGlvZGV2KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTYyNS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxNjI2OlxcdG1kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xNjI3LVxcdGlmIChJU19FUlIobWRpb2RldikpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMDgwPXN0YXRpYyBpbnQgYW44ODExaGJfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwOTgtXFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTA5OTpcXHRtZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKHBoeWRldi1cXHUwMDNlbWRpby5idXMsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTEwMC1cXHRcXHRcXHRcXHQgICAgIHBoeWRldi1cXHUwMDNlbWRpby5hZGRyICsgRU44ODExSF9QQlVTX0FERFJfT0ZGUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTAzLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjExMDQ6XFx0cmV0ID0gbWRpb19kZXZpY2VfcmVnaXN0ZXIobWRpb2Rldik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTEwNS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMjYtLyoqXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6Mjc6ICogbWRpb19kZXZpY2VfcmVnaXN0ZXJfcmVzZXQgLSBSZWFkIGFuZCBpbml0aWFsaXplIHRoZSByZXNldCBwcm9wZXJ0aWVzIG9mXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMjgtICpcXHRcXHRcXHRcXHRhbiBtZGlvIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMzItICovXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MzM6c3RhdGljIGludCBtZGlvX2RldmljZV9yZWdpc3Rlcl9yZXNldChzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM9MTEzPXN0YXRpYyB2b2lkIG1kaW9fZGV2aWNlX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTE4LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjExOTpzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9fZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcilcXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTQyLX1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYzoxNDM6RVhQT1JUX1NZTUJPTChtZGlvX2RldmljZV9jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE0NC1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNDUtLyoqXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTQ2OiAqIG1kaW9fZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIG1kaW8gZGV2aWNlIG9uIHRoZSBNRElPIGJ1c1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE0Ny0gKiBAbWRpb2RldjogbWRpb19kZXZpY2Ugc3RydWN0dXJlIHRvIGJlIGFkZGVkIHRvIHRoZSBNRElPIGJ1c1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTUwLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE1MTppbnQgbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNzItfVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE3MzpFWFBPUlRfU1lNQk9MKG1kaW9fZGV2aWNlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNzQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xODAtICogVGhpcyBkb2Vzbid0IGZyZWUgdGhlIG1kaW9fZGV2aWNlIGl0c2VsZiwgaXQgbWVyZWx5IHJldmVyc2VzIHRoZSBlZmZlY3RzXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTgxOiAqIG9mIG1kaW9fZGV2aWNlX3JlZ2lzdGVyKCkuIFVzZSBtZGlvX2RldmljZV9mcmVlKCkgdG8gZnJlZSB0aGUgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTgyLSAqIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jPTE5MT1pbnQgbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTk4LVxcdGlmIChtZGlvZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IE1ESU9fREVWSUNFX0ZMQUdfUEhZKSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM6MTk5OlxcdFxcdGVyciA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyX3Jlc2V0KG1kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTIwMC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZGlvLmg9OTQ9dm9pZCBtZGlvX2RldmljZV9mcmVlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuaW5jbHVkZS9saW51eC9tZGlvLmg6OTU6c3RydWN0IG1kaW9fZGV2aWNlICptZGlvX2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpO1xcbmluY2x1ZGUvbGludXgvbWRpby5oOjk2OmludCBtZGlvX2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbmluY2x1ZGUvbGludXgvbWRpby5oLTk3LXZvaWQgbWRpb19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjI1OjI3LjA1MTQ3MjU5MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNDc2OTYwNDEzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBGdXp6aW5nIFJlYWNoYWJpbGl0eSBmb3IgTW90b3Jjb21tIFlUOTIxNSBMRUQgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IGBkc2FfbG9vcGAg4oCTIHRoZSBtb2NrIERTQSBkcml2ZXIg4oCTIGFuZCB0aGUgTW90b3Jjb21tIFlUOTIxNSBkcml2ZXIgKGBORVRfRFNBX1lUOTIxWGApLiBNeSB1bmRlcnN0YW5kaW5nIGlzLCB0aGUgWVQ5MjE1IGNvbW11bmljYXRlcyB3aXRoIGl0cyBzd2l0Y2ggY2hpcCB2aWEgTURJTywgdXNpbmcgYHl0OTIxeF9yZWdfb3BzX21kaW9gLiBUaGUgZHJpdmVyIHByb2JlcyBiYXNlZCBvbiBhbiBNRElPIGRldmljZSBtYXRjaGluZyB0aGUgXCJtb3RvcmNvbW0seXQ5MjE1XCIgT0YgY29tcGF0aWJsZSBzdHJpbmcgb3IgZHJpdmVyIG5hbWUuXG5cbk5vdywgY29uc2lkZXJpbmcgdGhlIFFFTVUvR0NFIHg4Nl82NCBzZXR1cCwgd2UncmUgZGVhbGluZyB3aXRoIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZXJlJ3Mgbm8gcGh5c2ljYWwgTW90b3Jjb21tIFlUOTIxNSBoYXJkd2FyZSBwcmVzZW50LCBhbmQsIGNydWNpYWxseSwgbm8gZW11bGF0aW9uIG9mIHRoaXMgc3BlY2lmaWMgQVNJQy5cblxuUmVmZXJyaW5nIHRvIHRoZSBpbnN0cnVjdGlvbnMsIHNlY3Rpb24gMiBmbGFncyBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiLiBUaGlzIHNwZWNpZmljYWxseSBjYWxscyBvdXQgdmVuZG9yLXNwZWNpZmljIHN0dWZmIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IGRlcGVuZCBvbiBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSByZWQgZmxhZy4gU2VjdGlvbiAxIHJlaW5mb3JjZXMgdGhpcyDigJMgcmVhY2hhYmlsaXR5IGlzIGtleS4gRnV6emluZyBvbmx5IHdvcmtzIG9uIGNvZGUgdGhhdCAqZXhlY3V0ZXMqIGluIHRoZXNlIGVudmlyb25tZW50cywgd2hpY2ggbWVhbnMgd2UgY2FuIG9ubHkgdGVzdCBkZXZpY2VzIHRoYXQgYXJlIGVtdWxhdGVkIHN1Y2ggYXMgVVNCIGdhZGdldHMsIG9yIG5ldGRldnMgZXRjLiBJZiB0aGUgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIHdlIGRvbid0IGZ1enogaXQuXG5cbk9rYXksIGxldCdzIGJlIGFic29sdXRlbHkgc3VyZS4gVGhlIG1vZGlmaWVkIGZpbGUgaXMgYGRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgYE5FVF9EU0FfWVQ5MjFYYCBkcml2ZXIuIFRoZSBmdW5jdGlvbiBjaGFuZ2VkIGlzIGB5dDkyMXhfbGVkX2JsaW5rX3NldGAsIGFuIGludGVybmFsIExFRCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgWVQ5MjE1LiBJdCByZXF1aXJlcyB0aGUgWVQ5MjE1IHN3aXRjaCB0byBiZSBwcm9iZWQgYW5kIGJvdW5kIHRvIGFuIE1ESU8gZGV2aWNlLiBUaGlzIHJlcXVpcmVzIHRoZSBwaHlzaWNhbCBZVDkyMTUgQVNJQy5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgcGFydGljdWxhciBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCwgbm9yIGVtdWxhdGVkLCBpbiBRRU1VL0dDRSwgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXG5cbkxldCdzIHN1bW1hcml6ZTpcbi0gICBgV29ydGhGdXp6aW5nYDogZmFsc2Vcbi0gICBgRm9jdXNTeW1ib2xzYDogW11cbi0gICBgRW5hYmxlQ29uZmlnc2A6IFtdXG4tICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCB0YXJnZXRzIGB5dDkyMXhfbGVkX2JsaW5rX3NldCgpYCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jYCwgd2hpY2gsIGFzIHBhcnQgb2YgdGhlIGBORVRfRFNBX1lUOTIxWGAgZHJpdmVyLCByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBzd2l0Y2ggaGFyZHdhcmUgKFlUOTIxNSBBU0lDIG9uIGFuIE1ESU8gYnVzKS4gU2luY2Ugd2UgYXJlIGluIFFFTVUvR0NFLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudCwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cblxuTm93LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTE4LCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDoyNTo0MS44MjEwNzk4MDRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB5dDkyMXhfbGVkX2JsaW5rX3NldCgpIGluIGRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vbGVkcy5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKE5FVF9EU0FfWVQ5MjFYKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBBU0lDIGhhcmR3YXJlIChNb3RvcmNvbW0gWVQ5MjE1KSBvbiBhbiBNRElPIGJ1cyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHl0OTIxeF9sZWRfYmxpbmtfc2V0KCkgaW4gZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9sZWRzLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIE1vdG9yY29tbSBZVDkyMTUgZXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoTkVUX0RTQV9ZVDkyMVgpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIHBoeXNpY2FsIEFTSUMgaGFyZHdhcmUgKE1vdG9yY29tbSBZVDkyMTUpIG9uIGFuIE1ESU8gYnVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6MjU6NDEuODIxMTA1OTQ0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflownmcw2[1] Phase: Running StartedAt: 2026-09-06 00:25:53 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownmcw2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-06 00:25:53 +0000 UTC FinishedAt: 2026-09-06 00:25:56 +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,}