Name: series-workflowdjz4j Phase: Failed StartedAt: 2026-09-15 13:53:01 +0000 UTC FinishedAt: 2026-09-15 14:19:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdjz4j[0] Phase: Succeeded StartedAt: 2026-09-15 13:53:01 +0000 UTC FinishedAt: 2026-09-15 14:19:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdjz4j[0].run-triage Phase: Succeeded StartedAt: 2026-09-15 13:53:01 +0000 UTC FinishedAt: 2026-09-15 14:19:08 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggZHJpdmVzIE1ldGEmIzM5O3MgcHJvcHJpZXRhcnkgaG9zdCBuZXR3b3JrIGludGVyZmFjZSBjYXJkIChQQ0llIEFTSUMpLiBUaGlzIGhhcmR3YXJlIGlzIHZlbmRvci1zcGVjaWZpYyBhbmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3N2MyOGFiZDdlYTQ0ZTBkOGM4YTVlZmExZjg3OWNmMjIzNzcwMmJlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTQ6MTI6MjEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY1xuaW5kZXggNDAxZjhiOGFlMWNhZS4uNTI4ZDcyMDcxYWZmZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY1xuQEAgLTE1OTksNyAmIzQzOzE1OTksNyBAQCBmYm5pY19hbGxvY19xdF9wYWdlX3Bvb2xzKHN0cnVjdCBmYm5pY19uZXQgKmZibiwgc3RydWN0IGZibmljX3FfdHJpYWQgKnF0LFxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyX2Rlc3Ryb3lfc3ViMDpcbi1cdHBhZ2VfcG9vbF9kZXN0cm95KHBwKTtcbiYjNDM7XHRwYWdlX3Bvb2xfZGVzdHJveShxdC1cdTAwM2VzdWIwLnBhZ2VfcG9vbCk7XG4gXHRyZXR1cm4gUFRSX0VSUihwcCk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaXMgcGFydCBvZiB0aGUgZmJuaWMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljLyksIHdoaWNoIGRyaXZlcyBNZXRhJiMzOTtzIHByb3ByaWV0YXJ5IGhvc3QgbmV0d29yayBpbnRlcmZhY2UgY2FyZCAoUENJZSBBU0lDKS4gVGhpcyBoYXJkd2FyZSBpcyB2ZW5kb3Itc3BlY2lmaWMgYW5kIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzdjMjhhYmQ3ZWE0NGUwZDhjOGE1ZWZhMWY4NzljZjIyMzc3MDJiZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDE1IDE0OjEyOjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYwppbmRleCA0MDFmOGI4YWUxY2FlLi41MjhkNzIwNzFhZmZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYwpAQCAtMTU5OSw3ICYjNDM7MTU5OSw3IEBAIGZibmljX2FsbG9jX3F0X3BhZ2VfcG9vbHMoc3RydWN0IGZibmljX25ldCAqZmJuLCBzdHJ1Y3QgZmJuaWNfcV90cmlhZCAqcXQsCiAJcmV0dXJuIDA7CiAKIGVycl9kZXN0cm95X3N1YjA6Ci0JcGFnZV9wb29sX2Rlc3Ryb3kocHApOwomIzQzOwlwYWdlX3Bvb2xfZGVzdHJveShxdC0mZ3Q7c3ViMC5wYWdlX3Bvb2wpOwogCXJldHVybiBQVFJfRVJSKHBwKTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODkyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY2AuIEkmIzM5O2xsIGltbWVkaWF0ZWx5IHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZ2V0IGEgZ3JpcCBvbiB0aGUgY2hhbmdlcyBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIEl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqIGJlZm9yZSBnZXR0aW5nIGxvc3QgaW4gdGhlICp3aGF0Ki4KCk9rYXksIHJlYWRpbmcgdGhlIHBhdGNoIGl0c2VsZi4uLiBBaCwgYSBgcGFnZV9wb29sX2Rlc3Ryb3lgIGNhbGwgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHRoZSBlYXJsaWVyIGNvZGUgd2FzIG5vdCBjb3JyZWN0bHkgZGVzdHJveWluZyB0aGUgYHBhZ2VfcG9vbGAuIFRoaXMgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBhIG1lbW9yeSBsZWFrLCB3aGljaCBuZWVkcyB0byBiZSBsb29rZWQgaW50by4gVGhlIG9yaWdpbmFsIGNvZGUgZGVzdHJveWVkIHRoZSB2YXJpYWJsZSBgcHBgLCB3aGlsZSB0aGUgbmV3IGNvZGUgaXMgZGVzdHJveWluZyBgcXQtJmd0O3N1YjAucGFnZV9wb29sYC4KCk5vdywgYmVmb3JlIEkgZ28gZGVlcGVyIGludG8gdGhlIGNvZGUgbG9naWMsIGxldCBtZSBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgYGZibmljYCBpcy4gTWV0YSYjMzk7cyBOZXR3b3JrIEludGVyZmFjZSBDYXJkLCByaWdodD8gSnVzdCBuZWVkIHRvIGNvbmZpcm0uIEkmIzM5O2xsIHBlZWsgYXQgdGhlIEtjb25maWcgdG8gYmUgc3VyZSwgYW5kIHRvIGNoZWNrIG9uIGFueSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmJuaWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4NDQwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MjA9Y29uZmlnIEZCTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTM1LVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6MzY6XHQgIHdpbGwgYmUgY2FsbGVkIGZibmljLiAgTVNJLVggaW50ZXJydXB0IHN1cHBvcnQgaXMgcmVxdWlyZWQuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19GQk5JQykgJiM0Mzs9IGZibmljL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfRkJOSUMpICYjNDM7PSBmYm5pYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlLTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjEwOmZibmljLXkgOj0gZmJuaWNfY3NyLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTE6XHQgICBmYm5pY19kZWJ1Z2ZzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTI6XHQgICBmYm5pY19kZXZsaW5rLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTM6XHQgICBmYm5pY19ldGh0b29sLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTQ6XHQgICBmYm5pY19mdy5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE1Olx0ICAgZmJuaWNfZndfbG9nLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTY6XHQgICBmYm5pY19od19zdGF0cy5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE3Olx0ICAgZmJuaWNfaHdtb24ubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxODpcdCAgIGZibmljX2lycS5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE5Olx0ICAgZmJuaWNfbWFjLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjA6XHQgICBmYm5pY19uZXRkZXYubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyMTpcdCAgIGZibmljX3BjaS5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIyOlx0ICAgZmJuaWNfcGh5bGluay5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIzOlx0ICAgZmJuaWNfcnBjLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjQ6XHQgICBmYm5pY19tZGlvLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjU6XHQgICBmYm5pY190aW1lLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjY6XHQgICBmYm5pY190bHYubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyNzpcdCAgIGZibmljX3R4cngubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZS0yOC0jIEVuZCBvZiBvYmplY3RzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzOiNpbmNsdWRlIFwmIzM0O2ZibmljX2Nzci5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQ6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfZncuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1OiNpbmNsdWRlIFwmIzM0O2ZibmljX2Z3X2xvZy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTY6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfaHdfc3RhdHMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3OiNpbmNsdWRlIFwmIzM0O2ZibmljX21hYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfcnBjLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMDpzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1OnN0cnVjdCBmYm5pY19kZXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI2LVx0c3RydWN0IGRldmljZSAqZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0zNC1cdHUzMiBfX2lvbWVtICp1Y19hZGRyNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDozNTpcdGNvbnN0IHN0cnVjdCBmYm5pY19tYWMgKm1hYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0zNi1cdHVuc2lnbmVkIGludCBmd19tc2l4X3ZlY3Rvcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NDc6XHRzdHJ1Y3QgZmJuaWNfZndfbWJ4IG1ieFtGQk5JQ19JUENfTUJYX0lORElDRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjQ4Olx0c3RydWN0IGZibmljX2Z3X2NhcCBmd19jYXA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NDk6XHRzdHJ1Y3QgZmJuaWNfZndfY29tcGxldGlvbiAqY21wbF9kYXRhW0ZCTklDX01CWF9DTVBMX1NMT1RTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC01MC1cdC8qIExvY2sgcHJvdGVjdGluZyBUeCBNYWlsYm94IHF1ZXVlIHRvIHByZXZlbnQgcG9zc2libGUgcmFjZXMgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNjItXHQvKiBMb2NhbCBjb3B5IG9mIHRoZSBkZXZpY2VzIFRDQU0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo2MzpcdHN0cnVjdCBmYm5pY19hY3RfdGNhbSBhY3RfdGNhbVtGQk5JQ19SUENfVENBTV9BQ1RfTlVNX0VOVFJJRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjY0Olx0c3RydWN0IGZibmljX21hY19hZGRyIG1hY19hZGRyW0ZCTklDX1JQQ19UQ0FNX01BQ0RBX05VTV9FTlRSSUVTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC02NS1cdHU4IG1hY19hZGRyX2JvdW5kYXJ5O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC02OC1cdC8qIElQIFRDQU0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo2OTpcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwX3NyY1tGQk5JQ19SUENfVENBTV9JUF9BRERSX05VTV9FTlRSSUVTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo3MDpcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwX2RzdFtGQk5JQ19SUENfVENBTV9JUF9BRERSX05VTV9FTlRSSUVTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo3MTpcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwb19zcmNbRkJOSUNfUlBDX1RDQU1fSVBfQUREUl9OVU1fRU5UUklFU107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NzI6XHRzdHJ1Y3QgZmJuaWNfaXBfYWRkciBpcG9fZHN0W0ZCTklDX1JQQ19UQ0FNX0lQX0FERFJfTlVNX0VOVFJJRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTczLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC03Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo3NzpcdC8qIExvY2sgcHJvdGVjdGluZyB3cml0ZXMgdG8gQHRpbWVfaGlnaCwgQHRpbWVfb2Zmc2V0IG9mIGZibmljX25ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC03OC1cdCAqIGFuZCB0aGUgSFcgdGltZSBDU1IgbWFjaGluZXJ5LlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC05MS1cdC8qIExvY2FsIGNvcHkgb2YgaGFyZHdhcmUgc3RhdGlzdGljcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjkyOlx0c3RydWN0IGZibmljX2h3X3N0YXRzIGh3X3N0YXRzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTkzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC05Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo5ODpcdHN0cnVjdCBmYm5pY19md19sb2cgZndfbG9nO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTk5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaD0xMTI9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMTg6c3RhdGljIGlubGluZSBib29sIGZibmljX3ByZXNlbnQoc3RydWN0IGZibmljX2RldiAqZmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTExOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMjM6c3RhdGljIGlubGluZSB2b2lkIGZibmljX3dyMzIoc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEyNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMzE6dTMyIGZibmljX3JkMzIoc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTMzOnN0YXRpYyBpbmxpbmUgdm9pZCBmYm5pY193cmZsKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzNTpcdGZibmljX3JkMzIoZmJkLCBGQk5JQ19NQVNURVJfU1BBUkVfMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTM2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg9MTM4PXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzOTpmYm5pY19ybXczMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNDM6XHR2ID0gZmJuaWNfcmQzMihmYmQsIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQ0LVx0diBcdTAwMjY9IH5tYXNrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0NS1cdHYgfD0gdmFsO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE0NjpcdGZibmljX3dyMzIoZmJkLCByZWcsIHYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE0OTojZGVmaW5lIHdyMzIoX2YsIF9yLCBfdilcdGZibmljX3dyMzIoX2YsIF9yLCBfdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTA6I2RlZmluZSByZDMyKF9mLCBfcilcdFx0ZmJuaWNfcmQzMihfZiwgX3IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTUxOiNkZWZpbmUgd3JmbChfZilcdFx0ZmJuaWNfd3JmbChfZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTUzOmJvb2wgZmJuaWNfZndfcHJlc2VudChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1NDp1MzIgZmJuaWNfZndfcmQzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1NTp2b2lkIGZibmljX2Z3X3dyMzIoc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgcmVnLCB1MzIgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU3OiNkZWZpbmUgZndfcmQzMihfZiwgX3IpXHRcdGZibmljX2Z3X3JkMzIoX2YsIF9yKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1ODojZGVmaW5lIGZ3X3dyMzIoX2YsIF9yLCBfdilcdGZibmljX2Z3X3dyMzIoX2YsIF9yLCBfdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTk6I2RlZmluZSBmd193cmZsKF9mKVx0XHRmYm5pY19md19yZDMyKF9mLCBGQk5JQ19GV19aRVJPX1JFRylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTYxOnN0YXRpYyBpbmxpbmUgYm9vbCBmYm5pY19ibWNfcHJlc2VudChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTYyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE2NjpzdGF0aWMgaW5saW5lIGJvb2wgZmJuaWNfaW5pdF9mYWlsdXJlKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTcxOmV4dGVybiBjaGFyIGZibmljX2RyaXZlcl9uYW1lW107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3Mzp2b2lkIGZibmljX2RldmxpbmtfZnJlZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3NDpzdHJ1Y3QgZmJuaWNfZGV2ICpmYm5pY19kZXZsaW5rX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzU6aW50IGZibmljX2RldmxpbmtfaGVhbHRoX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3Njp2b2lkIGZibmljX2RldmxpbmtfaGVhbHRoX2Rlc3Ryb3koc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzc6dm9pZCBmYm5pY19kZXZsaW5rX3JlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc4OnZvaWQgZmJuaWNfZGV2bGlua191bnJlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTc5LXZvaWQgX19wcmludGYoMiwgMylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODA6ZmJuaWNfZGV2bGlua19md19yZXBvcnQoc3RydWN0IGZibmljX2RldiAqZmJkLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTgxOnZvaWQgZmJuaWNfZGV2bGlua19vdHBfY2hlY2soc3RydWN0IGZibmljX2RldiAqZmJkLCBjb25zdCBjaGFyICptc2cpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODM6aW50IGZibmljX2Z3X3JlcXVlc3RfbWJ4KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg0OnZvaWQgZmJuaWNfZndfZnJlZV9tYngoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg2OnZvaWQgZmJuaWNfaHdtb25fcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODc6dm9pZCBmYm5pY19od21vbl91bnJlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4OTppbnQgZmJuaWNfbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTkwOnZvaWQgZmJuaWNfbWFjX2ZyZWVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5Mjp2b2lkIGZibmljX25hcGlfbmFtZV9pcnFzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTkzOmludCBmYm5pY19uYXBpX3JlcXVlc3RfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTQ6XHRcdFx0ICAgc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk1OnZvaWQgZmJuaWNfbmFwaV9mcmVlX2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk2Olx0XHRcdCBzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTc6dm9pZCBmYm5pY19zeW5jaHJvbml6ZV9pcnEoc3RydWN0IGZibmljX2RldiAqZmJkLCBpbnQgbnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5ODppbnQgZmJuaWNfcmVxdWVzdF9pcnEoc3RydWN0IGZibmljX2RldiAqZGV2LCBpbnQgbnIsIGlycV9oYW5kbGVyX3QgaGFuZGxlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xOTktXHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmRhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIwMDp2b2lkIGZibmljX2ZyZWVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmRldiwgaW50IG5yLCB2b2lkICpkYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjAyLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIwMzogKiBlbnVtIGZibmljX21zaXhfc2VsZl90ZXN0X2NvZGVzIC0gcmV0dXJuIGNvZGVzIGZyb20gc2VsZiB0ZXN0IHJvdXRpbmVzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjA0LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIxOC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMTk6ZW51bSBmYm5pY19tc2l4X3NlbGZfdGVzdF9jb2RlcyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjIwLVx0RkJOSUNfVEVTVF9NU0lYX1NVQ0NFU1MgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjMxOmVudW0gZmJuaWNfbXNpeF9zZWxmX3Rlc3RfY29kZXMgZmJuaWNfbXNpeF90ZXN0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzMzp2b2lkIGZibmljX2ZyZWVfaXJxcyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzNDppbnQgZmJuaWNfYWxsb2NfaXJxcyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMzY6dm9pZCBmYm5pY19nZXRfZndfdmVyX2NvbW1pdF9zdHIoc3RydWN0IGZibmljX2RldiAqZmJkLCBjaGFyICpmd192ZXJzaW9uLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzNy1cdFx0XHRcdCBjb25zdCBzaXplX3Qgc3RyX3N6KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjM5OnZvaWQgZmJuaWNfZGJnX2ZiZF9pbml0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQwOnZvaWQgZmJuaWNfZGJnX2ZiZF9leGl0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQxOnZvaWQgZmJuaWNfZGJnX2luaXQodm9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQyOnZvaWQgZmJuaWNfZGJnX2V4aXQodm9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0NDp2b2lkIGZibmljX3JwY19yZXNldF92YWxpZF9lbnRyaWVzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0NjppbnQgZmJuaWNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ4OnZvaWQgZmJuaWNfY3NyX2dldF9yZWdzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyICpkYXRhLCB1MzIgKnJlZ3NfdmVyc2lvbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ5OmludCBmYm5pY19jc3JfcmVnc19sZW4oc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjUxOnZvaWQgZmJuaWNfY29uZmlnX3R4cnhfdXNlY3Moc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudiwgdTMyIGFybSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjUyOnZvaWQgZmJuaWNfY29uZmlnX3J4X2ZyYW1lcyhzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU0OmVudW0gZmJuaWNfYm9hcmRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNTU6XHRmYm5pY19ib2FyZF9hc2ljXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjU2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1ODpzdHJ1Y3QgZmJuaWNfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjU5LVx0dW5zaWduZWQgaW50IG1heF9udW1fcXVldWVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6NDojaW5jbHVkZSBcJiMzNDtmYm5pYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTE6c3RydWN0IGZibmljX2Nzcl9ib3VuZHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMi1cdHUzMlx0c3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTY6c3RhdGljIGNvbnN0IHN0cnVjdCBmYm5pY19jc3JfYm91bmRzIGZibmljX2Nzcl9zZWN0c1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNy1cdEZCTklDX0JPVU5EUyhJTlRSKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzo2MDpzdGF0aWMgdm9pZCBmYm5pY19jc3JfZ2V0X3JlZ3NfcnBjX3JhbShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiAqKmRhdGFfcClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtNjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMTU6dm9pZCBmYm5pY19jc3JfZ2V0X3JlZ3Moc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgKmRhdGEsIHUzMiAqcmVnc192ZXJzaW9uKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMTYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMTc6XHRjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX2JvdW5kcyAqYm91bmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTExOC1cdHUzMiAqc3RhcnQgPSBkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTIzLVx0LyogU2tpcCBSUENfUkFNIHNlY3Rpb24gd2hpY2ggY2Fubm90IGJlIGR1bXBlZCBsaW5lYXJseSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMjQ6XHRmb3IgKGkgPSAwLCBib3VuZCA9IGZibmljX2Nzcl9zZWN0cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTI1Olx0ICAgICBpIFx1MDAzYyBBUlJBWV9TSVpFKGZibmljX2Nzcl9zZWN0cykgLSAxOyBpJiM0MzsmIzQzOywgJiM0MzsmIzQzO2JvdW5kKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEyNi1cdFx0KihkYXRhJiM0MzsmIzQzOykgPSBib3VuZC1cdTAwM2VzdGFydDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEzMi1cdC8qIER1bXAgdGhlIFJQQ19SQU0gYXMgc3BlY2lhbCBjYXNlIHJlZ2lzdGVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMzM6XHRmYm5pY19jc3JfZ2V0X3JlZ3NfcnBjX3JhbShmYmQsIFx1MDAyNmRhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEzNTpcdFdBUk5fT04oZGF0YSAtIHN0YXJ0ICE9IGZibmljX2Nzcl9yZWdzX2xlbihmYmQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTM2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMzg6aW50IGZibmljX2Nzcl9yZWdzX2xlbihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEzOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNDQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTQ1Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShmYm5pY19jc3Jfc2VjdHMpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTQ2Olx0XHRsZW4gJiM0Mzs9IGZibmljX2Nzcl9zZWN0c1tpXS5lbmQgLSBmYm5pY19jc3Jfc2VjdHNbaV0uc3RhcnQgJiM0MzsgMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTU4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNTk6c3RydWN0IGZibmljX2Nzcl9yZWdfdGVzdF9kYXRhIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTYwLVx0aW50XHRyZWc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjE3NTpzdGF0aWMgY29uc3Qgc3RydWN0IGZibmljX2Nzcl9yZWdfdGVzdF9kYXRhIHBhdHRlcm5fdGVzdFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNzYtXHRGQk5JQ19RVUVVRV9SRUdfVEVTVChUV1EwX0NUTCwgRkJOSUNfUVVFVUVfVFdRX0NUTF9SRVNFVCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjEyOnN0YXRpYyBlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjEzOmZibmljX2Nzcl9yZWdfcGF0dGVybl90ZXN0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgaW50IGluZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyMTQ6XHRcdFx0ICAgY29uc3Qgc3RydWN0IGZibmljX2Nzcl9yZWdfdGVzdF9kYXRhICp0ZXN0X2RhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxNi1cdHN0YXRpYyBjb25zdCB1MzIgcGF0dGVybltdID0geyB+MCwgMHg1QTVBNUE1QSwgMHhBNUE1QTVBNSwgMH07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjIxNzpcdGVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2RlcyByZWc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxOC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjQ3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyNDg6ICogZmJuaWNfY3NyX3JlZ3NfdGVzdCgpIC0gVmVyaWZ5IGJlaGF2aW9yIG9mIE5JQyByZWdpc3RlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjQ5LSAqIEBmYmQ6IGRldmljZSB0byB0ZXN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNTgtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyNTk6ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIGZibmljX2Nzcl9yZWdzX3Rlc3Qoc3RydWN0IGZibmljX2RldiAqZmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyNjE6XHRjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEgKnRlc3RfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjYyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjY3LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB0ZXN0X2RhdGEtXHUwMDNlYXJyYXlfbGVuOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyNjg6XHRcdFx0ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIHJlZyA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI2OTpcdFx0XHRcdGZibmljX2Nzcl9yZWdfcGF0dGVybl90ZXN0KGZiZCwgaSwgdGVzdF9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjcwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6OTpzdHJ1Y3QgZmJuaWNfZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oPTEyMzU9ZW51bXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyMzktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oOjEyNDA6ICogZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIC0gcmV0dXJuIGNvZGVzIGZyb20gc2VsZiB0ZXN0IHJvdXRpbmVzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNDEtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNDktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oOjEyNTA6ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI1MS1cdEZCTklDX1JFR19URVNUX1NVQ0NFU1MgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6MTI1NDplbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgZmJuaWNfY3NyX3JlZ3NfdGVzdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMjU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo5OiNpbmNsdWRlIFwmIzM0O2ZibmljLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEwOiNpbmNsdWRlIFwmIzM0O2ZibmljX3R4cnguaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMjpzdGF0aWMgc3RydWN0IGRlbnRyeSAqZmJuaWNfZGJnX3Jvb3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE2OnN0YXRpYyB2b2lkIGZibmljX2RiZ19kZXNjX2JyZWFrKHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNDpzdGF0aWMgdm9pZCBmYm5pY19kYmdfcmluZ19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI2Olx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNy1cdHVuc2lnbmVkIGxvbmcgZG9vcmJlbGxfb2Zmc2V0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzE6XHRjc3JfYmFzZSA9IGZibmljX3JpbmdfY3NyX2Jhc2UocmluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMi1cdGRvb3JiZWxsX29mZnNldCA9IHJpbmctXHUwMDNlZG9vcmJlbGwgLSBjc3JfYmFzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy03NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjc2OnN0YXRpYyB2b2lkIGZibmljX2RiZ190d2RfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Nzg6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTc5LVx0dTY0IHR3ZCA9IGxlNjRfdG9fY3B1KHJpbmctXHUwMDNlZGVzY1tpXSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTA3OnN0YXRpYyBpbnQgZmJuaWNfZGJnX3R3cV9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEwOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMDk6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExMC1cdGNoYXIgaGRyWzgwXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMTMtXHQvKiBHZW5lcmF0ZSBoZWFkZXIgb24gZmlyc3QgZW50cnkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjExNDpcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMTUtXHRzbnByaW50ZihoZHIsIHNpemVvZihoZHIpLCBcJiMzNDslNHMgJTVzICVzICVzXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExNy1cdHNlcV9wdXRzKHMsIGhkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMTg6XHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMjYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gcmluZy1cdTAwM2VzaXplX21hc2s7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTI3Olx0XHRmYm5pY19kYmdfdHdkX2Rlc2Nfc2VxX3Nob3cocywgaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTMyOnN0YXRpYyBpbnQgZmJuaWNfZGJnX3RjcV9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMzQ6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzNS1cdGNoYXIgaGRyWzgwXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMzgtXHQvKiBHZW5lcmF0ZSBoZWFkZXIgb24gZmlyc3QgZW50cnkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEzOTpcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNDAtXHRzbnByaW50ZihoZHIsIHNpemVvZihoZHIpLCBcJiMzNDslNHMgJXMgJXMgJXMgJTVzICUtMTZzICUtNnMgJS02c1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNDItXHRzZXFfcHV0cyhzLCBoZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTQzOlx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTgxOnN0YXRpYyBpbnQgZmJuaWNfZGJnX2JkcV9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE4Mi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxODM6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE4NC1cdGNoYXIgaGRyWzgwXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODctXHQvKiBHZW5lcmF0ZSBoZWFkZXIgb24gZmlyc3QgZW50cnkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE4ODpcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODktXHRzbnByaW50ZihoZHIsIHNpemVvZihoZHIpLCBcJiMzNDslNHMgJS00cyAlc1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xOTEtXHRzZXFfcHV0cyhzLCBoZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTkyOlx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xOTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjExOnN0YXRpYyB2b2lkIGZibmljX2RiZ19yY2RfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjEyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjIxMzpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjE0LVx0dTY0IHJjZCA9IGxlNjRfdG9fY3B1KHJpbmctXHUwMDNlZGVzY1tpXSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjU0OnN0YXRpYyBpbnQgZmJuaWNfZGJnX3JjcV9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNTY6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI1Ny1cdGNoYXIgaGRyWzgwXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNjAtXHQvKiBHZW5lcmF0ZSBoZWFkZXIgb24gZmlyc3QgZW50cnkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI2MTpcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNjItXHRzbnByaW50ZihoZHIsIHNpemVvZihoZHIpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI2OC1cdHNlcV9wdXRzKHMsIGhkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNjk6XHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI3MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNzctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gcmluZy1cdTAwM2VzaXplX21hc2s7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mjc4Olx0XHRmYm5pY19kYmdfcmNkX2Rlc2Nfc2VxX3Nob3cocywgaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjgzOnN0YXRpYyBpbnQgZmJuaWNfZGJnX2Rlc2Nfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyODU6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IGlub2RlLVx1MDAzZWlfcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4Ni1cdGludCAoKnNob3cpKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyODg6XHRzd2l0Y2ggKHJpbmctXHUwMDNlZG9vcmJlbGwgLSBmYm5pY19yaW5nX2Nzcl9iYXNlKHJpbmcpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODktXHRjYXNlIEZCTklDX1FVRVVFX1RXUTBfVEFJTDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5MC1cdGNhc2UgRkJOSUNfUVVFVUVfVFdRMV9UQUlMOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjkxOlx0XHRzaG93ID0gZmJuaWNfZGJnX3R3cV9kZXNjX3NlcV9zaG93O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjkyLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5My1cdGNhc2UgRkJOSUNfUVVFVUVfVENRX0hFQUQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyOTQ6XHRcdHNob3cgPSBmYm5pY19kYmdfdGNxX2Rlc2Nfc2VxX3Nob3c7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yOTUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5Ny1cdGNhc2UgRkJOSUNfUVVFVUVfQkRRX1BQUV9UQUlMOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mjk4Olx0XHRzaG93ID0gZmJuaWNfZGJnX2JkcV9kZXNjX3NlcV9zaG93O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjk5LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMwMC1cdGNhc2UgRkJOSUNfUVVFVUVfUkNRX0hFQUQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMDE6XHRcdHNob3cgPSBmYm5pY19kYmdfcmNxX2Rlc2Nfc2VxX3Nob3c7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMDItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMxMDpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmYm5pY19kYmdfZGVzY19mb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzExLVx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMTI6XHQub3Blblx0XHQ9IGZibmljX2RiZ19kZXNjX29wZW4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMTMtXHQucmVhZFx0XHQ9IHNlcV9yZWFkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMxODp2b2lkIGZibmljX2RiZ19udl9pbml0KHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMTkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzIwOlx0c3RydWN0IGZibmljX2RldiAqZmJkID0gbnYtXHUwMDNlZmJkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzIxLVx0Y2hhciBuYW1lWzE2XTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMzAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudi1cdTAwM2V0eHRfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMzE6XHRcdHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCA9IFx1MDAyNm52LVx1MDAzZXF0W2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzMyLVx0XHR1bnNpZ25lZCBpbnQgaHdfaWR4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzM0Olx0XHRod19pZHggPSBmYm5pY19yaW5nX2Nzcl9iYXNlKFx1MDAyNnF0LVx1MDAzZWNtcGwpIC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMzNS1cdFx0XHQgIFx1MDAyNmZiZC1cdTAwM2V1Y19hZGRyMFtGQk5JQ19RVUVVRSgwKV07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzM5LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVx1MDAzZWRiZ19udiwgXHUwMDI2cXQtXHUwMDNlc3ViMCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM0MDpcdFx0XHRcdCAgICBcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDMtXHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXHUwMDNlZGJnX252LCBcdTAwMjZxdC1cdTAwM2VzdWIxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzQ0Olx0XHRcdFx0ICAgIFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzQ1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0Ny1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cdTAwM2VkYmdfbnYsIFx1MDAyNnF0LVx1MDAzZWNtcGwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNDg6XHRcdFx0XHQgICAgXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDktXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzUyLVx0Zm9yIChqID0gMDsgaiBcdTAwM2MgbnYtXHUwMDNlcnh0X2NvdW50OyBqJiM0MzsmIzQzOywgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM1MzpcdFx0c3RydWN0IGZibmljX3FfdHJpYWQgKnF0ID0gXHUwMDI2bnYtXHUwMDNlcXRbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTQtXHRcdHVuc2lnbmVkIGludCBod19pZHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNTY6XHRcdGh3X2lkeCA9IGZibmljX3JpbmdfY3NyX2Jhc2UoXHUwMDI2cXQtXHUwMDNlY21wbCkgLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzU3LVx0XHRcdCAgXHUwMDI2ZmJkLVx1MDAzZXVjX2FkZHIwW0ZCTklDX1FVRVVFKDApXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjEtXHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXHUwMDNlZGJnX252LCBcdTAwMjZxdC1cdTAwM2VzdWIwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzYyOlx0XHRcdFx0ICAgIFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzYzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM2NS1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cdTAwM2VkYmdfbnYsIFx1MDAyNnF0LVx1MDAzZXN1YjEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNjY6XHRcdFx0XHQgICAgXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzY5LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVx1MDAzZWRiZ19udiwgXHUwMDI2cXQtXHUwMDNlY21wbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM3MDpcdFx0XHRcdCAgICBcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM3MS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNzQ6dm9pZCBmYm5pY19kYmdfbnZfZXhpdChzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzc1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozODA6c3RhdGljIGludCBmYm5pY19kYmdfbWFjX2FkZHJfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zODEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzgyOlx0c3RydWN0IGZibmljX2RldiAqZmJkID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzgzLVx0Y2hhciBoZHJbODBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM4OS1cdHNlcV9wdXRzKHMsIGhkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozOTA6XHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM5Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEZCTklDX1JQQ19UQ0FNX01BQ0RBX05VTV9FTlRSSUVTOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzkzOlx0XHRzdHJ1Y3QgZmJuaWNfbWFjX2FkZHIgKm1hY19hZGRyID0gXHUwMDI2ZmJkLVx1MDAzZW1hY19hZGRyW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQwMy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MDQ6REVGSU5FX1NIT1dfQVRUUklCVVRFKGZibmljX2RiZ19tYWNfYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MDY6c3RhdGljIGludCBmYm5pY19kYmdfdGNlX3RjYW1fc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MDcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDA4Olx0c3RydWN0IGZibmljX2RldiAqZmJkID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDA5LVx0aW50IGksIHRjYW1faWR4ID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MTUtXHRzZXFfcHV0cyhzLCBoZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDE2Olx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MTgtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGZiZC1cdTAwM2VtYWNfYWRkcik7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MTk6XHRcdHN0cnVjdCBmYm5pY19tYWNfYWRkciAqbWFjX2FkZHIgPSBcdTAwMjZmYmQtXHUwMDNlbWFjX2FkZHJbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDM3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQzODpERUZJTkVfU0hPV19BVFRSSUJVVEUoZmJuaWNfZGJnX3RjZV90Y2FtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQ0MDpzdGF0aWMgaW50IGZibmljX2RiZ19hY3RfdGNhbV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQ0MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0NDI6XHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00NDMtXHRjaGFyIGhkcls4MF07XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5OTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIG5ldHdvcmtpbmcgYW5kIGtlcm5lbCBjb25maWd1cmF0aW9uOgoKKipEaXZpbmcgaW50byB0aGUgRkJOSUMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgYEZCTklDYCBoYXJkd2FyZS4gVGhlIHF1aWNrZXN0IHBhdGggdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgc3VwcG9ydGVkIGZlYXR1cmVzIGlzIGRlZmluaXRlbHkgdGhyb3VnaCB0aGUgS2NvbmZpZyBmaWxlLiBMZXQgbWUgY2hlY2sgdGhlIGtlcm5lbCYjMzk7cyBjb25maWd1cmF0aW9uIHN5c3RlbSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRlcGVuZGVuY2llcywgYW55IHNwZWNpZmljIGJvYXJkIHJlcXVpcmVtZW50cywgYW5kIHRoZSBsb2dpYyB0aGF0IGNvbnRyb2xzIHdoZXRoZXIgYEZCTklDYCBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgaW4gdGhlIGJ1aWxkLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IGFueSByZWxhdGlvbnNoaXBzIHRvIG90aGVyIG5ldHdvcmsgZGV2aWNlcywgb3IgbWF5YmUgaWYgaXTigJlzIGEgc3BlY2lmaWMgcHJvZHVjdCwgb3IgcGVyaGFwcyBpdCYjMzk7cyBhIGZhbWlseSBvZiBwcm9kdWN0cy4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBnaXZlIG1lIGEgdmVyeSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBGQk5JQyYjMzk7cyBjYXBhYmlsaXRpZXMgd2l0aGluIHRoZSBrZXJuZWwuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWV0YSBQbGF0Zm9ybXMgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTkVUX1ZFTkRPUl9NRVRBXG4gICA3Olx0XHRib29sIFwmIzM0O01ldGEgUGxhdGZvcm1zIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgeVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGRlc2lnbmVkIGJ5IE1ldGEsIHNheSBZLlxuICAxMTpcdFx0ICBUaGF0JiMzOTtzIE1ldGEgYXMgaW4gdGhlIHBhcmVudCBjb21wYW55IG9mIEZhY2Vib29rLlxuICAxMjpcdFxuICAxMzpcdFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGFmZmVjdCB0aGVcbiAgMTQ6XHRcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxuICAxNTpcdFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IE1ldGEgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDE2Olx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTc6XHRcbiAgMTg6XHRpZiBORVRfVkVORE9SX01FVEFcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgRkJOSUNcbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O01ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gNjRCSVQgfHwgQ09NUElMRV9URVNUXG4gIDIzOlx0XHRkZXBlbmRzIG9uICFTMzkwXG4gIDI0Olx0XHRkZXBlbmRzIG9uIE1BWF9TS0JfRlJBR1MgXHUwMDNjIDIyXG4gIDI1Olx0XHRkZXBlbmRzIG9uIFBDSV9NU0lcbiAgMjY6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgMjc6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAyODpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAyOTpcdFx0c2VsZWN0IFBDU19YUENTXG4gIDMwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAzMTpcdFx0c2VsZWN0IFBMRE1GV1xuICAzMjpcdFx0aGVscFxuICAzMzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNZXRhIFBsYXRmb3JtcyBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlLlxuICAzNDpcdFxuICAzNTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXG4gIDM2Olx0XHQgIHdpbGwgYmUgY2FsbGVkIGZibmljLiAgTVNJLVggaW50ZXJydXB0IHN1cHBvcnQgaXMgcmVxdWlyZWQuXG4gIDM3Olx0XG4gIDM4Olx0ZW5kaWYgIyBORVRfVkVORE9SX01FVEFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc1NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgRkJOSUMgUENJIEJpbmRpbmcqKgoKQWxyaWdodCwgRkJOSUPigKYgdGhhdCYjMzk7cyBNZXRhJiMzOTtzICYjMzQ7TWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZSYjMzQ7IOKAkyB0aGVpciBjdXN0b20gRXRoZXJuZXQgQVNJQy9QQ0llIE5JQy4gSSYjMzk7bSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggdGhlaXIgaGFyZHdhcmUgaW5ub3ZhdGlvbnMuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhpcyBwaWVjZSBvZiBoYXJkd2FyZSBpbnRlZ3JhdGVzIHdpdGggdGhlIFBDSWUgZWNvc3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGRyaXZlciBjb2RlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuY2AuIFRoYXQgc2hvdWxkIGNvbnRhaW4gdGhlIGJpbmRpbmcgbG9naWMsIHRoZSBjcnVjaWFsIGJpdCB0aGF0IG1hdGNoZXMgdGhlIGRyaXZlciB0byB0aGUgY29ycmVjdCBQQ0llIGRldmljZXMuIEkgbmVlZCB0byBzZWUgaG93IHRoZXkmIzM5O3JlIGlkZW50aWZ5aW5nIHRoZSBGQk5JQywgd2hhdCBWZW5kb3IvRGV2aWNlIElEcywgU3Vic3lzdGVtIElEcywgb3IgbWF5YmUgZXZlbiBzcGVjaWZpYyBjbGFzcyBjb2RlcyB0aGV5JiMzOTtyZSB1c2luZyB0byBjbGFpbSB0aGVzZSBuZXR3b3JrIGNhcmRzLiBJJiMzOTttIGFudGljaXBhdGluZyBzb21lIGN1c3RvbSBxdWlyayBoYW5kbGluZyBhcyB3ZWxsLCBnaXZlbiB0aGUgYmVzcG9rZSBuYXR1cmUgb2YgdGhlIGhhcmR3YXJlLiBUaGlzIFBDSSBiaW5kaW5nIHJvdXRpbmUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBNZXRhJiMzOTtzIG5ldHdvcmsgaW5ub3ZhdGlvbnMgZml0IGludG8gdGhlIHN0YW5kYXJkIExpbnV4IGZyYW1ld29yay4gTGV0JiMzOTtzIGdldCBjcmFja2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJuaWNfaW5mbyAqZmJuaWNfaW5mb190YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYzozMDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZmJuaWNfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0zMS1cdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yMTQ9c3RhdGljIHZvaWQgZmJuaWNfc2VydmljZV90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI1OC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jOjI1OTpzdGF0aWMgaW50IGZibmljX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNjAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDA3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBGQk5JQyBQQ0kgVGFibGUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGZvY3VzIGlzIG9uIHRoaXMgYGZibmljX3BjaV90YmxgIHRhYmxlLiBTcGVjaWZpY2FsbHksIEkgc2VlIHRoaXMgZW50cnk6IGBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgZmJuaWNfYm9hcmRfYXNpYylgLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggUENJIGRldmljZSBkYXRhLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNRVRBIGRldmljZSwgYXNzb2NpYXRlZCB3aXRoIGFuIEZCTklDIEFTSUMsIGFuZCBpdCYjMzk7cyB1c2luZyBgZmJuaWNfYm9hcmRfYXNpY2AuIE5vdywgdGhlIGNydWNpYWwgcGllY2UgaXMgdW5kZXJzdGFuZGluZyBgUENJX1ZFTkRPUl9JRF9NRVRBYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBjb25zdGFudCBpcyBkZWZpbmVkLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcC4gS25vd2luZyB0aGUgZGVmaW5pdGlvbiBvZiBgUENJX1ZFTkRPUl9JRF9NRVRBYCB3aWxsIGdpdmUgbWUgY3JpdGljYWwgY29udGV4dCBhYm91dCB0aGUgdmVuZG9yIElEIGFuZCwgdGhlcmVmb3JlLCB0aGUgc3BlY2lmaWMgZGV2aWNlIHRoaXMgZW50cnkgcGVydGFpbnMgdG8uIEkgbmVlZCB0byB0cmFjZSBiYWNrIHRvIHRoYXQgZGVmaW5pdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX1ZFTkRPUl9JRF9NRVRBJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGNpX2lkcy5oLTI2MTgtXG5pbmNsdWRlL2xpbnV4L3BjaV9pZHMuaDoyNjE5OiNkZWZpbmUgUENJX1ZFTkRPUl9JRF9NRVRBXHRcdDB4MWQ5YlxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtMjYyMC1cbi0tXG5ydXN0L2tlcm5lbC9wY2kvaWQucnM9MTcyPSAgICBmbiBmbXQoXHUwMDI2c2VsZiwgZjogXHUwMDI2bXV0IGZtdDo6Rm9ybWF0dGVyXHUwMDNjJiMzOTtfXHUwMDNlKSAtXHUwMDNlIGZtdDo6UmVzdWx0IHtcbi0tXG5ydXN0L2tlcm5lbC9wY2kvaWQucnMtNTQzLSAgICBIWUdPTiAgICAgICAgICAgICAgICAgICAgPSBiaW5kaW5nczo6UENJX1ZFTkRPUl9JRF9IWUdPTiwgICAgICAgICAgICAgICAgICAgIC8vIDB4MWQ5NFxucnVzdC9rZXJuZWwvcGNpL2lkLnJzOjU0NDogICAgTUVUQSAgICAgICAgICAgICAgICAgICAgID0gYmluZGluZ3M6OlBDSV9WRU5ET1JfSURfTUVUQSwgICAgICAgICAgICAgICAgICAgICAvLyAweDFkOWJcbnJ1c3Qva2VybmVsL3BjaS9pZC5ycy01NDUtICAgIEZVTkdJQkxFICAgICAgICAgICAgICAgICA9IGJpbmRpbmdzOjpQQ0lfVkVORE9SX0lEX0ZVTkdJQkxFLCAgICAgICAgICAgICAgICAgLy8gMHgxZGFkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5OTA0CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ2hlY2tpbmcgdGhlIFBDSSBEZXZpY2UgSUQqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgb3V0IHdoZXJlIGBQQ0lfREVWSUNFX0lEX01FVEFfRkJOSUNfQVNJQ2AgaXMgYWN0dWFsbHkgZGVmaW5lZC4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gaGVhZCBzdHJhaWdodCB0byB0aGUgc291cmNlLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgaW4gdGhlIGBpbmNsdWRlL2xpbnV4L3BjaV9pZHMuaGAgZmlsZS4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luLCBvciBhdCBsZWFzdCBhIGxvY2F0aW9uIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIHNlZSByZWxhdGVkIFBDSSBkZXZpY2UgSUQgZGVmaW5pdGlvbnMuIElmIGl0JiMzOTtzIG5vdCB0aGVyZSwgSSYjMzk7bGwgbmVlZCB0byBleHBhbmQgbXkgc2VhcmNoLCBidXQgYHBjaV9pZHMuaGAgaXMgdGhlIHByaW1lIHN1c3BlY3QgYW5kIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50IGZvciB0aGlzIGludmVzdGlnYXRpb24gaW50byB0aGUgZGV2aWNlIElEJiMzOTtzIG9yaWdpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RkJOSUNfQVNJQyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oPTk9c3RydWN0IGZibmljX2Rldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDo0MDojZGVmaW5lIFBDSV9ERVZJQ0VfSURfTUVUQV9GQk5JQ19BU0lDXHRcdDB4MDAxM1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC00MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBmYm5pY19wY2lfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jOjMxOlx0eyBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgZmJuaWNfYm9hcmRfYXNpYykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmMtMzItXHQvKiBSZXF1aXJlZCBsYXN0IGVudHJ5ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzc2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFRyaWFnZSBDaGVja2xpc3Q6IFNlY3Rpb24gMiBDb25jZXJucyoqCgpPa2F5LCB0aW1lIHRvIHJ1biB0aHJvdWdoIFNlY3Rpb24gMiBvZiB0aGUgdHJpYWdlIHBoaWxvc29waHkuIFNwZWNpZmljYWxseSwgbGV0JiMzOTtzIHNlZS4uLiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIFRoYXQgbWVhbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuIFRoaW5ncyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBgYW1kZ3B1YC4uLiBiYXNpY2FsbHksIGFueXRoaW5nIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgdGhhdCAqYXJlbiYjMzk7dCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gQWxyaWdodCwgdGhhdCYjMzk7cyB0aGUgaHVyZGxlIHRvIGNsZWFyLgoKV2FpdCBhIHNlY29uZC4uLiAqZmJuaWMqLiBOb3csIGlzIHRoYXQgZW11bGF0ZWQ/IEkgbmVlZCB0byByZW1lbWJlci4gUmlnaHQsIHRoYXQmIzM5O3MgTWV0YSYjMzk7cyBwcm9wcmlldGFyeSBob3N0IG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQuIEl0JiMzOTtzIGFuIEFTSUMgU21hcnROSUMsIGEgUENJZSBFdGhlcm5ldCBjYXJkIHRoZXkgZGV2ZWxvcGVkLiBJdCYjMzk7cyBub3Qgc29tZXRoaW5nIHlvdSYjMzk7ZCB0eXBpY2FsbHkgZmluZCBpbiBRRU1VLiBPa2F5LCBzbyB3ZSBuZWVkIHRvIHZlcmlmeS4gTXkgZmlyc3Qgc3RlcCB3aWxsIGJlIHRvIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueSB2aXJ0dWFsIGJ1cyBlbXVsYXRpb24gb3IgZXZlbiBqdXN0IGEgbW9jayBkZXZpY2Ugc3BlY2lmaWNhbGx5IGZvciBgZmJuaWNgLiBJIG1lYW4sIGEgbG90IG9mIHRoZXNlIGFkdmFuY2VkIE5JQ3MgZW5kIHVwIG5lZWRpbmcgKnNvbWV0aGluZyouLi4gYSB2aXJ0dWFsIG5ldGRldiBvciBhIG1vY2sgZGV2aWNlLiBTbywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWNgIGRpcmVjdG9yeS4gVGhhdCBzaG91bGQgYmUgdGhlIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlZ2lzdGVyX25ldGRldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz04NjQ9aW50IGZibmljX25ldGRldl9yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4ODU6XHRyZXR1cm4gcmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTg4Ni19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz04ODg9dm9pZCBmYm5pY19uZXRkZXZfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04ODkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4OTA6XHR1bnJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04OTEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTEyNwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGZibmljX3Byb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBgZmJuaWNfcHJvYmVgIGlzIGJlaW5nIHVzZWQuIEZpcnN0IHN0ZXAsIGxldCYjMzk7cyBzZWUgd2hlcmUgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIG9yIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBjb2RlIHNlZW1zIHRvIGluZGljYXRlIHRoYXQgdGhlIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jYC4gQWgsIHRoZXJlIGl0IGlzOiBgbW9kdWxlX3BjaV9kcml2ZXIoZmJuaWNfZHJpdmVyKTtgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIE5vdywgSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBsaW5lcyBvZiBjb2RlIHdpdGhpbiBgZmJuaWNfcGNpLmNgIG5lYXIgdGhlIGBtb2R1bGVfcGNpX2RyaXZlcmAgY2FsbCB0byBmdWxseSBncmFzcCB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JlIHNlcXVlbmNlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGhvdyBgZmJuaWNfZHJpdmVyYCBpcyBkZWZpbmVkLCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCB1c2VzLCBhbmQgaG93IGBmYm5pY19wcm9iZWAgaXMgY29ubmVjdGVkIHRvIHRoZSBQQ0kgZHJpdmVyIGxpZmVjeWNsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQ0MAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBGaW5hbCBMaW5lcyBvZiBgZmJuaWNfcGNpLmNgKioKCk9rYXksIHRpbWUgdG8gemVybyBpbiBvbiB0aGUgdGFpbCBlbmQgb2YgYGZibmljX3BjaS5jYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgdGhpbmcgd3JhcHMgdXAuIFdoYXQmIzM5O3MgdGhlIGZpbmFsIGNsZWFudXAgbG9naWM/IEFyZSB0aGVyZSBhbnkgc3VidGxlIHJlc291cmNlIGxlYWtzIEkgbWlnaHQgaGF2ZSBtaXNzZWQgaW4gcHJldmlvdXMgcmV2aWV3cz8gSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSBoYW5kbGUgZXJyb3IgcGF0aHPigJRkb2VzIGV2ZXJ5IGBnb3RvYCBwcm9wZXJseSBmcmVlIGFsbG9jYXRlZCBtZW1vcnkgYW5kIHJlbGVhc2UgaGFyZHdhcmUgcmVzb3VyY2VzPyBBcmUgdGhlIGVycm9yIGhhbmRsaW5nIHJvdXRpbmVzIHJvYnVzdCwgb3IgYXJlIHRoZXJlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gY2VydGFpbiBzY2VuYXJpb3M/IEl04oCZcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgZ3JhY2VmdWxseSByZWNvdmVycyBmcm9tIHVuZXhwZWN0ZWQgUENJIGVycm9ycywgRE1BIGZhaWx1cmVzLCBvciBldmVuIHNpbXBseSBhIGRldmljZSByZW1vdmFsLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRob3NlIGZpbmFsIGxpbmVzLCByZWFsbHkgdHJ5aW5nIHRvIGdyYXNwIHRoZSBlbnRpcmUgZHJpdmVyJiMzOTtzIGxpZmVjeWNsZSBtYW5hZ2VtZW50LiBUaGlzIHNlY3Rpb24gb2Z0ZW4gcmV2ZWFscyB0aGUgZGVzaWduJiMzOTtzIG92ZXJhbGwgcm9idXN0bmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NDA6XHRcbiA0NDE6XHRcdHJ0bmxfbG9jaygpO1xuIDQ0MjpcdFx0bmV0ZGV2X2xvY2sobmV0ZGV2KTtcbiA0NDM6XHRcbiA0NDQ6XHRcdG5ldGlmX2RldmljZV9kZXRhY2gobmV0ZGV2KTtcbiA0NDU6XHRcbiA0NDY6XHRcdGlmIChuZXRpZl9ydW5uaW5nKG5ldGRldikpXG4gNDQ3Olx0XHRcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5kb19zdG9wKG5ldGRldik7XG4gNDQ4Olx0XG4gNDQ5Olx0XHRuZXRkZXZfdW5sb2NrKG5ldGRldik7XG4gNDUwOlx0XHRydG5sX3VubG9jaygpO1xuIDQ1MTpcdFxuIDQ1MjpcdG51bGxfdWNfYWRkcjpcbiA0NTM6XHRcdGZibmljX2Z3X2xvZ19kaXNhYmxlKGZiZCk7XG4gNDU0Olx0XG4gNDU1Olx0XHRkZXZsX2xvY2socHJpdl90b19kZXZsaW5rKGZiZCkpO1xuIDQ1NjpcdFxuIDQ1NzpcdFx0ZmJuaWNfZndfZnJlZV9tYngoZmJkKTtcbiA0NTg6XHRcbiA0NTk6XHRcdGRldmxfdW5sb2NrKHByaXZfdG9fZGV2bGluayhmYmQpKTtcbiA0NjA6XHRcbiA0NjE6XHRcdC8qIEZyZWUgdGhlIElSUXMgc28gdGhleSBhcmVuJiMzOTt0IHRyeWluZyB0byBvY2N1cHkgc2xlZXBpbmcgQ1BVcyAqL1xuIDQ2MjpcdFx0ZmJuaWNfZnJlZV9pcnFzKGZiZCk7XG4gNDYzOlx0XG4gNDY0Olx0XHQvKiBIYXJkd2FyZSBpcyBhYm91dCB0byBnbyBhd2F5LCBzbyBzd2l0Y2ggb2ZmIE1NSU8gYWNjZXNzIGludGVybmFsbHkgKi9cbiA0NjU6XHRcdFdSSVRFX09OQ0UoZmJkLVx1MDAzZXVjX2FkZHIwLCBOVUxMKTtcbiA0NjY6XHRcdFdSSVRFX09OQ0UoZmJkLVx1MDAzZXVjX2FkZHI0LCBOVUxMKTtcbiA0Njc6XHRcbiA0Njg6XHRcdHJldHVybiAwO1xuIDQ2OTpcdH1cbiA0NzA6XHRcbiA0NzE6XHRzdGF0aWMgaW50IF9fZmJuaWNfcG1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiA0NzI6XHR7XG4gNDczOlx0XHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbiA0NzQ6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBmYmQtXHUwMDNlbmV0ZGV2O1xuIDQ3NTpcdFx0dm9pZCBfX2lvbWVtICogY29uc3QgKmlvbWFwX3RhYmxlO1xuIDQ3NjpcdFx0c3RydWN0IGZibmljX25ldCAqZmJuO1xuIDQ3NzpcdFx0aW50IGVycjtcbiA0Nzg6XHRcbiA0Nzk6XHRcdC8qIFJlc3RvcmUgTU1JTyBhY2Nlc3MgKi9cbiA0ODA6XHRcdGlvbWFwX3RhYmxlID0gcGNpbV9pb21hcF90YWJsZSh0b19wY2lfZGV2KGRldikpO1xuIDQ4MTpcdFx0ZmJkLVx1MDAzZXVjX2FkZHIwID0gaW9tYXBfdGFibGVbMF07XG4gNDgyOlx0XHRmYmQtXHUwMDNldWNfYWRkcjQgPSBpb21hcF90YWJsZVs0XTtcbiA0ODM6XHRcbiA0ODQ6XHRcdC8qIFJlcmVxdWVzdCB0aGUgSVJRcyAqL1xuIDQ4NTpcdFx0ZXJyID0gZmJuaWNfYWxsb2NfaXJxcyhmYmQpO1xuIDQ4NjpcdFx0aWYgKGVycilcbiA0ODc6XHRcdFx0Z290byBlcnJfaW52YWxpZGF0ZV91Y19hZGRyO1xuIDQ4ODpcdFxuIDQ4OTpcdFx0ZmJkLVx1MDAzZW1hYy1cdTAwM2Vpbml0X3JlZ3MoZmJkKTtcbiA0OTA6XHRcbiA0OTE6XHRcdGRldmxfbG9jayhwcml2X3RvX2RldmxpbmsoZmJkKSk7XG4gNDkyOlx0XG4gNDkzOlx0XHQvKiBSZS1lbmFibGUgbWFpbGJveCAqL1xuIDQ5NDpcdFx0ZXJyID0gZmJuaWNfZndfcmVxdWVzdF9tYngoZmJkKTtcbiA0OTU6XHRcdGRldmxfdW5sb2NrKHByaXZfdG9fZGV2bGluayhmYmQpKTtcbiA0OTY6XHRcdGlmIChlcnIpXG4gNDk3Olx0XHRcdGdvdG8gZXJyX2ZyZWVfaXJxcztcbiA0OTg6XHRcbiA0OTk6XHRcdC8qIE9ubHkgc2VuZCBsb2cgaGlzdG9yeSBpZiBsb2cgYnVmZmVyIGlzIGVtcHR5IHRvIHByZXZlbnQgZHVwbGljYXRlXG4gNTAwOlx0XHQgKiBsb2cgZW50cmllcy5cbiA1MDE6XHRcdCAqL1xuIDUwMjpcdFx0ZmJuaWNfZndfbG9nX2VuYWJsZShmYmQsIGxpc3RfZW1wdHkoXHUwMDI2ZmJkLVx1MDAzZWZ3X2xvZy5lbnRyaWVzKSk7XG4gNTAzOlx0XG4gNTA0Olx0XHQvKiBTaW5jZSB0aGUgRlcgc2hvdWxkIGJlIHVwLCBjaGVjayBpZiBpdCByZXBvcnRlZCBPVFAgZXJyb3JzICovXG4gNTA1Olx0XHRmYm5pY19kZXZsaW5rX290cF9jaGVjayhmYmQsIFwmIzM0O2Vycm9yIGRldGVjdGVkIGFmdGVyIFBNIHJlc3VtZVwmIzM0Oyk7XG4gNTA2Olx0XG4gNTA3Olx0XHQvKiBObyBuZXRkZXYgbWVhbnMgdGhlcmUgaXNuJiMzOTt0IGEgbmV0d29yayBpbnRlcmZhY2UgdG8gYnJpbmcgdXAgKi9cbiA1MDg6XHRcdGlmIChmYm5pY19pbml0X2ZhaWx1cmUoZmJkKSlcbiA1MDk6XHRcdFx0cmV0dXJuIDA7XG4gNTEwOlx0XG4gNTExOlx0XHRmYm4gPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuIDUxMjpcdFxuIDUxMzpcdFx0LyogUmVzZXQgdGhlIHF1ZXVlcyBpZiBuZWVkZWQgKi9cbiA1MTQ6XHRcdGZibmljX3Jlc2V0X3F1ZXVlcyhmYm4sIGZibi1cdTAwM2VudW1fdHhfcXVldWVzLCBmYm4tXHUwMDNlbnVtX3J4X3F1ZXVlcyk7XG4gNTE1Olx0XG4gNTE2Olx0XHRydG5sX2xvY2soKTtcbiA1MTc6XHRcdG5ldGRldl9sb2NrKG5ldGRldik7XG4gNTE4Olx0XG4gNTE5Olx0XHRpZiAobmV0aWZfcnVubmluZyhuZXRkZXYpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg5NQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYGZibmljX3BjaS5jYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBvZiB0aGUgYGZibmljX3BjaS5jYCBkcml2ZXIgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIEZpYnJlIENoYW5uZWwgb3ZlciBFdGhlcm5ldCAoRkNvRSkgTklDIGludGVyYWN0cyB3aXRoIHRoZSBQQ0kgYnVzLiBGaXJzdCBJIG5lZWQgdG8gZm9jdXMgb24gdGhpcyBmaWxlIGFuZCB3b3JrIG15IHdheSB0aHJvdWdoIHRoZSBjb2RlLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIG1ldGhvZHMsIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBob3cgdGhlIGRldmljZSBpcyBpbml0aWFsaXplZCBhbmQgZGV0YWNoZWQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBwYXJ0aWN1bGFybHkgYW55dGhpbmcgc3BlY2lmaWMgdG8gdGhlIEZDb0UgcHJvdG9jb2wgaGFuZGxpbmcgd2l0aGluIHRoZSBoYXJkd2FyZS4gVGhpcyB3b3VsZCBpbmNsdWRlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgcXVldWVzLCBkZXNjcmlwdG9ycywgYW5kIGFueSBETUEgc2V0dXAgZm9yIGRhdGEgdHJhbnNmZXIuIEkgd2FudCB0byBzZWUgaWYgdGhleSYjMzk7cmUgdXNpbmcgYSBzdGFuZGFyZCBvciBjdXN0b20gRkNvRSBvZmZsb2FkIG1lY2hhbmlzbSBhbmQgaG93IGFueSBoYXJkd2FyZS1zcGVjaWZpYyBvcHRpbWl6YXRpb25zIGFyZSBpbXBsZW1lbnRlZC4gRXNzZW50aWFsbHksIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGdsdWUgdGhhdCBtYWtlcyB0aGlzIE5JQyB0aWNrIG9uIGEgUENJIGJ1cywgYW5kIEkmIzM5O2xsIGJlIGxvb2tpbmcgYXQgdGhpbmdzIGxpa2UgcHJvYmUsIHJlbW92ZSwgaW50ZXJydXB0IGhhbmRsaW5nLCBETUEgc2V0dGluZ3MsIGFuZCBhbnkgc3BlY2lmaWMgcXVpcmtzIG9yIHdvcmthcm91bmRzIHRoZXkmIzM5O3ZlIGltcGxlbWVudGVkIGZvciB0aGlzIGRldmljZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MjA6XHRcdFx0ZXJyID0gX19mYm5pY19vcGVuKGZibik7XG4gNTIxOlx0XG4gNTIyOlx0XHRuZXRkZXZfdW5sb2NrKG5ldGRldik7XG4gNTIzOlx0XHRydG5sX3VubG9jaygpO1xuIDUyNDpcdFx0aWYgKGVycilcbiA1MjU6XHRcdFx0Z290byBlcnJfZnJlZV9tYng7XG4gNTI2Olx0XG4gNTI3Olx0XHRyZXR1cm4gMDtcbiA1Mjg6XHRlcnJfZnJlZV9tYng6XG4gNTI5Olx0XHRmYm5pY19md19sb2dfZGlzYWJsZShmYmQpO1xuIDUzMDpcdFxuIDUzMTpcdFx0ZGV2bF9sb2NrKHByaXZfdG9fZGV2bGluayhmYmQpKTtcbiA1MzI6XHRcdGZibmljX2Z3X2ZyZWVfbWJ4KGZiZCk7XG4gNTMzOlx0XHRkZXZsX3VubG9jayhwcml2X3RvX2RldmxpbmsoZmJkKSk7XG4gNTM0Olx0ZXJyX2ZyZWVfaXJxczpcbiA1MzU6XHRcdGZibmljX2ZyZWVfaXJxcyhmYmQpO1xuIDUzNjpcdGVycl9pbnZhbGlkYXRlX3VjX2FkZHI6XG4gNTM3Olx0XHRXUklURV9PTkNFKGZiZC1cdTAwM2V1Y19hZGRyMCwgTlVMTCk7XG4gNTM4Olx0XHRXUklURV9PTkNFKGZiZC1cdTAwM2V1Y19hZGRyNCwgTlVMTCk7XG4gNTM5Olx0XHRyZXR1cm4gZXJyO1xuIDU0MDpcdH1cbiA1NDE6XHRcbiA1NDI6XHRzdGF0aWMgdm9pZCBfX2ZibmljX3BtX2F0dGFjaChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gNTQzOlx0e1xuIDU0NDpcdFx0c3RydWN0IGZibmljX2RldiAqZmJkID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4gNTQ1Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gZmJkLVx1MDAzZW5ldGRldjtcbiA1NDY6XHRcdHN0cnVjdCBmYm5pY19uZXQgKmZibjtcbiA1NDc6XHRcbiA1NDg6XHRcdHJ0bmxfbG9jaygpO1xuIDU0OTpcdFx0ZmJuaWNfcmVzZXRfaHdfc3RhdHMoZmJkKTtcbiA1NTA6XHRcdHJ0bmxfdW5sb2NrKCk7XG4gNTUxOlx0XG4gNTUyOlx0XHRpZiAoZmJuaWNfaW5pdF9mYWlsdXJlKGZiZCkpXG4gNTUzOlx0XHRcdHJldHVybjtcbiA1NTQ6XHRcbiA1NTU6XHRcdGZibiA9IG5ldGRldl9wcml2KG5ldGRldik7XG4gNTU2Olx0XG4gNTU3Olx0XHRpZiAobmV0aWZfcnVubmluZyhuZXRkZXYpKVxuIDU1ODpcdFx0XHRmYm5pY191cChmYm4pO1xuIDU1OTpcdFxuIDU2MDpcdFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZXRkZXYpO1xuIDU2MTpcdH1cbiA1NjI6XHRcbiA1NjM6XHRzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGZibmljX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gNTY0Olx0e1xuIDU2NTpcdFx0aW50IGVycjtcbiA1NjY6XHRcbiA1Njc6XHRcdGVyciA9IF9fZmJuaWNfcG1fcmVzdW1lKGRldik7XG4gNTY4Olx0XHRpZiAoIWVycilcbiA1Njk6XHRcdFx0X19mYm5pY19wbV9hdHRhY2goZGV2KTtcbiA1NzA6XHRcbiA1NzE6XHRcdHJldHVybiBlcnI7XG4gNTcyOlx0fVxuIDU3MzpcdFxuIDU3NDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBmYm5pY19wbV9vcHMgPSB7XG4gNTc1Olx0XHRTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhmYm5pY19wbV9zdXNwZW5kLCBmYm5pY19wbV9yZXN1bWUpXG4gNTc2Olx0fTtcbiA1Nzc6XHRcbiA1Nzg6XHRzdGF0aWMgdm9pZCBmYm5pY19zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiA1Nzk6XHR7XG4gNTgwOlx0XHRmYm5pY19wbV9zdXNwZW5kKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiA1ODE6XHR9XG4gNTgyOlx0XG4gNTgzOlx0c3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgZmJuaWNfZXJyX2Vycm9yX2RldGVjdGVkKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIDU4NDpcdFx0XHRcdFx0XHRcdCBwY2lfY2hhbm5lbF9zdGF0ZV90IHN0YXRlKVxuIDU4NTpcdHtcbiA1ODY6XHRcdC8qIERpc2Nvbm5lY3QgZGV2aWNlIGlmIGZhaWx1cmUgaXMgbm90IHJlY292ZXJhYmxlIHZpYSByZXNldCAqL1xuIDU4NzpcdFx0aWYgKHN0YXRlID09IHBjaV9jaGFubmVsX2lvX3Blcm1fZmFpbHVyZSlcbiA1ODg6XHRcdFx0cmV0dXJuIFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1Q7XG4gNTg5Olx0XG4gNTkwOlx0XHRmYm5pY19wbV9zdXNwZW5kKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiA1OTE6XHRcbiA1OTI6XHRcdC8qIFJlcXVlc3QgYSBzbG90IHJlc2V0ICovXG4gNTkzOlx0XHRyZXR1cm4gUENJX0VSU19SRVNVTFRfTkVFRF9SRVNFVDtcbiA1OTQ6XHR9XG4gNTk1Olx0XG4gNTk2Olx0c3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgZmJuaWNfZXJyX3Nsb3RfcmVzZXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gNTk3Olx0e1xuIDU5ODpcdFx0aW50IGVycjtcbiA1OTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzNTMKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkZvY3VzaW5nIG9uIEZpbGUgVGVybWluYXRpb24qKgoKQWxyaWdodCwgbXkgaW5pdGlhbCB0aG91Z2h0IGhlcmUgaXMgc3RyYWlnaHRmb3J3YXJkOiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIGZpbmFsIHNlY3Rpb24gb2YgdGhpcyBmaWxlLiBLbm93aW5nIHRoZSBvdmVyYWxsIGNvbnRleHQsIEkmIzM5O20gbGlrZWx5IHNlYXJjaGluZyBmb3IgYSBzcGVjaWZpYyB0ZXJtaW5hdGluZyBjb25kaXRpb24sIGEgZmluYWwgZGF0YSBwb2ludCwgb3IgcGVyaGFwcyBhbiBlcnJvciBjb2RlIHRoYXQgc2lnbmlmaWVzIHRoZSBwcm9jZXNzJiMzOTtzIGNvbXBsZXRpb24gb3IgYW4gZXhjZXB0aW9uLiBUaGUgbG9jYXRpb24gb2YgdGhlIGZpbmFsIGNoYXJhY3RlcnMsIG9yIGJ5dGVzLCB0aGF0IHRlcm1pbmF0ZSBhIGZpbGUsIG9yIGEgc3BlY2lmaWMgcHJvY2VzcyB3aXRoaW4gdGhhdCBmaWxlLCBjYW4gdGVsbCBtZSBhIGxvdC4gQXJlIHRoZXJlIGFueSBwYXJ0aWN1bGFyIEVPRiBtYXJrZXJzLCBkZWxpbWl0ZXJzLCBvciBjb250cm9sIGNoYXJhY3RlcnMgdGhhdCBJIGV4cGVjdCB0byBzZWU/IElzIHRoaXMgYSBzdGFuZGFyZCBmb3JtYXQsIG9yIHNvbWV0aGluZyBjdXN0b20/IFRoZSBlbmQgb2YgYSBmaWxlIG9mdGVuIGhvbGRzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZmluYWwgc3RhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjAwOlx0XHRwY2lfc2V0X3Bvd2VyX3N0YXRlKHBkZXYsIFBDSV9EMCk7XG4gNjAxOlx0XHRwY2lfcmVzdG9yZV9zdGF0ZShwZGV2KTtcbiA2MDI6XHRcbiA2MDM6XHRcdGlmIChwY2lfZW5hYmxlX2RldmljZV9tZW0ocGRldikpIHtcbiA2MDQ6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldixcbiA2MDU6XHRcdFx0XHRcJiMzNDtDYW5ub3QgcmUtZW5hYmxlIFBDSSBkZXZpY2UgYWZ0ZXIgcmVzZXQuXFxuXCYjMzQ7KTtcbiA2MDY6XHRcdFx0cmV0dXJuIFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1Q7XG4gNjA3Olx0XHR9XG4gNjA4Olx0XG4gNjA5Olx0XHQvKiBSZXN0b3JlIGRldmljZSB0byBwcmV2aW91cyBzdGF0ZSAqL1xuIDYxMDpcdFx0ZXJyID0gX19mYm5pY19wbV9yZXN1bWUoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDYxMTpcdFxuIDYxMjpcdFx0cmV0dXJuIGVyciA/IFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1QgOiBQQ0lfRVJTX1JFU1VMVF9SRUNPVkVSRUQ7XG4gNjEzOlx0fVxuIDYxNDpcdFxuIDYxNTpcdHN0YXRpYyB2b2lkIGZibmljX2Vycl9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gNjE2Olx0e1xuIDYxNzpcdFx0X19mYm5pY19wbV9hdHRhY2goXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDYxODpcdH1cbiA2MTk6XHRcbiA2MjA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBmYm5pY19lcnJfaGFuZGxlciA9IHtcbiA2MjE6XHRcdC5lcnJvcl9kZXRlY3RlZFx0PSBmYm5pY19lcnJfZXJyb3JfZGV0ZWN0ZWQsXG4gNjIyOlx0XHQuc2xvdF9yZXNldFx0PSBmYm5pY19lcnJfc2xvdF9yZXNldCxcbiA2MjM6XHRcdC5yZXN1bWVcdFx0PSBmYm5pY19lcnJfcmVzdW1lLFxuIDYyNDpcdH07XG4gNjI1Olx0XG4gNjI2Olx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGZibmljX2RyaXZlciA9IHtcbiA2Mjc6XHRcdC5uYW1lXHRcdD0gZmJuaWNfZHJpdmVyX25hbWUsXG4gNjI4Olx0XHQuaWRfdGFibGVcdD0gZmJuaWNfcGNpX3RibCxcbiA2Mjk6XHRcdC5wcm9iZVx0XHQ9IGZibmljX3Byb2JlLFxuIDYzMDpcdFx0LnJlbW92ZVx0XHQ9IGZibmljX3JlbW92ZSxcbiA2MzE6XHRcdC5kcml2ZXIucG1cdD0gXHUwMDI2ZmJuaWNfcG1fb3BzLFxuIDYzMjpcdFx0LnNodXRkb3duXHQ9IGZibmljX3NodXRkb3duLFxuIDYzMzpcdFx0LmVycl9oYW5kbGVyXHQ9IFx1MDAyNmZibmljX2Vycl9oYW5kbGVyLFxuIDYzNDpcdH07XG4gNjM1Olx0XG4gNjM2Olx0LyoqXG4gNjM3Olx0ICogZmJuaWNfaW5pdF9tb2R1bGUgLSBEcml2ZXIgUmVnaXN0cmF0aW9uIFJvdXRpbmVcbiA2Mzg6XHQgKlxuIDYzOTpcdCAqIFRoZSBmaXJzdCByb3V0aW5lIGNhbGxlZCB3aGVuIHRoZSBkcml2ZXIgaXMgbG9hZGVkLiAgQWxsIGl0IGRvZXMgaXNcbiA2NDA6XHQgKiByZWdpc3RlciB3aXRoIHRoZSBQQ0kgc3Vic3lzdGVtLlxuIDY0MTpcdCAqXG4gNjQyOlx0ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG9uIGZhaWx1cmVcbiA2NDM6XHQgKiovXG4gNjQ0Olx0c3RhdGljIGludCBfX2luaXQgZmJuaWNfaW5pdF9tb2R1bGUodm9pZClcbiA2NDU6XHR7XG4gNjQ2Olx0XHRpbnQgZXJyO1xuIDY0NzpcdFxuIDY0ODpcdFx0ZmJuaWNfZGJnX2luaXQoKTtcbiA2NDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzMTYKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAzNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGZibmljYCBEcml2ZXIqKgoKT2theSwgc28gYGZibmljYCBpcyBhIFBDSSBkcml2ZXIsIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgTWV0YSYjMzk7cyBwcm9wcmlldGFyeSBGQk5JQyBBU0lDLiBUaGUgY29yZSBkZXBlbmRlbmN5IGhlcmUgaXMgcGh5c2ljYWwgUENJIGhhcmR3YXJlLiBUaGUgY29kZSBkZWZpbmVzIHRoZSBzcGVjaWZpYyB2ZW5kb3IgYW5kIGRldmljZSBJRHM6IGBQQ0lfVkVORE9SX0lEX01FVEFgICgweDFkOWIpIGFuZCBgUENJX0RFVklDRV9JRF9NRVRBX0ZCTklDX0FTSUNgICgweDAwMTMpLCByZXNwZWN0aXZlbHksIHdpdGhpbiB0aGUgYGZibmljX3BjaV90YmxgLiBUaGF0JiMzOTtzIHRoZSBrZXk6IGl0ICpyZXF1aXJlcyogdGhlIGFjdHVhbCBoYXJkd2FyZS4KCk5vdywgbGV0JiMzOTtzIHNlZSBpZiB0aGlzIGFwcGxpZXMgdG8gYSBmdXp6aW5nIGNoZWNrLiBMZXQmIzM5O3MgbG9vayBhdCB0aGUgJiMzNDtXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBjb25kaXRpb25zLiBTcGVjaWZpY2FsbHksIHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNyaXRlcmlhIG1lbnRpb25zIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgbmVlZCByZWFsIEFTSUNzIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEdpdmVuIHdoYXQgSSBrbm93IGFib3V0IGBmYm5pY2AsIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkIG1hdGNoLiBJdCByZWxpZXMgb24gYSBjdXN0b20gQVNJQywgd2hpY2ggSSBzdHJvbmdseSBzdXNwZWN0IGlzbiYjMzk7dCBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBzZXR1cC4gU28gdGhlIGhhcmR3YXJlIHJlcXVpcmVtZW50IG1ha2VzIHRoaXMgZHJpdmVyIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgYXMgaXQgZXhwbGljaXRseSBzdGF0ZXMgaW4gdGhlICYjMzQ7bmVnYXRpdmUgY3JpdGVyaWEuJiMzNDsKCkkmIzM5O2xsIGFsc28gdGFrZSBhIGxvb2sgYXQgdGhlIHByb3ZpZGVkIHBhdGNoLiBJdCBzZWVtcyB0byBjb3JyZWN0IGFuIGVycm9yIGhhbmRsaW5nIGlzc3VlIHdpdGhpbiB0aGUgYGZibmljX2FsbG9jX3F0X3BhZ2VfcG9vbHNgIGZ1bmN0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNgLiBJdCYjMzk7cyBhIGZhaXJseSBzdHJhaWdodGZvcndhcmQgY2hhbmdlIHRoYXQgc2ltcGx5IGNvcnJlY3RzIHRoZSBhcmd1bWVudCBwYXNzZWQgdG8gYHBhZ2VfcG9vbF9kZXN0cm95YC4gSXQgZG9lc24mIzM5O3Qgc2VlbSB0byBpbmRpY2F0ZSBhbnkgcGFydGljdWxhciBmdXp6aW5nIHZ1bG5lcmFiaWxpdHkgaW4gaXRzZWxmLiBIb3dldmVyLCBpdCBkb2VzIHJlaW5mb3JjZSB0aGUgZmFjdCB0aGF0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGlzIG5lY2Vzc2FyeSBmb3IgcHJvcGVyIG9wZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU4MDpcdFx0XHRwcF9wYXJhbXMucG9vbF9zaXplID0gMzI3Njg7XG4xNTgxOlx0XG4xNTgyOlx0XHRwcCA9IHBhZ2VfcG9vbF9jcmVhdGUoXHUwMDI2cHBfcGFyYW1zKTtcbjE1ODM6XHRcdGlmIChJU19FUlIocHApKVxuMTU4NDpcdFx0XHRyZXR1cm4gUFRSX0VSUihwcCk7XG4xNTg1Olx0XG4xNTg2Olx0XHRxdC1cdTAwM2VzdWIwLnBhZ2VfcG9vbCA9IHBwO1xuMTU4NzpcdFx0aWYgKG5ldGlmX3J4cV9oYXNfdW5yZWFkYWJsZV9tcChmYm4tXHUwMDNlbmV0ZGV2LCByeHFfaWR4KSkge1xuMTU4ODpcdFx0XHRwcF9wYXJhbXMuZmxhZ3MgfD0gUFBfRkxBR19BTExPV19VTlJFQURBQkxFX05FVE1FTTtcbjE1ODk6XHRcdFx0cHBfcGFyYW1zLmRtYV9kaXIgPSBETUFfRlJPTV9ERVZJQ0U7XG4xNTkwOlx0XG4xNTkxOlx0XHRcdHBwID0gcGFnZV9wb29sX2NyZWF0ZShcdTAwMjZwcF9wYXJhbXMpO1xuMTU5MjpcdFx0XHRpZiAoSVNfRVJSKHBwKSlcbjE1OTM6XHRcdFx0XHRnb3RvIGVycl9kZXN0cm95X3N1YjA7XG4xNTk0Olx0XHR9IGVsc2Uge1xuMTU5NTpcdFx0XHRwYWdlX3Bvb2xfZ2V0KHBwKTtcbjE1OTY6XHRcdH1cbjE1OTc6XHRcdHF0LVx1MDAzZXN1YjEucGFnZV9wb29sID0gcHA7XG4xNTk4Olx0XG4xNTk5Olx0XHRyZXR1cm4gMDtcbjE2MDA6XHRcbjE2MDE6XHRlcnJfZGVzdHJveV9zdWIwOlxuMTYwMjpcdFx0cGFnZV9wb29sX2Rlc3Ryb3kocXQtXHUwMDNlc3ViMC5wYWdlX3Bvb2wpO1xuMTYwMzpcdFx0cmV0dXJuIFBUUl9FUlIocHApO1xuMTYwNDpcdH1cbjE2MDU6XHRcbjE2MDY6XHRzdGF0aWMgdm9pZCBmYm5pY19yaW5nX2luaXQoc3RydWN0IGZibmljX3JpbmcgKnJpbmcsIHUzMiBfX2lvbWVtICpkb29yYmVsbCxcbjE2MDc6XHRcdFx0XHQgICAgaW50IHFfaWR4LCB1OCBmbGFncylcbjE2MDg6XHR7XG4xNjA5Olx0XHR1NjRfc3RhdHNfaW5pdChcdTAwMjZyaW5nLVx1MDAzZXN0YXRzLnN5bmNwKTtcbjE2MTA6XHRcdHJpbmctXHUwMDNlZG9vcmJlbGwgPSBkb29yYmVsbDtcbjE2MTE6XHRcdHJpbmctXHUwMDNlcV9pZHggPSBxX2lkeDtcbjE2MTI6XHRcdHJpbmctXHUwMDNlZmxhZ3MgPSBmbGFncztcbjE2MTM6XHRcdHJpbmctXHUwMDNlZGVmZXJyZWRfaGVhZCA9IC0xO1xuMTYxNDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY2NDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgU3VidGxlIE1lbW9yeSBNYW5hZ2VtZW50IElzc3VlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNvbWV0aGluZyBqdW1wcyBvdXQgYXQgbWU6IGBwcGAgaXMgYmVpbmcgcGFzc2VkIHRvIGBwYWdlX3Bvb2xfZGVzdHJveWAuIEkgc2VlIHRoZSBgcGFnZV9wb29sX2NyZWF0ZWAgY2FsbCBhbmQgdGhlIGNoZWNrIGZvciBgSVNfRVJSKHBwKWAuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgZXJyb3IgaGFuZGxpbmcsIHJpZ2h0PyBCdXQgd2FpdC4uLiBpZiBgcHBgIGlzIGFuIGVycm9yIHBvaW50ZXIsIHRoZW4gaXQgc2hvdWxkbiYjMzk7dCBiZSBwYXNzZWQgdG8gYHBhZ2VfcG9vbF9kZXN0cm95YCEgSXQgbG9va3MgbGlrZSB0aGVyZSB3YXMgYSBzdWJ0bGUgYnVnIHdoZXJlIHRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwYXNzaW5nIHRoZSBlcnJvciB2YWx1ZSB0byBgcGFnZV9wb29sX2Rlc3Ryb3lgLiBUaGUgZml4IGNoYW5nZWQgaXQgdG8gY29ycmVjdGx5IGRlc3Ryb3kgdGhlIGFscmVhZHkgY3JlYXRlZCBwYWdlIHBvb2wgYHF0LSZndDtzdWIwLnBhZ2VfcG9vbGAuCgpOb3csIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucy4gVGhpcyBmaXggaXMgZ29vZCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqLiBXYXMgdGhlcmUgbWVtb3J5IGNvcnJ1cHRpb24/IEEgbGVhaz8gVGhpcyBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uLiBJIG5lZWQgdG8ga25vdyB3aGVyZSBgZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29sc2AgaXMgY2FsbGVkIGFuZCBob3cgdGhpcyBpc3N1ZSB3YXMgdHJpZ2dlcmVkLiBUaGUgY29udGV4dCBpcyB2aXRhbC4gVGltZSB0byBjaGVjayB0aGUgY2FsbCBzaXRlcyB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgd2hhdCBvdGhlciBmdW5jdGlvbnMgY291bGQgdHJpZ2dlciB0aGlzIHNhbWUgaXNzdWUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgYnJvYWRlciBwaWN0dXJlIGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYm5pY19hbGxvY19xdF9wYWdlX3Bvb2xzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0xNTUxPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjE1NTI6ZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29scyhzdHJ1Y3QgZmJuaWNfbmV0ICpmYm4sIHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTE1NTMtXHRcdFx0ICB1bnNpZ25lZCBpbnQgcnhxX2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMDA0PXN0YXRpYyBpbnQgZmJuaWNfYWxsb2NfcnhfcXRfcmVzb3VyY2VzKHN0cnVjdCBmYm5pY19uZXQgKmZibixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMDEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjAxMTpcdGVyciA9IGZibmljX2FsbG9jX3F0X3BhZ2VfcG9vbHMoZmJuLCBxdCwgcXQtXHUwMDNlY21wbC5xX2lkeCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMDEyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yODMyPXN0YXRpYyBpbnQgZmJuaWNfcXVldWVfbWVtX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjg0MS1cdGlmICghbmV0aWZfcnVubmluZyhkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6Mjg0MjpcdFx0cmV0dXJuIGZibmljX2FsbG9jX3F0X3BhZ2VfcG9vbHMoZmJuLCBxdCwgaWR4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTI4NDMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTQxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIGZibmljIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHJlc291cmNlcyBhcmUgYWxsb2NhdGVkIHdpdGhpbiB0aGUgYGZibmljYCBkcml2ZXIuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgYWxsb2NhdGlvbiBmdW5jdGlvbnMgYXJlIGBmYm5pY19hbGxvY19yeF9xdF9yZXNvdXJjZXNgIGFuZCBgZmJuaWNfcXVldWVfbWVtX2FsbG9jYC4gVGhlc2UgYXJlIGJlaW5nIGNhbGxlZCB0aHJvdWdoIHRoZSBgbmV0ZGV2YCBpbnRlcmZhY2UsIGVpdGhlciBkaXJlY3RseSB0aHJvdWdoIGBuZXRkZXZfc3RhdF9vcHNgIG9yIGluZGlyZWN0bHkgdmlhIGBuZXRkZXZfcXVldWVfbWdtdF9vcHNgLiBOYXR1cmFsbHksIHRoaXMgd2hvbGUgcHJvY2VzcyBpcyBwcmVkaWNhdGVkIG9uIHRoZSBleGlzdGVuY2Ugb2YgYW4gYGZibmljYCBuZXR3b3JrIGRldmljZSAoYG5ldGRldmApLgoKTm93LCB3aGVyZSBkb2VzIHRoaXMgYG5ldGRldmAgYWN0dWFsbHkgZ2V0IGNyZWF0ZWQ/IEl0JiMzOTtzIHJlZ2lzdGVyZWQgd2l0aGluIGBmYm5pY19wcm9iZWAsIHdoaWNoIG9ubHkgaGFwcGVucyB3aGVuIGEgcGh5c2ljYWwgUENJZSBkZXZpY2Ugd2l0aCB0aGUgc3BlY2lmaWMgdmVuZG9yIElEIDB4MWQ5YiBhbmQgZGV2aWNlIElEIDB4MDAxMyBpcyBkZXRlY3RlZCBkdXJpbmcgdGhlIHByb2JlLgoKVGhpcyBpbW1lZGlhdGVseSByYWlzZXMgYSBxdWVzdGlvbjogSXMgdGhlcmUgYW55IGZvcm0gb2YgdmlydHVhbCBgZmJuaWNgIGRldmljZSBvciBhbiBlbXVsYXRpb24gbWVjaGFuaXNtPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBJIGNhbiB0ZXN0IG9yIHdvcmsgd2l0aCB0aGlzIGRyaXZlciB3aXRob3V0IGhhdmluZyB0aGUgc3BlY2lmaWMgaGFyZHdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IGRpZyB0aHJvdWdoIHRoZSBgdG9vbHMvdGVzdGluZ2AgZGlyZWN0b3J5LCBhbmQgdGhlIHdpZGVyIGNvZGViYXNlIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbWVudGlvbiBvZiB2aXJ0dWFsIG9yIGVtdWxhdGVkIGBmYm5pY2AgZGV2aWNlcy4gSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggZm9yIGFueSBoaW50cyBpbiB0aGUgY29kZSBiYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZibmljJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dG9vbHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODAwOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipNeSBMaW5lIG9mIElucXVpcnkqKgoKT2theSwgc28gSSYjMzk7dmUgaGl0IGEgcG90ZW50aWFsIGRlYWQgZW5kLiBUaW1lIHRvIGJyb2FkZW4gdGhlIHNlYXJjaC4gSSBuZWVkIHRvIGJlIG1ldGhvZGljYWwuIEluc3RlYWQgb2YgZm9jdXNpbmcgb24gdGhlIGN1cnJlbnQgYXJlYSwgaXQmIzM5O3MgcHJ1ZGVudCB0byBleHBhbmQgbXkgc2NvcGUuIEkgc2hvdWxkIGNhc3QgYSB3aWRlciBuZXQuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGVsc2V3aGVyZSBpbiB0aGUgZHJpdmVyIGNvZGUsIG9yIHRoZSBhcmNoaXRlY3R1cmFsIGVsZW1lbnRzLiBNYXliZSB0aGVyZSYjMzk7cyBhIHJlbGF0ZWQgaW50ZXJhY3Rpb24gaGFwcGVuaW5nIGluIGEgZGlmZmVyZW50IHBhcnQgb2YgdGhlIHN5c3RlbSB0aGF0IGlzIHRoZSByb290IG9mIHRoZSBpc3N1ZS4gQSBwYXJhbGxlbCBjb25jZXB0LCBvciBzaW1pbGFyIGFwcHJvYWNoLiBJdCYjMzk7cyBhIGtleSBzdHJhdGVneSB0byBlbGltaW5hdGUgcG9zc2liaWxpdGllcyBhbmQgdW5jb3ZlciB0aGUgY29yZSBpc3N1ZS4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZm9sbG93IHRoZSBicmVhZGNydW1icyBmcm9tIG1vZHVsZSB0byBtb2R1bGUgaW4gb3JkZXIgdG8gYXZvaWQgd2FzdGluZyB0aW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtGQk5JQ19BU0lDJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg9OT1zdHJ1Y3QgZmJuaWNfZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oOjQwOiNkZWZpbmUgUENJX0RFVklDRV9JRF9NRVRBX0ZCTklDX0FTSUNcdFx0MHgwMDEzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM9MzA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGZibmljX3BjaV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MzE6XHR7IFBDSV9ERVZJQ0VfREFUQShNRVRBLCBGQk5JQ19BU0lDLCBmYm5pY19ib2FyZF9hc2ljKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0zMi1cdC8qIFJlcXVpcmVkIGxhc3QgZW50cnkgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0NjEKCQkJCQkJCW91dHB1dDogMTA0CgkJCQkJCQl0aG91Z2h0czogNDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZCTklDIERyaXZlciBBbmFseXNpcyBhbmQgRnV6emluZyBEZWNpc2lvbioqCgpPa2F5LCBzbyBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGQk5JQyBpcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIsIGEgU21hcnROSUMvRXRoZXJuZXQgQVNJQyBkcml2ZXIgZm9yIE1ldGEmIzM5O3MgY3VzdG9tIGhhcmR3YXJlICgxZDliOjAwMTMsIGdvdCBpdCkuIFRoZSBrZXkgdGhpbmcgaXMsIGl0JiMzOTtzIG5vdCBnb2luZyB0byBydW4gaW4gdGhlIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aGF0IHdlIHR5cGljYWxseSB1c2UgZm9yIGZ1enppbmcuIEkmIzM5O20gcmVjYWxsaW5nIFNlY3Rpb24gMiBvZiB0aGUgdHJpYWdlIHBoaWxvc29waHkgaW1tZWRpYXRlbHkg4oCTIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IHNlY3Rpb24gaXMgdGhlIGtleS4KClRoYXQgcGhpbG9zb3BoeSBleHBsaWNpdGx5IGNhbGxzIG91dCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVIGRyaXZlcnMsICpyZXF1aXJpbmcqIHBoeXNpY2FsIEFTSUNzLiBJdCBzcGVjaWZpY2FsbHkgbGlzdHMgZXhhbXBsZXMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgLi4uIGFuZCwgaW1wb3J0YW50bHksIEZCTklDLiBUaGUgY29yZSBwcmluY2lwbGUgaXMgKnJlYWNoYWJpbGl0eSouIElmIHRoZSBjb2RlIGNhbiYjMzk7dCBleGVjdXRlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGZvcmdldCBhYm91dCBmdXp6aW5nIGl0LiBJdCBkb2VzbiYjMzk7dCBtYXR0ZXIgaWYgdGhlcmUgYXJlIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYyBpbiB0aGVyZTsgaXQmIzM5O3MgYSBkZWFkIGVuZC4KCkFwcGx5aW5nIHRoZSAmIzM0O25lZ2F0aXZlIGNyaXRlcmlhLCYjMzQ7IHRoaXMgcGF0Y2ggKmFic29sdXRlbHkqIGZhbGxzIGludG8gdGhlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBjYXRlZ29yeS4gVGhlcmVmb3JlLCBXb3J0aEZ1enppbmcgKiptdXN0KiogYmUgYGZhbHNlYC4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgRm9jdXNTeW1ib2xzIGFuZCBFbmFibGVDb25maWdzIGFyZSBlbXB0eSAob3IgYXQgbGVhc3QsIHNob3VsZCBiZSkuIEl0JiMzOTtzIGEgd2FzdGUgb2YgcmVzb3VyY2VzIHRvIGV2ZW4gY29uc2lkZXIgb3RoZXJ3aXNlLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybS4gVGhlIHBhdGNoIHRvdWNoZXMgb25seSBgZmJuaWNfdHhyeC5jYCwgc3BlY2lmaWNhbGx5IGBmYm5pY19hbGxvY19xdF9wYWdlX3Bvb2xzYC4gVGhhdCYjMzk7cyBpdC4gTm8gb3RoZXIgZmlsZXMuIEFuZCB0aGlzIGNvZGUgaXMgYWxsIGludGVybmFsIHRvIHRoZSBgZmJuaWNgIGRyaXZlciwgd2hpY2ggaXMsIGFnYWluLCBNZXRhJiMzOTtzIHBoeXNpY2FsIFBDSWUgTklDIEFTSUMuIEl0JiMzOTtzICpkZWZpbml0ZWx5KiB1bnJlYWNoYWJsZSB3aXRob3V0IHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUuCgpSaWdodCwgYWxsIGNoZWNrcyBjb21wbGV0ZS4gV2UmIzM5O3JlIGdvb2QgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBObyBuZWVkIHRvIHdhc3RlIHRpbWUgZnVydGhlciBhbmFseXppbmcgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIHBhcnQgb2YgdGhlIGZibmljIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy8pLCB3aGljaCBkcml2ZXMgTWV0YSYjMzk7cyBwcm9wcmlldGFyeSBob3N0IG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQgKFBDSWUgQVNJQykuIFRoaXMgaGFyZHdhcmUgaXMgdmVuZG9yLXNwZWNpZmljIGFuZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggZHJpdmVzIE1ldGEmIzM5O3MgcHJvcHJpZXRhcnkgaG9zdCBuZXR3b3JrIGludGVyZmFjZSBjYXJkIChQQ0llIEFTSUMpLiBUaGlzIGhhcmR3YXJlIGlzIHZlbmRvci1zcGVjaWZpYyBhbmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxMjoyMi4xMzkxNDE0NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NTA1NDI4NjY1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgcGFydCBvZiB0aGUgZmJuaWMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljLyksIHdoaWNoIGRyaXZlcyBNZXRhJ3MgcHJvcHJpZXRhcnkgaG9zdCBuZXR3b3JrIGludGVyZmFjZSBjYXJkIChQQ0llIEFTSUMpLiBUaGlzIGhhcmR3YXJlIGlzIHZlbmRvci1zcGVjaWZpYyBhbmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjEyOjIyLjEzOTE0NjI1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTAxNjYzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3N2MyOGFiZDdlYTQ0ZTBkOGM4YTVlZmExZjg3OWNmMjIzNzcwMmJlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDE1IDE0OjEyOjIxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNcXG5pbmRleCA0MDFmOGI4YWUxY2FlLi41MjhkNzIwNzFhZmZmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNcXG5AQCAtMTU5OSw3ICsxNTk5LDcgQEAgZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29scyhzdHJ1Y3QgZmJuaWNfbmV0ICpmYm4sIHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCxcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBlcnJfZGVzdHJveV9zdWIwOlxcbi1cXHRwYWdlX3Bvb2xfZGVzdHJveShwcCk7XFxuK1xcdHBhZ2VfcG9vbF9kZXN0cm95KHF0LVxcdTAwM2VzdWIwLnBhZ2VfcG9vbCk7XFxuIFxcdHJldHVybiBQVFJfRVJSKHBwKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTI6MjIuNjUwMTE2ODJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjM5NDU0MzI5OTkyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggZHJpdmVzIE1ldGEncyBwcm9wcmlldGFyeSBob3N0IG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQgKFBDSWUgQVNJQykuIFRoaXMgaGFyZHdhcmUgaXMgdmVuZG9yLXNwZWNpZmljIGFuZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3N2MyOGFiZDdlYTQ0ZTBkOGM4YTVlZmExZjg3OWNmMjIzNzcwMmJlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTQ6MTI6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXG5pbmRleCA0MDFmOGI4YWUxY2FlLi41MjhkNzIwNzFhZmZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXG5AQCAtMTU5OSw3ICsxNTk5LDcgQEAgZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29scyhzdHJ1Y3QgZmJuaWNfbmV0ICpmYm4sIHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCxcbiBcdHJldHVybiAwO1xuIFxuIGVycl9kZXN0cm95X3N1YjA6XG4tXHRwYWdlX3Bvb2xfZGVzdHJveShwcCk7XG4rXHRwYWdlX3Bvb2xfZGVzdHJveShxdC1cdTAwM2VzdWIwLnBhZ2VfcG9vbCk7XG4gXHRyZXR1cm4gUFRSX0VSUihwcCk7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTI6MjIuNjUwMTE4OTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozNzY5MTIxOTg0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jYC4gSSdsbCBpbW1lZGlhdGVseSB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGdldCBhIGdyaXAgb24gdGhlIGNoYW5nZXMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBJdCdzIGFsd2F5cyBiZXN0IHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqIGJlZm9yZSBnZXR0aW5nIGxvc3QgaW4gdGhlICp3aGF0Ki5cblxuT2theSwgcmVhZGluZyB0aGUgcGF0Y2ggaXRzZWxmLi4uIEFoLCBhIGBwYWdlX3Bvb2xfZGVzdHJveWAgY2FsbCBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhlIGVhcmxpZXIgY29kZSB3YXMgbm90IGNvcnJlY3RseSBkZXN0cm95aW5nIHRoZSBgcGFnZV9wb29sYC4gVGhpcyBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGEgbWVtb3J5IGxlYWssIHdoaWNoIG5lZWRzIHRvIGJlIGxvb2tlZCBpbnRvLiBUaGUgb3JpZ2luYWwgY29kZSBkZXN0cm95ZWQgdGhlIHZhcmlhYmxlIGBwcGAsIHdoaWxlIHRoZSBuZXcgY29kZSBpcyBkZXN0cm95aW5nIGBxdC1cdTAwM2VzdWIwLnBhZ2VfcG9vbGAuXG5cbk5vdywgYmVmb3JlIEkgZ28gZGVlcGVyIGludG8gdGhlIGNvZGUgbG9naWMsIGxldCBtZSBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgYGZibmljYCBpcy4gTWV0YSdzIE5ldHdvcmsgSW50ZXJmYWNlIENhcmQsIHJpZ2h0PyBKdXN0IG5lZWQgdG8gY29uZmlybS4gSSdsbCBwZWVrIGF0IHRoZSBLY29uZmlnIHRvIGJlIHN1cmUsIGFuZCB0byBjaGVjayBvbiBhbnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODkyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTM6MDAuMzQxMzQxMTY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzI0MDEwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYm5pY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODQ0MCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTM1LVxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzozNjpcXHQgIHdpbGwgYmUgY2FsbGVkIGZibmljLiAgTVNJLVggaW50ZXJydXB0IHN1cHBvcnQgaXMgcmVxdWlyZWQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfRkJOSUMpICs9IGZibmljL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZS03LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfRkJOSUMpICs9IGZibmljLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlLTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxMDpmYm5pYy15IDo9IGZibmljX2Nzci5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjExOlxcdCAgIGZibmljX2RlYnVnZnMubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxMjpcXHQgICBmYm5pY19kZXZsaW5rLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTM6XFx0ICAgZmJuaWNfZXRodG9vbC5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE0OlxcdCAgIGZibmljX2Z3Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTU6XFx0ICAgZmJuaWNfZndfbG9nLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTY6XFx0ICAgZmJuaWNfaHdfc3RhdHMubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxNzpcXHQgICBmYm5pY19od21vbi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE4OlxcdCAgIGZibmljX2lycS5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE5OlxcdCAgIGZibmljX21hYy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIwOlxcdCAgIGZibmljX25ldGRldi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIxOlxcdCAgIGZibmljX3BjaS5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIyOlxcdCAgIGZibmljX3BoeWxpbmsubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyMzpcXHQgICBmYm5pY19ycGMubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyNDpcXHQgICBmYm5pY19tZGlvLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjU6XFx0ICAgZmJuaWNfdGltZS5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjI2OlxcdCAgIGZibmljX3Rsdi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjI3OlxcdCAgIGZibmljX3R4cngubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZS0yOC0jIEVuZCBvZiBvYmplY3RzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzOiNpbmNsdWRlIFxcXCJmYm5pY19jc3IuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQ6I2luY2x1ZGUgXFxcImZibmljX2Z3LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1OiNpbmNsdWRlIFxcXCJmYm5pY19md19sb2cuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTY6I2luY2x1ZGUgXFxcImZibmljX2h3X3N0YXRzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3OiNpbmNsdWRlIFxcXCJmYm5pY19tYWMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg6I2luY2x1ZGUgXFxcImZibmljX3JwYy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjA6c3RydWN0IGZibmljX25hcGlfdmVjdG9yO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU6c3RydWN0IGZibmljX2RldiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI2LVxcdHN0cnVjdCBkZXZpY2UgKmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0zNC1cXHR1MzIgX19pb21lbSAqdWNfYWRkcjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjM1OlxcdGNvbnN0IHN0cnVjdCBmYm5pY19tYWMgKm1hYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMzYtXFx0dW5zaWduZWQgaW50IGZ3X21zaXhfdmVjdG9yO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo0NzpcXHRzdHJ1Y3QgZmJuaWNfZndfbWJ4IG1ieFtGQk5JQ19JUENfTUJYX0lORElDRVNdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo0ODpcXHRzdHJ1Y3QgZmJuaWNfZndfY2FwIGZ3X2NhcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NDk6XFx0c3RydWN0IGZibmljX2Z3X2NvbXBsZXRpb24gKmNtcGxfZGF0YVtGQk5JQ19NQlhfQ01QTF9TTE9UU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTUwLVxcdC8qIExvY2sgcHJvdGVjdGluZyBUeCBNYWlsYm94IHF1ZXVlIHRvIHByZXZlbnQgcG9zc2libGUgcmFjZXMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC02Mi1cXHQvKiBMb2NhbCBjb3B5IG9mIHRoZSBkZXZpY2VzIFRDQU0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NjM6XFx0c3RydWN0IGZibmljX2FjdF90Y2FtIGFjdF90Y2FtW0ZCTklDX1JQQ19UQ0FNX0FDVF9OVU1fRU5UUklFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjY0OlxcdHN0cnVjdCBmYm5pY19tYWNfYWRkciBtYWNfYWRkcltGQk5JQ19SUENfVENBTV9NQUNEQV9OVU1fRU5UUklFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTY1LVxcdHU4IG1hY19hZGRyX2JvdW5kYXJ5O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTY4LVxcdC8qIElQIFRDQU0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6Njk6XFx0c3RydWN0IGZibmljX2lwX2FkZHIgaXBfc3JjW0ZCTklDX1JQQ19UQ0FNX0lQX0FERFJfTlVNX0VOVFJJRVNdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo3MDpcXHRzdHJ1Y3QgZmJuaWNfaXBfYWRkciBpcF9kc3RbRkJOSUNfUlBDX1RDQU1fSVBfQUREUl9OVU1fRU5UUklFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjcxOlxcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwb19zcmNbRkJOSUNfUlBDX1RDQU1fSVBfQUREUl9OVU1fRU5UUklFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjcyOlxcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwb19kc3RbRkJOSUNfUlBDX1RDQU1fSVBfQUREUl9OVU1fRU5UUklFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTczLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo3NzpcXHQvKiBMb2NrIHByb3RlY3Rpbmcgd3JpdGVzIHRvIEB0aW1lX2hpZ2gsIEB0aW1lX29mZnNldCBvZiBmYm5pY19uZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTc4LVxcdCAqIGFuZCB0aGUgSFcgdGltZSBDU1IgbWFjaGluZXJ5Llxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTkxLVxcdC8qIExvY2FsIGNvcHkgb2YgaGFyZHdhcmUgc3RhdGlzdGljcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo5MjpcXHRzdHJ1Y3QgZmJuaWNfaHdfc3RhdHMgaHdfc3RhdHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo5ODpcXHRzdHJ1Y3QgZmJuaWNfZndfbG9nIGZ3X2xvZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtOTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg9MTEyPWVudW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTExNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTE4OnN0YXRpYyBpbmxpbmUgYm9vbCBmYm5pY19wcmVzZW50KHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEyMzpzdGF0aWMgaW5saW5lIHZvaWQgZmJuaWNfd3IzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEyNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMzE6dTMyIGZibmljX3JkMzIoc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMzM6c3RhdGljIGlubGluZSB2b2lkIGZibmljX3dyZmwoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMzU6XFx0ZmJuaWNfcmQzMihmYmQsIEZCTklDX01BU1RFUl9TUEFSRV8wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTM2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaD0xMzg9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzOTpmYm5pY19ybXczMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNDAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQzOlxcdHYgPSBmYm5pY19yZDMyKGZiZCwgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQ0LVxcdHYgXFx1MDAyNj0gfm1hc2s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0NS1cXHR2IHw9IHZhbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQ2OlxcdGZibmljX3dyMzIoZmJkLCByZWcsIHYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNDctfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE0OTojZGVmaW5lIHdyMzIoX2YsIF9yLCBfdilcXHRmYm5pY193cjMyKF9mLCBfciwgX3YpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1MDojZGVmaW5lIHJkMzIoX2YsIF9yKVxcdFxcdGZibmljX3JkMzIoX2YsIF9yKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTE6I2RlZmluZSB3cmZsKF9mKVxcdFxcdGZibmljX3dyZmwoX2YpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTUzOmJvb2wgZmJuaWNfZndfcHJlc2VudChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTQ6dTMyIGZibmljX2Z3X3JkMzIoc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU1OnZvaWQgZmJuaWNfZndfd3IzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcsIHUzMiB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1NzojZGVmaW5lIGZ3X3JkMzIoX2YsIF9yKVxcdFxcdGZibmljX2Z3X3JkMzIoX2YsIF9yKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTg6I2RlZmluZSBmd193cjMyKF9mLCBfciwgX3YpXFx0ZmJuaWNfZndfd3IzMihfZiwgX3IsIF92KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTk6I2RlZmluZSBmd193cmZsKF9mKVxcdFxcdGZibmljX2Z3X3JkMzIoX2YsIEZCTklDX0ZXX1pFUk9fUkVHKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE2MTpzdGF0aWMgaW5saW5lIGJvb2wgZmJuaWNfYm1jX3ByZXNlbnQoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTY2OnN0YXRpYyBpbmxpbmUgYm9vbCBmYm5pY19pbml0X2ZhaWx1cmUoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTcxOmV4dGVybiBjaGFyIGZibmljX2RyaXZlcl9uYW1lW107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTczOnZvaWQgZmJuaWNfZGV2bGlua19mcmVlKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3NDpzdHJ1Y3QgZmJuaWNfZGV2ICpmYm5pY19kZXZsaW5rX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc1OmludCBmYm5pY19kZXZsaW5rX2hlYWx0aF9jcmVhdGUoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc2OnZvaWQgZmJuaWNfZGV2bGlua19oZWFsdGhfZGVzdHJveShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzc6dm9pZCBmYm5pY19kZXZsaW5rX3JlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3ODp2b2lkIGZibmljX2RldmxpbmtfdW5yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNzktdm9pZCBfX3ByaW50ZigyLCAzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODA6ZmJuaWNfZGV2bGlua19md19yZXBvcnQoc3RydWN0IGZibmljX2RldiAqZmJkLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4MTp2b2lkIGZibmljX2Rldmxpbmtfb3RwX2NoZWNrKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgY29uc3QgY2hhciAqbXNnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODM6aW50IGZibmljX2Z3X3JlcXVlc3RfbWJ4KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4NDp2b2lkIGZibmljX2Z3X2ZyZWVfbWJ4KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg2OnZvaWQgZmJuaWNfaHdtb25fcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg3OnZvaWQgZmJuaWNfaHdtb25fdW5yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4OTppbnQgZmJuaWNfbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5MDp2b2lkIGZibmljX21hY19mcmVlX2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5Mjp2b2lkIGZibmljX25hcGlfbmFtZV9pcnFzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5MzppbnQgZmJuaWNfbmFwaV9yZXF1ZXN0X2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5NDpcXHRcXHRcXHQgICBzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk1OnZvaWQgZmJuaWNfbmFwaV9mcmVlX2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5NjpcXHRcXHRcXHQgc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5Nzp2b2lkIGZibmljX3N5bmNocm9uaXplX2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGludCBucik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5ODppbnQgZmJuaWNfcmVxdWVzdF9pcnEoc3RydWN0IGZibmljX2RldiAqZGV2LCBpbnQgbnIsIGlycV9oYW5kbGVyX3QgaGFuZGxlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTk5LVxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMDA6dm9pZCBmYm5pY19mcmVlX2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpkZXYsIGludCBuciwgdm9pZCAqZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjAyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMDM6ICogZW51bSBmYm5pY19tc2l4X3NlbGZfdGVzdF9jb2RlcyAtIHJldHVybiBjb2RlcyBmcm9tIHNlbGYgdGVzdCByb3V0aW5lc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMDQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMTgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIxOTplbnVtIGZibmljX21zaXhfc2VsZl90ZXN0X2NvZGVzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjIwLVxcdEZCTklDX1RFU1RfTVNJWF9TVUNDRVNTID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzMTplbnVtIGZibmljX21zaXhfc2VsZl90ZXN0X2NvZGVzIGZibmljX21zaXhfdGVzdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzMzp2b2lkIGZibmljX2ZyZWVfaXJxcyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMzQ6aW50IGZibmljX2FsbG9jX2lycXMoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMzY6dm9pZCBmYm5pY19nZXRfZndfdmVyX2NvbW1pdF9zdHIoc3RydWN0IGZibmljX2RldiAqZmJkLCBjaGFyICpmd192ZXJzaW9uLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzctXFx0XFx0XFx0XFx0IGNvbnN0IHNpemVfdCBzdHJfc3opO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzOTp2b2lkIGZibmljX2RiZ19mYmRfaW5pdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDA6dm9pZCBmYm5pY19kYmdfZmJkX2V4aXQoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQxOnZvaWQgZmJuaWNfZGJnX2luaXQodm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0Mjp2b2lkIGZibmljX2RiZ19leGl0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0NDp2b2lkIGZibmljX3JwY19yZXNldF92YWxpZF9lbnRyaWVzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ2OmludCBmYm5pY19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0ODp2b2lkIGZibmljX2Nzcl9nZXRfcmVncyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiAqZGF0YSwgdTMyICpyZWdzX3ZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDk6aW50IGZibmljX2Nzcl9yZWdzX2xlbihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1MTp2b2lkIGZibmljX2NvbmZpZ190eHJ4X3VzZWNzKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYsIHUzMiBhcm0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNTI6dm9pZCBmYm5pY19jb25maWdfcnhfZnJhbWVzKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1NDplbnVtIGZibmljX2JvYXJkcyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1NTpcXHRmYm5pY19ib2FyZF9hc2ljXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1Ni19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1ODpzdHJ1Y3QgZmJuaWNfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1OS1cXHR1bnNpZ25lZCBpbnQgbWF4X251bV9xdWV1ZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzo0OiNpbmNsdWRlIFxcXCJmYm5pYy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMTpzdHJ1Y3QgZmJuaWNfY3NyX2JvdW5kcyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMi1cXHR1MzJcXHRzdGFydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNjpzdGF0aWMgY29uc3Qgc3RydWN0IGZibmljX2Nzcl9ib3VuZHMgZmJuaWNfY3NyX3NlY3RzW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNy1cXHRGQk5JQ19CT1VORFMoSU5UUiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6NjA6c3RhdGljIHZvaWQgZmJuaWNfY3NyX2dldF9yZWdzX3JwY19yYW0oc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgKipkYXRhX3ApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy02MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTExNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjExNTp2b2lkIGZibmljX2Nzcl9nZXRfcmVncyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiAqZGF0YSwgdTMyICpyZWdzX3ZlcnNpb24pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMTYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTE3OlxcdGNvbnN0IHN0cnVjdCBmYm5pY19jc3JfYm91bmRzICpib3VuZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTExOC1cXHR1MzIgKnN0YXJ0ID0gZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTIzLVxcdC8qIFNraXAgUlBDX1JBTSBzZWN0aW9uIHdoaWNoIGNhbm5vdCBiZSBkdW1wZWQgbGluZWFybHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEyNDpcXHRmb3IgKGkgPSAwLCBib3VuZCA9IGZibmljX2Nzcl9zZWN0cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEyNTpcXHQgICAgIGkgXFx1MDAzYyBBUlJBWV9TSVpFKGZibmljX2Nzcl9zZWN0cykgLSAxOyBpKyssICsrYm91bmQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEyNi1cXHRcXHQqKGRhdGErKykgPSBib3VuZC1cXHUwMDNlc3RhcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEzMi1cXHQvKiBEdW1wIHRoZSBSUENfUkFNIGFzIHNwZWNpYWwgY2FzZSByZWdpc3RlcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEzMzpcXHRmYm5pY19jc3JfZ2V0X3JlZ3NfcnBjX3JhbShmYmQsIFxcdTAwMjZkYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEzNTpcXHRXQVJOX09OKGRhdGEgLSBzdGFydCAhPSBmYm5pY19jc3JfcmVnc19sZW4oZmJkKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMzYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTM4OmludCBmYm5pY19jc3JfcmVnc19sZW4oc3RydWN0IGZibmljX2RldiAqZmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTQ0LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTQ1OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGZibmljX2Nzcl9zZWN0cyk7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjE0NjpcXHRcXHRsZW4gKz0gZmJuaWNfY3NyX3NlY3RzW2ldLmVuZCAtIGZibmljX2Nzcl9zZWN0c1tpXS5zdGFydCArIDI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE1OC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjE1OTpzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTYwLVxcdGludFxcdHJlZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTc0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTc1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEgcGF0dGVybl90ZXN0W10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNzYtXFx0RkJOSUNfUVVFVUVfUkVHX1RFU1QoVFdRMF9DVEwsIEZCTklDX1FVRVVFX1RXUV9DVExfUkVTRVQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjIxMjpzdGF0aWMgZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyMTM6ZmJuaWNfY3NyX3JlZ19wYXR0ZXJuX3Rlc3Qoc3RydWN0IGZibmljX2RldiAqZmJkLCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyMTQ6XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGZibmljX2Nzcl9yZWdfdGVzdF9kYXRhICp0ZXN0X2RhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yMTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjE2LVxcdHN0YXRpYyBjb25zdCB1MzIgcGF0dGVybltdID0geyB+MCwgMHg1QTVBNUE1QSwgMHhBNUE1QTVBNSwgMH07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyMTc6XFx0ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIHJlZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxOC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjQ3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjQ4OiAqIGZibmljX2Nzcl9yZWdzX3Rlc3QoKSAtIFZlcmlmeSBiZWhhdmlvciBvZiBOSUMgcmVnaXN0ZXJzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNDktICogQGZiZDogZGV2aWNlIHRvIHRlc3RcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjU4LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI1OTplbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgZmJuaWNfY3NyX3JlZ3NfdGVzdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNjAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjYxOlxcdGNvbnN0IHN0cnVjdCBmYm5pY19jc3JfcmVnX3Rlc3RfZGF0YSAqdGVzdF9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjYyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNjctXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHRlc3RfZGF0YS1cXHUwMDNlYXJyYXlfbGVuOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI2ODpcXHRcXHRcXHRlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgcmVnID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI2OTpcXHRcXHRcXHRcXHRmYm5pY19jc3JfcmVnX3BhdHRlcm5fdGVzdChmYmQsIGksIHRlc3RfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDo5OnN0cnVjdCBmYm5pY19kZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg9MTIzNT1lbnVte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMjM5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6MTI0MDogKiBlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgLSByZXR1cm4gY29kZXMgZnJvbSBzZWxmIHRlc3Qgcm91dGluZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNDEtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI0OS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oOjEyNTA6ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNTEtXFx0RkJOSUNfUkVHX1RFU1RfU1VDQ0VTUyA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDoxMjU0OmVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2RlcyBmYm5pY19jc3JfcmVnc190ZXN0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMjU1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo5OiNpbmNsdWRlIFxcXCJmYm5pYy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEwOiNpbmNsdWRlIFxcXCJmYm5pY190eHJ4LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTI6c3RhdGljIHN0cnVjdCBkZW50cnkgKmZibmljX2RiZ19yb290O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTY6c3RhdGljIHZvaWQgZmJuaWNfZGJnX2Rlc2NfYnJlYWsoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNDpzdGF0aWMgdm9pZCBmYm5pY19kYmdfcmluZ19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjY6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI3LVxcdHVuc2lnbmVkIGxvbmcgZG9vcmJlbGxfb2Zmc2V0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzE6XFx0Y3NyX2Jhc2UgPSBmYm5pY19yaW5nX2Nzcl9iYXNlKHJpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMyLVxcdGRvb3JiZWxsX29mZnNldCA9IHJpbmctXFx1MDAzZWRvb3JiZWxsIC0gY3NyX2Jhc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy03NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo3NjpzdGF0aWMgdm9pZCBmYm5pY19kYmdfdHdkX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCBpbnQgaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy03Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Nzg6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTc5LVxcdHU2NCB0d2QgPSBsZTY0X3RvX2NwdShyaW5nLVxcdTAwM2VkZXNjW2ldKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMDc6c3RhdGljIGludCBmYm5pY19kYmdfdHdxX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEwOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTA5OlxcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMTAtXFx0Y2hhciBoZHJbODBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTEzLVxcdC8qIEdlbmVyYXRlIGhlYWRlciBvbiBmaXJzdCBlbnRyeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjExNDpcXHRmYm5pY19kYmdfcmluZ19zaG93KHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExNS1cXHRzbnByaW50ZihoZHIsIHNpemVvZihoZHIpLCBcXFwiJTRzICU1cyAlcyAlc1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExNy1cXHRzZXFfcHV0cyhzLCBoZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjExODpcXHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMjYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjPSByaW5nLVxcdTAwM2VzaXplX21hc2s7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMjc6XFx0XFx0ZmJuaWNfZGJnX3R3ZF9kZXNjX3NlcV9zaG93KHMsIGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMzI6c3RhdGljIGludCBmYm5pY19kYmdfdGNxX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzMy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTM0OlxcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMzUtXFx0Y2hhciBoZHJbODBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTM4LVxcdC8qIEdlbmVyYXRlIGhlYWRlciBvbiBmaXJzdCBlbnRyeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEzOTpcXHRmYm5pY19kYmdfcmluZ19zaG93KHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE0MC1cXHRzbnByaW50ZihoZHIsIHNpemVvZihoZHIpLCBcXFwiJTRzICVzICVzICVzICU1cyAlLTE2cyAlLTZzICUtNnNcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNDItXFx0c2VxX3B1dHMocywgaGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxNDM6XFx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTQ0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE4MTpzdGF0aWMgaW50IGZibmljX2RiZ19iZHFfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTgyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxODM6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE4NC1cXHRjaGFyIGhkcls4MF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODctXFx0LyogR2VuZXJhdGUgaGVhZGVyIG9uIGZpcnN0IGVudHJ5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTg4OlxcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTg5LVxcdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksIFxcXCIlNHMgJS00cyAlc1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE5MS1cXHRzZXFfcHV0cyhzLCBoZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE5MjpcXHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xOTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjExOnN0YXRpYyB2b2lkIGZibmljX2RiZ19yY2RfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTIxMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjEzOlxcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMTQtXFx0dTY0IHJjZCA9IGxlNjRfdG9fY3B1KHJpbmctXFx1MDAzZWRlc2NbaV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI1NDpzdGF0aWMgaW50IGZibmljX2RiZ19yY3FfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNTY6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI1Ny1cXHRjaGFyIGhkcls4MF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNjAtXFx0LyogR2VuZXJhdGUgaGVhZGVyIG9uIGZpcnN0IGVudHJ5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjYxOlxcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjYyLVxcdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNjgtXFx0c2VxX3B1dHMocywgaGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNjk6XFx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjc3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYz0gcmluZy1cXHUwMDNlc2l6ZV9tYXNrOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mjc4OlxcdFxcdGZibmljX2RiZ19yY2RfZGVzY19zZXFfc2hvdyhzLCBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjgzOnN0YXRpYyBpbnQgZmJuaWNfZGJnX2Rlc2Nfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI4NTpcXHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IGlub2RlLVxcdTAwM2VpX3ByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjg2LVxcdGludCAoKnNob3cpKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI4ODpcXHRzd2l0Y2ggKHJpbmctXFx1MDAzZWRvb3JiZWxsIC0gZmJuaWNfcmluZ19jc3JfYmFzZShyaW5nKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4OS1cXHRjYXNlIEZCTklDX1FVRVVFX1RXUTBfVEFJTDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yOTAtXFx0Y2FzZSBGQk5JQ19RVUVVRV9UV1ExX1RBSUw6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjkxOlxcdFxcdHNob3cgPSBmYm5pY19kYmdfdHdxX2Rlc2Nfc2VxX3Nob3c7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjkyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5My1cXHRjYXNlIEZCTklDX1FVRVVFX1RDUV9IRUFEOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI5NDpcXHRcXHRzaG93ID0gZmJuaWNfZGJnX3RjcV9kZXNjX3NlcV9zaG93O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5NS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5Ny1cXHRjYXNlIEZCTklDX1FVRVVFX0JEUV9QUFFfVEFJTDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyOTg6XFx0XFx0c2hvdyA9IGZibmljX2RiZ19iZHFfZGVzY19zZXFfc2hvdztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yOTktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzAwLVxcdGNhc2UgRkJOSUNfUVVFVUVfUkNRX0hFQUQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzAxOlxcdFxcdHNob3cgPSBmYm5pY19kYmdfcmNxX2Rlc2Nfc2VxX3Nob3c7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzAyLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMxMDpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmYm5pY19kYmdfZGVzY19mb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMxMS1cXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMxMjpcXHQub3BlblxcdFxcdD0gZmJuaWNfZGJnX2Rlc2Nfb3BlbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMTMtXFx0LnJlYWRcXHRcXHQ9IHNlcV9yZWFkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMxODp2b2lkIGZibmljX2RiZ19udl9pbml0KHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzE5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMjA6XFx0c3RydWN0IGZibmljX2RldiAqZmJkID0gbnYtXFx1MDAzZWZiZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMjEtXFx0Y2hhciBuYW1lWzE2XTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMzMC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnYtXFx1MDAzZXR4dF9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzMxOlxcdFxcdHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCA9IFxcdTAwMjZudi1cXHUwMDNlcXRbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzMyLVxcdFxcdHVuc2lnbmVkIGludCBod19pZHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMzNDpcXHRcXHRod19pZHggPSBmYm5pY19yaW5nX2Nzcl9iYXNlKFxcdTAwMjZxdC1cXHUwMDNlY21wbCkgLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMzNS1cXHRcXHRcXHQgIFxcdTAwMjZmYmQtXFx1MDAzZXVjX2FkZHIwW0ZCTklDX1FVRVVFKDApXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMzOS1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVxcdTAwM2VkYmdfbnYsIFxcdTAwMjZxdC1cXHUwMDNlc3ViMCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNDA6XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDMtXFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cXHUwMDNlZGJnX252LCBcXHUwMDI2cXQtXFx1MDAzZXN1YjEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzQ0OlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzQ3LVxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXFx1MDAzZWRiZ19udiwgXFx1MDAyNnF0LVxcdTAwM2VjbXBsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM0ODpcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTItXFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIG52LVxcdTAwM2VyeHRfY291bnQ7IGorKywgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzUzOlxcdFxcdHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCA9IFxcdTAwMjZudi1cXHUwMDNlcXRbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzU0LVxcdFxcdHVuc2lnbmVkIGludCBod19pZHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM1NjpcXHRcXHRod19pZHggPSBmYm5pY19yaW5nX2Nzcl9iYXNlKFxcdTAwMjZxdC1cXHUwMDNlY21wbCkgLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM1Ny1cXHRcXHRcXHQgIFxcdTAwMjZmYmQtXFx1MDAzZXVjX2FkZHIwW0ZCTklDX1FVRVVFKDApXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM2MS1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVxcdTAwM2VkYmdfbnYsIFxcdTAwMjZxdC1cXHUwMDNlc3ViMCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNjI6XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjUtXFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cXHUwMDNlZGJnX252LCBcXHUwMDI2cXQtXFx1MDAzZXN1YjEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzY2OlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzY3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzY5LVxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXFx1MDAzZWRiZ19udiwgXFx1MDAyNnF0LVxcdTAwM2VjbXBsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM3MDpcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM3MS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mzc0OnZvaWQgZmJuaWNfZGJnX252X2V4aXQoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM4MDpzdGF0aWMgaW50IGZibmljX2RiZ19tYWNfYWRkcl9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zODEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM4MjpcXHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM4My1cXHRjaGFyIGhkcls4MF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zODktXFx0c2VxX3B1dHMocywgaGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozOTA6XFx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM5Mi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRkJOSUNfUlBDX1RDQU1fTUFDREFfTlVNX0VOVFJJRVM7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM5MzpcXHRcXHRzdHJ1Y3QgZmJuaWNfbWFjX2FkZHIgKm1hY19hZGRyID0gXFx1MDAyNmZiZC1cXHUwMDNlbWFjX2FkZHJbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzk0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDAzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MDQ6REVGSU5FX1NIT1dfQVRUUklCVVRFKGZibmljX2RiZ19tYWNfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQwNjpzdGF0aWMgaW50IGZibmljX2RiZ190Y2VfdGNhbV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MDcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQwODpcXHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQwOS1cXHRpbnQgaSwgdGNhbV9pZHggPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDE1LVxcdHNlcV9wdXRzKHMsIGhkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDE2OlxcdGZibmljX2RiZ19kZXNjX2JyZWFrKHMsIHN0cm5sZW4oaGRyLCBzaXplb2YoaGRyKSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MTgtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoZmJkLVxcdTAwM2VtYWNfYWRkcik7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQxOTpcXHRcXHRzdHJ1Y3QgZmJuaWNfbWFjX2FkZHIgKm1hY19hZGRyID0gXFx1MDAyNmZiZC1cXHUwMDNlbWFjX2FkZHJbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDIwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDM3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0Mzg6REVGSU5FX1NIT1dfQVRUUklCVVRFKGZibmljX2RiZ190Y2VfdGNhbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQ0MDpzdGF0aWMgaW50IGZibmljX2RiZ19hY3RfdGNhbV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00NDEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQ0MjpcXHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQ0My1cXHRjaGFyIGhkcls4MF07XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTM6MDAuNjg4NTg3OTY5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NzEyNDU5NjM1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCBuZXR3b3JraW5nIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipEaXZpbmcgaW50byB0aGUgRkJOSUMgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBgRkJOSUNgIGhhcmR3YXJlLiBUaGUgcXVpY2tlc3QgcGF0aCB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBzdXBwb3J0ZWQgZmVhdHVyZXMgaXMgZGVmaW5pdGVseSB0aHJvdWdoIHRoZSBLY29uZmlnIGZpbGUuIExldCBtZSBjaGVjayB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBzeXN0ZW0sIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgZGVwZW5kZW5jaWVzLCBhbnkgc3BlY2lmaWMgYm9hcmQgcmVxdWlyZW1lbnRzLCBhbmQgdGhlIGxvZ2ljIHRoYXQgY29udHJvbHMgd2hldGhlciBgRkJOSUNgIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCBpbiB0aGUgYnVpbGQuIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcmVsYXRpb25zaGlwcyB0byBvdGhlciBuZXR3b3JrIGRldmljZXMsIG9yIG1heWJlIGlmIGl04oCZcyBhIHNwZWNpZmljIHByb2R1Y3QsIG9yIHBlcmhhcHMgaXQncyBhIGZhbWlseSBvZiBwcm9kdWN0cy4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBnaXZlIG1lIGEgdmVyeSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBGQk5JQydzIGNhcGFiaWxpdGllcyB3aXRoaW4gdGhlIGtlcm5lbC4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTk1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTM6MDcuODEzMTg3NDc3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ldGEgUGxhdGZvcm1zIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE5FVF9WRU5ET1JfTUVUQVxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiTWV0YSBQbGF0Zm9ybXMgZGV2aWNlc1xcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGRlc2lnbmVkIGJ5IE1ldGEsIHNheSBZLlxcbiAgMTE6XFx0XFx0ICBUaGF0J3MgTWV0YSBhcyBpbiB0aGUgcGFyZW50IGNvbXBhbnkgb2YgRmFjZWJvb2suXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDE0OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTU6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IE1ldGEgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxNjpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgTkVUX1ZFTkRPUl9NRVRBXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBGQk5JQ1xcbiAgMjE6XFx0XFx0dHJpc3RhdGUgXFxcIk1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIDY0QklUIHx8IENPTVBJTEVfVEVTVFxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiAhUzM5MFxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBNQVhfU0tCX0ZSQUdTIFxcdTAwM2MgMjJcXG4gIDI1OlxcdFxcdGRlcGVuZHMgb24gUENJX01TSVxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMjc6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAyODpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAyOTpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gIDMwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAzMTpcXHRcXHRzZWxlY3QgUExETUZXXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UuXFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgMzY6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBmYm5pYy4gIE1TSS1YIGludGVycnVwdCBzdXBwb3J0IGlzIHJlcXVpcmVkLlxcbiAgMzc6XFx0XFxuICAzODpcXHRlbmRpZiAjIE5FVF9WRU5ET1JfTUVUQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxMzowNy44MTMyNTg2NzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo2NjYyNjkzNjcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEZCTklDIFBDSSBCaW5kaW5nKipcblxuQWxyaWdodCwgRkJOSUPigKYgdGhhdCdzIE1ldGEncyBcIk1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcIiDigJMgdGhlaXIgY3VzdG9tIEV0aGVybmV0IEFTSUMvUENJZSBOSUMuIEknbSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggdGhlaXIgaGFyZHdhcmUgaW5ub3ZhdGlvbnMuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhpcyBwaWVjZSBvZiBoYXJkd2FyZSBpbnRlZ3JhdGVzIHdpdGggdGhlIFBDSWUgZWNvc3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGRyaXZlciBjb2RlLiBMZXQncyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jYC4gVGhhdCBzaG91bGQgY29udGFpbiB0aGUgYmluZGluZyBsb2dpYywgdGhlIGNydWNpYWwgYml0IHRoYXQgbWF0Y2hlcyB0aGUgZHJpdmVyIHRvIHRoZSBjb3JyZWN0IFBDSWUgZGV2aWNlcy4gSSBuZWVkIHRvIHNlZSBob3cgdGhleSdyZSBpZGVudGlmeWluZyB0aGUgRkJOSUMsIHdoYXQgVmVuZG9yL0RldmljZSBJRHMsIFN1YnN5c3RlbSBJRHMsIG9yIG1heWJlIGV2ZW4gc3BlY2lmaWMgY2xhc3MgY29kZXMgdGhleSdyZSB1c2luZyB0byBjbGFpbSB0aGVzZSBuZXR3b3JrIGNhcmRzLiBJJ20gYW50aWNpcGF0aW5nIHNvbWUgY3VzdG9tIHF1aXJrIGhhbmRsaW5nIGFzIHdlbGwsIGdpdmVuIHRoZSBiZXNwb2tlIG5hdHVyZSBvZiB0aGUgaGFyZHdhcmUuIFRoaXMgUENJIGJpbmRpbmcgcm91dGluZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IE1ldGEncyBuZXR3b3JrIGlubm92YXRpb25zIGZpdCBpbnRvIHRoZSBzdGFuZGFyZCBMaW51eCBmcmFtZXdvcmsuIExldCdzIGdldCBjcmFja2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTg3NTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjE0OjE0LjQ0MDE5NzQ5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTU0MjgyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZibmljX2luZm8gKmZibmljX2luZm9fdGJsW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MzA6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGZibmljX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTMxLVxcdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTIxND1zdGF0aWMgdm9pZCBmYm5pY19zZXJ2aWNlX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNTgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MjU5OnN0YXRpYyBpbnQgZmJuaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNDoxNC44OTk3NDY0NjFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1NjE3MjU2ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgRkJOSUMgUENJIFRhYmxlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgZm9jdXMgaXMgb24gdGhpcyBgZmJuaWNfcGNpX3RibGAgdGFibGUuIFNwZWNpZmljYWxseSwgSSBzZWUgdGhpcyBlbnRyeTogYFBDSV9ERVZJQ0VfREFUQShNRVRBLCBGQk5JQ19BU0lDLCBmYm5pY19ib2FyZF9hc2ljKWAuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIFBDSSBkZXZpY2UgZGF0YSwgc3BlY2lmaWNhbGx5IGZvciB0aGUgTUVUQSBkZXZpY2UsIGFzc29jaWF0ZWQgd2l0aCBhbiBGQk5JQyBBU0lDLCBhbmQgaXQncyB1c2luZyBgZmJuaWNfYm9hcmRfYXNpY2AuIE5vdywgdGhlIGNydWNpYWwgcGllY2UgaXMgdW5kZXJzdGFuZGluZyBgUENJX1ZFTkRPUl9JRF9NRVRBYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBjb25zdGFudCBpcyBkZWZpbmVkLiBUaGF0J3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBLbm93aW5nIHRoZSBkZWZpbml0aW9uIG9mIGBQQ0lfVkVORE9SX0lEX01FVEFgIHdpbGwgZ2l2ZSBtZSBjcml0aWNhbCBjb250ZXh0IGFib3V0IHRoZSB2ZW5kb3IgSUQgYW5kLCB0aGVyZWZvcmUsIHRoZSBzcGVjaWZpYyBkZXZpY2UgdGhpcyBlbnRyeSBwZXJ0YWlucyB0by4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdG8gdGhhdCBkZWZpbml0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQwNywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjE0OjIwLjUxNzAwNjE1MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3MDY1NDQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQ0lfVkVORE9SX0lEX01FVEFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtMjYxOC1cXG5pbmNsdWRlL2xpbnV4L3BjaV9pZHMuaDoyNjE5OiNkZWZpbmUgUENJX1ZFTkRPUl9JRF9NRVRBXFx0XFx0MHgxZDliXFxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtMjYyMC1cXG4tLVxcbnJ1c3Qva2VybmVsL3BjaS9pZC5ycz0xNzI9ICAgIGZuIGZtdChcXHUwMDI2c2VsZiwgZjogXFx1MDAyNm11dCBmbXQ6OkZvcm1hdHRlclxcdTAwM2MnX1xcdTAwM2UpIC1cXHUwMDNlIGZtdDo6UmVzdWx0IHtcXG4tLVxcbnJ1c3Qva2VybmVsL3BjaS9pZC5ycy01NDMtICAgIEhZR09OICAgICAgICAgICAgICAgICAgICA9IGJpbmRpbmdzOjpQQ0lfVkVORE9SX0lEX0hZR09OLCAgICAgICAgICAgICAgICAgICAgLy8gMHgxZDk0XFxucnVzdC9rZXJuZWwvcGNpL2lkLnJzOjU0NDogICAgTUVUQSAgICAgICAgICAgICAgICAgICAgID0gYmluZGluZ3M6OlBDSV9WRU5ET1JfSURfTUVUQSwgICAgICAgICAgICAgICAgICAgICAvLyAweDFkOWJcXG5ydXN0L2tlcm5lbC9wY2kvaWQucnMtNTQ1LSAgICBGVU5HSUJMRSAgICAgICAgICAgICAgICAgPSBiaW5kaW5nczo6UENJX1ZFTkRPUl9JRF9GVU5HSUJMRSwgICAgICAgICAgICAgICAgIC8vIDB4MWRhZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNDoyMi4zODc2Njg0MTZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTU5NDkwMzg3MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgdGhlIFBDSSBEZXZpY2UgSUQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmluZCBvdXQgd2hlcmUgYFBDSV9ERVZJQ0VfSURfTUVUQV9GQk5JQ19BU0lDYCBpcyBhY3R1YWxseSBkZWZpbmVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBoZWFkIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBpbiB0aGUgYGluY2x1ZGUvbGludXgvcGNpX2lkcy5oYCBmaWxlLiBUaGF0J3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiwgb3IgYXQgbGVhc3QgYSBsb2NhdGlvbiB3aGVyZSBJJ2QgZXhwZWN0IHRvIHNlZSByZWxhdGVkIFBDSSBkZXZpY2UgSUQgZGVmaW5pdGlvbnMuIElmIGl0J3Mgbm90IHRoZXJlLCBJJ2xsIG5lZWQgdG8gZXhwYW5kIG15IHNlYXJjaCwgYnV0IGBwY2lfaWRzLmhgIGlzIHRoZSBwcmltZSBzdXNwZWN0IGFuZCB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uIGludG8gdGhlIGRldmljZSBJRCdzIG9yaWdpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk5MDQsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNDozOC4zMzY3MTA1OTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODc2NDg0OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRkJOSUNfQVNJQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oPTk9c3RydWN0IGZibmljX2RldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDo0MDojZGVmaW5lIFBDSV9ERVZJQ0VfSURfTUVUQV9GQk5JQ19BU0lDXFx0XFx0MHgwMDEzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC00MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM9MzA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGZibmljX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jOjMxOlxcdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0zMi1cXHQvKiBSZXF1aXJlZCBsYXN0IGVudHJ5ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjE0OjQwLjIyNDM2NTAxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI5NDUxNzc2MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgVHJpYWdlIENoZWNrbGlzdDogU2VjdGlvbiAyIENvbmNlcm5zKipcblxuT2theSwgdGltZSB0byBydW4gdGhyb3VnaCBTZWN0aW9uIDIgb2YgdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTcGVjaWZpY2FsbHksIGxldCdzIHNlZS4uLiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIFRoYXQgbWVhbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuIFRoaW5ncyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBgYW1kZ3B1YC4uLiBiYXNpY2FsbHksIGFueXRoaW5nIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgdGhhdCAqYXJlbid0KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBBbHJpZ2h0LCB0aGF0J3MgdGhlIGh1cmRsZSB0byBjbGVhci5cblxuV2FpdCBhIHNlY29uZC4uLiAqZmJuaWMqLiBOb3csIGlzIHRoYXQgZW11bGF0ZWQ/IEkgbmVlZCB0byByZW1lbWJlci4gUmlnaHQsIHRoYXQncyBNZXRhJ3MgcHJvcHJpZXRhcnkgaG9zdCBuZXR3b3JrIGludGVyZmFjZSBjYXJkLiBJdCdzIGFuIEFTSUMgU21hcnROSUMsIGEgUENJZSBFdGhlcm5ldCBjYXJkIHRoZXkgZGV2ZWxvcGVkLiBJdCdzIG5vdCBzb21ldGhpbmcgeW91J2QgdHlwaWNhbGx5IGZpbmQgaW4gUUVNVS4gT2theSwgc28gd2UgbmVlZCB0byB2ZXJpZnkuIE15IGZpcnN0IHN0ZXAgd2lsbCBiZSB0byBjaGVjayBpZiB0aGVyZSdzIGFueSB2aXJ0dWFsIGJ1cyBlbXVsYXRpb24gb3IgZXZlbiBqdXN0IGEgbW9jayBkZXZpY2Ugc3BlY2lmaWNhbGx5IGZvciBgZmJuaWNgLiBJIG1lYW4sIGEgbG90IG9mIHRoZXNlIGFkdmFuY2VkIE5JQ3MgZW5kIHVwIG5lZWRpbmcgKnNvbWV0aGluZyouLi4gYSB2aXJ0dWFsIG5ldGRldiBvciBhIG1vY2sgZGV2aWNlLiBTbywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pY2AgZGlyZWN0b3J5LiBUaGF0IHNob3VsZCBiZSB0aGUgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzNzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTQ6NDMuMTY5NTQ2NDc2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA2OTQ4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWdpc3Rlcl9uZXRkZXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jPTg2ND1pbnQgZmJuaWNfbmV0ZGV2X3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTg4NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jOjg4NTpcXHRyZXR1cm4gcmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04ODYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz04ODg9dm9pZCBmYm5pY19uZXRkZXZfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODg5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jOjg5MDpcXHR1bnJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODkxLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTQ6NDMuMjE4NjIxNjAzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQxNTg3MDU5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgZmJuaWNfcHJvYmUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGZibmljX3Byb2JlYCBpcyBiZWluZyB1c2VkLiBGaXJzdCBzdGVwLCBsZXQncyBzZWUgd2hlcmUgaXQncyBiZWluZyBjYWxsZWQgb3IgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGNvZGUgc2VlbXMgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcmVnaXN0cmF0aW9uIGhhcHBlbnMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmNgLiBBaCwgdGhlcmUgaXQgaXM6IGBtb2R1bGVfcGNpX2RyaXZlcihmYm5pY19kcml2ZXIpO2AuIFRoYXQncyB0aGUga2V5LiBOb3csIEknbGwgbmVlZCB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBsaW5lcyBvZiBjb2RlIHdpdGhpbiBgZmJuaWNfcGNpLmNgIG5lYXIgdGhlIGBtb2R1bGVfcGNpX2RyaXZlcmAgY2FsbCB0byBmdWxseSBncmFzcCB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JlIHNlcXVlbmNlLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgaG93IGBmYm5pY19kcml2ZXJgIGlzIGRlZmluZWQsIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IHVzZXMsIGFuZCBob3cgYGZibmljX3Byb2JlYCBpcyBjb25uZWN0ZWQgdG8gdGhlIFBDSSBkcml2ZXIgbGlmZWN5Y2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTEyNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjE0OjQ3LjM3NzMzMDM0MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxNTUwMTcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjE0OjQ3LjQyNjQ5Mjc1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQzMzAzNTg0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBGaW5hbCBMaW5lcyBvZiBgZmJuaWNfcGNpLmNgKipcblxuT2theSwgdGltZSB0byB6ZXJvIGluIG9uIHRoZSB0YWlsIGVuZCBvZiBgZmJuaWNfcGNpLmNgLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyB0aGluZyB3cmFwcyB1cC4gV2hhdCdzIHRoZSBmaW5hbCBjbGVhbnVwIGxvZ2ljPyBBcmUgdGhlcmUgYW55IHN1YnRsZSByZXNvdXJjZSBsZWFrcyBJIG1pZ2h0IGhhdmUgbWlzc2VkIGluIHByZXZpb3VzIHJldmlld3M/IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSBoYW5kbGUgZXJyb3IgcGF0aHPigJRkb2VzIGV2ZXJ5IGBnb3RvYCBwcm9wZXJseSBmcmVlIGFsbG9jYXRlZCBtZW1vcnkgYW5kIHJlbGVhc2UgaGFyZHdhcmUgcmVzb3VyY2VzPyBBcmUgdGhlIGVycm9yIGhhbmRsaW5nIHJvdXRpbmVzIHJvYnVzdCwgb3IgYXJlIHRoZXJlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gY2VydGFpbiBzY2VuYXJpb3M/IEl04oCZcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgZ3JhY2VmdWxseSByZWNvdmVycyBmcm9tIHVuZXhwZWN0ZWQgUENJIGVycm9ycywgRE1BIGZhaWx1cmVzLCBvciBldmVuIHNpbXBseSBhIGRldmljZSByZW1vdmFsLiBJJ20gZm9jdXNpbmcgb24gdGhvc2UgZmluYWwgbGluZXMsIHJlYWxseSB0cnlpbmcgdG8gZ3Jhc3AgdGhlIGVudGlyZSBkcml2ZXIncyBsaWZlY3ljbGUgbWFuYWdlbWVudC4gVGhpcyBzZWN0aW9uIG9mdGVuIHJldmVhbHMgdGhlIGRlc2lnbidzIG92ZXJhbGwgcm9idXN0bmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NDAsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNDo1MS43NTY4NTM0MzdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDQwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDQwOlxcdFxcbiA0NDE6XFx0XFx0cnRubF9sb2NrKCk7XFxuIDQ0MjpcXHRcXHRuZXRkZXZfbG9jayhuZXRkZXYpO1xcbiA0NDM6XFx0XFxuIDQ0NDpcXHRcXHRuZXRpZl9kZXZpY2VfZGV0YWNoKG5ldGRldik7XFxuIDQ0NTpcXHRcXG4gNDQ2OlxcdFxcdGlmIChuZXRpZl9ydW5uaW5nKG5ldGRldikpXFxuIDQ0NzpcXHRcXHRcXHRuZXRkZXYtXFx1MDAzZW5ldGRldl9vcHMtXFx1MDAzZW5kb19zdG9wKG5ldGRldik7XFxuIDQ0ODpcXHRcXG4gNDQ5OlxcdFxcdG5ldGRldl91bmxvY2sobmV0ZGV2KTtcXG4gNDUwOlxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuIDQ1MTpcXHRcXG4gNDUyOlxcdG51bGxfdWNfYWRkcjpcXG4gNDUzOlxcdFxcdGZibmljX2Z3X2xvZ19kaXNhYmxlKGZiZCk7XFxuIDQ1NDpcXHRcXG4gNDU1OlxcdFxcdGRldmxfbG9jayhwcml2X3RvX2RldmxpbmsoZmJkKSk7XFxuIDQ1NjpcXHRcXG4gNDU3OlxcdFxcdGZibmljX2Z3X2ZyZWVfbWJ4KGZiZCk7XFxuIDQ1ODpcXHRcXG4gNDU5OlxcdFxcdGRldmxfdW5sb2NrKHByaXZfdG9fZGV2bGluayhmYmQpKTtcXG4gNDYwOlxcdFxcbiA0NjE6XFx0XFx0LyogRnJlZSB0aGUgSVJRcyBzbyB0aGV5IGFyZW4ndCB0cnlpbmcgdG8gb2NjdXB5IHNsZWVwaW5nIENQVXMgKi9cXG4gNDYyOlxcdFxcdGZibmljX2ZyZWVfaXJxcyhmYmQpO1xcbiA0NjM6XFx0XFxuIDQ2NDpcXHRcXHQvKiBIYXJkd2FyZSBpcyBhYm91dCB0byBnbyBhd2F5LCBzbyBzd2l0Y2ggb2ZmIE1NSU8gYWNjZXNzIGludGVybmFsbHkgKi9cXG4gNDY1OlxcdFxcdFdSSVRFX09OQ0UoZmJkLVxcdTAwM2V1Y19hZGRyMCwgTlVMTCk7XFxuIDQ2NjpcXHRcXHRXUklURV9PTkNFKGZiZC1cXHUwMDNldWNfYWRkcjQsIE5VTEwpO1xcbiA0Njc6XFx0XFxuIDQ2ODpcXHRcXHRyZXR1cm4gMDtcXG4gNDY5OlxcdH1cXG4gNDcwOlxcdFxcbiA0NzE6XFx0c3RhdGljIGludCBfX2ZibmljX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIDQ3MjpcXHR7XFxuIDQ3MzpcXHRcXHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcXG4gNDc0OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBmYmQtXFx1MDAzZW5ldGRldjtcXG4gNDc1OlxcdFxcdHZvaWQgX19pb21lbSAqIGNvbnN0ICppb21hcF90YWJsZTtcXG4gNDc2OlxcdFxcdHN0cnVjdCBmYm5pY19uZXQgKmZibjtcXG4gNDc3OlxcdFxcdGludCBlcnI7XFxuIDQ3ODpcXHRcXG4gNDc5OlxcdFxcdC8qIFJlc3RvcmUgTU1JTyBhY2Nlc3MgKi9cXG4gNDgwOlxcdFxcdGlvbWFwX3RhYmxlID0gcGNpbV9pb21hcF90YWJsZSh0b19wY2lfZGV2KGRldikpO1xcbiA0ODE6XFx0XFx0ZmJkLVxcdTAwM2V1Y19hZGRyMCA9IGlvbWFwX3RhYmxlWzBdO1xcbiA0ODI6XFx0XFx0ZmJkLVxcdTAwM2V1Y19hZGRyNCA9IGlvbWFwX3RhYmxlWzRdO1xcbiA0ODM6XFx0XFxuIDQ4NDpcXHRcXHQvKiBSZXJlcXVlc3QgdGhlIElSUXMgKi9cXG4gNDg1OlxcdFxcdGVyciA9IGZibmljX2FsbG9jX2lycXMoZmJkKTtcXG4gNDg2OlxcdFxcdGlmIChlcnIpXFxuIDQ4NzpcXHRcXHRcXHRnb3RvIGVycl9pbnZhbGlkYXRlX3VjX2FkZHI7XFxuIDQ4ODpcXHRcXG4gNDg5OlxcdFxcdGZiZC1cXHUwMDNlbWFjLVxcdTAwM2Vpbml0X3JlZ3MoZmJkKTtcXG4gNDkwOlxcdFxcbiA0OTE6XFx0XFx0ZGV2bF9sb2NrKHByaXZfdG9fZGV2bGluayhmYmQpKTtcXG4gNDkyOlxcdFxcbiA0OTM6XFx0XFx0LyogUmUtZW5hYmxlIG1haWxib3ggKi9cXG4gNDk0OlxcdFxcdGVyciA9IGZibmljX2Z3X3JlcXVlc3RfbWJ4KGZiZCk7XFxuIDQ5NTpcXHRcXHRkZXZsX3VubG9jayhwcml2X3RvX2RldmxpbmsoZmJkKSk7XFxuIDQ5NjpcXHRcXHRpZiAoZXJyKVxcbiA0OTc6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9pcnFzO1xcbiA0OTg6XFx0XFxuIDQ5OTpcXHRcXHQvKiBPbmx5IHNlbmQgbG9nIGhpc3RvcnkgaWYgbG9nIGJ1ZmZlciBpcyBlbXB0eSB0byBwcmV2ZW50IGR1cGxpY2F0ZVxcbiA1MDA6XFx0XFx0ICogbG9nIGVudHJpZXMuXFxuIDUwMTpcXHRcXHQgKi9cXG4gNTAyOlxcdFxcdGZibmljX2Z3X2xvZ19lbmFibGUoZmJkLCBsaXN0X2VtcHR5KFxcdTAwMjZmYmQtXFx1MDAzZWZ3X2xvZy5lbnRyaWVzKSk7XFxuIDUwMzpcXHRcXG4gNTA0OlxcdFxcdC8qIFNpbmNlIHRoZSBGVyBzaG91bGQgYmUgdXAsIGNoZWNrIGlmIGl0IHJlcG9ydGVkIE9UUCBlcnJvcnMgKi9cXG4gNTA1OlxcdFxcdGZibmljX2Rldmxpbmtfb3RwX2NoZWNrKGZiZCwgXFxcImVycm9yIGRldGVjdGVkIGFmdGVyIFBNIHJlc3VtZVxcXCIpO1xcbiA1MDY6XFx0XFxuIDUwNzpcXHRcXHQvKiBObyBuZXRkZXYgbWVhbnMgdGhlcmUgaXNuJ3QgYSBuZXR3b3JrIGludGVyZmFjZSB0byBicmluZyB1cCAqL1xcbiA1MDg6XFx0XFx0aWYgKGZibmljX2luaXRfZmFpbHVyZShmYmQpKVxcbiA1MDk6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDUxMDpcXHRcXG4gNTExOlxcdFxcdGZibiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuIDUxMjpcXHRcXG4gNTEzOlxcdFxcdC8qIFJlc2V0IHRoZSBxdWV1ZXMgaWYgbmVlZGVkICovXFxuIDUxNDpcXHRcXHRmYm5pY19yZXNldF9xdWV1ZXMoZmJuLCBmYm4tXFx1MDAzZW51bV90eF9xdWV1ZXMsIGZibi1cXHUwMDNlbnVtX3J4X3F1ZXVlcyk7XFxuIDUxNTpcXHRcXG4gNTE2OlxcdFxcdHJ0bmxfbG9jaygpO1xcbiA1MTc6XFx0XFx0bmV0ZGV2X2xvY2sobmV0ZGV2KTtcXG4gNTE4OlxcdFxcbiA1MTk6XFx0XFx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTQ6NTEuNzU2OTU4Njk3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE5MjIwMzIxMTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBmYm5pY19wY2kuY2AqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBgZmJuaWNfcGNpLmNgIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgRmlicmUgQ2hhbm5lbCBvdmVyIEV0aGVybmV0IChGQ29FKSBOSUMgaW50ZXJhY3RzIHdpdGggdGhlIFBDSSBidXMuIEZpcnN0IEkgbmVlZCB0byBmb2N1cyBvbiB0aGlzIGZpbGUgYW5kIHdvcmsgbXkgd2F5IHRocm91Z2ggdGhlIGNvZGUuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIHJlZ2lzdGVyIGFjY2VzcyBtZXRob2RzLCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgaG93IHRoZSBkZXZpY2UgaXMgaW5pdGlhbGl6ZWQgYW5kIGRldGFjaGVkLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBwYXJ0aWN1bGFybHkgYW55dGhpbmcgc3BlY2lmaWMgdG8gdGhlIEZDb0UgcHJvdG9jb2wgaGFuZGxpbmcgd2l0aGluIHRoZSBoYXJkd2FyZS4gVGhpcyB3b3VsZCBpbmNsdWRlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgcXVldWVzLCBkZXNjcmlwdG9ycywgYW5kIGFueSBETUEgc2V0dXAgZm9yIGRhdGEgdHJhbnNmZXIuIEkgd2FudCB0byBzZWUgaWYgdGhleSdyZSB1c2luZyBhIHN0YW5kYXJkIG9yIGN1c3RvbSBGQ29FIG9mZmxvYWQgbWVjaGFuaXNtIGFuZCBob3cgYW55IGhhcmR3YXJlLXNwZWNpZmljIG9wdGltaXphdGlvbnMgYXJlIGltcGxlbWVudGVkLiBFc3NlbnRpYWxseSwgSSdtIGxvb2tpbmcgZm9yIHRoZSBnbHVlIHRoYXQgbWFrZXMgdGhpcyBOSUMgdGljayBvbiBhIFBDSSBidXMsIGFuZCBJJ2xsIGJlIGxvb2tpbmcgYXQgdGhpbmdzIGxpa2UgcHJvYmUsIHJlbW92ZSwgaW50ZXJydXB0IGhhbmRsaW5nLCBETUEgc2V0dGluZ3MsIGFuZCBhbnkgc3BlY2lmaWMgcXVpcmtzIG9yIHdvcmthcm91bmRzIHRoZXkndmUgaW1wbGVtZW50ZWQgZm9yIHRoaXMgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjg5NSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTU6MTAuOTc3MjgyMTYyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4ODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTIwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTIwOlxcdFxcdFxcdGVyciA9IF9fZmJuaWNfb3BlbihmYm4pO1xcbiA1MjE6XFx0XFxuIDUyMjpcXHRcXHRuZXRkZXZfdW5sb2NrKG5ldGRldik7XFxuIDUyMzpcXHRcXHRydG5sX3VubG9jaygpO1xcbiA1MjQ6XFx0XFx0aWYgKGVycilcXG4gNTI1OlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfbWJ4O1xcbiA1MjY6XFx0XFxuIDUyNzpcXHRcXHRyZXR1cm4gMDtcXG4gNTI4OlxcdGVycl9mcmVlX21ieDpcXG4gNTI5OlxcdFxcdGZibmljX2Z3X2xvZ19kaXNhYmxlKGZiZCk7XFxuIDUzMDpcXHRcXG4gNTMxOlxcdFxcdGRldmxfbG9jayhwcml2X3RvX2RldmxpbmsoZmJkKSk7XFxuIDUzMjpcXHRcXHRmYm5pY19md19mcmVlX21ieChmYmQpO1xcbiA1MzM6XFx0XFx0ZGV2bF91bmxvY2socHJpdl90b19kZXZsaW5rKGZiZCkpO1xcbiA1MzQ6XFx0ZXJyX2ZyZWVfaXJxczpcXG4gNTM1OlxcdFxcdGZibmljX2ZyZWVfaXJxcyhmYmQpO1xcbiA1MzY6XFx0ZXJyX2ludmFsaWRhdGVfdWNfYWRkcjpcXG4gNTM3OlxcdFxcdFdSSVRFX09OQ0UoZmJkLVxcdTAwM2V1Y19hZGRyMCwgTlVMTCk7XFxuIDUzODpcXHRcXHRXUklURV9PTkNFKGZiZC1cXHUwMDNldWNfYWRkcjQsIE5VTEwpO1xcbiA1Mzk6XFx0XFx0cmV0dXJuIGVycjtcXG4gNTQwOlxcdH1cXG4gNTQxOlxcdFxcbiA1NDI6XFx0c3RhdGljIHZvaWQgX19mYm5pY19wbV9hdHRhY2goc3RydWN0IGRldmljZSAqZGV2KVxcbiA1NDM6XFx0e1xcbiA1NDQ6XFx0XFx0c3RydWN0IGZibmljX2RldiAqZmJkID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuIDU0NTpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gZmJkLVxcdTAwM2VuZXRkZXY7XFxuIDU0NjpcXHRcXHRzdHJ1Y3QgZmJuaWNfbmV0ICpmYm47XFxuIDU0NzpcXHRcXG4gNTQ4OlxcdFxcdHJ0bmxfbG9jaygpO1xcbiA1NDk6XFx0XFx0ZmJuaWNfcmVzZXRfaHdfc3RhdHMoZmJkKTtcXG4gNTUwOlxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuIDU1MTpcXHRcXG4gNTUyOlxcdFxcdGlmIChmYm5pY19pbml0X2ZhaWx1cmUoZmJkKSlcXG4gNTUzOlxcdFxcdFxcdHJldHVybjtcXG4gNTU0OlxcdFxcbiA1NTU6XFx0XFx0ZmJuID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4gNTU2OlxcdFxcbiA1NTc6XFx0XFx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcXG4gNTU4OlxcdFxcdFxcdGZibmljX3VwKGZibik7XFxuIDU1OTpcXHRcXG4gNTYwOlxcdFxcdG5ldGlmX2RldmljZV9hdHRhY2gobmV0ZGV2KTtcXG4gNTYxOlxcdH1cXG4gNTYyOlxcdFxcbiA1NjM6XFx0c3RhdGljIGludCBfX21heWJlX3VudXNlZCBmYm5pY19wbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbiA1NjQ6XFx0e1xcbiA1NjU6XFx0XFx0aW50IGVycjtcXG4gNTY2OlxcdFxcbiA1Njc6XFx0XFx0ZXJyID0gX19mYm5pY19wbV9yZXN1bWUoZGV2KTtcXG4gNTY4OlxcdFxcdGlmICghZXJyKVxcbiA1Njk6XFx0XFx0XFx0X19mYm5pY19wbV9hdHRhY2goZGV2KTtcXG4gNTcwOlxcdFxcbiA1NzE6XFx0XFx0cmV0dXJuIGVycjtcXG4gNTcyOlxcdH1cXG4gNTczOlxcdFxcbiA1NzQ6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGZibmljX3BtX29wcyA9IHtcXG4gNTc1OlxcdFxcdFNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKGZibmljX3BtX3N1c3BlbmQsIGZibmljX3BtX3Jlc3VtZSlcXG4gNTc2OlxcdH07XFxuIDU3NzpcXHRcXG4gNTc4OlxcdHN0YXRpYyB2b2lkIGZibmljX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiA1Nzk6XFx0e1xcbiA1ODA6XFx0XFx0ZmJuaWNfcG1fc3VzcGVuZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gNTgxOlxcdH1cXG4gNTgyOlxcdFxcbiA1ODM6XFx0c3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgZmJuaWNfZXJyX2Vycm9yX2RldGVjdGVkKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiA1ODQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IHBjaV9jaGFubmVsX3N0YXRlX3Qgc3RhdGUpXFxuIDU4NTpcXHR7XFxuIDU4NjpcXHRcXHQvKiBEaXNjb25uZWN0IGRldmljZSBpZiBmYWlsdXJlIGlzIG5vdCByZWNvdmVyYWJsZSB2aWEgcmVzZXQgKi9cXG4gNTg3OlxcdFxcdGlmIChzdGF0ZSA9PSBwY2lfY2hhbm5lbF9pb19wZXJtX2ZhaWx1cmUpXFxuIDU4ODpcXHRcXHRcXHRyZXR1cm4gUENJX0VSU19SRVNVTFRfRElTQ09OTkVDVDtcXG4gNTg5OlxcdFxcbiA1OTA6XFx0XFx0ZmJuaWNfcG1fc3VzcGVuZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gNTkxOlxcdFxcbiA1OTI6XFx0XFx0LyogUmVxdWVzdCBhIHNsb3QgcmVzZXQgKi9cXG4gNTkzOlxcdFxcdHJldHVybiBQQ0lfRVJTX1JFU1VMVF9ORUVEX1JFU0VUO1xcbiA1OTQ6XFx0fVxcbiA1OTU6XFx0XFxuIDU5NjpcXHRzdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCBmYm5pY19lcnJfc2xvdF9yZXNldChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gNTk3OlxcdHtcXG4gNTk4OlxcdFxcdGludCBlcnI7XFxuIDU5OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTU6MTAuOTc3MzgzMzEzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIxNDQyMjk5NzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkZvY3VzaW5nIG9uIEZpbGUgVGVybWluYXRpb24qKlxuXG5BbHJpZ2h0LCBteSBpbml0aWFsIHRob3VnaHQgaGVyZSBpcyBzdHJhaWdodGZvcndhcmQ6IEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgZmluYWwgc2VjdGlvbiBvZiB0aGlzIGZpbGUuIEtub3dpbmcgdGhlIG92ZXJhbGwgY29udGV4dCwgSSdtIGxpa2VseSBzZWFyY2hpbmcgZm9yIGEgc3BlY2lmaWMgdGVybWluYXRpbmcgY29uZGl0aW9uLCBhIGZpbmFsIGRhdGEgcG9pbnQsIG9yIHBlcmhhcHMgYW4gZXJyb3IgY29kZSB0aGF0IHNpZ25pZmllcyB0aGUgcHJvY2VzcydzIGNvbXBsZXRpb24gb3IgYW4gZXhjZXB0aW9uLiBUaGUgbG9jYXRpb24gb2YgdGhlIGZpbmFsIGNoYXJhY3RlcnMsIG9yIGJ5dGVzLCB0aGF0IHRlcm1pbmF0ZSBhIGZpbGUsIG9yIGEgc3BlY2lmaWMgcHJvY2VzcyB3aXRoaW4gdGhhdCBmaWxlLCBjYW4gdGVsbCBtZSBhIGxvdC4gQXJlIHRoZXJlIGFueSBwYXJ0aWN1bGFyIEVPRiBtYXJrZXJzLCBkZWxpbWl0ZXJzLCBvciBjb250cm9sIGNoYXJhY3RlcnMgdGhhdCBJIGV4cGVjdCB0byBzZWU/IElzIHRoaXMgYSBzdGFuZGFyZCBmb3JtYXQsIG9yIHNvbWV0aGluZyBjdXN0b20/IFRoZSBlbmQgb2YgYSBmaWxlIG9mdGVuIGhvbGRzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZmluYWwgc3RhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MzUzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNTozMi40MTk2ODU3MjVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MDA6XFx0XFx0cGNpX3NldF9wb3dlcl9zdGF0ZShwZGV2LCBQQ0lfRDApO1xcbiA2MDE6XFx0XFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XFxuIDYwMjpcXHRcXG4gNjAzOlxcdFxcdGlmIChwY2lfZW5hYmxlX2RldmljZV9tZW0ocGRldikpIHtcXG4gNjA0OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4gNjA1OlxcdFxcdFxcdFxcdFxcXCJDYW5ub3QgcmUtZW5hYmxlIFBDSSBkZXZpY2UgYWZ0ZXIgcmVzZXQuXFxcXG5cXFwiKTtcXG4gNjA2OlxcdFxcdFxcdHJldHVybiBQQ0lfRVJTX1JFU1VMVF9ESVNDT05ORUNUO1xcbiA2MDc6XFx0XFx0fVxcbiA2MDg6XFx0XFxuIDYwOTpcXHRcXHQvKiBSZXN0b3JlIGRldmljZSB0byBwcmV2aW91cyBzdGF0ZSAqL1xcbiA2MTA6XFx0XFx0ZXJyID0gX19mYm5pY19wbV9yZXN1bWUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIDYxMTpcXHRcXG4gNjEyOlxcdFxcdHJldHVybiBlcnIgPyBQQ0lfRVJTX1JFU1VMVF9ESVNDT05ORUNUIDogUENJX0VSU19SRVNVTFRfUkVDT1ZFUkVEO1xcbiA2MTM6XFx0fVxcbiA2MTQ6XFx0XFxuIDYxNTpcXHRzdGF0aWMgdm9pZCBmYm5pY19lcnJfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiA2MTY6XFx0e1xcbiA2MTc6XFx0XFx0X19mYm5pY19wbV9hdHRhY2goXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIDYxODpcXHR9XFxuIDYxOTpcXHRcXG4gNjIwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGZibmljX2Vycl9oYW5kbGVyID0ge1xcbiA2MjE6XFx0XFx0LmVycm9yX2RldGVjdGVkXFx0PSBmYm5pY19lcnJfZXJyb3JfZGV0ZWN0ZWQsXFxuIDYyMjpcXHRcXHQuc2xvdF9yZXNldFxcdD0gZmJuaWNfZXJyX3Nsb3RfcmVzZXQsXFxuIDYyMzpcXHRcXHQucmVzdW1lXFx0XFx0PSBmYm5pY19lcnJfcmVzdW1lLFxcbiA2MjQ6XFx0fTtcXG4gNjI1OlxcdFxcbiA2MjY6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGZibmljX2RyaXZlciA9IHtcXG4gNjI3OlxcdFxcdC5uYW1lXFx0XFx0PSBmYm5pY19kcml2ZXJfbmFtZSxcXG4gNjI4OlxcdFxcdC5pZF90YWJsZVxcdD0gZmJuaWNfcGNpX3RibCxcXG4gNjI5OlxcdFxcdC5wcm9iZVxcdFxcdD0gZmJuaWNfcHJvYmUsXFxuIDYzMDpcXHRcXHQucmVtb3ZlXFx0XFx0PSBmYm5pY19yZW1vdmUsXFxuIDYzMTpcXHRcXHQuZHJpdmVyLnBtXFx0PSBcXHUwMDI2ZmJuaWNfcG1fb3BzLFxcbiA2MzI6XFx0XFx0LnNodXRkb3duXFx0PSBmYm5pY19zaHV0ZG93bixcXG4gNjMzOlxcdFxcdC5lcnJfaGFuZGxlclxcdD0gXFx1MDAyNmZibmljX2Vycl9oYW5kbGVyLFxcbiA2MzQ6XFx0fTtcXG4gNjM1OlxcdFxcbiA2MzY6XFx0LyoqXFxuIDYzNzpcXHQgKiBmYm5pY19pbml0X21vZHVsZSAtIERyaXZlciBSZWdpc3RyYXRpb24gUm91dGluZVxcbiA2Mzg6XFx0ICpcXG4gNjM5OlxcdCAqIFRoZSBmaXJzdCByb3V0aW5lIGNhbGxlZCB3aGVuIHRoZSBkcml2ZXIgaXMgbG9hZGVkLiAgQWxsIGl0IGRvZXMgaXNcXG4gNjQwOlxcdCAqIHJlZ2lzdGVyIHdpdGggdGhlIFBDSSBzdWJzeXN0ZW0uXFxuIDY0MTpcXHQgKlxcbiA2NDI6XFx0ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG9uIGZhaWx1cmVcXG4gNjQzOlxcdCAqKi9cXG4gNjQ0OlxcdHN0YXRpYyBpbnQgX19pbml0IGZibmljX2luaXRfbW9kdWxlKHZvaWQpXFxuIDY0NTpcXHR7XFxuIDY0NjpcXHRcXHRpbnQgZXJyO1xcbiA2NDc6XFx0XFxuIDY0ODpcXHRcXHRmYm5pY19kYmdfaW5pdCgpO1xcbiA2NDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjE1OjMyLjQxOTc3ODcwNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0NDMzNjE3NTk0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgZmJuaWNgIERyaXZlcioqXG5cbk9rYXksIHNvIGBmYm5pY2AgaXMgYSBQQ0kgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIE1ldGEncyBwcm9wcmlldGFyeSBGQk5JQyBBU0lDLiBUaGUgY29yZSBkZXBlbmRlbmN5IGhlcmUgaXMgcGh5c2ljYWwgUENJIGhhcmR3YXJlLiBUaGUgY29kZSBkZWZpbmVzIHRoZSBzcGVjaWZpYyB2ZW5kb3IgYW5kIGRldmljZSBJRHM6IGBQQ0lfVkVORE9SX0lEX01FVEFgICgweDFkOWIpIGFuZCBgUENJX0RFVklDRV9JRF9NRVRBX0ZCTklDX0FTSUNgICgweDAwMTMpLCByZXNwZWN0aXZlbHksIHdpdGhpbiB0aGUgYGZibmljX3BjaV90YmxgLiBUaGF0J3MgdGhlIGtleTogaXQgKnJlcXVpcmVzKiB0aGUgYWN0dWFsIGhhcmR3YXJlLlxuXG5Ob3csIGxldCdzIHNlZSBpZiB0aGlzIGFwcGxpZXMgdG8gYSBmdXp6aW5nIGNoZWNrLiBMZXQncyBsb29rIGF0IHRoZSBcIldIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZVwiIGNvbmRpdGlvbnMuIFNwZWNpZmljYWxseSwgdGhlIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgY3JpdGVyaWEgbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCBuZWVkIHJlYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gR2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgYGZibmljYCwgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgbWF0Y2guIEl0IHJlbGllcyBvbiBhIGN1c3RvbSBBU0lDLCB3aGljaCBJIHN0cm9uZ2x5IHN1c3BlY3QgaXNuJ3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAuIFNvIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudCBtYWtlcyB0aGlzIGRyaXZlciBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIGFzIGl0IGV4cGxpY2l0bHkgc3RhdGVzIGluIHRoZSBcIm5lZ2F0aXZlIGNyaXRlcmlhLlwiXG5cbkknbGwgYWxzbyB0YWtlIGEgbG9vayBhdCB0aGUgcHJvdmlkZWQgcGF0Y2guIEl0IHNlZW1zIHRvIGNvcnJlY3QgYW4gZXJyb3IgaGFuZGxpbmcgaXNzdWUgd2l0aGluIHRoZSBgZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29sc2AgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY2AuIEl0J3MgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSB0aGF0IHNpbXBseSBjb3JyZWN0cyB0aGUgYXJndW1lbnQgcGFzc2VkIHRvIGBwYWdlX3Bvb2xfZGVzdHJveWAuIEl0IGRvZXNuJ3Qgc2VlbSB0byBpbmRpY2F0ZSBhbnkgcGFydGljdWxhciBmdXp6aW5nIHZ1bG5lcmFiaWxpdHkgaW4gaXRzZWxmLiBIb3dldmVyLCBpdCBkb2VzIHJlaW5mb3JjZSB0aGUgZmFjdCB0aGF0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGlzIG5lY2Vzc2FyeSBmb3IgcHJvcGVyIG9wZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUzMTYsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNjoxNi43NTU5NTgyNzJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1ODAsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1ODA6XFx0XFx0XFx0cHBfcGFyYW1zLnBvb2xfc2l6ZSA9IDMyNzY4O1xcbjE1ODE6XFx0XFxuMTU4MjpcXHRcXHRwcCA9IHBhZ2VfcG9vbF9jcmVhdGUoXFx1MDAyNnBwX3BhcmFtcyk7XFxuMTU4MzpcXHRcXHRpZiAoSVNfRVJSKHBwKSlcXG4xNTg0OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHBwKTtcXG4xNTg1OlxcdFxcbjE1ODY6XFx0XFx0cXQtXFx1MDAzZXN1YjAucGFnZV9wb29sID0gcHA7XFxuMTU4NzpcXHRcXHRpZiAobmV0aWZfcnhxX2hhc191bnJlYWRhYmxlX21wKGZibi1cXHUwMDNlbmV0ZGV2LCByeHFfaWR4KSkge1xcbjE1ODg6XFx0XFx0XFx0cHBfcGFyYW1zLmZsYWdzIHw9IFBQX0ZMQUdfQUxMT1dfVU5SRUFEQUJMRV9ORVRNRU07XFxuMTU4OTpcXHRcXHRcXHRwcF9wYXJhbXMuZG1hX2RpciA9IERNQV9GUk9NX0RFVklDRTtcXG4xNTkwOlxcdFxcbjE1OTE6XFx0XFx0XFx0cHAgPSBwYWdlX3Bvb2xfY3JlYXRlKFxcdTAwMjZwcF9wYXJhbXMpO1xcbjE1OTI6XFx0XFx0XFx0aWYgKElTX0VSUihwcCkpXFxuMTU5MzpcXHRcXHRcXHRcXHRnb3RvIGVycl9kZXN0cm95X3N1YjA7XFxuMTU5NDpcXHRcXHR9IGVsc2Uge1xcbjE1OTU6XFx0XFx0XFx0cGFnZV9wb29sX2dldChwcCk7XFxuMTU5NjpcXHRcXHR9XFxuMTU5NzpcXHRcXHRxdC1cXHUwMDNlc3ViMS5wYWdlX3Bvb2wgPSBwcDtcXG4xNTk4OlxcdFxcbjE1OTk6XFx0XFx0cmV0dXJuIDA7XFxuMTYwMDpcXHRcXG4xNjAxOlxcdGVycl9kZXN0cm95X3N1YjA6XFxuMTYwMjpcXHRcXHRwYWdlX3Bvb2xfZGVzdHJveShxdC1cXHUwMDNlc3ViMC5wYWdlX3Bvb2wpO1xcbjE2MDM6XFx0XFx0cmV0dXJuIFBUUl9FUlIocHApO1xcbjE2MDQ6XFx0fVxcbjE2MDU6XFx0XFxuMTYwNjpcXHRzdGF0aWMgdm9pZCBmYm5pY19yaW5nX2luaXQoc3RydWN0IGZibmljX3JpbmcgKnJpbmcsIHUzMiBfX2lvbWVtICpkb29yYmVsbCxcXG4xNjA3OlxcdFxcdFxcdFxcdCAgICBpbnQgcV9pZHgsIHU4IGZsYWdzKVxcbjE2MDg6XFx0e1xcbjE2MDk6XFx0XFx0dTY0X3N0YXRzX2luaXQoXFx1MDAyNnJpbmctXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG4xNjEwOlxcdFxcdHJpbmctXFx1MDAzZWRvb3JiZWxsID0gZG9vcmJlbGw7XFxuMTYxMTpcXHRcXHRyaW5nLVxcdTAwM2VxX2lkeCA9IHFfaWR4O1xcbjE2MTI6XFx0XFx0cmluZy1cXHUwMDNlZmxhZ3MgPSBmbGFncztcXG4xNjEzOlxcdFxcdHJpbmctXFx1MDAzZWRlZmVycmVkX2hlYWQgPSAtMTtcXG4xNjE0OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTY6MTYuNzU2MTEwNzEyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjEyODgyMTQ5NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFN1YnRsZSBNZW1vcnkgTWFuYWdlbWVudCBJc3N1ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc29tZXRoaW5nIGp1bXBzIG91dCBhdCBtZTogYHBwYCBpcyBiZWluZyBwYXNzZWQgdG8gYHBhZ2VfcG9vbF9kZXN0cm95YC4gSSBzZWUgdGhlIGBwYWdlX3Bvb2xfY3JlYXRlYCBjYWxsIGFuZCB0aGUgY2hlY2sgZm9yIGBJU19FUlIocHApYC4gVGhhdCdzIHN0YW5kYXJkIGVycm9yIGhhbmRsaW5nLCByaWdodD8gQnV0IHdhaXQuLi4gaWYgYHBwYCBpcyBhbiBlcnJvciBwb2ludGVyLCB0aGVuIGl0IHNob3VsZG4ndCBiZSBwYXNzZWQgdG8gYHBhZ2VfcG9vbF9kZXN0cm95YCEgSXQgbG9va3MgbGlrZSB0aGVyZSB3YXMgYSBzdWJ0bGUgYnVnIHdoZXJlIHRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwYXNzaW5nIHRoZSBlcnJvciB2YWx1ZSB0byBgcGFnZV9wb29sX2Rlc3Ryb3lgLiBUaGUgZml4IGNoYW5nZWQgaXQgdG8gY29ycmVjdGx5IGRlc3Ryb3kgdGhlIGFscmVhZHkgY3JlYXRlZCBwYWdlIHBvb2wgYHF0LVx1MDAzZXN1YjAucGFnZV9wb29sYC5cblxuTm93LCBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucy4gVGhpcyBmaXggaXMgZ29vZCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqLiBXYXMgdGhlcmUgbWVtb3J5IGNvcnJ1cHRpb24/IEEgbGVhaz8gVGhpcyBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uLiBJIG5lZWQgdG8ga25vdyB3aGVyZSBgZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29sc2AgaXMgY2FsbGVkIGFuZCBob3cgdGhpcyBpc3N1ZSB3YXMgdHJpZ2dlcmVkLiBUaGUgY29udGV4dCBpcyB2aXRhbC4gVGltZSB0byBjaGVjayB0aGUgY2FsbCBzaXRlcyB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgd2hhdCBvdGhlciBmdW5jdGlvbnMgY291bGQgdHJpZ2dlciB0aGlzIHNhbWUgaXNzdWUuIExldCdzIHNlZSB3aGF0IHRoZSBicm9hZGVyIHBpY3R1cmUgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NjQwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTY6MjkuNjM4MjYzNDExWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTkyNTUxMjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29sc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jPTE1NTE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjE1NTI6ZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29scyhzdHJ1Y3QgZmJuaWNfbmV0ICpmYm4sIHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0xNTUzLVxcdFxcdFxcdCAgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMDA0PXN0YXRpYyBpbnQgZmJuaWNfYWxsb2NfcnhfcXRfcmVzb3VyY2VzKHN0cnVjdCBmYm5pY19uZXQgKmZibixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIwMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjAxMTpcXHRlcnIgPSBmYm5pY19hbGxvY19xdF9wYWdlX3Bvb2xzKGZibiwgcXQsIHF0LVxcdTAwM2VjbXBsLnFfaWR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMDEyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yODMyPXN0YXRpYyBpbnQgZmJuaWNfcXVldWVfbWVtX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yODQxLVxcdGlmICghbmV0aWZfcnVubmluZyhkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjI4NDI6XFx0XFx0cmV0dXJuIGZibmljX2FsbG9jX3F0X3BhZ2VfcG9vbHMoZmJuLCBxdCwgaWR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yODQzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNjozMC4wOTc1MjQ3NzJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTkxMTQ2NDMwNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgZmJuaWMgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHJlc291cmNlcyBhcmUgYWxsb2NhdGVkIHdpdGhpbiB0aGUgYGZibmljYCBkcml2ZXIuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgYWxsb2NhdGlvbiBmdW5jdGlvbnMgYXJlIGBmYm5pY19hbGxvY19yeF9xdF9yZXNvdXJjZXNgIGFuZCBgZmJuaWNfcXVldWVfbWVtX2FsbG9jYC4gVGhlc2UgYXJlIGJlaW5nIGNhbGxlZCB0aHJvdWdoIHRoZSBgbmV0ZGV2YCBpbnRlcmZhY2UsIGVpdGhlciBkaXJlY3RseSB0aHJvdWdoIGBuZXRkZXZfc3RhdF9vcHNgIG9yIGluZGlyZWN0bHkgdmlhIGBuZXRkZXZfcXVldWVfbWdtdF9vcHNgLiBOYXR1cmFsbHksIHRoaXMgd2hvbGUgcHJvY2VzcyBpcyBwcmVkaWNhdGVkIG9uIHRoZSBleGlzdGVuY2Ugb2YgYW4gYGZibmljYCBuZXR3b3JrIGRldmljZSAoYG5ldGRldmApLlxuXG5Ob3csIHdoZXJlIGRvZXMgdGhpcyBgbmV0ZGV2YCBhY3R1YWxseSBnZXQgY3JlYXRlZD8gSXQncyByZWdpc3RlcmVkIHdpdGhpbiBgZmJuaWNfcHJvYmVgLCB3aGljaCBvbmx5IGhhcHBlbnMgd2hlbiBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlIHdpdGggdGhlIHNwZWNpZmljIHZlbmRvciBJRCAweDFkOWIgYW5kIGRldmljZSBJRCAweDAwMTMgaXMgZGV0ZWN0ZWQgZHVyaW5nIHRoZSBwcm9iZS5cblxuVGhpcyBpbW1lZGlhdGVseSByYWlzZXMgYSBxdWVzdGlvbjogSXMgdGhlcmUgYW55IGZvcm0gb2YgdmlydHVhbCBgZmJuaWNgIGRldmljZSBvciBhbiBlbXVsYXRpb24gbWVjaGFuaXNtPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBJIGNhbiB0ZXN0IG9yIHdvcmsgd2l0aCB0aGlzIGRyaXZlciB3aXRob3V0IGhhdmluZyB0aGUgc3BlY2lmaWMgaGFyZHdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IGRpZyB0aHJvdWdoIHRoZSBgdG9vbHMvdGVzdGluZ2AgZGlyZWN0b3J5LCBhbmQgdGhlIHdpZGVyIGNvZGViYXNlIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBtZW50aW9uIG9mIHZpcnR1YWwgb3IgZW11bGF0ZWQgYGZibmljYCBkZXZpY2VzLiBJJ20gZ29pbmcgdG8gc2VhcmNoIGZvciBhbnkgaGludHMgaW4gdGhlIGNvZGUgYmFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NDEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTY6NDkuMjEyMTcwMDYxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQxNjc3MTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZibmljXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInRvb2xzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNjo0OS4zOTYzNjc2ODdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mzg0MTkzMDA4MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipNeSBMaW5lIG9mIElucXVpcnkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGhpdCBhIHBvdGVudGlhbCBkZWFkIGVuZC4gVGltZSB0byBicm9hZGVuIHRoZSBzZWFyY2guIEkgbmVlZCB0byBiZSBtZXRob2RpY2FsLiBJbnN0ZWFkIG9mIGZvY3VzaW5nIG9uIHRoZSBjdXJyZW50IGFyZWEsIGl0J3MgcHJ1ZGVudCB0byBleHBhbmQgbXkgc2NvcGUuIEkgc2hvdWxkIGNhc3QgYSB3aWRlciBuZXQuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgZWxzZXdoZXJlIGluIHRoZSBkcml2ZXIgY29kZSwgb3IgdGhlIGFyY2hpdGVjdHVyYWwgZWxlbWVudHMuIE1heWJlIHRoZXJlJ3MgYSByZWxhdGVkIGludGVyYWN0aW9uIGhhcHBlbmluZyBpbiBhIGRpZmZlcmVudCBwYXJ0IG9mIHRoZSBzeXN0ZW0gdGhhdCBpcyB0aGUgcm9vdCBvZiB0aGUgaXNzdWUuIEEgcGFyYWxsZWwgY29uY2VwdCwgb3Igc2ltaWxhciBhcHByb2FjaC4gSXQncyBhIGtleSBzdHJhdGVneSB0byBlbGltaW5hdGUgcG9zc2liaWxpdGllcyBhbmQgdW5jb3ZlciB0aGUgY29yZSBpc3N1ZS4gSSdsbCBuZWVkIHRvIG1ldGljdWxvdXNseSBmb2xsb3cgdGhlIGJyZWFkY3J1bWJzIGZyb20gbW9kdWxlIHRvIG1vZHVsZSBpbiBvcmRlciB0byBhdm9pZCB3YXN0aW5nIHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDA5LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTc6MjcuODE1NjcwNjEyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc3NzMwOTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZCTklDX0FTSUNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaD05PXN0cnVjdCBmYm5pY19kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6NDA6I2RlZmluZSBQQ0lfREVWSUNFX0lEX01FVEFfRkJOSUNfQVNJQ1xcdFxcdDB4MDAxM1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtNDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBmYm5pY19wY2lfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYzozMTpcXHR7IFBDSV9ERVZJQ0VfREFUQShNRVRBLCBGQk5JQ19BU0lDLCBmYm5pY19ib2FyZF9hc2ljKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmMtMzItXFx0LyogUmVxdWlyZWQgbGFzdCBlbnRyeSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNzoyOS4zOTM0MDcwODVaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6ODc3OTk5ODQ4MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRkJOSUMgRHJpdmVyIEFuYWx5c2lzIGFuZCBGdXp6aW5nIERlY2lzaW9uKipcblxuT2theSwgc28gbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGQk5JQyBpcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIsIGEgU21hcnROSUMvRXRoZXJuZXQgQVNJQyBkcml2ZXIgZm9yIE1ldGEncyBjdXN0b20gaGFyZHdhcmUgKDFkOWI6MDAxMywgZ290IGl0KS4gVGhlIGtleSB0aGluZyBpcywgaXQncyBub3QgZ29pbmcgdG8gcnVuIGluIHRoZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhhdCB3ZSB0eXBpY2FsbHkgdXNlIGZvciBmdXp6aW5nLiBJJ20gcmVjYWxsaW5nIFNlY3Rpb24gMiBvZiB0aGUgdHJpYWdlIHBoaWxvc29waHkgaW1tZWRpYXRlbHkg4oCTIHRoZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIHNlY3Rpb24gaXMgdGhlIGtleS5cblxuVGhhdCBwaGlsb3NvcGh5IGV4cGxpY2l0bHkgY2FsbHMgb3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycywgKnJlcXVpcmluZyogcGh5c2ljYWwgQVNJQ3MuIEl0IHNwZWNpZmljYWxseSBsaXN0cyBleGFtcGxlcyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAuLi4gYW5kLCBpbXBvcnRhbnRseSwgRkJOSUMuIFRoZSBjb3JlIHByaW5jaXBsZSBpcyAqcmVhY2hhYmlsaXR5Ki4gSWYgdGhlIGNvZGUgY2FuJ3QgZXhlY3V0ZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBmb3JnZXQgYWJvdXQgZnV6emluZyBpdC4gSXQgZG9lc24ndCBtYXR0ZXIgaWYgdGhlcmUgYXJlIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYyBpbiB0aGVyZTsgaXQncyBhIGRlYWQgZW5kLlxuXG5BcHBseWluZyB0aGUgXCJuZWdhdGl2ZSBjcml0ZXJpYSxcIiB0aGlzIHBhdGNoICphYnNvbHV0ZWx5KiBmYWxscyBpbnRvIHRoZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgY2F0ZWdvcnkuIFRoZXJlZm9yZSwgV29ydGhGdXp6aW5nICoqbXVzdCoqIGJlIGBmYWxzZWAuIFRoaXMgYWxzbyBtZWFucyB0aGF0IEZvY3VzU3ltYm9scyBhbmQgRW5hYmxlQ29uZmlncyBhcmUgZW1wdHkgKG9yIGF0IGxlYXN0LCBzaG91bGQgYmUpLiBJdCdzIGEgd2FzdGUgb2YgcmVzb3VyY2VzIHRvIGV2ZW4gY29uc2lkZXIgb3RoZXJ3aXNlLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0uIFRoZSBwYXRjaCB0b3VjaGVzIG9ubHkgYGZibmljX3R4cnguY2AsIHNwZWNpZmljYWxseSBgZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29sc2AuIFRoYXQncyBpdC4gTm8gb3RoZXIgZmlsZXMuIEFuZCB0aGlzIGNvZGUgaXMgYWxsIGludGVybmFsIHRvIHRoZSBgZmJuaWNgIGRyaXZlciwgd2hpY2ggaXMsIGFnYWluLCBNZXRhJ3MgcGh5c2ljYWwgUENJZSBOSUMgQVNJQy4gSXQncyAqZGVmaW5pdGVseSogdW5yZWFjaGFibGUgd2l0aG91dCB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLlxuXG5SaWdodCwgYWxsIGNoZWNrcyBjb21wbGV0ZS4gV2UncmUgZ29vZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AuIE5vIG5lZWQgdG8gd2FzdGUgdGltZSBmdXJ0aGVyIGFuYWx5emluZyB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQ2MSwiT3V0cHV0VG9rZW5zIjoxMDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTg6NTcuMTkzMzk0MjczWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggZHJpdmVzIE1ldGEncyBwcm9wcmlldGFyeSBob3N0IG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQgKFBDSWUgQVNJQykuIFRoaXMgaGFyZHdhcmUgaXMgdmVuZG9yLXNwZWNpZmljIGFuZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggZHJpdmVzIE1ldGEncyBwcm9wcmlldGFyeSBob3N0IG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQgKFBDSWUgQVNJQykuIFRoaXMgaGFyZHdhcmUgaXMgdmVuZG9yLXNwZWNpZmljIGFuZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTg6NTcuMTkzNDE4ODEzWiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowdjz4j[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-15 13:53:01 +0000 UTC FinishedAt: 2026-09-15 14:18:58 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggZHJpdmVzIE1ldGEmIzM5O3MgcHJvcHJpZXRhcnkgaG9zdCBuZXR3b3JrIGludGVyZmFjZSBjYXJkIChQQ0llIEFTSUMpLiBUaGlzIGhhcmR3YXJlIGlzIHZlbmRvci1zcGVjaWZpYyBhbmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3N2MyOGFiZDdlYTQ0ZTBkOGM4YTVlZmExZjg3OWNmMjIzNzcwMmJlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTQ6MTI6MjEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY1xuaW5kZXggNDAxZjhiOGFlMWNhZS4uNTI4ZDcyMDcxYWZmZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY1xuQEAgLTE1OTksNyAmIzQzOzE1OTksNyBAQCBmYm5pY19hbGxvY19xdF9wYWdlX3Bvb2xzKHN0cnVjdCBmYm5pY19uZXQgKmZibiwgc3RydWN0IGZibmljX3FfdHJpYWQgKnF0LFxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyX2Rlc3Ryb3lfc3ViMDpcbi1cdHBhZ2VfcG9vbF9kZXN0cm95KHBwKTtcbiYjNDM7XHRwYWdlX3Bvb2xfZGVzdHJveShxdC1cdTAwM2VzdWIwLnBhZ2VfcG9vbCk7XG4gXHRyZXR1cm4gUFRSX0VSUihwcCk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaXMgcGFydCBvZiB0aGUgZmJuaWMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljLyksIHdoaWNoIGRyaXZlcyBNZXRhJiMzOTtzIHByb3ByaWV0YXJ5IGhvc3QgbmV0d29yayBpbnRlcmZhY2UgY2FyZCAoUENJZSBBU0lDKS4gVGhpcyBoYXJkd2FyZSBpcyB2ZW5kb3Itc3BlY2lmaWMgYW5kIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzdjMjhhYmQ3ZWE0NGUwZDhjOGE1ZWZhMWY4NzljZjIyMzc3MDJiZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDE1IDE0OjEyOjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYwppbmRleCA0MDFmOGI4YWUxY2FlLi41MjhkNzIwNzFhZmZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYwpAQCAtMTU5OSw3ICYjNDM7MTU5OSw3IEBAIGZibmljX2FsbG9jX3F0X3BhZ2VfcG9vbHMoc3RydWN0IGZibmljX25ldCAqZmJuLCBzdHJ1Y3QgZmJuaWNfcV90cmlhZCAqcXQsCiAJcmV0dXJuIDA7CiAKIGVycl9kZXN0cm95X3N1YjA6Ci0JcGFnZV9wb29sX2Rlc3Ryb3kocHApOwomIzQzOwlwYWdlX3Bvb2xfZGVzdHJveShxdC0mZ3Q7c3ViMC5wYWdlX3Bvb2wpOwogCXJldHVybiBQVFJfRVJSKHBwKTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODkyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY2AuIEkmIzM5O2xsIGltbWVkaWF0ZWx5IHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZ2V0IGEgZ3JpcCBvbiB0aGUgY2hhbmdlcyBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIEl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqIGJlZm9yZSBnZXR0aW5nIGxvc3QgaW4gdGhlICp3aGF0Ki4KCk9rYXksIHJlYWRpbmcgdGhlIHBhdGNoIGl0c2VsZi4uLiBBaCwgYSBgcGFnZV9wb29sX2Rlc3Ryb3lgIGNhbGwgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHRoZSBlYXJsaWVyIGNvZGUgd2FzIG5vdCBjb3JyZWN0bHkgZGVzdHJveWluZyB0aGUgYHBhZ2VfcG9vbGAuIFRoaXMgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBhIG1lbW9yeSBsZWFrLCB3aGljaCBuZWVkcyB0byBiZSBsb29rZWQgaW50by4gVGhlIG9yaWdpbmFsIGNvZGUgZGVzdHJveWVkIHRoZSB2YXJpYWJsZSBgcHBgLCB3aGlsZSB0aGUgbmV3IGNvZGUgaXMgZGVzdHJveWluZyBgcXQtJmd0O3N1YjAucGFnZV9wb29sYC4KCk5vdywgYmVmb3JlIEkgZ28gZGVlcGVyIGludG8gdGhlIGNvZGUgbG9naWMsIGxldCBtZSBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgYGZibmljYCBpcy4gTWV0YSYjMzk7cyBOZXR3b3JrIEludGVyZmFjZSBDYXJkLCByaWdodD8gSnVzdCBuZWVkIHRvIGNvbmZpcm0uIEkmIzM5O2xsIHBlZWsgYXQgdGhlIEtjb25maWcgdG8gYmUgc3VyZSwgYW5kIHRvIGNoZWNrIG9uIGFueSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmJuaWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4NDQwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MjA9Y29uZmlnIEZCTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTM1LVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6MzY6XHQgIHdpbGwgYmUgY2FsbGVkIGZibmljLiAgTVNJLVggaW50ZXJydXB0IHN1cHBvcnQgaXMgcmVxdWlyZWQuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19GQk5JQykgJiM0Mzs9IGZibmljL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfRkJOSUMpICYjNDM7PSBmYm5pYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlLTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjEwOmZibmljLXkgOj0gZmJuaWNfY3NyLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTE6XHQgICBmYm5pY19kZWJ1Z2ZzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTI6XHQgICBmYm5pY19kZXZsaW5rLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTM6XHQgICBmYm5pY19ldGh0b29sLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTQ6XHQgICBmYm5pY19mdy5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE1Olx0ICAgZmJuaWNfZndfbG9nLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTY6XHQgICBmYm5pY19od19zdGF0cy5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE3Olx0ICAgZmJuaWNfaHdtb24ubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxODpcdCAgIGZibmljX2lycS5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE5Olx0ICAgZmJuaWNfbWFjLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjA6XHQgICBmYm5pY19uZXRkZXYubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyMTpcdCAgIGZibmljX3BjaS5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIyOlx0ICAgZmJuaWNfcGh5bGluay5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIzOlx0ICAgZmJuaWNfcnBjLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjQ6XHQgICBmYm5pY19tZGlvLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjU6XHQgICBmYm5pY190aW1lLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjY6XHQgICBmYm5pY190bHYubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyNzpcdCAgIGZibmljX3R4cngubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZS0yOC0jIEVuZCBvZiBvYmplY3RzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzOiNpbmNsdWRlIFwmIzM0O2ZibmljX2Nzci5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQ6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfZncuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1OiNpbmNsdWRlIFwmIzM0O2ZibmljX2Z3X2xvZy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTY6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfaHdfc3RhdHMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3OiNpbmNsdWRlIFwmIzM0O2ZibmljX21hYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfcnBjLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMDpzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1OnN0cnVjdCBmYm5pY19kZXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI2LVx0c3RydWN0IGRldmljZSAqZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0zNC1cdHUzMiBfX2lvbWVtICp1Y19hZGRyNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDozNTpcdGNvbnN0IHN0cnVjdCBmYm5pY19tYWMgKm1hYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0zNi1cdHVuc2lnbmVkIGludCBmd19tc2l4X3ZlY3Rvcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NDc6XHRzdHJ1Y3QgZmJuaWNfZndfbWJ4IG1ieFtGQk5JQ19JUENfTUJYX0lORElDRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjQ4Olx0c3RydWN0IGZibmljX2Z3X2NhcCBmd19jYXA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NDk6XHRzdHJ1Y3QgZmJuaWNfZndfY29tcGxldGlvbiAqY21wbF9kYXRhW0ZCTklDX01CWF9DTVBMX1NMT1RTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC01MC1cdC8qIExvY2sgcHJvdGVjdGluZyBUeCBNYWlsYm94IHF1ZXVlIHRvIHByZXZlbnQgcG9zc2libGUgcmFjZXMgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNjItXHQvKiBMb2NhbCBjb3B5IG9mIHRoZSBkZXZpY2VzIFRDQU0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo2MzpcdHN0cnVjdCBmYm5pY19hY3RfdGNhbSBhY3RfdGNhbVtGQk5JQ19SUENfVENBTV9BQ1RfTlVNX0VOVFJJRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjY0Olx0c3RydWN0IGZibmljX21hY19hZGRyIG1hY19hZGRyW0ZCTklDX1JQQ19UQ0FNX01BQ0RBX05VTV9FTlRSSUVTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC02NS1cdHU4IG1hY19hZGRyX2JvdW5kYXJ5O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC02OC1cdC8qIElQIFRDQU0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo2OTpcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwX3NyY1tGQk5JQ19SUENfVENBTV9JUF9BRERSX05VTV9FTlRSSUVTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo3MDpcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwX2RzdFtGQk5JQ19SUENfVENBTV9JUF9BRERSX05VTV9FTlRSSUVTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo3MTpcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwb19zcmNbRkJOSUNfUlBDX1RDQU1fSVBfQUREUl9OVU1fRU5UUklFU107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NzI6XHRzdHJ1Y3QgZmJuaWNfaXBfYWRkciBpcG9fZHN0W0ZCTklDX1JQQ19UQ0FNX0lQX0FERFJfTlVNX0VOVFJJRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTczLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC03Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo3NzpcdC8qIExvY2sgcHJvdGVjdGluZyB3cml0ZXMgdG8gQHRpbWVfaGlnaCwgQHRpbWVfb2Zmc2V0IG9mIGZibmljX25ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC03OC1cdCAqIGFuZCB0aGUgSFcgdGltZSBDU1IgbWFjaGluZXJ5LlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC05MS1cdC8qIExvY2FsIGNvcHkgb2YgaGFyZHdhcmUgc3RhdGlzdGljcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjkyOlx0c3RydWN0IGZibmljX2h3X3N0YXRzIGh3X3N0YXRzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTkzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC05Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo5ODpcdHN0cnVjdCBmYm5pY19md19sb2cgZndfbG9nO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTk5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaD0xMTI9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMTg6c3RhdGljIGlubGluZSBib29sIGZibmljX3ByZXNlbnQoc3RydWN0IGZibmljX2RldiAqZmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTExOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMjM6c3RhdGljIGlubGluZSB2b2lkIGZibmljX3dyMzIoc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEyNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMzE6dTMyIGZibmljX3JkMzIoc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTMzOnN0YXRpYyBpbmxpbmUgdm9pZCBmYm5pY193cmZsKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzNTpcdGZibmljX3JkMzIoZmJkLCBGQk5JQ19NQVNURVJfU1BBUkVfMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTM2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg9MTM4PXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzOTpmYm5pY19ybXczMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNDM6XHR2ID0gZmJuaWNfcmQzMihmYmQsIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQ0LVx0diBcdTAwMjY9IH5tYXNrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0NS1cdHYgfD0gdmFsO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE0NjpcdGZibmljX3dyMzIoZmJkLCByZWcsIHYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE0OTojZGVmaW5lIHdyMzIoX2YsIF9yLCBfdilcdGZibmljX3dyMzIoX2YsIF9yLCBfdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTA6I2RlZmluZSByZDMyKF9mLCBfcilcdFx0ZmJuaWNfcmQzMihfZiwgX3IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTUxOiNkZWZpbmUgd3JmbChfZilcdFx0ZmJuaWNfd3JmbChfZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTUzOmJvb2wgZmJuaWNfZndfcHJlc2VudChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1NDp1MzIgZmJuaWNfZndfcmQzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1NTp2b2lkIGZibmljX2Z3X3dyMzIoc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgcmVnLCB1MzIgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU3OiNkZWZpbmUgZndfcmQzMihfZiwgX3IpXHRcdGZibmljX2Z3X3JkMzIoX2YsIF9yKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1ODojZGVmaW5lIGZ3X3dyMzIoX2YsIF9yLCBfdilcdGZibmljX2Z3X3dyMzIoX2YsIF9yLCBfdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTk6I2RlZmluZSBmd193cmZsKF9mKVx0XHRmYm5pY19md19yZDMyKF9mLCBGQk5JQ19GV19aRVJPX1JFRylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTYxOnN0YXRpYyBpbmxpbmUgYm9vbCBmYm5pY19ibWNfcHJlc2VudChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTYyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE2NjpzdGF0aWMgaW5saW5lIGJvb2wgZmJuaWNfaW5pdF9mYWlsdXJlKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTcxOmV4dGVybiBjaGFyIGZibmljX2RyaXZlcl9uYW1lW107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3Mzp2b2lkIGZibmljX2RldmxpbmtfZnJlZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3NDpzdHJ1Y3QgZmJuaWNfZGV2ICpmYm5pY19kZXZsaW5rX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzU6aW50IGZibmljX2RldmxpbmtfaGVhbHRoX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3Njp2b2lkIGZibmljX2RldmxpbmtfaGVhbHRoX2Rlc3Ryb3koc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzc6dm9pZCBmYm5pY19kZXZsaW5rX3JlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc4OnZvaWQgZmJuaWNfZGV2bGlua191bnJlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTc5LXZvaWQgX19wcmludGYoMiwgMylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODA6ZmJuaWNfZGV2bGlua19md19yZXBvcnQoc3RydWN0IGZibmljX2RldiAqZmJkLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTgxOnZvaWQgZmJuaWNfZGV2bGlua19vdHBfY2hlY2soc3RydWN0IGZibmljX2RldiAqZmJkLCBjb25zdCBjaGFyICptc2cpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODM6aW50IGZibmljX2Z3X3JlcXVlc3RfbWJ4KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg0OnZvaWQgZmJuaWNfZndfZnJlZV9tYngoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg2OnZvaWQgZmJuaWNfaHdtb25fcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODc6dm9pZCBmYm5pY19od21vbl91bnJlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4OTppbnQgZmJuaWNfbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTkwOnZvaWQgZmJuaWNfbWFjX2ZyZWVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5Mjp2b2lkIGZibmljX25hcGlfbmFtZV9pcnFzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTkzOmludCBmYm5pY19uYXBpX3JlcXVlc3RfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTQ6XHRcdFx0ICAgc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk1OnZvaWQgZmJuaWNfbmFwaV9mcmVlX2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk2Olx0XHRcdCBzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTc6dm9pZCBmYm5pY19zeW5jaHJvbml6ZV9pcnEoc3RydWN0IGZibmljX2RldiAqZmJkLCBpbnQgbnIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5ODppbnQgZmJuaWNfcmVxdWVzdF9pcnEoc3RydWN0IGZibmljX2RldiAqZGV2LCBpbnQgbnIsIGlycV9oYW5kbGVyX3QgaGFuZGxlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xOTktXHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmRhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIwMDp2b2lkIGZibmljX2ZyZWVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmRldiwgaW50IG5yLCB2b2lkICpkYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjAyLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIwMzogKiBlbnVtIGZibmljX21zaXhfc2VsZl90ZXN0X2NvZGVzIC0gcmV0dXJuIGNvZGVzIGZyb20gc2VsZiB0ZXN0IHJvdXRpbmVzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjA0LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIxOC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMTk6ZW51bSBmYm5pY19tc2l4X3NlbGZfdGVzdF9jb2RlcyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjIwLVx0RkJOSUNfVEVTVF9NU0lYX1NVQ0NFU1MgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjMxOmVudW0gZmJuaWNfbXNpeF9zZWxmX3Rlc3RfY29kZXMgZmJuaWNfbXNpeF90ZXN0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzMzp2b2lkIGZibmljX2ZyZWVfaXJxcyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzNDppbnQgZmJuaWNfYWxsb2NfaXJxcyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMzY6dm9pZCBmYm5pY19nZXRfZndfdmVyX2NvbW1pdF9zdHIoc3RydWN0IGZibmljX2RldiAqZmJkLCBjaGFyICpmd192ZXJzaW9uLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzNy1cdFx0XHRcdCBjb25zdCBzaXplX3Qgc3RyX3N6KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjM5OnZvaWQgZmJuaWNfZGJnX2ZiZF9pbml0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQwOnZvaWQgZmJuaWNfZGJnX2ZiZF9leGl0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQxOnZvaWQgZmJuaWNfZGJnX2luaXQodm9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQyOnZvaWQgZmJuaWNfZGJnX2V4aXQodm9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0NDp2b2lkIGZibmljX3JwY19yZXNldF92YWxpZF9lbnRyaWVzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0NjppbnQgZmJuaWNfbWRpb2J1c19jcmVhdGUoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ4OnZvaWQgZmJuaWNfY3NyX2dldF9yZWdzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyICpkYXRhLCB1MzIgKnJlZ3NfdmVyc2lvbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ5OmludCBmYm5pY19jc3JfcmVnc19sZW4oc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjUxOnZvaWQgZmJuaWNfY29uZmlnX3R4cnhfdXNlY3Moc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudiwgdTMyIGFybSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjUyOnZvaWQgZmJuaWNfY29uZmlnX3J4X2ZyYW1lcyhzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU0OmVudW0gZmJuaWNfYm9hcmRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNTU6XHRmYm5pY19ib2FyZF9hc2ljXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjU2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1ODpzdHJ1Y3QgZmJuaWNfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjU5LVx0dW5zaWduZWQgaW50IG1heF9udW1fcXVldWVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6NDojaW5jbHVkZSBcJiMzNDtmYm5pYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTE6c3RydWN0IGZibmljX2Nzcl9ib3VuZHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMi1cdHUzMlx0c3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTY6c3RhdGljIGNvbnN0IHN0cnVjdCBmYm5pY19jc3JfYm91bmRzIGZibmljX2Nzcl9zZWN0c1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNy1cdEZCTklDX0JPVU5EUyhJTlRSKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzo2MDpzdGF0aWMgdm9pZCBmYm5pY19jc3JfZ2V0X3JlZ3NfcnBjX3JhbShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiAqKmRhdGFfcClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtNjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMTU6dm9pZCBmYm5pY19jc3JfZ2V0X3JlZ3Moc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgKmRhdGEsIHUzMiAqcmVnc192ZXJzaW9uKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMTYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMTc6XHRjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX2JvdW5kcyAqYm91bmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTExOC1cdHUzMiAqc3RhcnQgPSBkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTIzLVx0LyogU2tpcCBSUENfUkFNIHNlY3Rpb24gd2hpY2ggY2Fubm90IGJlIGR1bXBlZCBsaW5lYXJseSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMjQ6XHRmb3IgKGkgPSAwLCBib3VuZCA9IGZibmljX2Nzcl9zZWN0cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTI1Olx0ICAgICBpIFx1MDAzYyBBUlJBWV9TSVpFKGZibmljX2Nzcl9zZWN0cykgLSAxOyBpJiM0MzsmIzQzOywgJiM0MzsmIzQzO2JvdW5kKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEyNi1cdFx0KihkYXRhJiM0MzsmIzQzOykgPSBib3VuZC1cdTAwM2VzdGFydDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEzMi1cdC8qIER1bXAgdGhlIFJQQ19SQU0gYXMgc3BlY2lhbCBjYXNlIHJlZ2lzdGVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMzM6XHRmYm5pY19jc3JfZ2V0X3JlZ3NfcnBjX3JhbShmYmQsIFx1MDAyNmRhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEzNTpcdFdBUk5fT04oZGF0YSAtIHN0YXJ0ICE9IGZibmljX2Nzcl9yZWdzX2xlbihmYmQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTM2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMzg6aW50IGZibmljX2Nzcl9yZWdzX2xlbihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEzOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNDQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTQ1Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShmYm5pY19jc3Jfc2VjdHMpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTQ2Olx0XHRsZW4gJiM0Mzs9IGZibmljX2Nzcl9zZWN0c1tpXS5lbmQgLSBmYm5pY19jc3Jfc2VjdHNbaV0uc3RhcnQgJiM0MzsgMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTU4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNTk6c3RydWN0IGZibmljX2Nzcl9yZWdfdGVzdF9kYXRhIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTYwLVx0aW50XHRyZWc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjE3NTpzdGF0aWMgY29uc3Qgc3RydWN0IGZibmljX2Nzcl9yZWdfdGVzdF9kYXRhIHBhdHRlcm5fdGVzdFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNzYtXHRGQk5JQ19RVUVVRV9SRUdfVEVTVChUV1EwX0NUTCwgRkJOSUNfUVVFVUVfVFdRX0NUTF9SRVNFVCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjEyOnN0YXRpYyBlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjEzOmZibmljX2Nzcl9yZWdfcGF0dGVybl90ZXN0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgaW50IGluZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyMTQ6XHRcdFx0ICAgY29uc3Qgc3RydWN0IGZibmljX2Nzcl9yZWdfdGVzdF9kYXRhICp0ZXN0X2RhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxNi1cdHN0YXRpYyBjb25zdCB1MzIgcGF0dGVybltdID0geyB+MCwgMHg1QTVBNUE1QSwgMHhBNUE1QTVBNSwgMH07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjIxNzpcdGVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2RlcyByZWc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxOC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjQ3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyNDg6ICogZmJuaWNfY3NyX3JlZ3NfdGVzdCgpIC0gVmVyaWZ5IGJlaGF2aW9yIG9mIE5JQyByZWdpc3RlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjQ5LSAqIEBmYmQ6IGRldmljZSB0byB0ZXN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNTgtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyNTk6ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIGZibmljX2Nzcl9yZWdzX3Rlc3Qoc3RydWN0IGZibmljX2RldiAqZmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyNjE6XHRjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEgKnRlc3RfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjYyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjY3LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB0ZXN0X2RhdGEtXHUwMDNlYXJyYXlfbGVuOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyNjg6XHRcdFx0ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIHJlZyA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI2OTpcdFx0XHRcdGZibmljX2Nzcl9yZWdfcGF0dGVybl90ZXN0KGZiZCwgaSwgdGVzdF9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjcwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6OTpzdHJ1Y3QgZmJuaWNfZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oPTEyMzU9ZW51bXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyMzktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oOjEyNDA6ICogZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIC0gcmV0dXJuIGNvZGVzIGZyb20gc2VsZiB0ZXN0IHJvdXRpbmVzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNDEtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNDktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oOjEyNTA6ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI1MS1cdEZCTklDX1JFR19URVNUX1NVQ0NFU1MgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6MTI1NDplbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgZmJuaWNfY3NyX3JlZ3NfdGVzdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMjU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo5OiNpbmNsdWRlIFwmIzM0O2ZibmljLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEwOiNpbmNsdWRlIFwmIzM0O2ZibmljX3R4cnguaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMjpzdGF0aWMgc3RydWN0IGRlbnRyeSAqZmJuaWNfZGJnX3Jvb3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE2OnN0YXRpYyB2b2lkIGZibmljX2RiZ19kZXNjX2JyZWFrKHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNDpzdGF0aWMgdm9pZCBmYm5pY19kYmdfcmluZ19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI2Olx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNy1cdHVuc2lnbmVkIGxvbmcgZG9vcmJlbGxfb2Zmc2V0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzE6XHRjc3JfYmFzZSA9IGZibmljX3JpbmdfY3NyX2Jhc2UocmluZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMi1cdGRvb3JiZWxsX29mZnNldCA9IHJpbmctXHUwMDNlZG9vcmJlbGwgLSBjc3JfYmFzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy03NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjc2OnN0YXRpYyB2b2lkIGZibmljX2RiZ190d2RfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Nzg6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTc5LVx0dTY0IHR3ZCA9IGxlNjRfdG9fY3B1KHJpbmctXHUwMDNlZGVzY1tpXSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTA3OnN0YXRpYyBpbnQgZmJuaWNfZGJnX3R3cV9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEwOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMDk6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExMC1cdGNoYXIgaGRyWzgwXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMTMtXHQvKiBHZW5lcmF0ZSBoZWFkZXIgb24gZmlyc3QgZW50cnkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjExNDpcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMTUtXHRzbnByaW50ZihoZHIsIHNpemVvZihoZHIpLCBcJiMzNDslNHMgJTVzICVzICVzXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExNy1cdHNlcV9wdXRzKHMsIGhkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMTg6XHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMjYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gcmluZy1cdTAwM2VzaXplX21hc2s7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTI3Olx0XHRmYm5pY19kYmdfdHdkX2Rlc2Nfc2VxX3Nob3cocywgaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTMyOnN0YXRpYyBpbnQgZmJuaWNfZGJnX3RjcV9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMzQ6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzNS1cdGNoYXIgaGRyWzgwXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMzgtXHQvKiBHZW5lcmF0ZSBoZWFkZXIgb24gZmlyc3QgZW50cnkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEzOTpcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNDAtXHRzbnByaW50ZihoZHIsIHNpemVvZihoZHIpLCBcJiMzNDslNHMgJXMgJXMgJXMgJTVzICUtMTZzICUtNnMgJS02c1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNDItXHRzZXFfcHV0cyhzLCBoZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTQzOlx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTgxOnN0YXRpYyBpbnQgZmJuaWNfZGJnX2JkcV9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE4Mi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxODM6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE4NC1cdGNoYXIgaGRyWzgwXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODctXHQvKiBHZW5lcmF0ZSBoZWFkZXIgb24gZmlyc3QgZW50cnkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE4ODpcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODktXHRzbnByaW50ZihoZHIsIHNpemVvZihoZHIpLCBcJiMzNDslNHMgJS00cyAlc1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xOTEtXHRzZXFfcHV0cyhzLCBoZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTkyOlx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xOTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjExOnN0YXRpYyB2b2lkIGZibmljX2RiZ19yY2RfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjEyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjIxMzpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjE0LVx0dTY0IHJjZCA9IGxlNjRfdG9fY3B1KHJpbmctXHUwMDNlZGVzY1tpXSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjU0OnN0YXRpYyBpbnQgZmJuaWNfZGJnX3JjcV9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNTY6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI1Ny1cdGNoYXIgaGRyWzgwXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNjAtXHQvKiBHZW5lcmF0ZSBoZWFkZXIgb24gZmlyc3QgZW50cnkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI2MTpcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNjItXHRzbnByaW50ZihoZHIsIHNpemVvZihoZHIpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI2OC1cdHNlcV9wdXRzKHMsIGhkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNjk6XHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI3MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNzctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gcmluZy1cdTAwM2VzaXplX21hc2s7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mjc4Olx0XHRmYm5pY19kYmdfcmNkX2Rlc2Nfc2VxX3Nob3cocywgaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjgzOnN0YXRpYyBpbnQgZmJuaWNfZGJnX2Rlc2Nfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyODU6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IGlub2RlLVx1MDAzZWlfcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4Ni1cdGludCAoKnNob3cpKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyODg6XHRzd2l0Y2ggKHJpbmctXHUwMDNlZG9vcmJlbGwgLSBmYm5pY19yaW5nX2Nzcl9iYXNlKHJpbmcpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODktXHRjYXNlIEZCTklDX1FVRVVFX1RXUTBfVEFJTDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5MC1cdGNhc2UgRkJOSUNfUVVFVUVfVFdRMV9UQUlMOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjkxOlx0XHRzaG93ID0gZmJuaWNfZGJnX3R3cV9kZXNjX3NlcV9zaG93O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjkyLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5My1cdGNhc2UgRkJOSUNfUVVFVUVfVENRX0hFQUQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyOTQ6XHRcdHNob3cgPSBmYm5pY19kYmdfdGNxX2Rlc2Nfc2VxX3Nob3c7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yOTUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5Ny1cdGNhc2UgRkJOSUNfUVVFVUVfQkRRX1BQUV9UQUlMOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mjk4Olx0XHRzaG93ID0gZmJuaWNfZGJnX2JkcV9kZXNjX3NlcV9zaG93O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjk5LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMwMC1cdGNhc2UgRkJOSUNfUVVFVUVfUkNRX0hFQUQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMDE6XHRcdHNob3cgPSBmYm5pY19kYmdfcmNxX2Rlc2Nfc2VxX3Nob3c7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMDItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMxMDpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmYm5pY19kYmdfZGVzY19mb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzExLVx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMTI6XHQub3Blblx0XHQ9IGZibmljX2RiZ19kZXNjX29wZW4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMTMtXHQucmVhZFx0XHQ9IHNlcV9yZWFkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMxODp2b2lkIGZibmljX2RiZ19udl9pbml0KHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMTkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzIwOlx0c3RydWN0IGZibmljX2RldiAqZmJkID0gbnYtXHUwMDNlZmJkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzIxLVx0Y2hhciBuYW1lWzE2XTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMzAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudi1cdTAwM2V0eHRfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMzE6XHRcdHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCA9IFx1MDAyNm52LVx1MDAzZXF0W2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzMyLVx0XHR1bnNpZ25lZCBpbnQgaHdfaWR4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzM0Olx0XHRod19pZHggPSBmYm5pY19yaW5nX2Nzcl9iYXNlKFx1MDAyNnF0LVx1MDAzZWNtcGwpIC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMzNS1cdFx0XHQgIFx1MDAyNmZiZC1cdTAwM2V1Y19hZGRyMFtGQk5JQ19RVUVVRSgwKV07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzM5LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVx1MDAzZWRiZ19udiwgXHUwMDI2cXQtXHUwMDNlc3ViMCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM0MDpcdFx0XHRcdCAgICBcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDMtXHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXHUwMDNlZGJnX252LCBcdTAwMjZxdC1cdTAwM2VzdWIxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzQ0Olx0XHRcdFx0ICAgIFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzQ1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0Ny1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cdTAwM2VkYmdfbnYsIFx1MDAyNnF0LVx1MDAzZWNtcGwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNDg6XHRcdFx0XHQgICAgXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDktXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzUyLVx0Zm9yIChqID0gMDsgaiBcdTAwM2MgbnYtXHUwMDNlcnh0X2NvdW50OyBqJiM0MzsmIzQzOywgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM1MzpcdFx0c3RydWN0IGZibmljX3FfdHJpYWQgKnF0ID0gXHUwMDI2bnYtXHUwMDNlcXRbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTQtXHRcdHVuc2lnbmVkIGludCBod19pZHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNTY6XHRcdGh3X2lkeCA9IGZibmljX3JpbmdfY3NyX2Jhc2UoXHUwMDI2cXQtXHUwMDNlY21wbCkgLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzU3LVx0XHRcdCAgXHUwMDI2ZmJkLVx1MDAzZXVjX2FkZHIwW0ZCTklDX1FVRVVFKDApXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjEtXHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXHUwMDNlZGJnX252LCBcdTAwMjZxdC1cdTAwM2VzdWIwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzYyOlx0XHRcdFx0ICAgIFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzYzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM2NS1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cdTAwM2VkYmdfbnYsIFx1MDAyNnF0LVx1MDAzZXN1YjEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNjY6XHRcdFx0XHQgICAgXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzY5LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVx1MDAzZWRiZ19udiwgXHUwMDI2cXQtXHUwMDNlY21wbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM3MDpcdFx0XHRcdCAgICBcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM3MS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNzQ6dm9pZCBmYm5pY19kYmdfbnZfZXhpdChzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzc1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozODA6c3RhdGljIGludCBmYm5pY19kYmdfbWFjX2FkZHJfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zODEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzgyOlx0c3RydWN0IGZibmljX2RldiAqZmJkID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzgzLVx0Y2hhciBoZHJbODBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM4OS1cdHNlcV9wdXRzKHMsIGhkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozOTA6XHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM5Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEZCTklDX1JQQ19UQ0FNX01BQ0RBX05VTV9FTlRSSUVTOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzkzOlx0XHRzdHJ1Y3QgZmJuaWNfbWFjX2FkZHIgKm1hY19hZGRyID0gXHUwMDI2ZmJkLVx1MDAzZW1hY19hZGRyW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQwMy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MDQ6REVGSU5FX1NIT1dfQVRUUklCVVRFKGZibmljX2RiZ19tYWNfYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MDY6c3RhdGljIGludCBmYm5pY19kYmdfdGNlX3RjYW1fc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MDcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDA4Olx0c3RydWN0IGZibmljX2RldiAqZmJkID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDA5LVx0aW50IGksIHRjYW1faWR4ID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MTUtXHRzZXFfcHV0cyhzLCBoZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDE2Olx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MTgtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGZiZC1cdTAwM2VtYWNfYWRkcik7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MTk6XHRcdHN0cnVjdCBmYm5pY19tYWNfYWRkciAqbWFjX2FkZHIgPSBcdTAwMjZmYmQtXHUwMDNlbWFjX2FkZHJbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDM3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQzODpERUZJTkVfU0hPV19BVFRSSUJVVEUoZmJuaWNfZGJnX3RjZV90Y2FtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQ0MDpzdGF0aWMgaW50IGZibmljX2RiZ19hY3RfdGNhbV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQ0MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0NDI6XHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00NDMtXHRjaGFyIGhkcls4MF07XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5OTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIG5ldHdvcmtpbmcgYW5kIGtlcm5lbCBjb25maWd1cmF0aW9uOgoKKipEaXZpbmcgaW50byB0aGUgRkJOSUMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgYEZCTklDYCBoYXJkd2FyZS4gVGhlIHF1aWNrZXN0IHBhdGggdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgc3VwcG9ydGVkIGZlYXR1cmVzIGlzIGRlZmluaXRlbHkgdGhyb3VnaCB0aGUgS2NvbmZpZyBmaWxlLiBMZXQgbWUgY2hlY2sgdGhlIGtlcm5lbCYjMzk7cyBjb25maWd1cmF0aW9uIHN5c3RlbSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRlcGVuZGVuY2llcywgYW55IHNwZWNpZmljIGJvYXJkIHJlcXVpcmVtZW50cywgYW5kIHRoZSBsb2dpYyB0aGF0IGNvbnRyb2xzIHdoZXRoZXIgYEZCTklDYCBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgaW4gdGhlIGJ1aWxkLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IGFueSByZWxhdGlvbnNoaXBzIHRvIG90aGVyIG5ldHdvcmsgZGV2aWNlcywgb3IgbWF5YmUgaWYgaXTigJlzIGEgc3BlY2lmaWMgcHJvZHVjdCwgb3IgcGVyaGFwcyBpdCYjMzk7cyBhIGZhbWlseSBvZiBwcm9kdWN0cy4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBnaXZlIG1lIGEgdmVyeSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBGQk5JQyYjMzk7cyBjYXBhYmlsaXRpZXMgd2l0aGluIHRoZSBrZXJuZWwuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWV0YSBQbGF0Zm9ybXMgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTkVUX1ZFTkRPUl9NRVRBXG4gICA3Olx0XHRib29sIFwmIzM0O01ldGEgUGxhdGZvcm1zIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgeVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGRlc2lnbmVkIGJ5IE1ldGEsIHNheSBZLlxuICAxMTpcdFx0ICBUaGF0JiMzOTtzIE1ldGEgYXMgaW4gdGhlIHBhcmVudCBjb21wYW55IG9mIEZhY2Vib29rLlxuICAxMjpcdFxuICAxMzpcdFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGFmZmVjdCB0aGVcbiAgMTQ6XHRcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxuICAxNTpcdFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IE1ldGEgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDE2Olx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTc6XHRcbiAgMTg6XHRpZiBORVRfVkVORE9SX01FVEFcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgRkJOSUNcbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O01ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gNjRCSVQgfHwgQ09NUElMRV9URVNUXG4gIDIzOlx0XHRkZXBlbmRzIG9uICFTMzkwXG4gIDI0Olx0XHRkZXBlbmRzIG9uIE1BWF9TS0JfRlJBR1MgXHUwMDNjIDIyXG4gIDI1Olx0XHRkZXBlbmRzIG9uIFBDSV9NU0lcbiAgMjY6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgMjc6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAyODpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAyOTpcdFx0c2VsZWN0IFBDU19YUENTXG4gIDMwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAzMTpcdFx0c2VsZWN0IFBMRE1GV1xuICAzMjpcdFx0aGVscFxuICAzMzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNZXRhIFBsYXRmb3JtcyBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlLlxuICAzNDpcdFxuICAzNTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXG4gIDM2Olx0XHQgIHdpbGwgYmUgY2FsbGVkIGZibmljLiAgTVNJLVggaW50ZXJydXB0IHN1cHBvcnQgaXMgcmVxdWlyZWQuXG4gIDM3Olx0XG4gIDM4Olx0ZW5kaWYgIyBORVRfVkVORE9SX01FVEFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc1NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgRkJOSUMgUENJIEJpbmRpbmcqKgoKQWxyaWdodCwgRkJOSUPigKYgdGhhdCYjMzk7cyBNZXRhJiMzOTtzICYjMzQ7TWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZSYjMzQ7IOKAkyB0aGVpciBjdXN0b20gRXRoZXJuZXQgQVNJQy9QQ0llIE5JQy4gSSYjMzk7bSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggdGhlaXIgaGFyZHdhcmUgaW5ub3ZhdGlvbnMuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhpcyBwaWVjZSBvZiBoYXJkd2FyZSBpbnRlZ3JhdGVzIHdpdGggdGhlIFBDSWUgZWNvc3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGRyaXZlciBjb2RlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuY2AuIFRoYXQgc2hvdWxkIGNvbnRhaW4gdGhlIGJpbmRpbmcgbG9naWMsIHRoZSBjcnVjaWFsIGJpdCB0aGF0IG1hdGNoZXMgdGhlIGRyaXZlciB0byB0aGUgY29ycmVjdCBQQ0llIGRldmljZXMuIEkgbmVlZCB0byBzZWUgaG93IHRoZXkmIzM5O3JlIGlkZW50aWZ5aW5nIHRoZSBGQk5JQywgd2hhdCBWZW5kb3IvRGV2aWNlIElEcywgU3Vic3lzdGVtIElEcywgb3IgbWF5YmUgZXZlbiBzcGVjaWZpYyBjbGFzcyBjb2RlcyB0aGV5JiMzOTtyZSB1c2luZyB0byBjbGFpbSB0aGVzZSBuZXR3b3JrIGNhcmRzLiBJJiMzOTttIGFudGljaXBhdGluZyBzb21lIGN1c3RvbSBxdWlyayBoYW5kbGluZyBhcyB3ZWxsLCBnaXZlbiB0aGUgYmVzcG9rZSBuYXR1cmUgb2YgdGhlIGhhcmR3YXJlLiBUaGlzIFBDSSBiaW5kaW5nIHJvdXRpbmUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBNZXRhJiMzOTtzIG5ldHdvcmsgaW5ub3ZhdGlvbnMgZml0IGludG8gdGhlIHN0YW5kYXJkIExpbnV4IGZyYW1ld29yay4gTGV0JiMzOTtzIGdldCBjcmFja2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJuaWNfaW5mbyAqZmJuaWNfaW5mb190YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYzozMDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZmJuaWNfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0zMS1cdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yMTQ9c3RhdGljIHZvaWQgZmJuaWNfc2VydmljZV90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI1OC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jOjI1OTpzdGF0aWMgaW50IGZibmljX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNjAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDA3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBGQk5JQyBQQ0kgVGFibGUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGZvY3VzIGlzIG9uIHRoaXMgYGZibmljX3BjaV90YmxgIHRhYmxlLiBTcGVjaWZpY2FsbHksIEkgc2VlIHRoaXMgZW50cnk6IGBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgZmJuaWNfYm9hcmRfYXNpYylgLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggUENJIGRldmljZSBkYXRhLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNRVRBIGRldmljZSwgYXNzb2NpYXRlZCB3aXRoIGFuIEZCTklDIEFTSUMsIGFuZCBpdCYjMzk7cyB1c2luZyBgZmJuaWNfYm9hcmRfYXNpY2AuIE5vdywgdGhlIGNydWNpYWwgcGllY2UgaXMgdW5kZXJzdGFuZGluZyBgUENJX1ZFTkRPUl9JRF9NRVRBYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBjb25zdGFudCBpcyBkZWZpbmVkLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcC4gS25vd2luZyB0aGUgZGVmaW5pdGlvbiBvZiBgUENJX1ZFTkRPUl9JRF9NRVRBYCB3aWxsIGdpdmUgbWUgY3JpdGljYWwgY29udGV4dCBhYm91dCB0aGUgdmVuZG9yIElEIGFuZCwgdGhlcmVmb3JlLCB0aGUgc3BlY2lmaWMgZGV2aWNlIHRoaXMgZW50cnkgcGVydGFpbnMgdG8uIEkgbmVlZCB0byB0cmFjZSBiYWNrIHRvIHRoYXQgZGVmaW5pdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX1ZFTkRPUl9JRF9NRVRBJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGNpX2lkcy5oLTI2MTgtXG5pbmNsdWRlL2xpbnV4L3BjaV9pZHMuaDoyNjE5OiNkZWZpbmUgUENJX1ZFTkRPUl9JRF9NRVRBXHRcdDB4MWQ5YlxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtMjYyMC1cbi0tXG5ydXN0L2tlcm5lbC9wY2kvaWQucnM9MTcyPSAgICBmbiBmbXQoXHUwMDI2c2VsZiwgZjogXHUwMDI2bXV0IGZtdDo6Rm9ybWF0dGVyXHUwMDNjJiMzOTtfXHUwMDNlKSAtXHUwMDNlIGZtdDo6UmVzdWx0IHtcbi0tXG5ydXN0L2tlcm5lbC9wY2kvaWQucnMtNTQzLSAgICBIWUdPTiAgICAgICAgICAgICAgICAgICAgPSBiaW5kaW5nczo6UENJX1ZFTkRPUl9JRF9IWUdPTiwgICAgICAgICAgICAgICAgICAgIC8vIDB4MWQ5NFxucnVzdC9rZXJuZWwvcGNpL2lkLnJzOjU0NDogICAgTUVUQSAgICAgICAgICAgICAgICAgICAgID0gYmluZGluZ3M6OlBDSV9WRU5ET1JfSURfTUVUQSwgICAgICAgICAgICAgICAgICAgICAvLyAweDFkOWJcbnJ1c3Qva2VybmVsL3BjaS9pZC5ycy01NDUtICAgIEZVTkdJQkxFICAgICAgICAgICAgICAgICA9IGJpbmRpbmdzOjpQQ0lfVkVORE9SX0lEX0ZVTkdJQkxFLCAgICAgICAgICAgICAgICAgLy8gMHgxZGFkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5OTA0CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ2hlY2tpbmcgdGhlIFBDSSBEZXZpY2UgSUQqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgb3V0IHdoZXJlIGBQQ0lfREVWSUNFX0lEX01FVEFfRkJOSUNfQVNJQ2AgaXMgYWN0dWFsbHkgZGVmaW5lZC4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gaGVhZCBzdHJhaWdodCB0byB0aGUgc291cmNlLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgaW4gdGhlIGBpbmNsdWRlL2xpbnV4L3BjaV9pZHMuaGAgZmlsZS4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luLCBvciBhdCBsZWFzdCBhIGxvY2F0aW9uIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIHNlZSByZWxhdGVkIFBDSSBkZXZpY2UgSUQgZGVmaW5pdGlvbnMuIElmIGl0JiMzOTtzIG5vdCB0aGVyZSwgSSYjMzk7bGwgbmVlZCB0byBleHBhbmQgbXkgc2VhcmNoLCBidXQgYHBjaV9pZHMuaGAgaXMgdGhlIHByaW1lIHN1c3BlY3QgYW5kIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50IGZvciB0aGlzIGludmVzdGlnYXRpb24gaW50byB0aGUgZGV2aWNlIElEJiMzOTtzIG9yaWdpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RkJOSUNfQVNJQyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oPTk9c3RydWN0IGZibmljX2Rldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDo0MDojZGVmaW5lIFBDSV9ERVZJQ0VfSURfTUVUQV9GQk5JQ19BU0lDXHRcdDB4MDAxM1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC00MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBmYm5pY19wY2lfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jOjMxOlx0eyBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgZmJuaWNfYm9hcmRfYXNpYykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmMtMzItXHQvKiBSZXF1aXJlZCBsYXN0IGVudHJ5ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzc2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFRyaWFnZSBDaGVja2xpc3Q6IFNlY3Rpb24gMiBDb25jZXJucyoqCgpPa2F5LCB0aW1lIHRvIHJ1biB0aHJvdWdoIFNlY3Rpb24gMiBvZiB0aGUgdHJpYWdlIHBoaWxvc29waHkuIFNwZWNpZmljYWxseSwgbGV0JiMzOTtzIHNlZS4uLiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIFRoYXQgbWVhbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuIFRoaW5ncyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBgYW1kZ3B1YC4uLiBiYXNpY2FsbHksIGFueXRoaW5nIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgdGhhdCAqYXJlbiYjMzk7dCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gQWxyaWdodCwgdGhhdCYjMzk7cyB0aGUgaHVyZGxlIHRvIGNsZWFyLgoKV2FpdCBhIHNlY29uZC4uLiAqZmJuaWMqLiBOb3csIGlzIHRoYXQgZW11bGF0ZWQ/IEkgbmVlZCB0byByZW1lbWJlci4gUmlnaHQsIHRoYXQmIzM5O3MgTWV0YSYjMzk7cyBwcm9wcmlldGFyeSBob3N0IG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQuIEl0JiMzOTtzIGFuIEFTSUMgU21hcnROSUMsIGEgUENJZSBFdGhlcm5ldCBjYXJkIHRoZXkgZGV2ZWxvcGVkLiBJdCYjMzk7cyBub3Qgc29tZXRoaW5nIHlvdSYjMzk7ZCB0eXBpY2FsbHkgZmluZCBpbiBRRU1VLiBPa2F5LCBzbyB3ZSBuZWVkIHRvIHZlcmlmeS4gTXkgZmlyc3Qgc3RlcCB3aWxsIGJlIHRvIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueSB2aXJ0dWFsIGJ1cyBlbXVsYXRpb24gb3IgZXZlbiBqdXN0IGEgbW9jayBkZXZpY2Ugc3BlY2lmaWNhbGx5IGZvciBgZmJuaWNgLiBJIG1lYW4sIGEgbG90IG9mIHRoZXNlIGFkdmFuY2VkIE5JQ3MgZW5kIHVwIG5lZWRpbmcgKnNvbWV0aGluZyouLi4gYSB2aXJ0dWFsIG5ldGRldiBvciBhIG1vY2sgZGV2aWNlLiBTbywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWNgIGRpcmVjdG9yeS4gVGhhdCBzaG91bGQgYmUgdGhlIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlZ2lzdGVyX25ldGRldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz04NjQ9aW50IGZibmljX25ldGRldl9yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4ODU6XHRyZXR1cm4gcmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTg4Ni19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz04ODg9dm9pZCBmYm5pY19uZXRkZXZfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04ODkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4OTA6XHR1bnJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04OTEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTEyNwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGZibmljX3Byb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBgZmJuaWNfcHJvYmVgIGlzIGJlaW5nIHVzZWQuIEZpcnN0IHN0ZXAsIGxldCYjMzk7cyBzZWUgd2hlcmUgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIG9yIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBjb2RlIHNlZW1zIHRvIGluZGljYXRlIHRoYXQgdGhlIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jYC4gQWgsIHRoZXJlIGl0IGlzOiBgbW9kdWxlX3BjaV9kcml2ZXIoZmJuaWNfZHJpdmVyKTtgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIE5vdywgSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBsaW5lcyBvZiBjb2RlIHdpdGhpbiBgZmJuaWNfcGNpLmNgIG5lYXIgdGhlIGBtb2R1bGVfcGNpX2RyaXZlcmAgY2FsbCB0byBmdWxseSBncmFzcCB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JlIHNlcXVlbmNlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGhvdyBgZmJuaWNfZHJpdmVyYCBpcyBkZWZpbmVkLCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCB1c2VzLCBhbmQgaG93IGBmYm5pY19wcm9iZWAgaXMgY29ubmVjdGVkIHRvIHRoZSBQQ0kgZHJpdmVyIGxpZmVjeWNsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQ0MAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBGaW5hbCBMaW5lcyBvZiBgZmJuaWNfcGNpLmNgKioKCk9rYXksIHRpbWUgdG8gemVybyBpbiBvbiB0aGUgdGFpbCBlbmQgb2YgYGZibmljX3BjaS5jYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgdGhpbmcgd3JhcHMgdXAuIFdoYXQmIzM5O3MgdGhlIGZpbmFsIGNsZWFudXAgbG9naWM/IEFyZSB0aGVyZSBhbnkgc3VidGxlIHJlc291cmNlIGxlYWtzIEkgbWlnaHQgaGF2ZSBtaXNzZWQgaW4gcHJldmlvdXMgcmV2aWV3cz8gSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSBoYW5kbGUgZXJyb3IgcGF0aHPigJRkb2VzIGV2ZXJ5IGBnb3RvYCBwcm9wZXJseSBmcmVlIGFsbG9jYXRlZCBtZW1vcnkgYW5kIHJlbGVhc2UgaGFyZHdhcmUgcmVzb3VyY2VzPyBBcmUgdGhlIGVycm9yIGhhbmRsaW5nIHJvdXRpbmVzIHJvYnVzdCwgb3IgYXJlIHRoZXJlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gY2VydGFpbiBzY2VuYXJpb3M/IEl04oCZcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgZ3JhY2VmdWxseSByZWNvdmVycyBmcm9tIHVuZXhwZWN0ZWQgUENJIGVycm9ycywgRE1BIGZhaWx1cmVzLCBvciBldmVuIHNpbXBseSBhIGRldmljZSByZW1vdmFsLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRob3NlIGZpbmFsIGxpbmVzLCByZWFsbHkgdHJ5aW5nIHRvIGdyYXNwIHRoZSBlbnRpcmUgZHJpdmVyJiMzOTtzIGxpZmVjeWNsZSBtYW5hZ2VtZW50LiBUaGlzIHNlY3Rpb24gb2Z0ZW4gcmV2ZWFscyB0aGUgZGVzaWduJiMzOTtzIG92ZXJhbGwgcm9idXN0bmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NDA6XHRcbiA0NDE6XHRcdHJ0bmxfbG9jaygpO1xuIDQ0MjpcdFx0bmV0ZGV2X2xvY2sobmV0ZGV2KTtcbiA0NDM6XHRcbiA0NDQ6XHRcdG5ldGlmX2RldmljZV9kZXRhY2gobmV0ZGV2KTtcbiA0NDU6XHRcbiA0NDY6XHRcdGlmIChuZXRpZl9ydW5uaW5nKG5ldGRldikpXG4gNDQ3Olx0XHRcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5kb19zdG9wKG5ldGRldik7XG4gNDQ4Olx0XG4gNDQ5Olx0XHRuZXRkZXZfdW5sb2NrKG5ldGRldik7XG4gNDUwOlx0XHRydG5sX3VubG9jaygpO1xuIDQ1MTpcdFxuIDQ1MjpcdG51bGxfdWNfYWRkcjpcbiA0NTM6XHRcdGZibmljX2Z3X2xvZ19kaXNhYmxlKGZiZCk7XG4gNDU0Olx0XG4gNDU1Olx0XHRkZXZsX2xvY2socHJpdl90b19kZXZsaW5rKGZiZCkpO1xuIDQ1NjpcdFxuIDQ1NzpcdFx0ZmJuaWNfZndfZnJlZV9tYngoZmJkKTtcbiA0NTg6XHRcbiA0NTk6XHRcdGRldmxfdW5sb2NrKHByaXZfdG9fZGV2bGluayhmYmQpKTtcbiA0NjA6XHRcbiA0NjE6XHRcdC8qIEZyZWUgdGhlIElSUXMgc28gdGhleSBhcmVuJiMzOTt0IHRyeWluZyB0byBvY2N1cHkgc2xlZXBpbmcgQ1BVcyAqL1xuIDQ2MjpcdFx0ZmJuaWNfZnJlZV9pcnFzKGZiZCk7XG4gNDYzOlx0XG4gNDY0Olx0XHQvKiBIYXJkd2FyZSBpcyBhYm91dCB0byBnbyBhd2F5LCBzbyBzd2l0Y2ggb2ZmIE1NSU8gYWNjZXNzIGludGVybmFsbHkgKi9cbiA0NjU6XHRcdFdSSVRFX09OQ0UoZmJkLVx1MDAzZXVjX2FkZHIwLCBOVUxMKTtcbiA0NjY6XHRcdFdSSVRFX09OQ0UoZmJkLVx1MDAzZXVjX2FkZHI0LCBOVUxMKTtcbiA0Njc6XHRcbiA0Njg6XHRcdHJldHVybiAwO1xuIDQ2OTpcdH1cbiA0NzA6XHRcbiA0NzE6XHRzdGF0aWMgaW50IF9fZmJuaWNfcG1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiA0NzI6XHR7XG4gNDczOlx0XHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbiA0NzQ6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBmYmQtXHUwMDNlbmV0ZGV2O1xuIDQ3NTpcdFx0dm9pZCBfX2lvbWVtICogY29uc3QgKmlvbWFwX3RhYmxlO1xuIDQ3NjpcdFx0c3RydWN0IGZibmljX25ldCAqZmJuO1xuIDQ3NzpcdFx0aW50IGVycjtcbiA0Nzg6XHRcbiA0Nzk6XHRcdC8qIFJlc3RvcmUgTU1JTyBhY2Nlc3MgKi9cbiA0ODA6XHRcdGlvbWFwX3RhYmxlID0gcGNpbV9pb21hcF90YWJsZSh0b19wY2lfZGV2KGRldikpO1xuIDQ4MTpcdFx0ZmJkLVx1MDAzZXVjX2FkZHIwID0gaW9tYXBfdGFibGVbMF07XG4gNDgyOlx0XHRmYmQtXHUwMDNldWNfYWRkcjQgPSBpb21hcF90YWJsZVs0XTtcbiA0ODM6XHRcbiA0ODQ6XHRcdC8qIFJlcmVxdWVzdCB0aGUgSVJRcyAqL1xuIDQ4NTpcdFx0ZXJyID0gZmJuaWNfYWxsb2NfaXJxcyhmYmQpO1xuIDQ4NjpcdFx0aWYgKGVycilcbiA0ODc6XHRcdFx0Z290byBlcnJfaW52YWxpZGF0ZV91Y19hZGRyO1xuIDQ4ODpcdFxuIDQ4OTpcdFx0ZmJkLVx1MDAzZW1hYy1cdTAwM2Vpbml0X3JlZ3MoZmJkKTtcbiA0OTA6XHRcbiA0OTE6XHRcdGRldmxfbG9jayhwcml2X3RvX2RldmxpbmsoZmJkKSk7XG4gNDkyOlx0XG4gNDkzOlx0XHQvKiBSZS1lbmFibGUgbWFpbGJveCAqL1xuIDQ5NDpcdFx0ZXJyID0gZmJuaWNfZndfcmVxdWVzdF9tYngoZmJkKTtcbiA0OTU6XHRcdGRldmxfdW5sb2NrKHByaXZfdG9fZGV2bGluayhmYmQpKTtcbiA0OTY6XHRcdGlmIChlcnIpXG4gNDk3Olx0XHRcdGdvdG8gZXJyX2ZyZWVfaXJxcztcbiA0OTg6XHRcbiA0OTk6XHRcdC8qIE9ubHkgc2VuZCBsb2cgaGlzdG9yeSBpZiBsb2cgYnVmZmVyIGlzIGVtcHR5IHRvIHByZXZlbnQgZHVwbGljYXRlXG4gNTAwOlx0XHQgKiBsb2cgZW50cmllcy5cbiA1MDE6XHRcdCAqL1xuIDUwMjpcdFx0ZmJuaWNfZndfbG9nX2VuYWJsZShmYmQsIGxpc3RfZW1wdHkoXHUwMDI2ZmJkLVx1MDAzZWZ3X2xvZy5lbnRyaWVzKSk7XG4gNTAzOlx0XG4gNTA0Olx0XHQvKiBTaW5jZSB0aGUgRlcgc2hvdWxkIGJlIHVwLCBjaGVjayBpZiBpdCByZXBvcnRlZCBPVFAgZXJyb3JzICovXG4gNTA1Olx0XHRmYm5pY19kZXZsaW5rX290cF9jaGVjayhmYmQsIFwmIzM0O2Vycm9yIGRldGVjdGVkIGFmdGVyIFBNIHJlc3VtZVwmIzM0Oyk7XG4gNTA2Olx0XG4gNTA3Olx0XHQvKiBObyBuZXRkZXYgbWVhbnMgdGhlcmUgaXNuJiMzOTt0IGEgbmV0d29yayBpbnRlcmZhY2UgdG8gYnJpbmcgdXAgKi9cbiA1MDg6XHRcdGlmIChmYm5pY19pbml0X2ZhaWx1cmUoZmJkKSlcbiA1MDk6XHRcdFx0cmV0dXJuIDA7XG4gNTEwOlx0XG4gNTExOlx0XHRmYm4gPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuIDUxMjpcdFxuIDUxMzpcdFx0LyogUmVzZXQgdGhlIHF1ZXVlcyBpZiBuZWVkZWQgKi9cbiA1MTQ6XHRcdGZibmljX3Jlc2V0X3F1ZXVlcyhmYm4sIGZibi1cdTAwM2VudW1fdHhfcXVldWVzLCBmYm4tXHUwMDNlbnVtX3J4X3F1ZXVlcyk7XG4gNTE1Olx0XG4gNTE2Olx0XHRydG5sX2xvY2soKTtcbiA1MTc6XHRcdG5ldGRldl9sb2NrKG5ldGRldik7XG4gNTE4Olx0XG4gNTE5Olx0XHRpZiAobmV0aWZfcnVubmluZyhuZXRkZXYpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg5NQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYGZibmljX3BjaS5jYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBvZiB0aGUgYGZibmljX3BjaS5jYCBkcml2ZXIgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIEZpYnJlIENoYW5uZWwgb3ZlciBFdGhlcm5ldCAoRkNvRSkgTklDIGludGVyYWN0cyB3aXRoIHRoZSBQQ0kgYnVzLiBGaXJzdCBJIG5lZWQgdG8gZm9jdXMgb24gdGhpcyBmaWxlIGFuZCB3b3JrIG15IHdheSB0aHJvdWdoIHRoZSBjb2RlLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIG1ldGhvZHMsIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBob3cgdGhlIGRldmljZSBpcyBpbml0aWFsaXplZCBhbmQgZGV0YWNoZWQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBwYXJ0aWN1bGFybHkgYW55dGhpbmcgc3BlY2lmaWMgdG8gdGhlIEZDb0UgcHJvdG9jb2wgaGFuZGxpbmcgd2l0aGluIHRoZSBoYXJkd2FyZS4gVGhpcyB3b3VsZCBpbmNsdWRlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgcXVldWVzLCBkZXNjcmlwdG9ycywgYW5kIGFueSBETUEgc2V0dXAgZm9yIGRhdGEgdHJhbnNmZXIuIEkgd2FudCB0byBzZWUgaWYgdGhleSYjMzk7cmUgdXNpbmcgYSBzdGFuZGFyZCBvciBjdXN0b20gRkNvRSBvZmZsb2FkIG1lY2hhbmlzbSBhbmQgaG93IGFueSBoYXJkd2FyZS1zcGVjaWZpYyBvcHRpbWl6YXRpb25zIGFyZSBpbXBsZW1lbnRlZC4gRXNzZW50aWFsbHksIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGdsdWUgdGhhdCBtYWtlcyB0aGlzIE5JQyB0aWNrIG9uIGEgUENJIGJ1cywgYW5kIEkmIzM5O2xsIGJlIGxvb2tpbmcgYXQgdGhpbmdzIGxpa2UgcHJvYmUsIHJlbW92ZSwgaW50ZXJydXB0IGhhbmRsaW5nLCBETUEgc2V0dGluZ3MsIGFuZCBhbnkgc3BlY2lmaWMgcXVpcmtzIG9yIHdvcmthcm91bmRzIHRoZXkmIzM5O3ZlIGltcGxlbWVudGVkIGZvciB0aGlzIGRldmljZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MjA6XHRcdFx0ZXJyID0gX19mYm5pY19vcGVuKGZibik7XG4gNTIxOlx0XG4gNTIyOlx0XHRuZXRkZXZfdW5sb2NrKG5ldGRldik7XG4gNTIzOlx0XHRydG5sX3VubG9jaygpO1xuIDUyNDpcdFx0aWYgKGVycilcbiA1MjU6XHRcdFx0Z290byBlcnJfZnJlZV9tYng7XG4gNTI2Olx0XG4gNTI3Olx0XHRyZXR1cm4gMDtcbiA1Mjg6XHRlcnJfZnJlZV9tYng6XG4gNTI5Olx0XHRmYm5pY19md19sb2dfZGlzYWJsZShmYmQpO1xuIDUzMDpcdFxuIDUzMTpcdFx0ZGV2bF9sb2NrKHByaXZfdG9fZGV2bGluayhmYmQpKTtcbiA1MzI6XHRcdGZibmljX2Z3X2ZyZWVfbWJ4KGZiZCk7XG4gNTMzOlx0XHRkZXZsX3VubG9jayhwcml2X3RvX2RldmxpbmsoZmJkKSk7XG4gNTM0Olx0ZXJyX2ZyZWVfaXJxczpcbiA1MzU6XHRcdGZibmljX2ZyZWVfaXJxcyhmYmQpO1xuIDUzNjpcdGVycl9pbnZhbGlkYXRlX3VjX2FkZHI6XG4gNTM3Olx0XHRXUklURV9PTkNFKGZiZC1cdTAwM2V1Y19hZGRyMCwgTlVMTCk7XG4gNTM4Olx0XHRXUklURV9PTkNFKGZiZC1cdTAwM2V1Y19hZGRyNCwgTlVMTCk7XG4gNTM5Olx0XHRyZXR1cm4gZXJyO1xuIDU0MDpcdH1cbiA1NDE6XHRcbiA1NDI6XHRzdGF0aWMgdm9pZCBfX2ZibmljX3BtX2F0dGFjaChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gNTQzOlx0e1xuIDU0NDpcdFx0c3RydWN0IGZibmljX2RldiAqZmJkID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4gNTQ1Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gZmJkLVx1MDAzZW5ldGRldjtcbiA1NDY6XHRcdHN0cnVjdCBmYm5pY19uZXQgKmZibjtcbiA1NDc6XHRcbiA1NDg6XHRcdHJ0bmxfbG9jaygpO1xuIDU0OTpcdFx0ZmJuaWNfcmVzZXRfaHdfc3RhdHMoZmJkKTtcbiA1NTA6XHRcdHJ0bmxfdW5sb2NrKCk7XG4gNTUxOlx0XG4gNTUyOlx0XHRpZiAoZmJuaWNfaW5pdF9mYWlsdXJlKGZiZCkpXG4gNTUzOlx0XHRcdHJldHVybjtcbiA1NTQ6XHRcbiA1NTU6XHRcdGZibiA9IG5ldGRldl9wcml2KG5ldGRldik7XG4gNTU2Olx0XG4gNTU3Olx0XHRpZiAobmV0aWZfcnVubmluZyhuZXRkZXYpKVxuIDU1ODpcdFx0XHRmYm5pY191cChmYm4pO1xuIDU1OTpcdFxuIDU2MDpcdFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZXRkZXYpO1xuIDU2MTpcdH1cbiA1NjI6XHRcbiA1NjM6XHRzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGZibmljX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gNTY0Olx0e1xuIDU2NTpcdFx0aW50IGVycjtcbiA1NjY6XHRcbiA1Njc6XHRcdGVyciA9IF9fZmJuaWNfcG1fcmVzdW1lKGRldik7XG4gNTY4Olx0XHRpZiAoIWVycilcbiA1Njk6XHRcdFx0X19mYm5pY19wbV9hdHRhY2goZGV2KTtcbiA1NzA6XHRcbiA1NzE6XHRcdHJldHVybiBlcnI7XG4gNTcyOlx0fVxuIDU3MzpcdFxuIDU3NDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBmYm5pY19wbV9vcHMgPSB7XG4gNTc1Olx0XHRTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhmYm5pY19wbV9zdXNwZW5kLCBmYm5pY19wbV9yZXN1bWUpXG4gNTc2Olx0fTtcbiA1Nzc6XHRcbiA1Nzg6XHRzdGF0aWMgdm9pZCBmYm5pY19zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiA1Nzk6XHR7XG4gNTgwOlx0XHRmYm5pY19wbV9zdXNwZW5kKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiA1ODE6XHR9XG4gNTgyOlx0XG4gNTgzOlx0c3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgZmJuaWNfZXJyX2Vycm9yX2RldGVjdGVkKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIDU4NDpcdFx0XHRcdFx0XHRcdCBwY2lfY2hhbm5lbF9zdGF0ZV90IHN0YXRlKVxuIDU4NTpcdHtcbiA1ODY6XHRcdC8qIERpc2Nvbm5lY3QgZGV2aWNlIGlmIGZhaWx1cmUgaXMgbm90IHJlY292ZXJhYmxlIHZpYSByZXNldCAqL1xuIDU4NzpcdFx0aWYgKHN0YXRlID09IHBjaV9jaGFubmVsX2lvX3Blcm1fZmFpbHVyZSlcbiA1ODg6XHRcdFx0cmV0dXJuIFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1Q7XG4gNTg5Olx0XG4gNTkwOlx0XHRmYm5pY19wbV9zdXNwZW5kKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiA1OTE6XHRcbiA1OTI6XHRcdC8qIFJlcXVlc3QgYSBzbG90IHJlc2V0ICovXG4gNTkzOlx0XHRyZXR1cm4gUENJX0VSU19SRVNVTFRfTkVFRF9SRVNFVDtcbiA1OTQ6XHR9XG4gNTk1Olx0XG4gNTk2Olx0c3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgZmJuaWNfZXJyX3Nsb3RfcmVzZXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gNTk3Olx0e1xuIDU5ODpcdFx0aW50IGVycjtcbiA1OTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzNTMKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkZvY3VzaW5nIG9uIEZpbGUgVGVybWluYXRpb24qKgoKQWxyaWdodCwgbXkgaW5pdGlhbCB0aG91Z2h0IGhlcmUgaXMgc3RyYWlnaHRmb3J3YXJkOiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIGZpbmFsIHNlY3Rpb24gb2YgdGhpcyBmaWxlLiBLbm93aW5nIHRoZSBvdmVyYWxsIGNvbnRleHQsIEkmIzM5O20gbGlrZWx5IHNlYXJjaGluZyBmb3IgYSBzcGVjaWZpYyB0ZXJtaW5hdGluZyBjb25kaXRpb24sIGEgZmluYWwgZGF0YSBwb2ludCwgb3IgcGVyaGFwcyBhbiBlcnJvciBjb2RlIHRoYXQgc2lnbmlmaWVzIHRoZSBwcm9jZXNzJiMzOTtzIGNvbXBsZXRpb24gb3IgYW4gZXhjZXB0aW9uLiBUaGUgbG9jYXRpb24gb2YgdGhlIGZpbmFsIGNoYXJhY3RlcnMsIG9yIGJ5dGVzLCB0aGF0IHRlcm1pbmF0ZSBhIGZpbGUsIG9yIGEgc3BlY2lmaWMgcHJvY2VzcyB3aXRoaW4gdGhhdCBmaWxlLCBjYW4gdGVsbCBtZSBhIGxvdC4gQXJlIHRoZXJlIGFueSBwYXJ0aWN1bGFyIEVPRiBtYXJrZXJzLCBkZWxpbWl0ZXJzLCBvciBjb250cm9sIGNoYXJhY3RlcnMgdGhhdCBJIGV4cGVjdCB0byBzZWU/IElzIHRoaXMgYSBzdGFuZGFyZCBmb3JtYXQsIG9yIHNvbWV0aGluZyBjdXN0b20/IFRoZSBlbmQgb2YgYSBmaWxlIG9mdGVuIGhvbGRzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZmluYWwgc3RhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjAwOlx0XHRwY2lfc2V0X3Bvd2VyX3N0YXRlKHBkZXYsIFBDSV9EMCk7XG4gNjAxOlx0XHRwY2lfcmVzdG9yZV9zdGF0ZShwZGV2KTtcbiA2MDI6XHRcbiA2MDM6XHRcdGlmIChwY2lfZW5hYmxlX2RldmljZV9tZW0ocGRldikpIHtcbiA2MDQ6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldixcbiA2MDU6XHRcdFx0XHRcJiMzNDtDYW5ub3QgcmUtZW5hYmxlIFBDSSBkZXZpY2UgYWZ0ZXIgcmVzZXQuXFxuXCYjMzQ7KTtcbiA2MDY6XHRcdFx0cmV0dXJuIFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1Q7XG4gNjA3Olx0XHR9XG4gNjA4Olx0XG4gNjA5Olx0XHQvKiBSZXN0b3JlIGRldmljZSB0byBwcmV2aW91cyBzdGF0ZSAqL1xuIDYxMDpcdFx0ZXJyID0gX19mYm5pY19wbV9yZXN1bWUoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDYxMTpcdFxuIDYxMjpcdFx0cmV0dXJuIGVyciA/IFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1QgOiBQQ0lfRVJTX1JFU1VMVF9SRUNPVkVSRUQ7XG4gNjEzOlx0fVxuIDYxNDpcdFxuIDYxNTpcdHN0YXRpYyB2b2lkIGZibmljX2Vycl9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gNjE2Olx0e1xuIDYxNzpcdFx0X19mYm5pY19wbV9hdHRhY2goXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDYxODpcdH1cbiA2MTk6XHRcbiA2MjA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBmYm5pY19lcnJfaGFuZGxlciA9IHtcbiA2MjE6XHRcdC5lcnJvcl9kZXRlY3RlZFx0PSBmYm5pY19lcnJfZXJyb3JfZGV0ZWN0ZWQsXG4gNjIyOlx0XHQuc2xvdF9yZXNldFx0PSBmYm5pY19lcnJfc2xvdF9yZXNldCxcbiA2MjM6XHRcdC5yZXN1bWVcdFx0PSBmYm5pY19lcnJfcmVzdW1lLFxuIDYyNDpcdH07XG4gNjI1Olx0XG4gNjI2Olx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGZibmljX2RyaXZlciA9IHtcbiA2Mjc6XHRcdC5uYW1lXHRcdD0gZmJuaWNfZHJpdmVyX25hbWUsXG4gNjI4Olx0XHQuaWRfdGFibGVcdD0gZmJuaWNfcGNpX3RibCxcbiA2Mjk6XHRcdC5wcm9iZVx0XHQ9IGZibmljX3Byb2JlLFxuIDYzMDpcdFx0LnJlbW92ZVx0XHQ9IGZibmljX3JlbW92ZSxcbiA2MzE6XHRcdC5kcml2ZXIucG1cdD0gXHUwMDI2ZmJuaWNfcG1fb3BzLFxuIDYzMjpcdFx0LnNodXRkb3duXHQ9IGZibmljX3NodXRkb3duLFxuIDYzMzpcdFx0LmVycl9oYW5kbGVyXHQ9IFx1MDAyNmZibmljX2Vycl9oYW5kbGVyLFxuIDYzNDpcdH07XG4gNjM1Olx0XG4gNjM2Olx0LyoqXG4gNjM3Olx0ICogZmJuaWNfaW5pdF9tb2R1bGUgLSBEcml2ZXIgUmVnaXN0cmF0aW9uIFJvdXRpbmVcbiA2Mzg6XHQgKlxuIDYzOTpcdCAqIFRoZSBmaXJzdCByb3V0aW5lIGNhbGxlZCB3aGVuIHRoZSBkcml2ZXIgaXMgbG9hZGVkLiAgQWxsIGl0IGRvZXMgaXNcbiA2NDA6XHQgKiByZWdpc3RlciB3aXRoIHRoZSBQQ0kgc3Vic3lzdGVtLlxuIDY0MTpcdCAqXG4gNjQyOlx0ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG9uIGZhaWx1cmVcbiA2NDM6XHQgKiovXG4gNjQ0Olx0c3RhdGljIGludCBfX2luaXQgZmJuaWNfaW5pdF9tb2R1bGUodm9pZClcbiA2NDU6XHR7XG4gNjQ2Olx0XHRpbnQgZXJyO1xuIDY0NzpcdFxuIDY0ODpcdFx0ZmJuaWNfZGJnX2luaXQoKTtcbiA2NDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzMTYKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAzNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGZibmljYCBEcml2ZXIqKgoKT2theSwgc28gYGZibmljYCBpcyBhIFBDSSBkcml2ZXIsIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgTWV0YSYjMzk7cyBwcm9wcmlldGFyeSBGQk5JQyBBU0lDLiBUaGUgY29yZSBkZXBlbmRlbmN5IGhlcmUgaXMgcGh5c2ljYWwgUENJIGhhcmR3YXJlLiBUaGUgY29kZSBkZWZpbmVzIHRoZSBzcGVjaWZpYyB2ZW5kb3IgYW5kIGRldmljZSBJRHM6IGBQQ0lfVkVORE9SX0lEX01FVEFgICgweDFkOWIpIGFuZCBgUENJX0RFVklDRV9JRF9NRVRBX0ZCTklDX0FTSUNgICgweDAwMTMpLCByZXNwZWN0aXZlbHksIHdpdGhpbiB0aGUgYGZibmljX3BjaV90YmxgLiBUaGF0JiMzOTtzIHRoZSBrZXk6IGl0ICpyZXF1aXJlcyogdGhlIGFjdHVhbCBoYXJkd2FyZS4KCk5vdywgbGV0JiMzOTtzIHNlZSBpZiB0aGlzIGFwcGxpZXMgdG8gYSBmdXp6aW5nIGNoZWNrLiBMZXQmIzM5O3MgbG9vayBhdCB0aGUgJiMzNDtXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBjb25kaXRpb25zLiBTcGVjaWZpY2FsbHksIHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNyaXRlcmlhIG1lbnRpb25zIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgbmVlZCByZWFsIEFTSUNzIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEdpdmVuIHdoYXQgSSBrbm93IGFib3V0IGBmYm5pY2AsIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkIG1hdGNoLiBJdCByZWxpZXMgb24gYSBjdXN0b20gQVNJQywgd2hpY2ggSSBzdHJvbmdseSBzdXNwZWN0IGlzbiYjMzk7dCBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBzZXR1cC4gU28gdGhlIGhhcmR3YXJlIHJlcXVpcmVtZW50IG1ha2VzIHRoaXMgZHJpdmVyIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgYXMgaXQgZXhwbGljaXRseSBzdGF0ZXMgaW4gdGhlICYjMzQ7bmVnYXRpdmUgY3JpdGVyaWEuJiMzNDsKCkkmIzM5O2xsIGFsc28gdGFrZSBhIGxvb2sgYXQgdGhlIHByb3ZpZGVkIHBhdGNoLiBJdCBzZWVtcyB0byBjb3JyZWN0IGFuIGVycm9yIGhhbmRsaW5nIGlzc3VlIHdpdGhpbiB0aGUgYGZibmljX2FsbG9jX3F0X3BhZ2VfcG9vbHNgIGZ1bmN0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNgLiBJdCYjMzk7cyBhIGZhaXJseSBzdHJhaWdodGZvcndhcmQgY2hhbmdlIHRoYXQgc2ltcGx5IGNvcnJlY3RzIHRoZSBhcmd1bWVudCBwYXNzZWQgdG8gYHBhZ2VfcG9vbF9kZXN0cm95YC4gSXQgZG9lc24mIzM5O3Qgc2VlbSB0byBpbmRpY2F0ZSBhbnkgcGFydGljdWxhciBmdXp6aW5nIHZ1bG5lcmFiaWxpdHkgaW4gaXRzZWxmLiBIb3dldmVyLCBpdCBkb2VzIHJlaW5mb3JjZSB0aGUgZmFjdCB0aGF0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGlzIG5lY2Vzc2FyeSBmb3IgcHJvcGVyIG9wZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU4MDpcdFx0XHRwcF9wYXJhbXMucG9vbF9zaXplID0gMzI3Njg7XG4xNTgxOlx0XG4xNTgyOlx0XHRwcCA9IHBhZ2VfcG9vbF9jcmVhdGUoXHUwMDI2cHBfcGFyYW1zKTtcbjE1ODM6XHRcdGlmIChJU19FUlIocHApKVxuMTU4NDpcdFx0XHRyZXR1cm4gUFRSX0VSUihwcCk7XG4xNTg1Olx0XG4xNTg2Olx0XHRxdC1cdTAwM2VzdWIwLnBhZ2VfcG9vbCA9IHBwO1xuMTU4NzpcdFx0aWYgKG5ldGlmX3J4cV9oYXNfdW5yZWFkYWJsZV9tcChmYm4tXHUwMDNlbmV0ZGV2LCByeHFfaWR4KSkge1xuMTU4ODpcdFx0XHRwcF9wYXJhbXMuZmxhZ3MgfD0gUFBfRkxBR19BTExPV19VTlJFQURBQkxFX05FVE1FTTtcbjE1ODk6XHRcdFx0cHBfcGFyYW1zLmRtYV9kaXIgPSBETUFfRlJPTV9ERVZJQ0U7XG4xNTkwOlx0XG4xNTkxOlx0XHRcdHBwID0gcGFnZV9wb29sX2NyZWF0ZShcdTAwMjZwcF9wYXJhbXMpO1xuMTU5MjpcdFx0XHRpZiAoSVNfRVJSKHBwKSlcbjE1OTM6XHRcdFx0XHRnb3RvIGVycl9kZXN0cm95X3N1YjA7XG4xNTk0Olx0XHR9IGVsc2Uge1xuMTU5NTpcdFx0XHRwYWdlX3Bvb2xfZ2V0KHBwKTtcbjE1OTY6XHRcdH1cbjE1OTc6XHRcdHF0LVx1MDAzZXN1YjEucGFnZV9wb29sID0gcHA7XG4xNTk4Olx0XG4xNTk5Olx0XHRyZXR1cm4gMDtcbjE2MDA6XHRcbjE2MDE6XHRlcnJfZGVzdHJveV9zdWIwOlxuMTYwMjpcdFx0cGFnZV9wb29sX2Rlc3Ryb3kocXQtXHUwMDNlc3ViMC5wYWdlX3Bvb2wpO1xuMTYwMzpcdFx0cmV0dXJuIFBUUl9FUlIocHApO1xuMTYwNDpcdH1cbjE2MDU6XHRcbjE2MDY6XHRzdGF0aWMgdm9pZCBmYm5pY19yaW5nX2luaXQoc3RydWN0IGZibmljX3JpbmcgKnJpbmcsIHUzMiBfX2lvbWVtICpkb29yYmVsbCxcbjE2MDc6XHRcdFx0XHQgICAgaW50IHFfaWR4LCB1OCBmbGFncylcbjE2MDg6XHR7XG4xNjA5Olx0XHR1NjRfc3RhdHNfaW5pdChcdTAwMjZyaW5nLVx1MDAzZXN0YXRzLnN5bmNwKTtcbjE2MTA6XHRcdHJpbmctXHUwMDNlZG9vcmJlbGwgPSBkb29yYmVsbDtcbjE2MTE6XHRcdHJpbmctXHUwMDNlcV9pZHggPSBxX2lkeDtcbjE2MTI6XHRcdHJpbmctXHUwMDNlZmxhZ3MgPSBmbGFncztcbjE2MTM6XHRcdHJpbmctXHUwMDNlZGVmZXJyZWRfaGVhZCA9IC0xO1xuMTYxNDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY2NDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgU3VidGxlIE1lbW9yeSBNYW5hZ2VtZW50IElzc3VlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNvbWV0aGluZyBqdW1wcyBvdXQgYXQgbWU6IGBwcGAgaXMgYmVpbmcgcGFzc2VkIHRvIGBwYWdlX3Bvb2xfZGVzdHJveWAuIEkgc2VlIHRoZSBgcGFnZV9wb29sX2NyZWF0ZWAgY2FsbCBhbmQgdGhlIGNoZWNrIGZvciBgSVNfRVJSKHBwKWAuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgZXJyb3IgaGFuZGxpbmcsIHJpZ2h0PyBCdXQgd2FpdC4uLiBpZiBgcHBgIGlzIGFuIGVycm9yIHBvaW50ZXIsIHRoZW4gaXQgc2hvdWxkbiYjMzk7dCBiZSBwYXNzZWQgdG8gYHBhZ2VfcG9vbF9kZXN0cm95YCEgSXQgbG9va3MgbGlrZSB0aGVyZSB3YXMgYSBzdWJ0bGUgYnVnIHdoZXJlIHRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwYXNzaW5nIHRoZSBlcnJvciB2YWx1ZSB0byBgcGFnZV9wb29sX2Rlc3Ryb3lgLiBUaGUgZml4IGNoYW5nZWQgaXQgdG8gY29ycmVjdGx5IGRlc3Ryb3kgdGhlIGFscmVhZHkgY3JlYXRlZCBwYWdlIHBvb2wgYHF0LSZndDtzdWIwLnBhZ2VfcG9vbGAuCgpOb3csIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucy4gVGhpcyBmaXggaXMgZ29vZCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqLiBXYXMgdGhlcmUgbWVtb3J5IGNvcnJ1cHRpb24/IEEgbGVhaz8gVGhpcyBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uLiBJIG5lZWQgdG8ga25vdyB3aGVyZSBgZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29sc2AgaXMgY2FsbGVkIGFuZCBob3cgdGhpcyBpc3N1ZSB3YXMgdHJpZ2dlcmVkLiBUaGUgY29udGV4dCBpcyB2aXRhbC4gVGltZSB0byBjaGVjayB0aGUgY2FsbCBzaXRlcyB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgd2hhdCBvdGhlciBmdW5jdGlvbnMgY291bGQgdHJpZ2dlciB0aGlzIHNhbWUgaXNzdWUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgYnJvYWRlciBwaWN0dXJlIGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYm5pY19hbGxvY19xdF9wYWdlX3Bvb2xzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0xNTUxPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjE1NTI6ZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29scyhzdHJ1Y3QgZmJuaWNfbmV0ICpmYm4sIHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTE1NTMtXHRcdFx0ICB1bnNpZ25lZCBpbnQgcnhxX2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMDA0PXN0YXRpYyBpbnQgZmJuaWNfYWxsb2NfcnhfcXRfcmVzb3VyY2VzKHN0cnVjdCBmYm5pY19uZXQgKmZibixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMDEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjAxMTpcdGVyciA9IGZibmljX2FsbG9jX3F0X3BhZ2VfcG9vbHMoZmJuLCBxdCwgcXQtXHUwMDNlY21wbC5xX2lkeCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMDEyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yODMyPXN0YXRpYyBpbnQgZmJuaWNfcXVldWVfbWVtX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjg0MS1cdGlmICghbmV0aWZfcnVubmluZyhkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6Mjg0MjpcdFx0cmV0dXJuIGZibmljX2FsbG9jX3F0X3BhZ2VfcG9vbHMoZmJuLCBxdCwgaWR4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTI4NDMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTQxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIGZibmljIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHJlc291cmNlcyBhcmUgYWxsb2NhdGVkIHdpdGhpbiB0aGUgYGZibmljYCBkcml2ZXIuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgYWxsb2NhdGlvbiBmdW5jdGlvbnMgYXJlIGBmYm5pY19hbGxvY19yeF9xdF9yZXNvdXJjZXNgIGFuZCBgZmJuaWNfcXVldWVfbWVtX2FsbG9jYC4gVGhlc2UgYXJlIGJlaW5nIGNhbGxlZCB0aHJvdWdoIHRoZSBgbmV0ZGV2YCBpbnRlcmZhY2UsIGVpdGhlciBkaXJlY3RseSB0aHJvdWdoIGBuZXRkZXZfc3RhdF9vcHNgIG9yIGluZGlyZWN0bHkgdmlhIGBuZXRkZXZfcXVldWVfbWdtdF9vcHNgLiBOYXR1cmFsbHksIHRoaXMgd2hvbGUgcHJvY2VzcyBpcyBwcmVkaWNhdGVkIG9uIHRoZSBleGlzdGVuY2Ugb2YgYW4gYGZibmljYCBuZXR3b3JrIGRldmljZSAoYG5ldGRldmApLgoKTm93LCB3aGVyZSBkb2VzIHRoaXMgYG5ldGRldmAgYWN0dWFsbHkgZ2V0IGNyZWF0ZWQ/IEl0JiMzOTtzIHJlZ2lzdGVyZWQgd2l0aGluIGBmYm5pY19wcm9iZWAsIHdoaWNoIG9ubHkgaGFwcGVucyB3aGVuIGEgcGh5c2ljYWwgUENJZSBkZXZpY2Ugd2l0aCB0aGUgc3BlY2lmaWMgdmVuZG9yIElEIDB4MWQ5YiBhbmQgZGV2aWNlIElEIDB4MDAxMyBpcyBkZXRlY3RlZCBkdXJpbmcgdGhlIHByb2JlLgoKVGhpcyBpbW1lZGlhdGVseSByYWlzZXMgYSBxdWVzdGlvbjogSXMgdGhlcmUgYW55IGZvcm0gb2YgdmlydHVhbCBgZmJuaWNgIGRldmljZSBvciBhbiBlbXVsYXRpb24gbWVjaGFuaXNtPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBJIGNhbiB0ZXN0IG9yIHdvcmsgd2l0aCB0aGlzIGRyaXZlciB3aXRob3V0IGhhdmluZyB0aGUgc3BlY2lmaWMgaGFyZHdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IGRpZyB0aHJvdWdoIHRoZSBgdG9vbHMvdGVzdGluZ2AgZGlyZWN0b3J5LCBhbmQgdGhlIHdpZGVyIGNvZGViYXNlIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbWVudGlvbiBvZiB2aXJ0dWFsIG9yIGVtdWxhdGVkIGBmYm5pY2AgZGV2aWNlcy4gSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggZm9yIGFueSBoaW50cyBpbiB0aGUgY29kZSBiYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZibmljJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dG9vbHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODAwOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipNeSBMaW5lIG9mIElucXVpcnkqKgoKT2theSwgc28gSSYjMzk7dmUgaGl0IGEgcG90ZW50aWFsIGRlYWQgZW5kLiBUaW1lIHRvIGJyb2FkZW4gdGhlIHNlYXJjaC4gSSBuZWVkIHRvIGJlIG1ldGhvZGljYWwuIEluc3RlYWQgb2YgZm9jdXNpbmcgb24gdGhlIGN1cnJlbnQgYXJlYSwgaXQmIzM5O3MgcHJ1ZGVudCB0byBleHBhbmQgbXkgc2NvcGUuIEkgc2hvdWxkIGNhc3QgYSB3aWRlciBuZXQuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGVsc2V3aGVyZSBpbiB0aGUgZHJpdmVyIGNvZGUsIG9yIHRoZSBhcmNoaXRlY3R1cmFsIGVsZW1lbnRzLiBNYXliZSB0aGVyZSYjMzk7cyBhIHJlbGF0ZWQgaW50ZXJhY3Rpb24gaGFwcGVuaW5nIGluIGEgZGlmZmVyZW50IHBhcnQgb2YgdGhlIHN5c3RlbSB0aGF0IGlzIHRoZSByb290IG9mIHRoZSBpc3N1ZS4gQSBwYXJhbGxlbCBjb25jZXB0LCBvciBzaW1pbGFyIGFwcHJvYWNoLiBJdCYjMzk7cyBhIGtleSBzdHJhdGVneSB0byBlbGltaW5hdGUgcG9zc2liaWxpdGllcyBhbmQgdW5jb3ZlciB0aGUgY29yZSBpc3N1ZS4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZm9sbG93IHRoZSBicmVhZGNydW1icyBmcm9tIG1vZHVsZSB0byBtb2R1bGUgaW4gb3JkZXIgdG8gYXZvaWQgd2FzdGluZyB0aW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtGQk5JQ19BU0lDJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg9OT1zdHJ1Y3QgZmJuaWNfZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oOjQwOiNkZWZpbmUgUENJX0RFVklDRV9JRF9NRVRBX0ZCTklDX0FTSUNcdFx0MHgwMDEzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM9MzA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGZibmljX3BjaV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MzE6XHR7IFBDSV9ERVZJQ0VfREFUQShNRVRBLCBGQk5JQ19BU0lDLCBmYm5pY19ib2FyZF9hc2ljKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0zMi1cdC8qIFJlcXVpcmVkIGxhc3QgZW50cnkgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0NjEKCQkJCQkJCW91dHB1dDogMTA0CgkJCQkJCQl0aG91Z2h0czogNDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZCTklDIERyaXZlciBBbmFseXNpcyBhbmQgRnV6emluZyBEZWNpc2lvbioqCgpPa2F5LCBzbyBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGQk5JQyBpcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIsIGEgU21hcnROSUMvRXRoZXJuZXQgQVNJQyBkcml2ZXIgZm9yIE1ldGEmIzM5O3MgY3VzdG9tIGhhcmR3YXJlICgxZDliOjAwMTMsIGdvdCBpdCkuIFRoZSBrZXkgdGhpbmcgaXMsIGl0JiMzOTtzIG5vdCBnb2luZyB0byBydW4gaW4gdGhlIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aGF0IHdlIHR5cGljYWxseSB1c2UgZm9yIGZ1enppbmcuIEkmIzM5O20gcmVjYWxsaW5nIFNlY3Rpb24gMiBvZiB0aGUgdHJpYWdlIHBoaWxvc29waHkgaW1tZWRpYXRlbHkg4oCTIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IHNlY3Rpb24gaXMgdGhlIGtleS4KClRoYXQgcGhpbG9zb3BoeSBleHBsaWNpdGx5IGNhbGxzIG91dCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVIGRyaXZlcnMsICpyZXF1aXJpbmcqIHBoeXNpY2FsIEFTSUNzLiBJdCBzcGVjaWZpY2FsbHkgbGlzdHMgZXhhbXBsZXMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgLi4uIGFuZCwgaW1wb3J0YW50bHksIEZCTklDLiBUaGUgY29yZSBwcmluY2lwbGUgaXMgKnJlYWNoYWJpbGl0eSouIElmIHRoZSBjb2RlIGNhbiYjMzk7dCBleGVjdXRlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGZvcmdldCBhYm91dCBmdXp6aW5nIGl0LiBJdCBkb2VzbiYjMzk7dCBtYXR0ZXIgaWYgdGhlcmUgYXJlIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYyBpbiB0aGVyZTsgaXQmIzM5O3MgYSBkZWFkIGVuZC4KCkFwcGx5aW5nIHRoZSAmIzM0O25lZ2F0aXZlIGNyaXRlcmlhLCYjMzQ7IHRoaXMgcGF0Y2ggKmFic29sdXRlbHkqIGZhbGxzIGludG8gdGhlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBjYXRlZ29yeS4gVGhlcmVmb3JlLCBXb3J0aEZ1enppbmcgKiptdXN0KiogYmUgYGZhbHNlYC4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgRm9jdXNTeW1ib2xzIGFuZCBFbmFibGVDb25maWdzIGFyZSBlbXB0eSAob3IgYXQgbGVhc3QsIHNob3VsZCBiZSkuIEl0JiMzOTtzIGEgd2FzdGUgb2YgcmVzb3VyY2VzIHRvIGV2ZW4gY29uc2lkZXIgb3RoZXJ3aXNlLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybS4gVGhlIHBhdGNoIHRvdWNoZXMgb25seSBgZmJuaWNfdHhyeC5jYCwgc3BlY2lmaWNhbGx5IGBmYm5pY19hbGxvY19xdF9wYWdlX3Bvb2xzYC4gVGhhdCYjMzk7cyBpdC4gTm8gb3RoZXIgZmlsZXMuIEFuZCB0aGlzIGNvZGUgaXMgYWxsIGludGVybmFsIHRvIHRoZSBgZmJuaWNgIGRyaXZlciwgd2hpY2ggaXMsIGFnYWluLCBNZXRhJiMzOTtzIHBoeXNpY2FsIFBDSWUgTklDIEFTSUMuIEl0JiMzOTtzICpkZWZpbml0ZWx5KiB1bnJlYWNoYWJsZSB3aXRob3V0IHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUuCgpSaWdodCwgYWxsIGNoZWNrcyBjb21wbGV0ZS4gV2UmIzM5O3JlIGdvb2QgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBObyBuZWVkIHRvIHdhc3RlIHRpbWUgZnVydGhlciBhbmFseXppbmcgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIHBhcnQgb2YgdGhlIGZibmljIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy8pLCB3aGljaCBkcml2ZXMgTWV0YSYjMzk7cyBwcm9wcmlldGFyeSBob3N0IG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQgKFBDSWUgQVNJQykuIFRoaXMgaGFyZHdhcmUgaXMgdmVuZG9yLXNwZWNpZmljIGFuZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggZHJpdmVzIE1ldGEmIzM5O3MgcHJvcHJpZXRhcnkgaG9zdCBuZXR3b3JrIGludGVyZmFjZSBjYXJkIChQQ0llIEFTSUMpLiBUaGlzIGhhcmR3YXJlIGlzIHZlbmRvci1zcGVjaWZpYyBhbmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxMjoyMi4xMzkxNDE0NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NTA1NDI4NjY1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgcGFydCBvZiB0aGUgZmJuaWMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljLyksIHdoaWNoIGRyaXZlcyBNZXRhJ3MgcHJvcHJpZXRhcnkgaG9zdCBuZXR3b3JrIGludGVyZmFjZSBjYXJkIChQQ0llIEFTSUMpLiBUaGlzIGhhcmR3YXJlIGlzIHZlbmRvci1zcGVjaWZpYyBhbmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjEyOjIyLjEzOTE0NjI1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTAxNjYzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3N2MyOGFiZDdlYTQ0ZTBkOGM4YTVlZmExZjg3OWNmMjIzNzcwMmJlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDE1IDE0OjEyOjIxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNcXG5pbmRleCA0MDFmOGI4YWUxY2FlLi41MjhkNzIwNzFhZmZmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNcXG5AQCAtMTU5OSw3ICsxNTk5LDcgQEAgZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29scyhzdHJ1Y3QgZmJuaWNfbmV0ICpmYm4sIHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCxcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBlcnJfZGVzdHJveV9zdWIwOlxcbi1cXHRwYWdlX3Bvb2xfZGVzdHJveShwcCk7XFxuK1xcdHBhZ2VfcG9vbF9kZXN0cm95KHF0LVxcdTAwM2VzdWIwLnBhZ2VfcG9vbCk7XFxuIFxcdHJldHVybiBQVFJfRVJSKHBwKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTI6MjIuNjUwMTE2ODJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjM5NDU0MzI5OTkyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggZHJpdmVzIE1ldGEncyBwcm9wcmlldGFyeSBob3N0IG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQgKFBDSWUgQVNJQykuIFRoaXMgaGFyZHdhcmUgaXMgdmVuZG9yLXNwZWNpZmljIGFuZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3N2MyOGFiZDdlYTQ0ZTBkOGM4YTVlZmExZjg3OWNmMjIzNzcwMmJlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTQ6MTI6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXG5pbmRleCA0MDFmOGI4YWUxY2FlLi41MjhkNzIwNzFhZmZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXG5AQCAtMTU5OSw3ICsxNTk5LDcgQEAgZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29scyhzdHJ1Y3QgZmJuaWNfbmV0ICpmYm4sIHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCxcbiBcdHJldHVybiAwO1xuIFxuIGVycl9kZXN0cm95X3N1YjA6XG4tXHRwYWdlX3Bvb2xfZGVzdHJveShwcCk7XG4rXHRwYWdlX3Bvb2xfZGVzdHJveShxdC1cdTAwM2VzdWIwLnBhZ2VfcG9vbCk7XG4gXHRyZXR1cm4gUFRSX0VSUihwcCk7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTI6MjIuNjUwMTE4OTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozNzY5MTIxOTg0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jYC4gSSdsbCBpbW1lZGlhdGVseSB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGdldCBhIGdyaXAgb24gdGhlIGNoYW5nZXMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBJdCdzIGFsd2F5cyBiZXN0IHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqIGJlZm9yZSBnZXR0aW5nIGxvc3QgaW4gdGhlICp3aGF0Ki5cblxuT2theSwgcmVhZGluZyB0aGUgcGF0Y2ggaXRzZWxmLi4uIEFoLCBhIGBwYWdlX3Bvb2xfZGVzdHJveWAgY2FsbCBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhlIGVhcmxpZXIgY29kZSB3YXMgbm90IGNvcnJlY3RseSBkZXN0cm95aW5nIHRoZSBgcGFnZV9wb29sYC4gVGhpcyBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGEgbWVtb3J5IGxlYWssIHdoaWNoIG5lZWRzIHRvIGJlIGxvb2tlZCBpbnRvLiBUaGUgb3JpZ2luYWwgY29kZSBkZXN0cm95ZWQgdGhlIHZhcmlhYmxlIGBwcGAsIHdoaWxlIHRoZSBuZXcgY29kZSBpcyBkZXN0cm95aW5nIGBxdC1cdTAwM2VzdWIwLnBhZ2VfcG9vbGAuXG5cbk5vdywgYmVmb3JlIEkgZ28gZGVlcGVyIGludG8gdGhlIGNvZGUgbG9naWMsIGxldCBtZSBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgYGZibmljYCBpcy4gTWV0YSdzIE5ldHdvcmsgSW50ZXJmYWNlIENhcmQsIHJpZ2h0PyBKdXN0IG5lZWQgdG8gY29uZmlybS4gSSdsbCBwZWVrIGF0IHRoZSBLY29uZmlnIHRvIGJlIHN1cmUsIGFuZCB0byBjaGVjayBvbiBhbnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODkyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTM6MDAuMzQxMzQxMTY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzI0MDEwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYm5pY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODQ0MCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTM1LVxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzozNjpcXHQgIHdpbGwgYmUgY2FsbGVkIGZibmljLiAgTVNJLVggaW50ZXJydXB0IHN1cHBvcnQgaXMgcmVxdWlyZWQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfRkJOSUMpICs9IGZibmljL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZS03LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfRkJOSUMpICs9IGZibmljLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlLTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxMDpmYm5pYy15IDo9IGZibmljX2Nzci5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjExOlxcdCAgIGZibmljX2RlYnVnZnMubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxMjpcXHQgICBmYm5pY19kZXZsaW5rLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTM6XFx0ICAgZmJuaWNfZXRodG9vbC5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE0OlxcdCAgIGZibmljX2Z3Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTU6XFx0ICAgZmJuaWNfZndfbG9nLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTY6XFx0ICAgZmJuaWNfaHdfc3RhdHMubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxNzpcXHQgICBmYm5pY19od21vbi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE4OlxcdCAgIGZibmljX2lycS5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE5OlxcdCAgIGZibmljX21hYy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIwOlxcdCAgIGZibmljX25ldGRldi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIxOlxcdCAgIGZibmljX3BjaS5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIyOlxcdCAgIGZibmljX3BoeWxpbmsubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyMzpcXHQgICBmYm5pY19ycGMubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyNDpcXHQgICBmYm5pY19tZGlvLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjU6XFx0ICAgZmJuaWNfdGltZS5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjI2OlxcdCAgIGZibmljX3Rsdi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjI3OlxcdCAgIGZibmljX3R4cngubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZS0yOC0jIEVuZCBvZiBvYmplY3RzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzOiNpbmNsdWRlIFxcXCJmYm5pY19jc3IuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQ6I2luY2x1ZGUgXFxcImZibmljX2Z3LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1OiNpbmNsdWRlIFxcXCJmYm5pY19md19sb2cuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTY6I2luY2x1ZGUgXFxcImZibmljX2h3X3N0YXRzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3OiNpbmNsdWRlIFxcXCJmYm5pY19tYWMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg6I2luY2x1ZGUgXFxcImZibmljX3JwYy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjA6c3RydWN0IGZibmljX25hcGlfdmVjdG9yO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU6c3RydWN0IGZibmljX2RldiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI2LVxcdHN0cnVjdCBkZXZpY2UgKmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0zNC1cXHR1MzIgX19pb21lbSAqdWNfYWRkcjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjM1OlxcdGNvbnN0IHN0cnVjdCBmYm5pY19tYWMgKm1hYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMzYtXFx0dW5zaWduZWQgaW50IGZ3X21zaXhfdmVjdG9yO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo0NzpcXHRzdHJ1Y3QgZmJuaWNfZndfbWJ4IG1ieFtGQk5JQ19JUENfTUJYX0lORElDRVNdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo0ODpcXHRzdHJ1Y3QgZmJuaWNfZndfY2FwIGZ3X2NhcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NDk6XFx0c3RydWN0IGZibmljX2Z3X2NvbXBsZXRpb24gKmNtcGxfZGF0YVtGQk5JQ19NQlhfQ01QTF9TTE9UU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTUwLVxcdC8qIExvY2sgcHJvdGVjdGluZyBUeCBNYWlsYm94IHF1ZXVlIHRvIHByZXZlbnQgcG9zc2libGUgcmFjZXMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC02Mi1cXHQvKiBMb2NhbCBjb3B5IG9mIHRoZSBkZXZpY2VzIFRDQU0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NjM6XFx0c3RydWN0IGZibmljX2FjdF90Y2FtIGFjdF90Y2FtW0ZCTklDX1JQQ19UQ0FNX0FDVF9OVU1fRU5UUklFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjY0OlxcdHN0cnVjdCBmYm5pY19tYWNfYWRkciBtYWNfYWRkcltGQk5JQ19SUENfVENBTV9NQUNEQV9OVU1fRU5UUklFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTY1LVxcdHU4IG1hY19hZGRyX2JvdW5kYXJ5O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTY4LVxcdC8qIElQIFRDQU0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6Njk6XFx0c3RydWN0IGZibmljX2lwX2FkZHIgaXBfc3JjW0ZCTklDX1JQQ19UQ0FNX0lQX0FERFJfTlVNX0VOVFJJRVNdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo3MDpcXHRzdHJ1Y3QgZmJuaWNfaXBfYWRkciBpcF9kc3RbRkJOSUNfUlBDX1RDQU1fSVBfQUREUl9OVU1fRU5UUklFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjcxOlxcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwb19zcmNbRkJOSUNfUlBDX1RDQU1fSVBfQUREUl9OVU1fRU5UUklFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjcyOlxcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwb19kc3RbRkJOSUNfUlBDX1RDQU1fSVBfQUREUl9OVU1fRU5UUklFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTczLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo3NzpcXHQvKiBMb2NrIHByb3RlY3Rpbmcgd3JpdGVzIHRvIEB0aW1lX2hpZ2gsIEB0aW1lX29mZnNldCBvZiBmYm5pY19uZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTc4LVxcdCAqIGFuZCB0aGUgSFcgdGltZSBDU1IgbWFjaGluZXJ5Llxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTkxLVxcdC8qIExvY2FsIGNvcHkgb2YgaGFyZHdhcmUgc3RhdGlzdGljcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo5MjpcXHRzdHJ1Y3QgZmJuaWNfaHdfc3RhdHMgaHdfc3RhdHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo5ODpcXHRzdHJ1Y3QgZmJuaWNfZndfbG9nIGZ3X2xvZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtOTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg9MTEyPWVudW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTExNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTE4OnN0YXRpYyBpbmxpbmUgYm9vbCBmYm5pY19wcmVzZW50KHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEyMzpzdGF0aWMgaW5saW5lIHZvaWQgZmJuaWNfd3IzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEyNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMzE6dTMyIGZibmljX3JkMzIoc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMzM6c3RhdGljIGlubGluZSB2b2lkIGZibmljX3dyZmwoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMzU6XFx0ZmJuaWNfcmQzMihmYmQsIEZCTklDX01BU1RFUl9TUEFSRV8wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTM2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaD0xMzg9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzOTpmYm5pY19ybXczMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNDAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQzOlxcdHYgPSBmYm5pY19yZDMyKGZiZCwgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQ0LVxcdHYgXFx1MDAyNj0gfm1hc2s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0NS1cXHR2IHw9IHZhbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQ2OlxcdGZibmljX3dyMzIoZmJkLCByZWcsIHYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNDctfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE0OTojZGVmaW5lIHdyMzIoX2YsIF9yLCBfdilcXHRmYm5pY193cjMyKF9mLCBfciwgX3YpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1MDojZGVmaW5lIHJkMzIoX2YsIF9yKVxcdFxcdGZibmljX3JkMzIoX2YsIF9yKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTE6I2RlZmluZSB3cmZsKF9mKVxcdFxcdGZibmljX3dyZmwoX2YpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTUzOmJvb2wgZmJuaWNfZndfcHJlc2VudChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTQ6dTMyIGZibmljX2Z3X3JkMzIoc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU1OnZvaWQgZmJuaWNfZndfd3IzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcsIHUzMiB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1NzojZGVmaW5lIGZ3X3JkMzIoX2YsIF9yKVxcdFxcdGZibmljX2Z3X3JkMzIoX2YsIF9yKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTg6I2RlZmluZSBmd193cjMyKF9mLCBfciwgX3YpXFx0ZmJuaWNfZndfd3IzMihfZiwgX3IsIF92KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTk6I2RlZmluZSBmd193cmZsKF9mKVxcdFxcdGZibmljX2Z3X3JkMzIoX2YsIEZCTklDX0ZXX1pFUk9fUkVHKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE2MTpzdGF0aWMgaW5saW5lIGJvb2wgZmJuaWNfYm1jX3ByZXNlbnQoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTY2OnN0YXRpYyBpbmxpbmUgYm9vbCBmYm5pY19pbml0X2ZhaWx1cmUoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTcxOmV4dGVybiBjaGFyIGZibmljX2RyaXZlcl9uYW1lW107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTczOnZvaWQgZmJuaWNfZGV2bGlua19mcmVlKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3NDpzdHJ1Y3QgZmJuaWNfZGV2ICpmYm5pY19kZXZsaW5rX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc1OmludCBmYm5pY19kZXZsaW5rX2hlYWx0aF9jcmVhdGUoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc2OnZvaWQgZmJuaWNfZGV2bGlua19oZWFsdGhfZGVzdHJveShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzc6dm9pZCBmYm5pY19kZXZsaW5rX3JlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3ODp2b2lkIGZibmljX2RldmxpbmtfdW5yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNzktdm9pZCBfX3ByaW50ZigyLCAzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODA6ZmJuaWNfZGV2bGlua19md19yZXBvcnQoc3RydWN0IGZibmljX2RldiAqZmJkLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4MTp2b2lkIGZibmljX2Rldmxpbmtfb3RwX2NoZWNrKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgY29uc3QgY2hhciAqbXNnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODM6aW50IGZibmljX2Z3X3JlcXVlc3RfbWJ4KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4NDp2b2lkIGZibmljX2Z3X2ZyZWVfbWJ4KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg2OnZvaWQgZmJuaWNfaHdtb25fcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg3OnZvaWQgZmJuaWNfaHdtb25fdW5yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4OTppbnQgZmJuaWNfbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5MDp2b2lkIGZibmljX21hY19mcmVlX2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5Mjp2b2lkIGZibmljX25hcGlfbmFtZV9pcnFzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5MzppbnQgZmJuaWNfbmFwaV9yZXF1ZXN0X2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5NDpcXHRcXHRcXHQgICBzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk1OnZvaWQgZmJuaWNfbmFwaV9mcmVlX2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5NjpcXHRcXHRcXHQgc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5Nzp2b2lkIGZibmljX3N5bmNocm9uaXplX2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGludCBucik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5ODppbnQgZmJuaWNfcmVxdWVzdF9pcnEoc3RydWN0IGZibmljX2RldiAqZGV2LCBpbnQgbnIsIGlycV9oYW5kbGVyX3QgaGFuZGxlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTk5LVxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMDA6dm9pZCBmYm5pY19mcmVlX2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpkZXYsIGludCBuciwgdm9pZCAqZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjAyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMDM6ICogZW51bSBmYm5pY19tc2l4X3NlbGZfdGVzdF9jb2RlcyAtIHJldHVybiBjb2RlcyBmcm9tIHNlbGYgdGVzdCByb3V0aW5lc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMDQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMTgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIxOTplbnVtIGZibmljX21zaXhfc2VsZl90ZXN0X2NvZGVzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjIwLVxcdEZCTklDX1RFU1RfTVNJWF9TVUNDRVNTID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzMTplbnVtIGZibmljX21zaXhfc2VsZl90ZXN0X2NvZGVzIGZibmljX21zaXhfdGVzdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzMzp2b2lkIGZibmljX2ZyZWVfaXJxcyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMzQ6aW50IGZibmljX2FsbG9jX2lycXMoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMzY6dm9pZCBmYm5pY19nZXRfZndfdmVyX2NvbW1pdF9zdHIoc3RydWN0IGZibmljX2RldiAqZmJkLCBjaGFyICpmd192ZXJzaW9uLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzctXFx0XFx0XFx0XFx0IGNvbnN0IHNpemVfdCBzdHJfc3opO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzOTp2b2lkIGZibmljX2RiZ19mYmRfaW5pdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDA6dm9pZCBmYm5pY19kYmdfZmJkX2V4aXQoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQxOnZvaWQgZmJuaWNfZGJnX2luaXQodm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0Mjp2b2lkIGZibmljX2RiZ19leGl0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0NDp2b2lkIGZibmljX3JwY19yZXNldF92YWxpZF9lbnRyaWVzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ2OmludCBmYm5pY19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0ODp2b2lkIGZibmljX2Nzcl9nZXRfcmVncyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiAqZGF0YSwgdTMyICpyZWdzX3ZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDk6aW50IGZibmljX2Nzcl9yZWdzX2xlbihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1MTp2b2lkIGZibmljX2NvbmZpZ190eHJ4X3VzZWNzKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYsIHUzMiBhcm0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNTI6dm9pZCBmYm5pY19jb25maWdfcnhfZnJhbWVzKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1NDplbnVtIGZibmljX2JvYXJkcyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1NTpcXHRmYm5pY19ib2FyZF9hc2ljXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1Ni19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1ODpzdHJ1Y3QgZmJuaWNfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1OS1cXHR1bnNpZ25lZCBpbnQgbWF4X251bV9xdWV1ZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzo0OiNpbmNsdWRlIFxcXCJmYm5pYy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMTpzdHJ1Y3QgZmJuaWNfY3NyX2JvdW5kcyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMi1cXHR1MzJcXHRzdGFydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNjpzdGF0aWMgY29uc3Qgc3RydWN0IGZibmljX2Nzcl9ib3VuZHMgZmJuaWNfY3NyX3NlY3RzW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNy1cXHRGQk5JQ19CT1VORFMoSU5UUiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6NjA6c3RhdGljIHZvaWQgZmJuaWNfY3NyX2dldF9yZWdzX3JwY19yYW0oc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgKipkYXRhX3ApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy02MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTExNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjExNTp2b2lkIGZibmljX2Nzcl9nZXRfcmVncyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiAqZGF0YSwgdTMyICpyZWdzX3ZlcnNpb24pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMTYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTE3OlxcdGNvbnN0IHN0cnVjdCBmYm5pY19jc3JfYm91bmRzICpib3VuZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTExOC1cXHR1MzIgKnN0YXJ0ID0gZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTIzLVxcdC8qIFNraXAgUlBDX1JBTSBzZWN0aW9uIHdoaWNoIGNhbm5vdCBiZSBkdW1wZWQgbGluZWFybHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEyNDpcXHRmb3IgKGkgPSAwLCBib3VuZCA9IGZibmljX2Nzcl9zZWN0cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEyNTpcXHQgICAgIGkgXFx1MDAzYyBBUlJBWV9TSVpFKGZibmljX2Nzcl9zZWN0cykgLSAxOyBpKyssICsrYm91bmQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEyNi1cXHRcXHQqKGRhdGErKykgPSBib3VuZC1cXHUwMDNlc3RhcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEzMi1cXHQvKiBEdW1wIHRoZSBSUENfUkFNIGFzIHNwZWNpYWwgY2FzZSByZWdpc3RlcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEzMzpcXHRmYm5pY19jc3JfZ2V0X3JlZ3NfcnBjX3JhbShmYmQsIFxcdTAwMjZkYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEzNTpcXHRXQVJOX09OKGRhdGEgLSBzdGFydCAhPSBmYm5pY19jc3JfcmVnc19sZW4oZmJkKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMzYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTM4OmludCBmYm5pY19jc3JfcmVnc19sZW4oc3RydWN0IGZibmljX2RldiAqZmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTQ0LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTQ1OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGZibmljX2Nzcl9zZWN0cyk7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjE0NjpcXHRcXHRsZW4gKz0gZmJuaWNfY3NyX3NlY3RzW2ldLmVuZCAtIGZibmljX2Nzcl9zZWN0c1tpXS5zdGFydCArIDI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE1OC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjE1OTpzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTYwLVxcdGludFxcdHJlZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTc0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTc1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEgcGF0dGVybl90ZXN0W10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNzYtXFx0RkJOSUNfUVVFVUVfUkVHX1RFU1QoVFdRMF9DVEwsIEZCTklDX1FVRVVFX1RXUV9DVExfUkVTRVQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjIxMjpzdGF0aWMgZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyMTM6ZmJuaWNfY3NyX3JlZ19wYXR0ZXJuX3Rlc3Qoc3RydWN0IGZibmljX2RldiAqZmJkLCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyMTQ6XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGZibmljX2Nzcl9yZWdfdGVzdF9kYXRhICp0ZXN0X2RhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yMTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjE2LVxcdHN0YXRpYyBjb25zdCB1MzIgcGF0dGVybltdID0geyB+MCwgMHg1QTVBNUE1QSwgMHhBNUE1QTVBNSwgMH07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyMTc6XFx0ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIHJlZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxOC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjQ3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjQ4OiAqIGZibmljX2Nzcl9yZWdzX3Rlc3QoKSAtIFZlcmlmeSBiZWhhdmlvciBvZiBOSUMgcmVnaXN0ZXJzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNDktICogQGZiZDogZGV2aWNlIHRvIHRlc3RcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjU4LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI1OTplbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgZmJuaWNfY3NyX3JlZ3NfdGVzdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNjAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjYxOlxcdGNvbnN0IHN0cnVjdCBmYm5pY19jc3JfcmVnX3Rlc3RfZGF0YSAqdGVzdF9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjYyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNjctXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHRlc3RfZGF0YS1cXHUwMDNlYXJyYXlfbGVuOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI2ODpcXHRcXHRcXHRlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgcmVnID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI2OTpcXHRcXHRcXHRcXHRmYm5pY19jc3JfcmVnX3BhdHRlcm5fdGVzdChmYmQsIGksIHRlc3RfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDo5OnN0cnVjdCBmYm5pY19kZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg9MTIzNT1lbnVte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMjM5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6MTI0MDogKiBlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgLSByZXR1cm4gY29kZXMgZnJvbSBzZWxmIHRlc3Qgcm91dGluZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNDEtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI0OS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oOjEyNTA6ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNTEtXFx0RkJOSUNfUkVHX1RFU1RfU1VDQ0VTUyA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDoxMjU0OmVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2RlcyBmYm5pY19jc3JfcmVnc190ZXN0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMjU1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo5OiNpbmNsdWRlIFxcXCJmYm5pYy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEwOiNpbmNsdWRlIFxcXCJmYm5pY190eHJ4LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTI6c3RhdGljIHN0cnVjdCBkZW50cnkgKmZibmljX2RiZ19yb290O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTY6c3RhdGljIHZvaWQgZmJuaWNfZGJnX2Rlc2NfYnJlYWsoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNDpzdGF0aWMgdm9pZCBmYm5pY19kYmdfcmluZ19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjY6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI3LVxcdHVuc2lnbmVkIGxvbmcgZG9vcmJlbGxfb2Zmc2V0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzE6XFx0Y3NyX2Jhc2UgPSBmYm5pY19yaW5nX2Nzcl9iYXNlKHJpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMyLVxcdGRvb3JiZWxsX29mZnNldCA9IHJpbmctXFx1MDAzZWRvb3JiZWxsIC0gY3NyX2Jhc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy03NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo3NjpzdGF0aWMgdm9pZCBmYm5pY19kYmdfdHdkX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCBpbnQgaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy03Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Nzg6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTc5LVxcdHU2NCB0d2QgPSBsZTY0X3RvX2NwdShyaW5nLVxcdTAwM2VkZXNjW2ldKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMDc6c3RhdGljIGludCBmYm5pY19kYmdfdHdxX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEwOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTA5OlxcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMTAtXFx0Y2hhciBoZHJbODBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTEzLVxcdC8qIEdlbmVyYXRlIGhlYWRlciBvbiBmaXJzdCBlbnRyeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjExNDpcXHRmYm5pY19kYmdfcmluZ19zaG93KHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExNS1cXHRzbnByaW50ZihoZHIsIHNpemVvZihoZHIpLCBcXFwiJTRzICU1cyAlcyAlc1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExNy1cXHRzZXFfcHV0cyhzLCBoZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjExODpcXHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMjYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjPSByaW5nLVxcdTAwM2VzaXplX21hc2s7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMjc6XFx0XFx0ZmJuaWNfZGJnX3R3ZF9kZXNjX3NlcV9zaG93KHMsIGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMzI6c3RhdGljIGludCBmYm5pY19kYmdfdGNxX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzMy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTM0OlxcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMzUtXFx0Y2hhciBoZHJbODBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTM4LVxcdC8qIEdlbmVyYXRlIGhlYWRlciBvbiBmaXJzdCBlbnRyeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEzOTpcXHRmYm5pY19kYmdfcmluZ19zaG93KHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE0MC1cXHRzbnByaW50ZihoZHIsIHNpemVvZihoZHIpLCBcXFwiJTRzICVzICVzICVzICU1cyAlLTE2cyAlLTZzICUtNnNcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNDItXFx0c2VxX3B1dHMocywgaGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxNDM6XFx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTQ0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE4MTpzdGF0aWMgaW50IGZibmljX2RiZ19iZHFfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTgyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxODM6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE4NC1cXHRjaGFyIGhkcls4MF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODctXFx0LyogR2VuZXJhdGUgaGVhZGVyIG9uIGZpcnN0IGVudHJ5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTg4OlxcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTg5LVxcdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksIFxcXCIlNHMgJS00cyAlc1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE5MS1cXHRzZXFfcHV0cyhzLCBoZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE5MjpcXHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xOTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjExOnN0YXRpYyB2b2lkIGZibmljX2RiZ19yY2RfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTIxMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjEzOlxcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMTQtXFx0dTY0IHJjZCA9IGxlNjRfdG9fY3B1KHJpbmctXFx1MDAzZWRlc2NbaV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI1NDpzdGF0aWMgaW50IGZibmljX2RiZ19yY3FfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNTY6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI1Ny1cXHRjaGFyIGhkcls4MF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNjAtXFx0LyogR2VuZXJhdGUgaGVhZGVyIG9uIGZpcnN0IGVudHJ5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjYxOlxcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjYyLVxcdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNjgtXFx0c2VxX3B1dHMocywgaGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNjk6XFx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjc3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYz0gcmluZy1cXHUwMDNlc2l6ZV9tYXNrOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mjc4OlxcdFxcdGZibmljX2RiZ19yY2RfZGVzY19zZXFfc2hvdyhzLCBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjgzOnN0YXRpYyBpbnQgZmJuaWNfZGJnX2Rlc2Nfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI4NTpcXHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IGlub2RlLVxcdTAwM2VpX3ByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjg2LVxcdGludCAoKnNob3cpKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI4ODpcXHRzd2l0Y2ggKHJpbmctXFx1MDAzZWRvb3JiZWxsIC0gZmJuaWNfcmluZ19jc3JfYmFzZShyaW5nKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4OS1cXHRjYXNlIEZCTklDX1FVRVVFX1RXUTBfVEFJTDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yOTAtXFx0Y2FzZSBGQk5JQ19RVUVVRV9UV1ExX1RBSUw6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjkxOlxcdFxcdHNob3cgPSBmYm5pY19kYmdfdHdxX2Rlc2Nfc2VxX3Nob3c7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjkyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5My1cXHRjYXNlIEZCTklDX1FVRVVFX1RDUV9IRUFEOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI5NDpcXHRcXHRzaG93ID0gZmJuaWNfZGJnX3RjcV9kZXNjX3NlcV9zaG93O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5NS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5Ny1cXHRjYXNlIEZCTklDX1FVRVVFX0JEUV9QUFFfVEFJTDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyOTg6XFx0XFx0c2hvdyA9IGZibmljX2RiZ19iZHFfZGVzY19zZXFfc2hvdztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yOTktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzAwLVxcdGNhc2UgRkJOSUNfUVVFVUVfUkNRX0hFQUQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzAxOlxcdFxcdHNob3cgPSBmYm5pY19kYmdfcmNxX2Rlc2Nfc2VxX3Nob3c7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzAyLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMxMDpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmYm5pY19kYmdfZGVzY19mb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMxMS1cXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMxMjpcXHQub3BlblxcdFxcdD0gZmJuaWNfZGJnX2Rlc2Nfb3BlbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMTMtXFx0LnJlYWRcXHRcXHQ9IHNlcV9yZWFkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMxODp2b2lkIGZibmljX2RiZ19udl9pbml0KHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzE5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMjA6XFx0c3RydWN0IGZibmljX2RldiAqZmJkID0gbnYtXFx1MDAzZWZiZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMjEtXFx0Y2hhciBuYW1lWzE2XTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMzMC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnYtXFx1MDAzZXR4dF9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzMxOlxcdFxcdHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCA9IFxcdTAwMjZudi1cXHUwMDNlcXRbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzMyLVxcdFxcdHVuc2lnbmVkIGludCBod19pZHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMzNDpcXHRcXHRod19pZHggPSBmYm5pY19yaW5nX2Nzcl9iYXNlKFxcdTAwMjZxdC1cXHUwMDNlY21wbCkgLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMzNS1cXHRcXHRcXHQgIFxcdTAwMjZmYmQtXFx1MDAzZXVjX2FkZHIwW0ZCTklDX1FVRVVFKDApXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMzOS1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVxcdTAwM2VkYmdfbnYsIFxcdTAwMjZxdC1cXHUwMDNlc3ViMCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNDA6XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDMtXFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cXHUwMDNlZGJnX252LCBcXHUwMDI2cXQtXFx1MDAzZXN1YjEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzQ0OlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzQ3LVxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXFx1MDAzZWRiZ19udiwgXFx1MDAyNnF0LVxcdTAwM2VjbXBsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM0ODpcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTItXFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIG52LVxcdTAwM2VyeHRfY291bnQ7IGorKywgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzUzOlxcdFxcdHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCA9IFxcdTAwMjZudi1cXHUwMDNlcXRbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzU0LVxcdFxcdHVuc2lnbmVkIGludCBod19pZHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM1NjpcXHRcXHRod19pZHggPSBmYm5pY19yaW5nX2Nzcl9iYXNlKFxcdTAwMjZxdC1cXHUwMDNlY21wbCkgLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM1Ny1cXHRcXHRcXHQgIFxcdTAwMjZmYmQtXFx1MDAzZXVjX2FkZHIwW0ZCTklDX1FVRVVFKDApXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM2MS1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVxcdTAwM2VkYmdfbnYsIFxcdTAwMjZxdC1cXHUwMDNlc3ViMCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNjI6XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjUtXFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cXHUwMDNlZGJnX252LCBcXHUwMDI2cXQtXFx1MDAzZXN1YjEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzY2OlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzY3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzY5LVxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXFx1MDAzZWRiZ19udiwgXFx1MDAyNnF0LVxcdTAwM2VjbXBsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM3MDpcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM3MS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mzc0OnZvaWQgZmJuaWNfZGJnX252X2V4aXQoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM4MDpzdGF0aWMgaW50IGZibmljX2RiZ19tYWNfYWRkcl9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zODEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM4MjpcXHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM4My1cXHRjaGFyIGhkcls4MF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zODktXFx0c2VxX3B1dHMocywgaGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozOTA6XFx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM5Mi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRkJOSUNfUlBDX1RDQU1fTUFDREFfTlVNX0VOVFJJRVM7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM5MzpcXHRcXHRzdHJ1Y3QgZmJuaWNfbWFjX2FkZHIgKm1hY19hZGRyID0gXFx1MDAyNmZiZC1cXHUwMDNlbWFjX2FkZHJbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzk0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDAzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MDQ6REVGSU5FX1NIT1dfQVRUUklCVVRFKGZibmljX2RiZ19tYWNfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQwNjpzdGF0aWMgaW50IGZibmljX2RiZ190Y2VfdGNhbV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MDcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQwODpcXHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQwOS1cXHRpbnQgaSwgdGNhbV9pZHggPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDE1LVxcdHNlcV9wdXRzKHMsIGhkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDE2OlxcdGZibmljX2RiZ19kZXNjX2JyZWFrKHMsIHN0cm5sZW4oaGRyLCBzaXplb2YoaGRyKSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MTgtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoZmJkLVxcdTAwM2VtYWNfYWRkcik7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQxOTpcXHRcXHRzdHJ1Y3QgZmJuaWNfbWFjX2FkZHIgKm1hY19hZGRyID0gXFx1MDAyNmZiZC1cXHUwMDNlbWFjX2FkZHJbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDIwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDM3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0Mzg6REVGSU5FX1NIT1dfQVRUUklCVVRFKGZibmljX2RiZ190Y2VfdGNhbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQ0MDpzdGF0aWMgaW50IGZibmljX2RiZ19hY3RfdGNhbV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00NDEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQ0MjpcXHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQ0My1cXHRjaGFyIGhkcls4MF07XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTM6MDAuNjg4NTg3OTY5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NzEyNDU5NjM1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCBuZXR3b3JraW5nIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipEaXZpbmcgaW50byB0aGUgRkJOSUMgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBgRkJOSUNgIGhhcmR3YXJlLiBUaGUgcXVpY2tlc3QgcGF0aCB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBzdXBwb3J0ZWQgZmVhdHVyZXMgaXMgZGVmaW5pdGVseSB0aHJvdWdoIHRoZSBLY29uZmlnIGZpbGUuIExldCBtZSBjaGVjayB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBzeXN0ZW0sIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgZGVwZW5kZW5jaWVzLCBhbnkgc3BlY2lmaWMgYm9hcmQgcmVxdWlyZW1lbnRzLCBhbmQgdGhlIGxvZ2ljIHRoYXQgY29udHJvbHMgd2hldGhlciBgRkJOSUNgIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCBpbiB0aGUgYnVpbGQuIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcmVsYXRpb25zaGlwcyB0byBvdGhlciBuZXR3b3JrIGRldmljZXMsIG9yIG1heWJlIGlmIGl04oCZcyBhIHNwZWNpZmljIHByb2R1Y3QsIG9yIHBlcmhhcHMgaXQncyBhIGZhbWlseSBvZiBwcm9kdWN0cy4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBnaXZlIG1lIGEgdmVyeSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBGQk5JQydzIGNhcGFiaWxpdGllcyB3aXRoaW4gdGhlIGtlcm5lbC4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTk1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTM6MDcuODEzMTg3NDc3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ldGEgUGxhdGZvcm1zIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE5FVF9WRU5ET1JfTUVUQVxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiTWV0YSBQbGF0Zm9ybXMgZGV2aWNlc1xcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGRlc2lnbmVkIGJ5IE1ldGEsIHNheSBZLlxcbiAgMTE6XFx0XFx0ICBUaGF0J3MgTWV0YSBhcyBpbiB0aGUgcGFyZW50IGNvbXBhbnkgb2YgRmFjZWJvb2suXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDE0OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTU6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IE1ldGEgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxNjpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgTkVUX1ZFTkRPUl9NRVRBXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBGQk5JQ1xcbiAgMjE6XFx0XFx0dHJpc3RhdGUgXFxcIk1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIDY0QklUIHx8IENPTVBJTEVfVEVTVFxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiAhUzM5MFxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBNQVhfU0tCX0ZSQUdTIFxcdTAwM2MgMjJcXG4gIDI1OlxcdFxcdGRlcGVuZHMgb24gUENJX01TSVxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMjc6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAyODpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAyOTpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gIDMwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAzMTpcXHRcXHRzZWxlY3QgUExETUZXXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UuXFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgMzY6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBmYm5pYy4gIE1TSS1YIGludGVycnVwdCBzdXBwb3J0IGlzIHJlcXVpcmVkLlxcbiAgMzc6XFx0XFxuICAzODpcXHRlbmRpZiAjIE5FVF9WRU5ET1JfTUVUQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxMzowNy44MTMyNTg2NzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo2NjYyNjkzNjcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEZCTklDIFBDSSBCaW5kaW5nKipcblxuQWxyaWdodCwgRkJOSUPigKYgdGhhdCdzIE1ldGEncyBcIk1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcIiDigJMgdGhlaXIgY3VzdG9tIEV0aGVybmV0IEFTSUMvUENJZSBOSUMuIEknbSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggdGhlaXIgaGFyZHdhcmUgaW5ub3ZhdGlvbnMuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhpcyBwaWVjZSBvZiBoYXJkd2FyZSBpbnRlZ3JhdGVzIHdpdGggdGhlIFBDSWUgZWNvc3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGRyaXZlciBjb2RlLiBMZXQncyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jYC4gVGhhdCBzaG91bGQgY29udGFpbiB0aGUgYmluZGluZyBsb2dpYywgdGhlIGNydWNpYWwgYml0IHRoYXQgbWF0Y2hlcyB0aGUgZHJpdmVyIHRvIHRoZSBjb3JyZWN0IFBDSWUgZGV2aWNlcy4gSSBuZWVkIHRvIHNlZSBob3cgdGhleSdyZSBpZGVudGlmeWluZyB0aGUgRkJOSUMsIHdoYXQgVmVuZG9yL0RldmljZSBJRHMsIFN1YnN5c3RlbSBJRHMsIG9yIG1heWJlIGV2ZW4gc3BlY2lmaWMgY2xhc3MgY29kZXMgdGhleSdyZSB1c2luZyB0byBjbGFpbSB0aGVzZSBuZXR3b3JrIGNhcmRzLiBJJ20gYW50aWNpcGF0aW5nIHNvbWUgY3VzdG9tIHF1aXJrIGhhbmRsaW5nIGFzIHdlbGwsIGdpdmVuIHRoZSBiZXNwb2tlIG5hdHVyZSBvZiB0aGUgaGFyZHdhcmUuIFRoaXMgUENJIGJpbmRpbmcgcm91dGluZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IE1ldGEncyBuZXR3b3JrIGlubm92YXRpb25zIGZpdCBpbnRvIHRoZSBzdGFuZGFyZCBMaW51eCBmcmFtZXdvcmsuIExldCdzIGdldCBjcmFja2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTg3NTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjE0OjE0LjQ0MDE5NzQ5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTU0MjgyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZibmljX2luZm8gKmZibmljX2luZm9fdGJsW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MzA6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGZibmljX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTMxLVxcdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTIxND1zdGF0aWMgdm9pZCBmYm5pY19zZXJ2aWNlX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNTgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MjU5OnN0YXRpYyBpbnQgZmJuaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNDoxNC44OTk3NDY0NjFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1NjE3MjU2ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgRkJOSUMgUENJIFRhYmxlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgZm9jdXMgaXMgb24gdGhpcyBgZmJuaWNfcGNpX3RibGAgdGFibGUuIFNwZWNpZmljYWxseSwgSSBzZWUgdGhpcyBlbnRyeTogYFBDSV9ERVZJQ0VfREFUQShNRVRBLCBGQk5JQ19BU0lDLCBmYm5pY19ib2FyZF9hc2ljKWAuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIFBDSSBkZXZpY2UgZGF0YSwgc3BlY2lmaWNhbGx5IGZvciB0aGUgTUVUQSBkZXZpY2UsIGFzc29jaWF0ZWQgd2l0aCBhbiBGQk5JQyBBU0lDLCBhbmQgaXQncyB1c2luZyBgZmJuaWNfYm9hcmRfYXNpY2AuIE5vdywgdGhlIGNydWNpYWwgcGllY2UgaXMgdW5kZXJzdGFuZGluZyBgUENJX1ZFTkRPUl9JRF9NRVRBYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBjb25zdGFudCBpcyBkZWZpbmVkLiBUaGF0J3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBLbm93aW5nIHRoZSBkZWZpbml0aW9uIG9mIGBQQ0lfVkVORE9SX0lEX01FVEFgIHdpbGwgZ2l2ZSBtZSBjcml0aWNhbCBjb250ZXh0IGFib3V0IHRoZSB2ZW5kb3IgSUQgYW5kLCB0aGVyZWZvcmUsIHRoZSBzcGVjaWZpYyBkZXZpY2UgdGhpcyBlbnRyeSBwZXJ0YWlucyB0by4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdG8gdGhhdCBkZWZpbml0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQwNywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjE0OjIwLjUxNzAwNjE1MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3MDY1NDQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQ0lfVkVORE9SX0lEX01FVEFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtMjYxOC1cXG5pbmNsdWRlL2xpbnV4L3BjaV9pZHMuaDoyNjE5OiNkZWZpbmUgUENJX1ZFTkRPUl9JRF9NRVRBXFx0XFx0MHgxZDliXFxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtMjYyMC1cXG4tLVxcbnJ1c3Qva2VybmVsL3BjaS9pZC5ycz0xNzI9ICAgIGZuIGZtdChcXHUwMDI2c2VsZiwgZjogXFx1MDAyNm11dCBmbXQ6OkZvcm1hdHRlclxcdTAwM2MnX1xcdTAwM2UpIC1cXHUwMDNlIGZtdDo6UmVzdWx0IHtcXG4tLVxcbnJ1c3Qva2VybmVsL3BjaS9pZC5ycy01NDMtICAgIEhZR09OICAgICAgICAgICAgICAgICAgICA9IGJpbmRpbmdzOjpQQ0lfVkVORE9SX0lEX0hZR09OLCAgICAgICAgICAgICAgICAgICAgLy8gMHgxZDk0XFxucnVzdC9rZXJuZWwvcGNpL2lkLnJzOjU0NDogICAgTUVUQSAgICAgICAgICAgICAgICAgICAgID0gYmluZGluZ3M6OlBDSV9WRU5ET1JfSURfTUVUQSwgICAgICAgICAgICAgICAgICAgICAvLyAweDFkOWJcXG5ydXN0L2tlcm5lbC9wY2kvaWQucnMtNTQ1LSAgICBGVU5HSUJMRSAgICAgICAgICAgICAgICAgPSBiaW5kaW5nczo6UENJX1ZFTkRPUl9JRF9GVU5HSUJMRSwgICAgICAgICAgICAgICAgIC8vIDB4MWRhZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNDoyMi4zODc2Njg0MTZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTU5NDkwMzg3MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgdGhlIFBDSSBEZXZpY2UgSUQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmluZCBvdXQgd2hlcmUgYFBDSV9ERVZJQ0VfSURfTUVUQV9GQk5JQ19BU0lDYCBpcyBhY3R1YWxseSBkZWZpbmVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBoZWFkIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBpbiB0aGUgYGluY2x1ZGUvbGludXgvcGNpX2lkcy5oYCBmaWxlLiBUaGF0J3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiwgb3IgYXQgbGVhc3QgYSBsb2NhdGlvbiB3aGVyZSBJJ2QgZXhwZWN0IHRvIHNlZSByZWxhdGVkIFBDSSBkZXZpY2UgSUQgZGVmaW5pdGlvbnMuIElmIGl0J3Mgbm90IHRoZXJlLCBJJ2xsIG5lZWQgdG8gZXhwYW5kIG15IHNlYXJjaCwgYnV0IGBwY2lfaWRzLmhgIGlzIHRoZSBwcmltZSBzdXNwZWN0IGFuZCB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uIGludG8gdGhlIGRldmljZSBJRCdzIG9yaWdpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk5MDQsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNDozOC4zMzY3MTA1OTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODc2NDg0OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRkJOSUNfQVNJQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oPTk9c3RydWN0IGZibmljX2RldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDo0MDojZGVmaW5lIFBDSV9ERVZJQ0VfSURfTUVUQV9GQk5JQ19BU0lDXFx0XFx0MHgwMDEzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC00MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM9MzA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGZibmljX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jOjMxOlxcdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0zMi1cXHQvKiBSZXF1aXJlZCBsYXN0IGVudHJ5ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjE0OjQwLjIyNDM2NTAxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI5NDUxNzc2MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgVHJpYWdlIENoZWNrbGlzdDogU2VjdGlvbiAyIENvbmNlcm5zKipcblxuT2theSwgdGltZSB0byBydW4gdGhyb3VnaCBTZWN0aW9uIDIgb2YgdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTcGVjaWZpY2FsbHksIGxldCdzIHNlZS4uLiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIFRoYXQgbWVhbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuIFRoaW5ncyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBgYW1kZ3B1YC4uLiBiYXNpY2FsbHksIGFueXRoaW5nIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgdGhhdCAqYXJlbid0KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBBbHJpZ2h0LCB0aGF0J3MgdGhlIGh1cmRsZSB0byBjbGVhci5cblxuV2FpdCBhIHNlY29uZC4uLiAqZmJuaWMqLiBOb3csIGlzIHRoYXQgZW11bGF0ZWQ/IEkgbmVlZCB0byByZW1lbWJlci4gUmlnaHQsIHRoYXQncyBNZXRhJ3MgcHJvcHJpZXRhcnkgaG9zdCBuZXR3b3JrIGludGVyZmFjZSBjYXJkLiBJdCdzIGFuIEFTSUMgU21hcnROSUMsIGEgUENJZSBFdGhlcm5ldCBjYXJkIHRoZXkgZGV2ZWxvcGVkLiBJdCdzIG5vdCBzb21ldGhpbmcgeW91J2QgdHlwaWNhbGx5IGZpbmQgaW4gUUVNVS4gT2theSwgc28gd2UgbmVlZCB0byB2ZXJpZnkuIE15IGZpcnN0IHN0ZXAgd2lsbCBiZSB0byBjaGVjayBpZiB0aGVyZSdzIGFueSB2aXJ0dWFsIGJ1cyBlbXVsYXRpb24gb3IgZXZlbiBqdXN0IGEgbW9jayBkZXZpY2Ugc3BlY2lmaWNhbGx5IGZvciBgZmJuaWNgLiBJIG1lYW4sIGEgbG90IG9mIHRoZXNlIGFkdmFuY2VkIE5JQ3MgZW5kIHVwIG5lZWRpbmcgKnNvbWV0aGluZyouLi4gYSB2aXJ0dWFsIG5ldGRldiBvciBhIG1vY2sgZGV2aWNlLiBTbywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pY2AgZGlyZWN0b3J5LiBUaGF0IHNob3VsZCBiZSB0aGUgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzNzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTQ6NDMuMTY5NTQ2NDc2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA2OTQ4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWdpc3Rlcl9uZXRkZXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jPTg2ND1pbnQgZmJuaWNfbmV0ZGV2X3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTg4NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jOjg4NTpcXHRyZXR1cm4gcmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04ODYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz04ODg9dm9pZCBmYm5pY19uZXRkZXZfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODg5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jOjg5MDpcXHR1bnJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODkxLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTQ6NDMuMjE4NjIxNjAzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQxNTg3MDU5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgZmJuaWNfcHJvYmUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGZibmljX3Byb2JlYCBpcyBiZWluZyB1c2VkLiBGaXJzdCBzdGVwLCBsZXQncyBzZWUgd2hlcmUgaXQncyBiZWluZyBjYWxsZWQgb3IgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGNvZGUgc2VlbXMgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcmVnaXN0cmF0aW9uIGhhcHBlbnMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmNgLiBBaCwgdGhlcmUgaXQgaXM6IGBtb2R1bGVfcGNpX2RyaXZlcihmYm5pY19kcml2ZXIpO2AuIFRoYXQncyB0aGUga2V5LiBOb3csIEknbGwgbmVlZCB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBsaW5lcyBvZiBjb2RlIHdpdGhpbiBgZmJuaWNfcGNpLmNgIG5lYXIgdGhlIGBtb2R1bGVfcGNpX2RyaXZlcmAgY2FsbCB0byBmdWxseSBncmFzcCB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JlIHNlcXVlbmNlLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgaG93IGBmYm5pY19kcml2ZXJgIGlzIGRlZmluZWQsIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IHVzZXMsIGFuZCBob3cgYGZibmljX3Byb2JlYCBpcyBjb25uZWN0ZWQgdG8gdGhlIFBDSSBkcml2ZXIgbGlmZWN5Y2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTEyNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjE0OjQ3LjM3NzMzMDM0MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxNTUwMTcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjE0OjQ3LjQyNjQ5Mjc1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQzMzAzNTg0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBGaW5hbCBMaW5lcyBvZiBgZmJuaWNfcGNpLmNgKipcblxuT2theSwgdGltZSB0byB6ZXJvIGluIG9uIHRoZSB0YWlsIGVuZCBvZiBgZmJuaWNfcGNpLmNgLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyB0aGluZyB3cmFwcyB1cC4gV2hhdCdzIHRoZSBmaW5hbCBjbGVhbnVwIGxvZ2ljPyBBcmUgdGhlcmUgYW55IHN1YnRsZSByZXNvdXJjZSBsZWFrcyBJIG1pZ2h0IGhhdmUgbWlzc2VkIGluIHByZXZpb3VzIHJldmlld3M/IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSBoYW5kbGUgZXJyb3IgcGF0aHPigJRkb2VzIGV2ZXJ5IGBnb3RvYCBwcm9wZXJseSBmcmVlIGFsbG9jYXRlZCBtZW1vcnkgYW5kIHJlbGVhc2UgaGFyZHdhcmUgcmVzb3VyY2VzPyBBcmUgdGhlIGVycm9yIGhhbmRsaW5nIHJvdXRpbmVzIHJvYnVzdCwgb3IgYXJlIHRoZXJlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gY2VydGFpbiBzY2VuYXJpb3M/IEl04oCZcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgZ3JhY2VmdWxseSByZWNvdmVycyBmcm9tIHVuZXhwZWN0ZWQgUENJIGVycm9ycywgRE1BIGZhaWx1cmVzLCBvciBldmVuIHNpbXBseSBhIGRldmljZSByZW1vdmFsLiBJJ20gZm9jdXNpbmcgb24gdGhvc2UgZmluYWwgbGluZXMsIHJlYWxseSB0cnlpbmcgdG8gZ3Jhc3AgdGhlIGVudGlyZSBkcml2ZXIncyBsaWZlY3ljbGUgbWFuYWdlbWVudC4gVGhpcyBzZWN0aW9uIG9mdGVuIHJldmVhbHMgdGhlIGRlc2lnbidzIG92ZXJhbGwgcm9idXN0bmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NDAsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNDo1MS43NTY4NTM0MzdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDQwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDQwOlxcdFxcbiA0NDE6XFx0XFx0cnRubF9sb2NrKCk7XFxuIDQ0MjpcXHRcXHRuZXRkZXZfbG9jayhuZXRkZXYpO1xcbiA0NDM6XFx0XFxuIDQ0NDpcXHRcXHRuZXRpZl9kZXZpY2VfZGV0YWNoKG5ldGRldik7XFxuIDQ0NTpcXHRcXG4gNDQ2OlxcdFxcdGlmIChuZXRpZl9ydW5uaW5nKG5ldGRldikpXFxuIDQ0NzpcXHRcXHRcXHRuZXRkZXYtXFx1MDAzZW5ldGRldl9vcHMtXFx1MDAzZW5kb19zdG9wKG5ldGRldik7XFxuIDQ0ODpcXHRcXG4gNDQ5OlxcdFxcdG5ldGRldl91bmxvY2sobmV0ZGV2KTtcXG4gNDUwOlxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuIDQ1MTpcXHRcXG4gNDUyOlxcdG51bGxfdWNfYWRkcjpcXG4gNDUzOlxcdFxcdGZibmljX2Z3X2xvZ19kaXNhYmxlKGZiZCk7XFxuIDQ1NDpcXHRcXG4gNDU1OlxcdFxcdGRldmxfbG9jayhwcml2X3RvX2RldmxpbmsoZmJkKSk7XFxuIDQ1NjpcXHRcXG4gNDU3OlxcdFxcdGZibmljX2Z3X2ZyZWVfbWJ4KGZiZCk7XFxuIDQ1ODpcXHRcXG4gNDU5OlxcdFxcdGRldmxfdW5sb2NrKHByaXZfdG9fZGV2bGluayhmYmQpKTtcXG4gNDYwOlxcdFxcbiA0NjE6XFx0XFx0LyogRnJlZSB0aGUgSVJRcyBzbyB0aGV5IGFyZW4ndCB0cnlpbmcgdG8gb2NjdXB5IHNsZWVwaW5nIENQVXMgKi9cXG4gNDYyOlxcdFxcdGZibmljX2ZyZWVfaXJxcyhmYmQpO1xcbiA0NjM6XFx0XFxuIDQ2NDpcXHRcXHQvKiBIYXJkd2FyZSBpcyBhYm91dCB0byBnbyBhd2F5LCBzbyBzd2l0Y2ggb2ZmIE1NSU8gYWNjZXNzIGludGVybmFsbHkgKi9cXG4gNDY1OlxcdFxcdFdSSVRFX09OQ0UoZmJkLVxcdTAwM2V1Y19hZGRyMCwgTlVMTCk7XFxuIDQ2NjpcXHRcXHRXUklURV9PTkNFKGZiZC1cXHUwMDNldWNfYWRkcjQsIE5VTEwpO1xcbiA0Njc6XFx0XFxuIDQ2ODpcXHRcXHRyZXR1cm4gMDtcXG4gNDY5OlxcdH1cXG4gNDcwOlxcdFxcbiA0NzE6XFx0c3RhdGljIGludCBfX2ZibmljX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIDQ3MjpcXHR7XFxuIDQ3MzpcXHRcXHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcXG4gNDc0OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBmYmQtXFx1MDAzZW5ldGRldjtcXG4gNDc1OlxcdFxcdHZvaWQgX19pb21lbSAqIGNvbnN0ICppb21hcF90YWJsZTtcXG4gNDc2OlxcdFxcdHN0cnVjdCBmYm5pY19uZXQgKmZibjtcXG4gNDc3OlxcdFxcdGludCBlcnI7XFxuIDQ3ODpcXHRcXG4gNDc5OlxcdFxcdC8qIFJlc3RvcmUgTU1JTyBhY2Nlc3MgKi9cXG4gNDgwOlxcdFxcdGlvbWFwX3RhYmxlID0gcGNpbV9pb21hcF90YWJsZSh0b19wY2lfZGV2KGRldikpO1xcbiA0ODE6XFx0XFx0ZmJkLVxcdTAwM2V1Y19hZGRyMCA9IGlvbWFwX3RhYmxlWzBdO1xcbiA0ODI6XFx0XFx0ZmJkLVxcdTAwM2V1Y19hZGRyNCA9IGlvbWFwX3RhYmxlWzRdO1xcbiA0ODM6XFx0XFxuIDQ4NDpcXHRcXHQvKiBSZXJlcXVlc3QgdGhlIElSUXMgKi9cXG4gNDg1OlxcdFxcdGVyciA9IGZibmljX2FsbG9jX2lycXMoZmJkKTtcXG4gNDg2OlxcdFxcdGlmIChlcnIpXFxuIDQ4NzpcXHRcXHRcXHRnb3RvIGVycl9pbnZhbGlkYXRlX3VjX2FkZHI7XFxuIDQ4ODpcXHRcXG4gNDg5OlxcdFxcdGZiZC1cXHUwMDNlbWFjLVxcdTAwM2Vpbml0X3JlZ3MoZmJkKTtcXG4gNDkwOlxcdFxcbiA0OTE6XFx0XFx0ZGV2bF9sb2NrKHByaXZfdG9fZGV2bGluayhmYmQpKTtcXG4gNDkyOlxcdFxcbiA0OTM6XFx0XFx0LyogUmUtZW5hYmxlIG1haWxib3ggKi9cXG4gNDk0OlxcdFxcdGVyciA9IGZibmljX2Z3X3JlcXVlc3RfbWJ4KGZiZCk7XFxuIDQ5NTpcXHRcXHRkZXZsX3VubG9jayhwcml2X3RvX2RldmxpbmsoZmJkKSk7XFxuIDQ5NjpcXHRcXHRpZiAoZXJyKVxcbiA0OTc6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9pcnFzO1xcbiA0OTg6XFx0XFxuIDQ5OTpcXHRcXHQvKiBPbmx5IHNlbmQgbG9nIGhpc3RvcnkgaWYgbG9nIGJ1ZmZlciBpcyBlbXB0eSB0byBwcmV2ZW50IGR1cGxpY2F0ZVxcbiA1MDA6XFx0XFx0ICogbG9nIGVudHJpZXMuXFxuIDUwMTpcXHRcXHQgKi9cXG4gNTAyOlxcdFxcdGZibmljX2Z3X2xvZ19lbmFibGUoZmJkLCBsaXN0X2VtcHR5KFxcdTAwMjZmYmQtXFx1MDAzZWZ3X2xvZy5lbnRyaWVzKSk7XFxuIDUwMzpcXHRcXG4gNTA0OlxcdFxcdC8qIFNpbmNlIHRoZSBGVyBzaG91bGQgYmUgdXAsIGNoZWNrIGlmIGl0IHJlcG9ydGVkIE9UUCBlcnJvcnMgKi9cXG4gNTA1OlxcdFxcdGZibmljX2Rldmxpbmtfb3RwX2NoZWNrKGZiZCwgXFxcImVycm9yIGRldGVjdGVkIGFmdGVyIFBNIHJlc3VtZVxcXCIpO1xcbiA1MDY6XFx0XFxuIDUwNzpcXHRcXHQvKiBObyBuZXRkZXYgbWVhbnMgdGhlcmUgaXNuJ3QgYSBuZXR3b3JrIGludGVyZmFjZSB0byBicmluZyB1cCAqL1xcbiA1MDg6XFx0XFx0aWYgKGZibmljX2luaXRfZmFpbHVyZShmYmQpKVxcbiA1MDk6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDUxMDpcXHRcXG4gNTExOlxcdFxcdGZibiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuIDUxMjpcXHRcXG4gNTEzOlxcdFxcdC8qIFJlc2V0IHRoZSBxdWV1ZXMgaWYgbmVlZGVkICovXFxuIDUxNDpcXHRcXHRmYm5pY19yZXNldF9xdWV1ZXMoZmJuLCBmYm4tXFx1MDAzZW51bV90eF9xdWV1ZXMsIGZibi1cXHUwMDNlbnVtX3J4X3F1ZXVlcyk7XFxuIDUxNTpcXHRcXG4gNTE2OlxcdFxcdHJ0bmxfbG9jaygpO1xcbiA1MTc6XFx0XFx0bmV0ZGV2X2xvY2sobmV0ZGV2KTtcXG4gNTE4OlxcdFxcbiA1MTk6XFx0XFx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTQ6NTEuNzU2OTU4Njk3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE5MjIwMzIxMTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBmYm5pY19wY2kuY2AqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBgZmJuaWNfcGNpLmNgIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgRmlicmUgQ2hhbm5lbCBvdmVyIEV0aGVybmV0IChGQ29FKSBOSUMgaW50ZXJhY3RzIHdpdGggdGhlIFBDSSBidXMuIEZpcnN0IEkgbmVlZCB0byBmb2N1cyBvbiB0aGlzIGZpbGUgYW5kIHdvcmsgbXkgd2F5IHRocm91Z2ggdGhlIGNvZGUuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIHJlZ2lzdGVyIGFjY2VzcyBtZXRob2RzLCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgaG93IHRoZSBkZXZpY2UgaXMgaW5pdGlhbGl6ZWQgYW5kIGRldGFjaGVkLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBwYXJ0aWN1bGFybHkgYW55dGhpbmcgc3BlY2lmaWMgdG8gdGhlIEZDb0UgcHJvdG9jb2wgaGFuZGxpbmcgd2l0aGluIHRoZSBoYXJkd2FyZS4gVGhpcyB3b3VsZCBpbmNsdWRlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgcXVldWVzLCBkZXNjcmlwdG9ycywgYW5kIGFueSBETUEgc2V0dXAgZm9yIGRhdGEgdHJhbnNmZXIuIEkgd2FudCB0byBzZWUgaWYgdGhleSdyZSB1c2luZyBhIHN0YW5kYXJkIG9yIGN1c3RvbSBGQ29FIG9mZmxvYWQgbWVjaGFuaXNtIGFuZCBob3cgYW55IGhhcmR3YXJlLXNwZWNpZmljIG9wdGltaXphdGlvbnMgYXJlIGltcGxlbWVudGVkLiBFc3NlbnRpYWxseSwgSSdtIGxvb2tpbmcgZm9yIHRoZSBnbHVlIHRoYXQgbWFrZXMgdGhpcyBOSUMgdGljayBvbiBhIFBDSSBidXMsIGFuZCBJJ2xsIGJlIGxvb2tpbmcgYXQgdGhpbmdzIGxpa2UgcHJvYmUsIHJlbW92ZSwgaW50ZXJydXB0IGhhbmRsaW5nLCBETUEgc2V0dGluZ3MsIGFuZCBhbnkgc3BlY2lmaWMgcXVpcmtzIG9yIHdvcmthcm91bmRzIHRoZXkndmUgaW1wbGVtZW50ZWQgZm9yIHRoaXMgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjg5NSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTU6MTAuOTc3MjgyMTYyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4ODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTIwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTIwOlxcdFxcdFxcdGVyciA9IF9fZmJuaWNfb3BlbihmYm4pO1xcbiA1MjE6XFx0XFxuIDUyMjpcXHRcXHRuZXRkZXZfdW5sb2NrKG5ldGRldik7XFxuIDUyMzpcXHRcXHRydG5sX3VubG9jaygpO1xcbiA1MjQ6XFx0XFx0aWYgKGVycilcXG4gNTI1OlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfbWJ4O1xcbiA1MjY6XFx0XFxuIDUyNzpcXHRcXHRyZXR1cm4gMDtcXG4gNTI4OlxcdGVycl9mcmVlX21ieDpcXG4gNTI5OlxcdFxcdGZibmljX2Z3X2xvZ19kaXNhYmxlKGZiZCk7XFxuIDUzMDpcXHRcXG4gNTMxOlxcdFxcdGRldmxfbG9jayhwcml2X3RvX2RldmxpbmsoZmJkKSk7XFxuIDUzMjpcXHRcXHRmYm5pY19md19mcmVlX21ieChmYmQpO1xcbiA1MzM6XFx0XFx0ZGV2bF91bmxvY2socHJpdl90b19kZXZsaW5rKGZiZCkpO1xcbiA1MzQ6XFx0ZXJyX2ZyZWVfaXJxczpcXG4gNTM1OlxcdFxcdGZibmljX2ZyZWVfaXJxcyhmYmQpO1xcbiA1MzY6XFx0ZXJyX2ludmFsaWRhdGVfdWNfYWRkcjpcXG4gNTM3OlxcdFxcdFdSSVRFX09OQ0UoZmJkLVxcdTAwM2V1Y19hZGRyMCwgTlVMTCk7XFxuIDUzODpcXHRcXHRXUklURV9PTkNFKGZiZC1cXHUwMDNldWNfYWRkcjQsIE5VTEwpO1xcbiA1Mzk6XFx0XFx0cmV0dXJuIGVycjtcXG4gNTQwOlxcdH1cXG4gNTQxOlxcdFxcbiA1NDI6XFx0c3RhdGljIHZvaWQgX19mYm5pY19wbV9hdHRhY2goc3RydWN0IGRldmljZSAqZGV2KVxcbiA1NDM6XFx0e1xcbiA1NDQ6XFx0XFx0c3RydWN0IGZibmljX2RldiAqZmJkID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuIDU0NTpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gZmJkLVxcdTAwM2VuZXRkZXY7XFxuIDU0NjpcXHRcXHRzdHJ1Y3QgZmJuaWNfbmV0ICpmYm47XFxuIDU0NzpcXHRcXG4gNTQ4OlxcdFxcdHJ0bmxfbG9jaygpO1xcbiA1NDk6XFx0XFx0ZmJuaWNfcmVzZXRfaHdfc3RhdHMoZmJkKTtcXG4gNTUwOlxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuIDU1MTpcXHRcXG4gNTUyOlxcdFxcdGlmIChmYm5pY19pbml0X2ZhaWx1cmUoZmJkKSlcXG4gNTUzOlxcdFxcdFxcdHJldHVybjtcXG4gNTU0OlxcdFxcbiA1NTU6XFx0XFx0ZmJuID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4gNTU2OlxcdFxcbiA1NTc6XFx0XFx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcXG4gNTU4OlxcdFxcdFxcdGZibmljX3VwKGZibik7XFxuIDU1OTpcXHRcXG4gNTYwOlxcdFxcdG5ldGlmX2RldmljZV9hdHRhY2gobmV0ZGV2KTtcXG4gNTYxOlxcdH1cXG4gNTYyOlxcdFxcbiA1NjM6XFx0c3RhdGljIGludCBfX21heWJlX3VudXNlZCBmYm5pY19wbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbiA1NjQ6XFx0e1xcbiA1NjU6XFx0XFx0aW50IGVycjtcXG4gNTY2OlxcdFxcbiA1Njc6XFx0XFx0ZXJyID0gX19mYm5pY19wbV9yZXN1bWUoZGV2KTtcXG4gNTY4OlxcdFxcdGlmICghZXJyKVxcbiA1Njk6XFx0XFx0XFx0X19mYm5pY19wbV9hdHRhY2goZGV2KTtcXG4gNTcwOlxcdFxcbiA1NzE6XFx0XFx0cmV0dXJuIGVycjtcXG4gNTcyOlxcdH1cXG4gNTczOlxcdFxcbiA1NzQ6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGZibmljX3BtX29wcyA9IHtcXG4gNTc1OlxcdFxcdFNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKGZibmljX3BtX3N1c3BlbmQsIGZibmljX3BtX3Jlc3VtZSlcXG4gNTc2OlxcdH07XFxuIDU3NzpcXHRcXG4gNTc4OlxcdHN0YXRpYyB2b2lkIGZibmljX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiA1Nzk6XFx0e1xcbiA1ODA6XFx0XFx0ZmJuaWNfcG1fc3VzcGVuZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gNTgxOlxcdH1cXG4gNTgyOlxcdFxcbiA1ODM6XFx0c3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgZmJuaWNfZXJyX2Vycm9yX2RldGVjdGVkKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiA1ODQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IHBjaV9jaGFubmVsX3N0YXRlX3Qgc3RhdGUpXFxuIDU4NTpcXHR7XFxuIDU4NjpcXHRcXHQvKiBEaXNjb25uZWN0IGRldmljZSBpZiBmYWlsdXJlIGlzIG5vdCByZWNvdmVyYWJsZSB2aWEgcmVzZXQgKi9cXG4gNTg3OlxcdFxcdGlmIChzdGF0ZSA9PSBwY2lfY2hhbm5lbF9pb19wZXJtX2ZhaWx1cmUpXFxuIDU4ODpcXHRcXHRcXHRyZXR1cm4gUENJX0VSU19SRVNVTFRfRElTQ09OTkVDVDtcXG4gNTg5OlxcdFxcbiA1OTA6XFx0XFx0ZmJuaWNfcG1fc3VzcGVuZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gNTkxOlxcdFxcbiA1OTI6XFx0XFx0LyogUmVxdWVzdCBhIHNsb3QgcmVzZXQgKi9cXG4gNTkzOlxcdFxcdHJldHVybiBQQ0lfRVJTX1JFU1VMVF9ORUVEX1JFU0VUO1xcbiA1OTQ6XFx0fVxcbiA1OTU6XFx0XFxuIDU5NjpcXHRzdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCBmYm5pY19lcnJfc2xvdF9yZXNldChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gNTk3OlxcdHtcXG4gNTk4OlxcdFxcdGludCBlcnI7XFxuIDU5OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTU6MTAuOTc3MzgzMzEzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIxNDQyMjk5NzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkZvY3VzaW5nIG9uIEZpbGUgVGVybWluYXRpb24qKlxuXG5BbHJpZ2h0LCBteSBpbml0aWFsIHRob3VnaHQgaGVyZSBpcyBzdHJhaWdodGZvcndhcmQ6IEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgZmluYWwgc2VjdGlvbiBvZiB0aGlzIGZpbGUuIEtub3dpbmcgdGhlIG92ZXJhbGwgY29udGV4dCwgSSdtIGxpa2VseSBzZWFyY2hpbmcgZm9yIGEgc3BlY2lmaWMgdGVybWluYXRpbmcgY29uZGl0aW9uLCBhIGZpbmFsIGRhdGEgcG9pbnQsIG9yIHBlcmhhcHMgYW4gZXJyb3IgY29kZSB0aGF0IHNpZ25pZmllcyB0aGUgcHJvY2VzcydzIGNvbXBsZXRpb24gb3IgYW4gZXhjZXB0aW9uLiBUaGUgbG9jYXRpb24gb2YgdGhlIGZpbmFsIGNoYXJhY3RlcnMsIG9yIGJ5dGVzLCB0aGF0IHRlcm1pbmF0ZSBhIGZpbGUsIG9yIGEgc3BlY2lmaWMgcHJvY2VzcyB3aXRoaW4gdGhhdCBmaWxlLCBjYW4gdGVsbCBtZSBhIGxvdC4gQXJlIHRoZXJlIGFueSBwYXJ0aWN1bGFyIEVPRiBtYXJrZXJzLCBkZWxpbWl0ZXJzLCBvciBjb250cm9sIGNoYXJhY3RlcnMgdGhhdCBJIGV4cGVjdCB0byBzZWU/IElzIHRoaXMgYSBzdGFuZGFyZCBmb3JtYXQsIG9yIHNvbWV0aGluZyBjdXN0b20/IFRoZSBlbmQgb2YgYSBmaWxlIG9mdGVuIGhvbGRzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZmluYWwgc3RhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MzUzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNTozMi40MTk2ODU3MjVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MDA6XFx0XFx0cGNpX3NldF9wb3dlcl9zdGF0ZShwZGV2LCBQQ0lfRDApO1xcbiA2MDE6XFx0XFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XFxuIDYwMjpcXHRcXG4gNjAzOlxcdFxcdGlmIChwY2lfZW5hYmxlX2RldmljZV9tZW0ocGRldikpIHtcXG4gNjA0OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4gNjA1OlxcdFxcdFxcdFxcdFxcXCJDYW5ub3QgcmUtZW5hYmxlIFBDSSBkZXZpY2UgYWZ0ZXIgcmVzZXQuXFxcXG5cXFwiKTtcXG4gNjA2OlxcdFxcdFxcdHJldHVybiBQQ0lfRVJTX1JFU1VMVF9ESVNDT05ORUNUO1xcbiA2MDc6XFx0XFx0fVxcbiA2MDg6XFx0XFxuIDYwOTpcXHRcXHQvKiBSZXN0b3JlIGRldmljZSB0byBwcmV2aW91cyBzdGF0ZSAqL1xcbiA2MTA6XFx0XFx0ZXJyID0gX19mYm5pY19wbV9yZXN1bWUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIDYxMTpcXHRcXG4gNjEyOlxcdFxcdHJldHVybiBlcnIgPyBQQ0lfRVJTX1JFU1VMVF9ESVNDT05ORUNUIDogUENJX0VSU19SRVNVTFRfUkVDT1ZFUkVEO1xcbiA2MTM6XFx0fVxcbiA2MTQ6XFx0XFxuIDYxNTpcXHRzdGF0aWMgdm9pZCBmYm5pY19lcnJfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiA2MTY6XFx0e1xcbiA2MTc6XFx0XFx0X19mYm5pY19wbV9hdHRhY2goXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIDYxODpcXHR9XFxuIDYxOTpcXHRcXG4gNjIwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGZibmljX2Vycl9oYW5kbGVyID0ge1xcbiA2MjE6XFx0XFx0LmVycm9yX2RldGVjdGVkXFx0PSBmYm5pY19lcnJfZXJyb3JfZGV0ZWN0ZWQsXFxuIDYyMjpcXHRcXHQuc2xvdF9yZXNldFxcdD0gZmJuaWNfZXJyX3Nsb3RfcmVzZXQsXFxuIDYyMzpcXHRcXHQucmVzdW1lXFx0XFx0PSBmYm5pY19lcnJfcmVzdW1lLFxcbiA2MjQ6XFx0fTtcXG4gNjI1OlxcdFxcbiA2MjY6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGZibmljX2RyaXZlciA9IHtcXG4gNjI3OlxcdFxcdC5uYW1lXFx0XFx0PSBmYm5pY19kcml2ZXJfbmFtZSxcXG4gNjI4OlxcdFxcdC5pZF90YWJsZVxcdD0gZmJuaWNfcGNpX3RibCxcXG4gNjI5OlxcdFxcdC5wcm9iZVxcdFxcdD0gZmJuaWNfcHJvYmUsXFxuIDYzMDpcXHRcXHQucmVtb3ZlXFx0XFx0PSBmYm5pY19yZW1vdmUsXFxuIDYzMTpcXHRcXHQuZHJpdmVyLnBtXFx0PSBcXHUwMDI2ZmJuaWNfcG1fb3BzLFxcbiA2MzI6XFx0XFx0LnNodXRkb3duXFx0PSBmYm5pY19zaHV0ZG93bixcXG4gNjMzOlxcdFxcdC5lcnJfaGFuZGxlclxcdD0gXFx1MDAyNmZibmljX2Vycl9oYW5kbGVyLFxcbiA2MzQ6XFx0fTtcXG4gNjM1OlxcdFxcbiA2MzY6XFx0LyoqXFxuIDYzNzpcXHQgKiBmYm5pY19pbml0X21vZHVsZSAtIERyaXZlciBSZWdpc3RyYXRpb24gUm91dGluZVxcbiA2Mzg6XFx0ICpcXG4gNjM5OlxcdCAqIFRoZSBmaXJzdCByb3V0aW5lIGNhbGxlZCB3aGVuIHRoZSBkcml2ZXIgaXMgbG9hZGVkLiAgQWxsIGl0IGRvZXMgaXNcXG4gNjQwOlxcdCAqIHJlZ2lzdGVyIHdpdGggdGhlIFBDSSBzdWJzeXN0ZW0uXFxuIDY0MTpcXHQgKlxcbiA2NDI6XFx0ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG9uIGZhaWx1cmVcXG4gNjQzOlxcdCAqKi9cXG4gNjQ0OlxcdHN0YXRpYyBpbnQgX19pbml0IGZibmljX2luaXRfbW9kdWxlKHZvaWQpXFxuIDY0NTpcXHR7XFxuIDY0NjpcXHRcXHRpbnQgZXJyO1xcbiA2NDc6XFx0XFxuIDY0ODpcXHRcXHRmYm5pY19kYmdfaW5pdCgpO1xcbiA2NDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjE1OjMyLjQxOTc3ODcwNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0NDMzNjE3NTk0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgZmJuaWNgIERyaXZlcioqXG5cbk9rYXksIHNvIGBmYm5pY2AgaXMgYSBQQ0kgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIE1ldGEncyBwcm9wcmlldGFyeSBGQk5JQyBBU0lDLiBUaGUgY29yZSBkZXBlbmRlbmN5IGhlcmUgaXMgcGh5c2ljYWwgUENJIGhhcmR3YXJlLiBUaGUgY29kZSBkZWZpbmVzIHRoZSBzcGVjaWZpYyB2ZW5kb3IgYW5kIGRldmljZSBJRHM6IGBQQ0lfVkVORE9SX0lEX01FVEFgICgweDFkOWIpIGFuZCBgUENJX0RFVklDRV9JRF9NRVRBX0ZCTklDX0FTSUNgICgweDAwMTMpLCByZXNwZWN0aXZlbHksIHdpdGhpbiB0aGUgYGZibmljX3BjaV90YmxgLiBUaGF0J3MgdGhlIGtleTogaXQgKnJlcXVpcmVzKiB0aGUgYWN0dWFsIGhhcmR3YXJlLlxuXG5Ob3csIGxldCdzIHNlZSBpZiB0aGlzIGFwcGxpZXMgdG8gYSBmdXp6aW5nIGNoZWNrLiBMZXQncyBsb29rIGF0IHRoZSBcIldIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZVwiIGNvbmRpdGlvbnMuIFNwZWNpZmljYWxseSwgdGhlIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgY3JpdGVyaWEgbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCBuZWVkIHJlYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gR2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgYGZibmljYCwgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgbWF0Y2guIEl0IHJlbGllcyBvbiBhIGN1c3RvbSBBU0lDLCB3aGljaCBJIHN0cm9uZ2x5IHN1c3BlY3QgaXNuJ3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAuIFNvIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudCBtYWtlcyB0aGlzIGRyaXZlciBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIGFzIGl0IGV4cGxpY2l0bHkgc3RhdGVzIGluIHRoZSBcIm5lZ2F0aXZlIGNyaXRlcmlhLlwiXG5cbkknbGwgYWxzbyB0YWtlIGEgbG9vayBhdCB0aGUgcHJvdmlkZWQgcGF0Y2guIEl0IHNlZW1zIHRvIGNvcnJlY3QgYW4gZXJyb3IgaGFuZGxpbmcgaXNzdWUgd2l0aGluIHRoZSBgZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29sc2AgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY2AuIEl0J3MgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSB0aGF0IHNpbXBseSBjb3JyZWN0cyB0aGUgYXJndW1lbnQgcGFzc2VkIHRvIGBwYWdlX3Bvb2xfZGVzdHJveWAuIEl0IGRvZXNuJ3Qgc2VlbSB0byBpbmRpY2F0ZSBhbnkgcGFydGljdWxhciBmdXp6aW5nIHZ1bG5lcmFiaWxpdHkgaW4gaXRzZWxmLiBIb3dldmVyLCBpdCBkb2VzIHJlaW5mb3JjZSB0aGUgZmFjdCB0aGF0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGlzIG5lY2Vzc2FyeSBmb3IgcHJvcGVyIG9wZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUzMTYsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNjoxNi43NTU5NTgyNzJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1ODAsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1ODA6XFx0XFx0XFx0cHBfcGFyYW1zLnBvb2xfc2l6ZSA9IDMyNzY4O1xcbjE1ODE6XFx0XFxuMTU4MjpcXHRcXHRwcCA9IHBhZ2VfcG9vbF9jcmVhdGUoXFx1MDAyNnBwX3BhcmFtcyk7XFxuMTU4MzpcXHRcXHRpZiAoSVNfRVJSKHBwKSlcXG4xNTg0OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHBwKTtcXG4xNTg1OlxcdFxcbjE1ODY6XFx0XFx0cXQtXFx1MDAzZXN1YjAucGFnZV9wb29sID0gcHA7XFxuMTU4NzpcXHRcXHRpZiAobmV0aWZfcnhxX2hhc191bnJlYWRhYmxlX21wKGZibi1cXHUwMDNlbmV0ZGV2LCByeHFfaWR4KSkge1xcbjE1ODg6XFx0XFx0XFx0cHBfcGFyYW1zLmZsYWdzIHw9IFBQX0ZMQUdfQUxMT1dfVU5SRUFEQUJMRV9ORVRNRU07XFxuMTU4OTpcXHRcXHRcXHRwcF9wYXJhbXMuZG1hX2RpciA9IERNQV9GUk9NX0RFVklDRTtcXG4xNTkwOlxcdFxcbjE1OTE6XFx0XFx0XFx0cHAgPSBwYWdlX3Bvb2xfY3JlYXRlKFxcdTAwMjZwcF9wYXJhbXMpO1xcbjE1OTI6XFx0XFx0XFx0aWYgKElTX0VSUihwcCkpXFxuMTU5MzpcXHRcXHRcXHRcXHRnb3RvIGVycl9kZXN0cm95X3N1YjA7XFxuMTU5NDpcXHRcXHR9IGVsc2Uge1xcbjE1OTU6XFx0XFx0XFx0cGFnZV9wb29sX2dldChwcCk7XFxuMTU5NjpcXHRcXHR9XFxuMTU5NzpcXHRcXHRxdC1cXHUwMDNlc3ViMS5wYWdlX3Bvb2wgPSBwcDtcXG4xNTk4OlxcdFxcbjE1OTk6XFx0XFx0cmV0dXJuIDA7XFxuMTYwMDpcXHRcXG4xNjAxOlxcdGVycl9kZXN0cm95X3N1YjA6XFxuMTYwMjpcXHRcXHRwYWdlX3Bvb2xfZGVzdHJveShxdC1cXHUwMDNlc3ViMC5wYWdlX3Bvb2wpO1xcbjE2MDM6XFx0XFx0cmV0dXJuIFBUUl9FUlIocHApO1xcbjE2MDQ6XFx0fVxcbjE2MDU6XFx0XFxuMTYwNjpcXHRzdGF0aWMgdm9pZCBmYm5pY19yaW5nX2luaXQoc3RydWN0IGZibmljX3JpbmcgKnJpbmcsIHUzMiBfX2lvbWVtICpkb29yYmVsbCxcXG4xNjA3OlxcdFxcdFxcdFxcdCAgICBpbnQgcV9pZHgsIHU4IGZsYWdzKVxcbjE2MDg6XFx0e1xcbjE2MDk6XFx0XFx0dTY0X3N0YXRzX2luaXQoXFx1MDAyNnJpbmctXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG4xNjEwOlxcdFxcdHJpbmctXFx1MDAzZWRvb3JiZWxsID0gZG9vcmJlbGw7XFxuMTYxMTpcXHRcXHRyaW5nLVxcdTAwM2VxX2lkeCA9IHFfaWR4O1xcbjE2MTI6XFx0XFx0cmluZy1cXHUwMDNlZmxhZ3MgPSBmbGFncztcXG4xNjEzOlxcdFxcdHJpbmctXFx1MDAzZWRlZmVycmVkX2hlYWQgPSAtMTtcXG4xNjE0OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTY6MTYuNzU2MTEwNzEyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjEyODgyMTQ5NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFN1YnRsZSBNZW1vcnkgTWFuYWdlbWVudCBJc3N1ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc29tZXRoaW5nIGp1bXBzIG91dCBhdCBtZTogYHBwYCBpcyBiZWluZyBwYXNzZWQgdG8gYHBhZ2VfcG9vbF9kZXN0cm95YC4gSSBzZWUgdGhlIGBwYWdlX3Bvb2xfY3JlYXRlYCBjYWxsIGFuZCB0aGUgY2hlY2sgZm9yIGBJU19FUlIocHApYC4gVGhhdCdzIHN0YW5kYXJkIGVycm9yIGhhbmRsaW5nLCByaWdodD8gQnV0IHdhaXQuLi4gaWYgYHBwYCBpcyBhbiBlcnJvciBwb2ludGVyLCB0aGVuIGl0IHNob3VsZG4ndCBiZSBwYXNzZWQgdG8gYHBhZ2VfcG9vbF9kZXN0cm95YCEgSXQgbG9va3MgbGlrZSB0aGVyZSB3YXMgYSBzdWJ0bGUgYnVnIHdoZXJlIHRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwYXNzaW5nIHRoZSBlcnJvciB2YWx1ZSB0byBgcGFnZV9wb29sX2Rlc3Ryb3lgLiBUaGUgZml4IGNoYW5nZWQgaXQgdG8gY29ycmVjdGx5IGRlc3Ryb3kgdGhlIGFscmVhZHkgY3JlYXRlZCBwYWdlIHBvb2wgYHF0LVx1MDAzZXN1YjAucGFnZV9wb29sYC5cblxuTm93LCBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucy4gVGhpcyBmaXggaXMgZ29vZCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqLiBXYXMgdGhlcmUgbWVtb3J5IGNvcnJ1cHRpb24/IEEgbGVhaz8gVGhpcyBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uLiBJIG5lZWQgdG8ga25vdyB3aGVyZSBgZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29sc2AgaXMgY2FsbGVkIGFuZCBob3cgdGhpcyBpc3N1ZSB3YXMgdHJpZ2dlcmVkLiBUaGUgY29udGV4dCBpcyB2aXRhbC4gVGltZSB0byBjaGVjayB0aGUgY2FsbCBzaXRlcyB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgd2hhdCBvdGhlciBmdW5jdGlvbnMgY291bGQgdHJpZ2dlciB0aGlzIHNhbWUgaXNzdWUuIExldCdzIHNlZSB3aGF0IHRoZSBicm9hZGVyIHBpY3R1cmUgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NjQwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTY6MjkuNjM4MjYzNDExWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTkyNTUxMjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29sc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jPTE1NTE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjE1NTI6ZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29scyhzdHJ1Y3QgZmJuaWNfbmV0ICpmYm4sIHN0cnVjdCBmYm5pY19xX3RyaWFkICpxdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0xNTUzLVxcdFxcdFxcdCAgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMDA0PXN0YXRpYyBpbnQgZmJuaWNfYWxsb2NfcnhfcXRfcmVzb3VyY2VzKHN0cnVjdCBmYm5pY19uZXQgKmZibixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIwMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjAxMTpcXHRlcnIgPSBmYm5pY19hbGxvY19xdF9wYWdlX3Bvb2xzKGZibiwgcXQsIHF0LVxcdTAwM2VjbXBsLnFfaWR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMDEyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yODMyPXN0YXRpYyBpbnQgZmJuaWNfcXVldWVfbWVtX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yODQxLVxcdGlmICghbmV0aWZfcnVubmluZyhkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjI4NDI6XFx0XFx0cmV0dXJuIGZibmljX2FsbG9jX3F0X3BhZ2VfcG9vbHMoZmJuLCBxdCwgaWR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yODQzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNjozMC4wOTc1MjQ3NzJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTkxMTQ2NDMwNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgZmJuaWMgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHJlc291cmNlcyBhcmUgYWxsb2NhdGVkIHdpdGhpbiB0aGUgYGZibmljYCBkcml2ZXIuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgYWxsb2NhdGlvbiBmdW5jdGlvbnMgYXJlIGBmYm5pY19hbGxvY19yeF9xdF9yZXNvdXJjZXNgIGFuZCBgZmJuaWNfcXVldWVfbWVtX2FsbG9jYC4gVGhlc2UgYXJlIGJlaW5nIGNhbGxlZCB0aHJvdWdoIHRoZSBgbmV0ZGV2YCBpbnRlcmZhY2UsIGVpdGhlciBkaXJlY3RseSB0aHJvdWdoIGBuZXRkZXZfc3RhdF9vcHNgIG9yIGluZGlyZWN0bHkgdmlhIGBuZXRkZXZfcXVldWVfbWdtdF9vcHNgLiBOYXR1cmFsbHksIHRoaXMgd2hvbGUgcHJvY2VzcyBpcyBwcmVkaWNhdGVkIG9uIHRoZSBleGlzdGVuY2Ugb2YgYW4gYGZibmljYCBuZXR3b3JrIGRldmljZSAoYG5ldGRldmApLlxuXG5Ob3csIHdoZXJlIGRvZXMgdGhpcyBgbmV0ZGV2YCBhY3R1YWxseSBnZXQgY3JlYXRlZD8gSXQncyByZWdpc3RlcmVkIHdpdGhpbiBgZmJuaWNfcHJvYmVgLCB3aGljaCBvbmx5IGhhcHBlbnMgd2hlbiBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlIHdpdGggdGhlIHNwZWNpZmljIHZlbmRvciBJRCAweDFkOWIgYW5kIGRldmljZSBJRCAweDAwMTMgaXMgZGV0ZWN0ZWQgZHVyaW5nIHRoZSBwcm9iZS5cblxuVGhpcyBpbW1lZGlhdGVseSByYWlzZXMgYSBxdWVzdGlvbjogSXMgdGhlcmUgYW55IGZvcm0gb2YgdmlydHVhbCBgZmJuaWNgIGRldmljZSBvciBhbiBlbXVsYXRpb24gbWVjaGFuaXNtPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBJIGNhbiB0ZXN0IG9yIHdvcmsgd2l0aCB0aGlzIGRyaXZlciB3aXRob3V0IGhhdmluZyB0aGUgc3BlY2lmaWMgaGFyZHdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IGRpZyB0aHJvdWdoIHRoZSBgdG9vbHMvdGVzdGluZ2AgZGlyZWN0b3J5LCBhbmQgdGhlIHdpZGVyIGNvZGViYXNlIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBtZW50aW9uIG9mIHZpcnR1YWwgb3IgZW11bGF0ZWQgYGZibmljYCBkZXZpY2VzLiBJJ20gZ29pbmcgdG8gc2VhcmNoIGZvciBhbnkgaGludHMgaW4gdGhlIGNvZGUgYmFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NDEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTY6NDkuMjEyMTcwMDYxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQxNjc3MTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZibmljXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInRvb2xzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNjo0OS4zOTYzNjc2ODdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mzg0MTkzMDA4MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipNeSBMaW5lIG9mIElucXVpcnkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGhpdCBhIHBvdGVudGlhbCBkZWFkIGVuZC4gVGltZSB0byBicm9hZGVuIHRoZSBzZWFyY2guIEkgbmVlZCB0byBiZSBtZXRob2RpY2FsLiBJbnN0ZWFkIG9mIGZvY3VzaW5nIG9uIHRoZSBjdXJyZW50IGFyZWEsIGl0J3MgcHJ1ZGVudCB0byBleHBhbmQgbXkgc2NvcGUuIEkgc2hvdWxkIGNhc3QgYSB3aWRlciBuZXQuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgZWxzZXdoZXJlIGluIHRoZSBkcml2ZXIgY29kZSwgb3IgdGhlIGFyY2hpdGVjdHVyYWwgZWxlbWVudHMuIE1heWJlIHRoZXJlJ3MgYSByZWxhdGVkIGludGVyYWN0aW9uIGhhcHBlbmluZyBpbiBhIGRpZmZlcmVudCBwYXJ0IG9mIHRoZSBzeXN0ZW0gdGhhdCBpcyB0aGUgcm9vdCBvZiB0aGUgaXNzdWUuIEEgcGFyYWxsZWwgY29uY2VwdCwgb3Igc2ltaWxhciBhcHByb2FjaC4gSXQncyBhIGtleSBzdHJhdGVneSB0byBlbGltaW5hdGUgcG9zc2liaWxpdGllcyBhbmQgdW5jb3ZlciB0aGUgY29yZSBpc3N1ZS4gSSdsbCBuZWVkIHRvIG1ldGljdWxvdXNseSBmb2xsb3cgdGhlIGJyZWFkY3J1bWJzIGZyb20gbW9kdWxlIHRvIG1vZHVsZSBpbiBvcmRlciB0byBhdm9pZCB3YXN0aW5nIHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDA5LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTc6MjcuODE1NjcwNjEyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc3NzMwOTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZCTklDX0FTSUNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaD05PXN0cnVjdCBmYm5pY19kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6NDA6I2RlZmluZSBQQ0lfREVWSUNFX0lEX01FVEFfRkJOSUNfQVNJQ1xcdFxcdDB4MDAxM1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtNDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBmYm5pY19wY2lfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYzozMTpcXHR7IFBDSV9ERVZJQ0VfREFUQShNRVRBLCBGQk5JQ19BU0lDLCBmYm5pY19ib2FyZF9hc2ljKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmMtMzItXFx0LyogUmVxdWlyZWQgbGFzdCBlbnRyeSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoxNzoyOS4zOTM0MDcwODVaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6ODc3OTk5ODQ4MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRkJOSUMgRHJpdmVyIEFuYWx5c2lzIGFuZCBGdXp6aW5nIERlY2lzaW9uKipcblxuT2theSwgc28gbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGQk5JQyBpcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIsIGEgU21hcnROSUMvRXRoZXJuZXQgQVNJQyBkcml2ZXIgZm9yIE1ldGEncyBjdXN0b20gaGFyZHdhcmUgKDFkOWI6MDAxMywgZ290IGl0KS4gVGhlIGtleSB0aGluZyBpcywgaXQncyBub3QgZ29pbmcgdG8gcnVuIGluIHRoZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhhdCB3ZSB0eXBpY2FsbHkgdXNlIGZvciBmdXp6aW5nLiBJJ20gcmVjYWxsaW5nIFNlY3Rpb24gMiBvZiB0aGUgdHJpYWdlIHBoaWxvc29waHkgaW1tZWRpYXRlbHkg4oCTIHRoZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIHNlY3Rpb24gaXMgdGhlIGtleS5cblxuVGhhdCBwaGlsb3NvcGh5IGV4cGxpY2l0bHkgY2FsbHMgb3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycywgKnJlcXVpcmluZyogcGh5c2ljYWwgQVNJQ3MuIEl0IHNwZWNpZmljYWxseSBsaXN0cyBleGFtcGxlcyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAuLi4gYW5kLCBpbXBvcnRhbnRseSwgRkJOSUMuIFRoZSBjb3JlIHByaW5jaXBsZSBpcyAqcmVhY2hhYmlsaXR5Ki4gSWYgdGhlIGNvZGUgY2FuJ3QgZXhlY3V0ZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBmb3JnZXQgYWJvdXQgZnV6emluZyBpdC4gSXQgZG9lc24ndCBtYXR0ZXIgaWYgdGhlcmUgYXJlIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYyBpbiB0aGVyZTsgaXQncyBhIGRlYWQgZW5kLlxuXG5BcHBseWluZyB0aGUgXCJuZWdhdGl2ZSBjcml0ZXJpYSxcIiB0aGlzIHBhdGNoICphYnNvbHV0ZWx5KiBmYWxscyBpbnRvIHRoZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgY2F0ZWdvcnkuIFRoZXJlZm9yZSwgV29ydGhGdXp6aW5nICoqbXVzdCoqIGJlIGBmYWxzZWAuIFRoaXMgYWxzbyBtZWFucyB0aGF0IEZvY3VzU3ltYm9scyBhbmQgRW5hYmxlQ29uZmlncyBhcmUgZW1wdHkgKG9yIGF0IGxlYXN0LCBzaG91bGQgYmUpLiBJdCdzIGEgd2FzdGUgb2YgcmVzb3VyY2VzIHRvIGV2ZW4gY29uc2lkZXIgb3RoZXJ3aXNlLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0uIFRoZSBwYXRjaCB0b3VjaGVzIG9ubHkgYGZibmljX3R4cnguY2AsIHNwZWNpZmljYWxseSBgZmJuaWNfYWxsb2NfcXRfcGFnZV9wb29sc2AuIFRoYXQncyBpdC4gTm8gb3RoZXIgZmlsZXMuIEFuZCB0aGlzIGNvZGUgaXMgYWxsIGludGVybmFsIHRvIHRoZSBgZmJuaWNgIGRyaXZlciwgd2hpY2ggaXMsIGFnYWluLCBNZXRhJ3MgcGh5c2ljYWwgUENJZSBOSUMgQVNJQy4gSXQncyAqZGVmaW5pdGVseSogdW5yZWFjaGFibGUgd2l0aG91dCB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLlxuXG5SaWdodCwgYWxsIGNoZWNrcyBjb21wbGV0ZS4gV2UncmUgZ29vZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AuIE5vIG5lZWQgdG8gd2FzdGUgdGltZSBmdXJ0aGVyIGFuYWx5emluZyB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQ2MSwiT3V0cHV0VG9rZW5zIjoxMDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTg6NTcuMTkzMzk0MjczWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggZHJpdmVzIE1ldGEncyBwcm9wcmlldGFyeSBob3N0IG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQgKFBDSWUgQVNJQykuIFRoaXMgaGFyZHdhcmUgaXMgdmVuZG9yLXNwZWNpZmljIGFuZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggZHJpdmVzIE1ldGEncyBwcm9wcmlldGFyeSBob3N0IG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQgKFBDSWUgQVNJQykuIFRoaXMgaGFyZHdhcmUgaXMgdmVuZG9yLXNwZWNpZmljIGFuZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MTg6NTcuMTkzNDE4ODEzWiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowdjz4j[1] Phase: Running StartedAt: 2026-09-15 14:19:08 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdjz4j[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-15 14:19:08 +0000 UTC FinishedAt: 2026-09-15 14:19:13 +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,}